В чем разница между шифрованием SHA и AES? [закрыто]

91

В чем разница между шифрованием SHA и AES?

mjn
источник
1
Лучше для security.stackexchange.com .
Дэйв Джарвис

Ответы:

121

SHA - это не шифрование, это односторонняя хеш-функция. AES (Advanced_Encryption_Standard) - это стандарт симметричного шифрования.

Ссылка AES

Скаффман
источник
86

SHA - это семейство «алгоритмов безопасного хеширования », разработанных Агентством национальной безопасности. В настоящее время существует конкуренция среди десятков вариантов, кто станет SHA-3 , новым алгоритмом хеширования для 2012+.

Вы используете функции SHA, чтобы взять большой документ и вычислить «дайджест» (также называемый «хеш») входных данных. Важно понимать, что это односторонний процесс. Вы не можете взять дайджест и восстановить исходный документ.

AES , Advanced Encryption Standard, представляет собой симметричный блочный алгоритм. Это означает, что он берет блоки по 16 байтов и шифрует их. Он «симметричный», потому что ключ допускает как шифрование, так и дешифрование.

ОБНОВЛЕНИЕ: 2 октября 2012 г. Keccak был назван победителем SHA-3.

Джефф Мозер
источник
65

SHA и AES служат разным целям. SHA используется для генерации хэша данных, а AES используется для шифрования данных.

Вот пример того, когда вам может быть полезен хеш SHA. Допустим, вы хотите загрузить ISO-образ DVD какого-нибудь дистрибутива Linux. Это большой файл, и иногда что-то идет не так, поэтому вы хотите убедиться, что то, что вы скачали, является правильным. Вам нужно перейти к надежному источнику (например, к официальной точке загрузки дистрибутива), и у них обычно есть хэш SHA для ISO-образа. Теперь вы можете сгенерировать сопоставимый хэш SHA (используя любое количество открытых инструментов) для загруженных данных. Теперь вы можете сравнить два хеша, чтобы убедиться, что они совпадают, что подтвердит правильность загруженного изображения. Это особенно важно, если вы получили образ ISO из ненадежного источника (например, торрент) или если у вас возникли проблемы с использованием ISO и вы хотите проверить, не поврежден ли образ.

Как вы можете видеть в этом случае, SHA использовался для проверки данных, которые не были повреждены. У вас есть полное право просматривать данные в ISO.

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

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

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

Если вы хотите узнать больше об этих некоторых поисковых запросах в Википедии (помимо AES и SHA), попробуйте включить:

Алгоритм с симметричным ключом (для AES) Криптографическая хеш-функция (для SHA) Криптография с открытым ключом (для PGP и SSL)

Роберт Хорвик
источник
1
Вы понимаете, сколько лет этому ответу, когда видите слово DVD ...
Клесун
9

SHA - это хеш-функция, а AES - стандарт шифрования. Учитывая ввод, вы можете использовать SHA для получения вывода, который вряд ли будет получен из любого другого ввода. Кроме того, некоторая информация теряется при применении функции, поэтому, даже если бы вы знали, как создать ввод, дающий тот же вывод, этот ввод, скорее всего, не был бы тем же самым, что использовался в первую очередь. С другой стороны, AES предназначен для защиты от раскрытия третьим сторонам любых данных, передаваемых между двумя сторонами, использующими один и тот же ключ шифрования. Это означает, что, как только вы знаете ключ шифрования и результат (и IV ...), вы можете легко вернуться к исходному вводу. Обратите внимание, что SHA не требует ничего, кроме вводимых данных, в то время как AES требует как минимум трех элементов: то, что вы шифруете / дешифруете, ключ шифрования и вектор инициализации (IV).

em70
источник
7

SHA означает алгоритм безопасного хеширования, а AES - расширенный стандарт шифрования. Итак, SHA - это набор алгоритмов хеширования. С другой стороны, AES - это шифр, который используется для шифрования. Алгоритмы SHA (SHA-1, SHA-256 и т. Д.) Будут принимать входные данные и создавать дайджест (хэш), это обычно используется в процессе цифровой подписи (создает хэш из нескольких байтов и подписывает с помощью закрытого ключа) .

Франсуа П.
источник
3

SHA не требует ничего, кроме ввода, в то время как AES требует как минимум трех вещей - что вы шифруете / дешифруете, ключ шифрования и вектор инициализации.

чен
источник
1
[Это было отмечено как «поздний ответ на старый вопрос, предоставленный новым пользователем. Мой комментарий относится к этому контексту.] Похоже, это не добавляет никакой информации по сравнению с тем, что уже было предоставлено в других ответах на этот вопрос.
danfuzz
Это не правильно. Вам не нужен вектор инициализации (IV) для использования AES. Для некоторых режимов работы AES требуется IV (что совершенно другое).
Хильдер Витор Лима Перейра