Шифрование с несколькими разными ключами?

Есть ли способ хранить данные в зашифрованном виде, чтобы их можно было расшифровать несколькими различными ключами?

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

Возможно ли это?

95 голосов | спросил Glen Solsberry 28 FebruaryEurope/MoscowbSat, 28 Feb 2009 03:28:23 +0300000000amSat, 28 Feb 2009 03:28:23 +030009 2009, 03:28:23

4 ответа


0

GnuPG выполняет стандартное шифрование с несколькими ключами.

Следующая команда зашифрует doc.txt, используя открытый ключ для Алисы и открытый ключ для Боба. Алиса может расшифровать, используя свой закрытый ключ. Боб также может расшифровать, используя свой закрытый ключ.

gpg --encrypt --recipient [email protected] \
    --recipient [email protected] doc.txt

Эта функция подробно описана в разделе руководства пользователя, озаглавленном " шифрование и дешифрование документов "

ответил David S. 28 FebruaryEurope/MoscowbSat, 28 Feb 2009 03:34:23 +0300000000amSat, 28 Feb 2009 03:34:23 +030009 2009, 03:34:23
0

Да, это возможно

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

Командная строка

Вот как это сделать с помощью командной строки gpg (как описано в Ответ Дэвида Сегонда ):

gpg --encrypt \
  --recipient [email protected] \
  --recipient [email protected] \
clear-message.txt

клиент с графическим интерфейсом

В вашем графическом интерфейсе должен быть способ шифрования нескольких человек

Механизм

Есть вопрос по информационной безопасности , Размер файла GPG с несколькими получателями? , объясняющий механизм шифрования :

  

GPG шифрует файл один раз симметричным ключом, а затем помещает заголовок   определение целевой пары ключей и зашифрованной версии   симметричный ключ.

     

[...] При шифровании нескольким получателям этот   заголовок размещается несколько раз, предоставляя уникально зашифрованную версию   одного и того же симметричного ключа для каждого получателя .

ответил Édouard Lopez 18 Maypm14 2014, 23:06:55
0

Да, это возможно. Google "многопартийное шифрование" для начала.

AFAIK, нет никаких дроп-ин и используйте их для этого.

- MarkusQ

P.S. Для эскиза того, как это можно сделать, подумайте об этом. Зашифрованное сообщение состоит из:

  • полезная нагрузка, зашифрованная одноразовым блокнотом
  • одноразовая панель, зашифрованная с помощью ключа 1
  • одноразовая панель, зашифрованная с помощью key2
  • ...
  • одноразовая панель, зашифрованная ключомN

Получатель, который держит ключ i, просто расшифровывает их копию пэда своим ключом, а затем дешифрует полезную нагрузку.

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

----- Изменить ------------

Если я ошибаюсь и инструменты Gnu делают это, используйте их. Но я не могу найти какую-либо информацию о том, как это сделать.

ответил MarkusQ 28 FebruaryEurope/MoscowbSat, 28 Feb 2009 03:31:56 +0300000000amSat, 28 Feb 2009 03:31:56 +030009 2009, 03:31:56
0

RSA с несколькими (более двух) ключами может быть таков - ну, я не математик, так что этот алгоритм не обязательно безопасен, я просто хочу поделиться с ним идеей.

т = р * д * г; p, q, r - большие простые числа

ц (т) = (р-1) (Q-1) (г-1)

d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei - произвольные числа, d рассчитывается для выполнения уравнения

y1 == x ^ e1 (mod m)

y2 == y1 ^ e2 (mod m)

y3 == y2 ^ e3 (mod m)

...

x == yi ^ d (mod m)

Этот алгоритм может быть использован, например, для увеличения скорости Onion Router.

ответил IQfighter 13 J000000Wednesday11 2011, 13:10:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132