Как зашифровать что-то, что можно расшифровать с помощью любых двух из трех ключей? - PullRequest
13 голосов
/ 12 ноября 2009

Скажем, я хочу зашифровать файл, и единственный способ, которым я хочу, чтобы он читался, - это когда два разных человека вводят свои ключи. Так, например, есть четыре ключа:

ключ1, ключ2, ключ3, ключ4.

Если я зашифрую его ключом 1, то следующие комбинации будут его дешифровать:

  • key2, ключ3
  • ключ3, Key4
  • key2, Key4

Возможно ли это с помощью стандартного метода?

Ответы [ 5 ]

14 голосов
/ 12 ноября 2009

Создайте уникальный ключ содержимого для шифрования сообщения (это является общим для многих стандартов шифрования сообщений), затем примените схему код стирания , такую ​​как кодирование Рида-Соломона против этого ключа содержимого, связанного с достаточным количеством дополнительных случайных данных, чтобы гарантировать, что любые *1001* m из n"осколков" ключа могут быть объединены для создания последний ключ. Осколки выдаются только из части случайных данных , так что ни один из выданных осколков не содержит фактических битов ключа содержимого. Таким образом, любое количество собранных осколков, кроме m , не дает никакой полезной информации о самом ключе.

РЕДАКТИРОВАТЬ: Рид-Соломон для генерации ключевых осколков, похоже, идентичен Секретный обмен Шамира , впервые опубликованный в 1979 году; спасибо @caf за указание на статью.

4 голосов
/ 12 ноября 2009

Генерирует симметричный ключ key1 случайным образом и использует его для шифрования данных, затем генерирует key2, key3 и key4 из key1, используя Протокол секретного обмена Shamir .

Для безопасного распространения ключа 2, ключа 3 и ключа 4 вы можете затем использовать алгоритм открытого ключа, чтобы зашифровать их с помощью открытых ключей получателей.

2 голосов
/ 12 ноября 2009

Скажем, вы назначаете ключи x1, x2, .. xN

Зашифруйте файл с помощью главного симметричного ключа M . Затем сохраните несколько зашифрованных копий M :

  • Зашифровано с x1 и x2
  • Зашифровано с x2 и x3
  • Зашифровано с x1 и x3
  • ...

Любые два ключа разблокируют одну из зашифрованных копий мастера, которая расшифрует файл.

1 голос
/ 12 ноября 2009

Не так, как вы это заявляете, я не думаю. Но вы можете получить такой же эффект, как этот: Используйте крипто с открытым ключом; сейчас есть 4 открытых и 4 закрытых ключа. Как лицо № 1, зашифруйте свое сообщение каждой попарной комбинацией другого 3. Например. зашифруйте сообщение ключом 2, затем зашифруйте его ключом 3. Теперь зашифруйте сообщение ключом 2, затем зашифруйте его ключом 4. Наконец, 3, затем 4. Теперь, если какие-либо два других соберутся вместе, они могут восстановить исходное сообщение. .

0 голосов
/ 12 ноября 2009

делает четвертый ключ битовой контрольной суммой остальных трех ... Вы можете даже последовательно увеличивать, какой ключ имеет значение контрольной суммы .. так, чтобы

  1. ключ 4, бит 1 был контрольной суммой бита 1 в ключах 1-3, а
  2. ключ 1, бит 2 был контрольной суммой бита 2 в ключах 2-4, а
  3. ключ 2 бит 3 был контрольной суммой бита 3 в ключах 1,3,4 и
  4. ключ 3, бит 4 был контрольной суммой бита 4 в ключах 1,2,4 и
  5. ключ 4 бит 5 был контрольной суммой бита 5 в ключах 1,2,3, и т.д. ...

вроде как полосатый рейд 5 делает ...

Таким образом, независимо от того, какие три из четырех клавиш у вас были, вы можете воссоздать недостающий. использовать некоторую комбинацию всех четырех ключей для шифрования сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...