1

GPG/PGP и другие шифрования с открытым ключом позволяют шифровать нескольким получателям, используя их открытые ключи.

Можно ли использовать только симметричное шифрование, чтобы сделать то же самое? Другими словами, возможно ли симметрично зашифровать файл с двумя разными ключами?

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

3 ответа3

2

Конечно. Просто зашифруйте файл случайным ключом, а затем зашифруйте этот случайный ключ двумя различными симметричными ключами.

0

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

Я написал инструмент для этого: https://github.com/galets/AsymmetricCrypt . Вам понадобится mono, чтобы запустить его в Linux, но в остальном он работает нормально и не требует хранения зашифрованного ключа в отдельном файле.

0

Текущие версии PGP и все GnuPG (GPG) реализуют стандарт OpenPGP. Я буду использовать только термин OpenPGP ниже.

OpenPGP использует шифрование с открытым и симметричным ключами. При шифровании документа генерируется и шифруется некоторый случайный симметричный ключ с использованием открытого ключа. Получатель зашифрует ключ симметричного шифрования (блочный шифр), используя свой закрытый ключ. Поскольку только симметричный ключ шифруется с использованием открытого ключа, накладные расходы остаются небольшими (это то, что предложил Дэвид Шварц и уже внедрен в OpenPGP).

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

  • Очень небольшое количество данных; если это проблема, вам придется выбрать какой-либо метод шифрования с помощью общих ключей (симметричных ключей)
  • Много получателей; так как блочный шифр должен быть зашифрован для каждого из них. Если это проблема, вам придется делиться секретом (секретным ключом) между всеми получателями.

Вам не удастся использовать симметричное шифрование и передать секрет каждому получателю (или сделать то же самое с закрытым ключом OpenPGP). Если вы хотите, чтобы у каждого был свой секрет, никто другой не сможет расшифровать его версию данных; так что вам придется отправить всем другую версию этих данных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .