Современная криптография. Шифры и односторонние функции.
Выросло значение криптографии в нашей жизни. Отправляя электронное письмо или просто заходя в приложение вы составляетеуникальную криптографическую инфраструктуру.
В современном мире любой человек, не умеющий кодировать, может извлечь выгоду из работы криптографии, особенно в эпоху криптовалют и криптоинвестиций.
Мы все используем криптографию в повседневной жизни, знаем мы об этом или нет.
Что такое криптография?
Криптография — это практика защиты связи с использованием различных методов, которые сводятся к реализации протоколов, предотвращающих просмотр или изменение данных нежелательными сторонами.
Дисциплина криптографии имеет четыре аспекта:
• Конфиденциальность: Данные не подвергаются несанкционированному контакту.
• Целостность: данные не манипулируются и не уничтожаются.
• Аутентификация: Стороны могут надежно проверить личность друг друга.
• Неотказуемость: общение может быть подтверждено и впоследствии не отвергнуто участниками.
Симметричные шифры
До компьютеров криптография была основана на использовании шифров.
Шифр — это преобразование читаемого текста в тарабарщину и обратно. Например, простой шифр добавил бы четыре к каждой букве в тексте (таким образом, A становится E). Расшифровка заключается в вычитании четырех из каждой буквы. Эти процессы называются шифрованием и дешифрованием.
Не безопасен сдвиг в алфавите при шифровании. Сопоставления, которые требуют ключа для перевода будут более безопасными. Участвующие стороны должны получить этот ключ.
Известным примером симметричного шифра является машина Enigma, использовавшаяся во время Второй мировой войны.
Односторонние функции
Когда пяовились компьютеры и новые достижения в математике, шифрование стало более сложным. Появилось много новых методов, но одним из самых основных является так называемая односторонняя функция (которая также включает односторонние хэши, используемые для генерации выходных данных фиксированной длины). Односторонние функции считаются криптографическим примитивом. Как следует из названия, односторонняя функция работает только в одном направлении.
Обычное использование односторонних функций и хороший способ понять их — это хеширование паролей, когда они хранятся в базе данных (например, в Java и JavaScript). Пароль берется из обычного текста («fluffy123»), и односторонний алгоритм превращает его в случайную строку («XFcbe2d3bh0sa»). Даже если злоумышленник получит доступ к базе данных, пароли в безопасности. Не существует известного метода (с использованием современных компьютерных систем), чтобы успешно обратить этот процесс вспять.
Интересен тот факт, что даже если злоумышленники имеют полный доступ к логике алгоритма (например, вот исходник BCrypt), инвертировать функцию они, как правило, не в состоянии. Тем не менее, одностороннее хеширование не идеально, и было введено множество методов его взлома (например, массивы Rainbow).
Современные библиотеки хеширования имеют возможность увеличивать сложность хеширования (что позволяет увеличить силу хеширования вместе с увеличением вычислительной мощности) и вводить «соль» в алгоритм, обеспечивая тем самым уникальные хэши идентичных данных. OWASP — Open Web Application Security Project, «Соль» — это значение, сгенерированное криптографически безопасной функцией, которое добавляется к входным данным хеш-функции для создания уникальных хэшей для каждого входного значения, независимо от того, что входные данные не уникальны. . Пока соль держится в секрете, пароли, которые она хэширует, практически невозможно взломать.