Шифрування і хешування

Шифрування і хешування

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

Ви розумієте різницю між цими двома словами і ситуації, в яких ви повинні використовувати один з двох випадків?

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

Хешування - Що це?

Хеш - значення або число, сгенерированное з послідовності тексту.

Що виходять рядок або число фіксованої довжини будуть значно відрізнятися в залежності від незначних змін на вході.

Кращі алгоритми хешування розроблені так, щоб було неможливо повернути хеш в свою оригінальну послідовність.

MD5. MD5 - найбільш широко відома функція хешування.

Цей алгоритм виробляє 16-бітове значення хеша, зазвичай виражається 32 значним шістнадцятковим числом.

Нещодавно кілька слабких місць були виявлені в MD5 і райдужні таблиці були видані [великі і загальнодоступні], які в свою чергу дозволяли людям повністю змінювати хеш MD5. Тому даний алгоритм вважається дещо застарілим. Так само можна відзначити значне число колізій.

SHA - є три різних алгоритму SHA - SHA-0, SHA-1 і SHA-2.

SHA-0 дуже рідко використовується, оскільки він мав вразливість, яка була виправлена ​​в SHA-1.

SHA-1 - звичайний використовуваний алгоритм SHA і виробляє 20-бітове значення хеша.

SHA-2 складається з ряду 6 алгоритмів хешування і вважається найсильнішим.

SHA-256 або вище рекомендується для ситуацій, де безпеку життєво важлива. SHA-256 виробляє 32-бітові значення хеша.

Коли має використовуватися хешування?

Хешування - ідеальний спосіб зберегти паролі, оскільки значення хешу, по суті своєї природи, односторонні в своєму роді.

Зберігаючи паролі в форматі хешу, для зловмисника з доступом до необроблених даних дуже важко інвертувати його (використання сильного алгоритму хешування, і належний модифікатор [сіль в народі], щоб згенерувати його).

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

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

Хешування - чудове рішення для використання в будь-якому вигляді, якщо ви хочете порівняти значення з збереженої сумою, але не можете зберегти її просте уявлення з міркувань безпеки.

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

Шифрування - Що це?

Шифрування перетворює будь-які дані в серію нечитабельних людському оку знаків, які не мають фіксованої довжини.

Перш за все - який головний принцип шифрування? Правильно - наявність одержувача - приймача якщо дозволите.

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

Є два основних типи шифрування, симетричне шифрування і шифрування на основі відкритих ключів.

У симетричному ключовому шифруванні ключ, необхідний щоб і зашифрувати і розшифрувати є одним і тим же ключем.

Саме так, мабуть, і думає більшість людей, коли вони чують про шифрування.

У шифрування на основі відкритих ключів для порівняння є два різних ключа, один шифрує послідовність (відкритий ключ) і один розшифровує її (закритий ключ).

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

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

PGP. PGP - найпопулярніший алгоритм шифрування на основі відкритих ключів.

Коли має використовуватися шифрування?

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

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

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