AES-шифрование, что такое открытый и закрытый ключи? - PullRequest
27 голосов
/ 07 ноября 2008

Как используется открытый и закрытый ключи в AES-шифровании (.net framework)?

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

(упрощенные ключи, используемые ниже в качестве примера)

например. открытый ключ = 12345 закрытый ключ = 67890

поэтому ключ, используемый при генерации результата шифрования: 1234567890

Ответы [ 5 ]

88 голосов
/ 08 ноября 2008

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

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

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

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

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

23 голосов
/ 07 ноября 2008

AES - это симметричный алгоритм, поэтому он не имеет открытых и закрытых ключей - только общий секрет.

3 голосов
/ 08 ноября 2008

Открытый ключ связан с закрытым ключом. Открытый ключ ( RSA ) распространяется среди «диких» и тех, кто хочет отправить зашифрованный файл (в общем случае здесь), они запросят открытый ключ и закодируют его. Гипертекст нечитаем всем, кто получает доступ к файлу, даже если у них есть открытый ключ.

Закрытый ключ необходим для декодирования файла. Пока закрытый ключ остается закрытым, статически маловероятно, чтобы кто-нибудь угадал или взломал ключ. Невероятно, не невозможно.

Реальная проблема заключается в том, чтобы закрытый ключ был закрыт. Большинство кряков делается с помощью социального взлома . Вымогательство, логгеры и преобразование открытого ключа «обезьяна в середине» - другие способы более вероятные, чем грубое принуждение к паролю или ключу.

В своем комментарии к Brawndo вы спросили

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

То, что вы описываете, это алгоритмы с симметричным ключом, которыми является AES . Причина использования открытых и закрытых ключей заключается в том, что с помощью алгоритмов с симметричным ключом вы передаете симметричный ключ через незащищенные сети, почту, телефон или что-то еще без перехвата ключа. Возможно, шифрование ключа, но как вы передадите этот ключ? С комбо открытого и закрытого ключа это становится МЕНЬШЕ релевантным.

"В большинстве случаев есть большая вероятность того, что солнце сгорит до всех компьютеров в мире может учитывать всю информацию нужно перебор 256-битного ключа " сказал Джон Хансен, вице-президент маркетинг для AccessData Corp, Линдон, штат Юта, компания, которая построила программное обеспечение, обеспечивающее работу ДНК.

2 голосов
/ 14 июля 2011

В простейшем виде:

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

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

2 голосов
/ 06 августа 2009

Я не знаю, как конкретно .NET Framework работает (вопрос, вероятно, должен был быть помечен .net), но по вашему вопросу это звучит так, как будто он реализует шифрование с открытым / закрытым ключом, просто используя AES для своего симметричного компонента.

Обычный режим шифрования с открытым ключом -

  • Создать симметричный ключ
  • Зашифруйте данные этим ключом, используя симметричный алгоритм, такой как AES.
  • Зашифруйте симметричный ключ открытым ключом, используя асимметричный алгоритм типа RSA.
  • Связать зашифрованный ключ sym с зашифрованными данными

Причиной, по которой симметричные алгоритмы являются предпочтительными для самих данных, является то, что асимметричные очень медленные.

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

...