Я добавил бы Код, Завершенный 2 к списку (я знаю, что Jeff является своего рода поклонником здесь)... Если Вы - младший разработчик, книга пригождается для установки ума способом, который закладывает основу лучших методов записи кода и программного обеспечения, создающего существует.
я должен сказать, что приехал в него немного поздно в моей карьере, но это управляет большим количеством способов, которыми я думаю о кодировании и разработке платформы в моей профессиональной жизни.
Это стоит проверить;)
Создайте уникальный ключ содержимого для шифрования сообщения (это общее для многих стандартов шифрования сообщений), затем примените схему кода стирания , такую как Кодирование Рида-Соломона по этому ключу содержимого, объединенное с достаточным количеством дополнительных случайных данных, чтобы гарантировать, что любые m из n «фрагментов» ключа могут быть объединены в создать финальный ключ. Осколки выдаются только из части случайных данных , так что ни один из выданных осколков не содержит фактических битов из ключа содержимого. Таким образом, любое количество собранных осколков, меньшее m , не дает никакой полезной информации о самом ключе.
РЕДАКТИРОВАТЬ: Рид-Соломон для генерации ключевых осколков, похоже, идентичен секрету Шамира. -шаринг , впервые опубликовано в 1979 г .; спасибо @caf за указание на статью.
Сгенерировать симметричный ключ key1 случайным образом и использовать его для зашифровать данные, а затем сгенерировать key2, key3 и key4 из key1 с помощью протокола совместного использования секретов Шамира .
Для безопасного распространения ключей key2, key3 и key4 вы можете затем использовать алгоритм открытого ключа, чтобы зашифровать их с использованием общедоступных ключи получателей.
Допустим, вы назначаете ключи x1, x2, .. xN
Зашифруйте файл с помощью главного симметричного ключа M . Затем сохраните несколько зашифрованных копий M :
Любые два ключа разблокирует одну из зашифрованных копий мастера, который расшифрует файл.
Я не думаю, как вы это утверждаете. Но вы можете получить такой же эффект: используйте шифрование с открытым ключом; теперь есть 4 публичных и 4 приватных ключа. Как человек №1, зашифруйте свое сообщение каждой попарной комбинацией другого 3. Например, зашифруйте сообщение ключом 2, затем зашифруйте его ключом 3. Теперь зашифруйте сообщение ключом 2, затем зашифруйте его ключом 4. Наконец, 3 затем 4. Теперь, если двое других соберутся вместе, они смогут восстановить исходное сообщение.
сделать четвертый ключ поразрядной контрольной суммой трех других ... Вы даже можете последовательно увеличивать, какой ключ имеет значение контрольной суммы ... так, чтобы
что-то вроде полосатого рейда 5 ...
Таким образом, независимо от того, какие три из четырех ключей у вас были, вы могли воссоздать недостающий. используйте комбинацию всех четырех ключей, чтобы зашифровать сообщение.