«Мир стоит на кодах и шифрах, Джон. Многомиллионные охранные системы в банках и простенькие кассовые аппараты. Криптография сопровождает нас на каждом шагу».
Помните эту цитату из первого сезона «Шерлока»? В самом деле, современный человек, даже будучи простым потребителем, сталкивается с криптографией буквально каждый день: в смартфонах и банковских картах, телевизорах и автомобилях, умных домах и во многих других устройствах используется криптографическая защита информации.
Неудивительно, что и у людей, занимающихся разработкой ПО, нередко возникает потребность в использовании криптографии. И казалось бы — в чем проблема? Практически в любой системе разработки имеются готовые библиотеки, реализующие современные криптографические алгоритмы на любом популярном языке программирования. Достаточно выбрать подходящий для конкретной задачи алгоритм шифрования, использовать надежный ключ — и вуаля! — конфиденциальные данные сокрыты от посторонних глаз и защищены от подмены.
Однако на практике не всё так однозначно: использование даже самого надежного криптографического алгоритма само по себе не гарантирует безопасность. В частности, при практической реализации программных компонентов, в которых задействована криптография, критически важно обдуманно подходить к выбору алгоритма шифрования и исключить любые утечки — будь то данные о ходе его работы, промежуточных результатах или возникших ошибках.
В противном случае ваш код может породить "криптографического оракула" — гипотетическую сущность, которая при общении с атакующим выдаёт как будто бы не очень полезные ответы, однако из этих ответов в итоге складываются подсказки для успешного взлома вашей криптографии.
О том, как устроены такие атаки, читайте в статье Кирилла Мосолова "Оракул, сын ошибок чудных".
Post #217
1.18K

- 🔥 9
- 👍 8
- ❤ 5