Введение

Основной криптографический алгоритм, используемый для создания криптографических протоколов. Криптографические примитивы - это хорошо известные криптографические алгоритмы низкого уровня, которые часто используются для создания криптографических протоколов для систем компьютерной безопасности. Эти процедуры включают, но не ограничиваются ими, односторонние хеш-функции и функции шифрования.

Обоснование

При создании криптографических систем дизайнеры используют криптографические примитивы в качестве основных строительных блоков. Из-за этого криптографические примитивы предназначены для выполнения одной очень специфической задачи в точно определенной и высоко надежной манере. Поскольку криптографические примитивы используются в качестве строительных блоков, они должны быть очень надежными, т.е. выполнять в соответствии со своей спецификацией. Например, если система шифрования утверждает, что она может быть взломана только с помощью ряда операций, и она взломана значительно меньше, чем операций, то эта криптографическая примитивная система потерпела неудачу. Если криптографический примитив оказывается неисправным, почти каждый протокол, который его использует, становится уязвимым. Поскольку создание криптографических процедур очень сложно, а проверка их надежности занимает много времени, по сути, никогда не бывает разумным (ни безопасным) проектировать новый криптографический примитив, чтобы удовлетворить потребности новой криптографической системы. Причины включают в себя: дизайнер может не быть компетентен в математических и практических соображениях, связанных с криптографическими примитивами. Разработка нового криптографического примитива очень трудоемкая и очень склонна к ошибкам, даже для экспертов в этой области. Поскольку алгоритмы в этой области не только должны быть хорошо разработаны, но и должны быть хорошо протестированы криптологическим сообществом, даже если криптографическая рутина выглядит хорошо с точки зрения дизайна, она все равно может содержать ошибки. Успешное противостояние такому контролю дает некоторую уверенность (на самом деле, пока единственную уверенность), что алгоритм действительно достаточно безопасен для использования; доказательства безопасности для криптографических примитивов обычно недоступны. Криптографические примитивы являются одним из строительных блоков каждой криптосистемы, например, TLS, SSL, SSH и т. Д. Разработчики криптосистем, не имея возможности окончательно доказать свою безопасность, должны считать используемые ими примитивы безопасными. Выбор наилучшего примитива, доступного для использования в протоколе, обычно обеспечивает наилучшую доступную безопасность. Однако в любой криптосистеме возможны слабые места в составе, и ответственность за их предотвращение лежит на разработчике.

Комбинирование криптографических примитивов

Криптографические примитивы не являются криптографическими системами, поскольку они довольно ограничены сами по себе. Например, алгоритм простого шифрования не будет обеспечивать механизм аутентификации, а также не будет проверять целостность сообщения. Только в сочетании в протоколах безопасности можно удовлетворить более чем одному требованию безопасности. Например, для передачи сообщения, которое не только кодируется, но и защищено от манипуляций (т.е. является конфиденциальным и защищенным от коррекции), может использоваться в комбинации кодирующая процедура, такая как DES, и хеш-процедура, такая как SHA 1. Если злоумышленник не знает ключ шифрования, он не может изменить сообщение таким образом, чтобы значение сжатия сообщения (s) было действительным. Сочетание криптографических примитивов для создания протокола безопасности само по себе является целой специализацией. Большинство ошибок, которые могут быть использованы (т.е. отсутствие безопасности в криптосистемах), связаны не с ошибками в проектировании примитивных систем (при условии, что они были выбраны с осторожностью), а с тем, как они используются, то есть с плохим дизайном протокола и ошибками или недостаточной осторожностью в реализации. Математический анализ протоколов, на момент написания этого текста, не созрел. Существуют некоторые основные свойства, которые могут быть проверены автоматизированными методами, такими как логика BAN. Существуют даже методы полной проверки (например, расчет SPI), но они чрезвычайно громоздки и не могут быть автоматизированы. Проектирование протоколов - это искусство, требующее глубоких знаний и много практики; даже тогда ошибки являются обычным явлением. Иллюстративный пример, для реальной системы, можно увидеть на странице новостей об уязвимости OpenSSL здесь.