У чому різниця між шифруванням SHA та AES? [зачинено]


91

У чому різниця між шифруванням SHA та AES?


Відповіді:



85

SHA - це сімейство "Безпечних алгоритмів хеш-коду", розроблених Агентством національної безпеки. В даний час існує конкуренція серед десятків варіантів того, хто стане SHA-3 , новим алгоритмом хешування для 2012+.

Ви використовуєте функції SHA, щоб взяти великий документ і обчислити "дайджест" (також званий "хеш") вводу. Важливо усвідомлювати, що це односторонній процес. Ви не можете зробити дайджест і відновити оригінальний документ.

AES , Advanced Encryption Standard - це симетричний блоковий алгоритм. Це означає, що він займає 16 байтових блоків і шифрує їх. Це "симетрично", оскільки ключ дозволяє як шифрувати, так і дешифрувати.

ОНОВЛЕННЯ: Кеккак був визнаний переможцем SHA-3 2 жовтня 2012 року.


64

SHA та AES служать різним цілям. SHA використовується для генерації хешу даних, а AES - для шифрування даних.

Ось приклад того, коли хеш SHA вам корисний. Скажімо, ви хотіли завантажити DVD-образ ISO дистрибутива Linux. Це великий файл, і іноді речі йдуть не так - тому ви хочете підтвердити, що те, що ви завантажили, є правильним. Що б ви зробили, це перейти до надійного джерела (наприклад, офіційної точки завантаження дистрибутива), і вони, як правило, мають хеш SHA для зображення ISO. Тепер ви можете створити порівнянний хеш SHA (використовуючи будь-яку кількість відкритих інструментів) для завантажених даних. Тепер ви можете порівняти два хеші, щоб переконатися, що вони збігаються - що підтвердить правильність завантаженого вами зображення. Це особливо важливо, якщо ви отримуєте образ ISO із ненадійного джерела (наприклад, торрент) або якщо у вас виникають проблеми з використанням ISO і ви хочете перевірити, чи не пошкоджено зображення.

Як ви можете бачити в цьому випадку, SHA використовувався для перевірки даних, які не були пошкоджені. Ви маєте повне право бачити дані в ISO.

AES, навпаки, використовується для шифрування даних або заборони людям переглядати ці дані, знаючи якусь таємницю.

AES використовує спільний ключ, що означає, що для шифрування даних використовується той самий ключ (або відповідний ключ), який використовується для дешифрування даних. Наприклад, якщо я зашифрував електронний лист за допомогою AES, і я надіслав цей електронний лист вам, тоді вам і мені було б потрібно знати спільний ключ, що використовується для шифрування та дешифрування електронної пошти. Це відрізняється від алгоритмів, які використовують відкритий ключ, такий як PGP або SSL.

Якщо ви хочете їх скласти, ви можете зашифрувати повідомлення за допомогою AES, а потім надіслати SHA1 хеш незашифрованого повідомлення, щоб при розшифровці повідомлення вони змогли перевірити дані. Це дещо надуманий приклад.

Якщо ви хочете дізнатись більше про ці деякі пошукові терміни у Вікіпедії (крім AES та SHA), ви хочете спробувати включити:

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


Ви розумієте, скільки років цій відповіді, коли бачите слово DVD ...
Клесун,

9

SHA - це хеш-функція, а AES - стандарт шифрування. Враховуючи вхідні дані, ви можете використовувати SHA для отримання вихідних даних, які навряд чи будуть створені з будь-якого іншого вхідного сигналу. Крім того, деяка інформація втрачається під час застосування функції, тому навіть якщо ви знали, як створити вхідні дані, що дають однакові результати, цей вхід, швидше за все, не буде тим самим, який використовувався спочатку. З іншого боку, AES призначений для захисту від розголошення третім особам будь-яких даних, що передаються між двома сторонами, що мають один і той же ключ шифрування. Це означає, що як тільки ви знаєте ключ шифрування та вихід (і IV ...), ви можете легко повернутися до вихідного вводу. Зверніть увагу, що SHA не вимагає нічого, крім введення, що застосовується, тоді як AES вимагає принаймні 3 тонкості: те, що ви шифруєте / дешифруєте, ключ шифрування та вектор ініціалізації (IV).


7

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


3

SHA не вимагає нічого, крім введення, що застосовується, тоді як AES вимагає щонайменше 3 речі - що ви шифруєте / дешифруєте, ключ шифрування та вектор ініціалізації.


1
[Це було позначено як „пізню відповідь на старе запитання, надане новим користувачем. Мій коментар у цьому контексті.] Схоже, це не додає жодної інформації про те, що вже надано в інших відповідях на це питання.
danfuzz

Це неправильно. Вам не потрібен вектор ініціалізації (IV), щоб використовувати AES. Деякі режими операцій для AES вимагають IV (який абсолютно інший).
Hilder Vitor Lima Pereira
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.