Carding 4 Carders
Professional
- Messages
- 2,730
- Reaction score
- 1,467
- Points
- 113
И шифрование, и хеширование выполняют разные функции, несмотря на их сходство.
Быстро, знаете ли вы разницу между шифрованием и хешированием? Вы знаете, что такое соление? Вы думаете, что соление хеша - это всего лишь часть ирландского завтрака?Если не считать шуток, если вы обратите внимание на мир кибербезопасности, вы, вероятно, услышите, как об этом говорят. Часто без объяснения причин.
Итак, сегодня давайте поговорим о разнице между шифрованием и хешированием и ответим на любые вопросы, которые вы, возможно, боялись задать. Попутно мы также рассмотрим засаливание, поскольку оно появляется в новостях почти каждый раз, когда база данных паролей взламывается.
Давайте решим.
Что такое шифрование?
Шифрование - это практика шифрования информации таким образом, что только кто-то с соответствующим ключом может расшифровать и прочитать ее. Шифрование - это двусторонняя функция. Когда вы что-то шифруете, вы делаете это с намерением расшифровать это позже.Это ключевое различие между шифрованием и хешированием (простите меня за каламбур).
Для шифрования данных вы используете так называемый шифр, который представляет собой алгоритм - серию четко определенных шагов, которые можно выполнять процедурно, - для шифрования и дешифрования информации. Алгоритм также можно назвать ключом шифрования. Я понимаю, что слово «алгоритм» имеет пугающий оттенок из-за шрамов, которые у всех нас остались от математических расчетов в средней школе и колледже. Но, как вы увидите, алгоритм на самом деле не более чем набор правил, и на самом деле они могут быть довольно простыми.
Шифрование имеет долгую историю. Он восходит как минимум к 1900 году до нашей эры после обнаружения стены гробницы с высеченными на ней нестандартными иероглифами. С тех пор было бесчисленное множество исторических примеров.
Древние египтяне использовали простую форму шифрования. Как и Цезарь, чей шифр является одним из самых важных примеров шифрования в истории. Цезарь использовал примитивный шифр сдвига, который менял буквы, отсчитывая заданное количество разрядов в алфавите. Однако это было чрезвычайно полезно, делая любую информацию, перехваченную противниками Цезаря, практически бесполезной.
Пару тысяч лет спустя номенклатурный шифр - тип шифра подстановки, который меняет символы на общие слова в попытке избежать техники дешифрования, называемой частотным анализом, - обезглавил королеву Шотландии Марию и убил группу заговорщиков, когда их сообщения были перехвачены. и расшифровывается буквальным человеком (мужчинами) в середине.
Как работает шифрование?
Давайте посмотрим на шифрование с помощью простого шифра. Мы возьмем страницу из пьесы Цезаря и воспользуемся шифром сдвига. Я собираюсь зашифровать предложение, используя моноалфавитный шифр сдвига, который просто заменяет каждую букву буквой, которая идет последовательно на три позиции впереди нее.Очевидно, с самого начала мы прошли долгий путь, но сосредоточимся только на концепциях. Приговор в сыром виде в незашифрованном виде - UNFORMATTED, неперекодированный - состояние, в которое оно вернется после расшифровки.
Давайте воспользуемся предложением «не будь придурком», которое, кстати, также является единственным правилом для нашего раздела комментариев. Я собираюсь применить алгоритм / ключ шифрования и превратить его в зашифрованный текст.
Открытый текст: не будь придурком
Становится:
Зашифрованный текст: Grqwehdmhun
Я опустил знаки препинания для простоты, но шифрованный текст обычно передается без пробелов и знаков препинания, чтобы избежать ошибок и скрыть границы слов. Итак, при условии, что я поделился им с ними, некоторые теперь могут использовать соответствующий ключ - в данном случае обратный алгоритму, который использовался для шифрования, - чтобы расшифровать это сообщение и прочитать его. Очевидно, что шифры, которые мы используем в цифровом шифровании, намного сложнее, но вы понимаете общую концепцию, лежащую в основе этого.
Исторические алгоритмы шифрования
Давайте начнем с рассмотрения некоторых различных типов шифров, а затем перейдем к современным алгоритмам, которые используются в сегодняшнем шифровании.Шифры со сдвигом. Как и в примере, который мы обсуждали выше, две стороны определяют число от 1 до 25 и сдвигают буквы на это количество пробелов в алфавите. Номер смены служит ключом.
Шифры подстановки - эти шифры заменяют открытый текст зашифрованным текстом с использованием алгоритма, который является фиксированной системой. Ключ - это документ, который показывает фиксированную систему, которую можно использовать для обратного проектирования шифрования.
Шифры транспонирования - этот алгоритм использует набор правил, которые служат в качестве ключа для изменения порядка текста в различных перестановках, которые затем могут быть зашифрованы. Распространенными примерами являются шифры Rail Fence и Route.
Полиалфавитные шифры - это тип шифра подстановки, в котором используется несколько алфавитов, чтобы еще больше усложнить несанкционированное дешифрование зашифрованного текста.
Шифры номенклатуры - тип шифра подстановки, который заменяет обычные слова открытого текста символами, чтобы попытаться отбросить определенную форму криптоанализа.
Криптоанализ - это исследование криптосистем с целью поиска в них слабых мест. Одна из наиболее распространенных форм криптоанализа, восходящая к арабскому математику Аль-Кинди, жившему около 800 г. н.э., называется частотным анализом. Он проверяет зашифрованный текст на наличие повторяющихся символов или строк символов и перекрестно ссылается на них со словами, которые часто появляются в расшифровываемом сообщении.
Так, например, если вы пишете сообщение Наполеону, вполне логично, что вы будете использовать его имя несколько раз. Сопоставив версию зашифрованного текста с его именем, вы сможете начать сопоставление ключа и расшифровку сообщения.
Полиалфавитные шифры и номенклатурные шифры лучше подходили для проведения частотного анализа, чем их классические аналоги. Полиалфавитные шифры продолжали использоваться до Второй мировой войны, когда машина Enigma была взломана.
Современное шифрование
Прежде чем мы сможем говорить о современных шифровальных шифрах, нам нужно немного поговорить об открытых и закрытых ключах и о том, как цифровая революция изменила шифрование. Все примеры, которые мы только что рассмотрели, мы называем криптографией закрытого ключа. Шифрование полностью зависело от закрытого ключа, который нужно было физически обменять, чтобы дешифрование произошло. Если вы что-то знаете о частных ключах, так это то, что они неприкосновенны. Взлом вашего закрытого ключа может иметь катастрофические последствия. Так что необходимость физически носить и передавать его только увеличивает риск. На протяжении всей истории люди фактически умирали из-за компрометации закрытых ключей.Сегодня, благодаря компьютерным технологиям и Интернету, мы можем практиковать криптографию с открытым ключом. В криптографии с открытым ключом один открытый ключ используется для шифрования, а другой закрытый ключ - для дешифрования. Вы видите это во время рукопожатия SSL, когда они решили исторически опасные проблемы с обменом физическим ключом, используя общедоступный ключ для шифрования симметричного сеансового ключа и отправки его обратно на сервер для дешифрования с помощью его закрытого ключа. Ну, на самом деле вы этого не видите, но вы улавливаете мою мысль.
Сегодня наиболее распространенными формами шифрования являются:
- Асимметричное шифрование - это только что приведенный пример открытого ключа. Один ключ шифрует, другой - дешифрует. Шифрование идет только в одну сторону. Это концепция, лежащая в основе PKI (инфраструктуры открытого ключа), модели доверия, лежащей в основе SSL / TLS.
- Симметричное шифрование - это ближе к форме шифрования с закрытым ключом. У каждой стороны есть свой ключ, который можно как зашифровать, так и расшифровать. Как мы обсуждали в приведенном выше примере, после асимметричного шифрования, которое происходит при подтверждении связи SSL, браузер и сервер обмениваются данными, используя симметричный ключ сеанса, который передается вместе.
Когда вы делаете покупки для сертификата SSL и видите «2048-битный», это относится к длине закрытого ключа, в частности закрытого ключа RSA. Когда вы видите «256-битный», это обычно относится к размеру симметричных ключей сеанса, которые используются во время фактического взаимодействия. Это не означает, что симметричное шифрование менее безопасно. Суперкомпьютеру все равно потребовались бы тысячи лет, чтобы расшифровать 256-битное шифрование.
Причина, по которой для связи используется симметричное 256-битное шифрование, заключается в том, что оно быстрее, что означает лучшую производительность и меньшие накладные расходы для серверов.
Когда вы подключаетесь к веб-сайту через HTTPS, под капотом происходит много всего. В первую очередь всем нужно… пожать руку ?!
Современные алгоритмы шифрования
Теперь, когда мы обсудили симметричное и асимметричное шифрование, мы можем перейти к некоторым современным алгоритмам шифрования.AES - расшифровывается как Advanced Encryption Standard , первоначально называвшийся Rijndael, это спецификация шифрования, опубликованная Национальным институтом стандартов и технологий (NIST) еще в 2001 году. Она проводит открытый текст через ряд «раундов преобразования», определяемых размером ключа, каждый раунд состоит из нескольких этапов обработки. Давайте не будем заходить слишком далеко в сорняки на этом. AES - это общий алгоритм с SSL / TLS. Он заменил стандарт шифрования данных (DES), созданный в 1977 году.
RSA - означает Ривест-Шамир-Адлемен, в честь его создателей, это алгоритм шифрования с открытым ключом (асимметричный), который существует с 1978 года и до сих пор широко используется. Он использует факторизацию простых чисел для шифрования открытого текста.
Забавный факт: неудачно названный Клиффорд Кокс, математик, нанятый британской разведкой GCHQ, изобрел эквивалентную систему пятью годами ранее, в 1973 году, но она не была рассекречена до 1997 года.
ECC - означает криптографию эллиптических кривых, которая опирается на алгебраическую структуру эллиптических кривых над конечными полями. Хотя ECC существует с 1985 года, он используется только с 2004 года. ECC имеет явные преимущества перед RSA и, вероятно, будет играть более заметную роль в будущем SSL/TLS.
PGP - расшифровывается как Pretty Good Privacy, он был создан в 1991 году Филом Циммерманом. На самом деле это скорее набор алгоритмов, чем один, все для хеширования, сжатия данных и криптографии с открытым и закрытым ключом. На каждом этапе используется свой алгоритм. PGP критиковали за плохое удобство использования, отсутствие повсеместного распространения и длину ключей.
Когда следует использовать шифрование?
Как мы обсуждали ранее, шифрование - это двусторонняя функция. Вы шифруете информацию, чтобы потом расшифровать ее. Таким образом, переписка с кем-то в Интернете, защита ваших облачных данных или передача финансовых данных - все это примеры случаев, когда уместно шифрование.Ключ в том, что шифрование обратимо. Хеширования нет.
Что такое хеширование?
Хеширование - это практика использования алгоритма для сопоставления данных любого размера с фиксированной длиной. Это называется хеш-значением (или иногда хеш-кодом, или хеш-суммой, или даже хеш-дайджестом, если вам нравится). В то время как шифрование - это двусторонняя функция, хеширование - односторонняя функция. Хотя технически возможно обратное хеширование чего-либо, требуемая вычислительная мощность делает это невозможным. Хеширование одностороннее.Теперь, в то время как шифрование предназначено для защиты данных при передаче, хеширование предназначено для проверки того, что файл или фрагмент данных не были изменены - что они подлинные. Другими словами, это контрольная сумма.
Вот как это работает: каждый алгоритм хеширования имеет фиксированную длину. Так, например, вы можете слышать о SHA-256, это означает, что алгоритм будет выводить хеш-значение, которое составляет 256 бит, обычно представленное 64-символьной шестнадцатеричной строкой (h / t Matthew Haslett).
Каждое значение хеш-функции уникально. Если два разных файла создают одно и то же уникальное хеш-значение, это называется коллизией, и это делает алгоритм практически бесполезным. В прошлом году Google создал конфликт с алгоритмом хеширования SHA-1. чтобы продемонстрировать его уязвимость. SHA-1 был официально заменен SHA-2 в начале 2016 года. Но у Google был смысл, чтобы выделить два года средств, человеко-часы и таланты в партнерстве с лабораторией в Амстердаме, чтобы сделать что-то, что в то время было скорее абстракцией в реальность. Это долгий путь, чтобы доказать свою точку зрения. Но Google пошел туда.
В любом случае, вот пример хеширования, допустим, вы хотите поставить цифровую подпись на программу и сделать ее доступной для загрузки на своем веб-сайте. Для этого вы собираетесь создать хэш скрипта или исполняемого файла, который вы подписываете, а затем, после добавления цифровой подписи, вы также хешируете его. После этого все зашифровывается, чтобы его можно было загрузить.
Когда клиент загружает программное обеспечение, его браузер расшифровывает файл, а затем проверяет два уникальных значения хеш-функции. Затем браузер запустит ту же хеш-функцию, используя тот же алгоритм, и снова хеширует файл и подпись. Если браузер выдает одно и то же значение хеш-функции, значит, он знает, что и подпись, и файл являются подлинными - они не были изменены.
В противном случае браузер выдает предупреждение.
Вот как работает подписывание кода. Просто помните, что никакие два файла не могут создавать одинаковое значение хеш-функции, поэтому любое изменение - даже самая маленькая настройка - приведет к разному значению.
Общие алгоритмы хеширования
Как и в случае с шифрованием, давайте рассмотрим некоторые из наиболее распространенных алгоритмов хеширования, используемых сегодня.MD4 - это ненавидящий себя алгоритм хеширования, созданный в 1990 году, даже его создатель Рональд Ривест признает, что у него есть проблемы с безопасностью. Однако 128-битный алгоритм хеширования оказал влияние, его влияние можно почувствовать в более поздних алгоритмах, таких как WMD5, WRIPEMD и семейство WHSA.
MD5 - еще один алгоритм хеширования, созданный Рэем Ривестом, который, как известно, подвержен уязвимостям. Он был создан в 1992 году как преемник MD4. В настоящее время MD6 находится в разработке, но в 2009 году Ривест удалил его из рассмотрения NIST для SHA-3.
SHA - означает алгоритм хэширования безопасности и, вероятно, наиболее известен как алгоритм хеширования, используемый в большинстве комплектов шифров SSL / TLS. Набор шифров - это набор шифров и алгоритмов, которые используются для соединений SSL/TLS. SHA обрабатывает аспекты хеширования. SHA-1, как мы упоминали ранее, устарел. SHA-2 теперь является обязательным. SHA-2 иногда известен как SHA-256, хотя также доступны варианты с большей длиной в битах.
RIPEMD - семейство алгоритмов криптографического хеширования с длиной 128, 160, 256 и 320 бит. Он был разработан в рамках проекта ЕС Ripe Гансом Доббертином и группой ученых в 1996 году. Его 256- и 320-битные варианты на самом деле не добавляют дополнительной безопасности, они просто уменьшают вероятность столкновения. В 2004 году сообщалось о коллизии для RIPEMD-128, что означает, что RIPEMD-160 - единственный алгоритм из этого семейства, достойный внимания (примерно в двух абзацах это будет потрясающий каламбур).
WHIRLPOOL - разработан Виктором Райменом (соавтором алгоритма AES, о котором мы говорили ранее) и Пауло Баррето в 2000 году. С тех пор он претерпел две модификации. Он производит 512-битные хэши, которые обычно представлены 128-значными шестнадцатеричными числами.
TIGER - довольно новый алгоритм, который начинает набирать обороты в сетях обмена файлами и торрент-сайтах. В настоящее время нет известных атак, эффективных против его полного 24-раундового варианта.
Что такое соление?
Соль - это концепция, которая обычно относится к хешированию паролей. По сути, это уникальное значение, которое можно добавить в конец пароля для создания другого значения хеш-функции. Это добавляет уровень безопасности к процессу хеширования, особенно против атак методом грубой силы. Атака методом грубой силы - это попытка компьютера или ботнета использовать все возможные комбинации букв и цифр, пока не будет найден пароль.В любом случае, при засолке добавочная ценность называется «солью».
Идея состоит в том, что, добавляя соль в конец пароля и затем хешируя его, вы существенно усложняете процесс взлома пароля.
Давайте посмотрим на небольшой пример.
Скажите, что пароль, который я хочу солить, выглядит так:
7X57CKG72JVNSSS9
Ваша соль - это просто слово СОЛЬ.
Перед хешированием вы добавляете SALT в конец данных. Итак, это будет выглядеть так:
7X57CKG72JVNSSS9SALT
Хеш-значение отличается от простого несоленого пароля. Помните, что даже малейшее изменение хешируемых данных приведет к другому уникальному хеш-значению. Посолив свой пароль, вы, по сути, скрываете его реальное хеш-значение, добавляя дополнительный бит данных и изменяя его.
Теперь, если злоумышленник знает вашу соль, это по сути бесполезно. Они могут просто добавить его в конец каждого варианта пароля, который они пытаются использовать, и в конечном итоге его найдут. Вот почему соль для каждого пароля должна быть разной - для защиты от атак с радужной таблицей [предложение h / t Джона в комментариях].
Мы могли бы написать целую статью о безопасности паролей и о том, по-прежнему ли это полезная защита - и мы когда-нибудь будем, - но пока это должно быть приемлемое определение соления.
И в сторону, если вы еще не сложили два и два вместе, наше имя, Hashed Out, является игрой на популярной идиоме для обсуждения чего-либо и процесса хеширования, связанного с шифрованием SSL.
Что мы выложили
Вот что мы рассмотрели в сегодняшнем обсуждении:- Шифрование - это двусторонняя функция, при которой информация шифруется таким образом, чтобы ее можно было расшифровать позже.
- Хеширование - это односторонняя функция, при которой данные отображаются в значение фиксированной длины. Хеширование в основном используется для аутентификации.
- Соль - это дополнительный шаг во время хеширования, обычно связанный с хешированными паролями, который добавляет дополнительное значение в конец пароля, изменяющее полученное хеш-значение.