Эта статья включает список общих ссылок , но в ней отсутствуют соответствующие встроенные цитаты . ( Май 2021 г. ) |
Криптографические примитивы — это хорошо зарекомендовавшие себя низкоуровневые криптографические алгоритмы , которые часто используются для создания криптографических протоколов для систем компьютерной безопасности . [1] Эти процедуры включают в себя, помимо прочего, односторонние хэш-функции и функции шифрования .
При создании криптографических систем проектировщики используют криптографические примитивы в качестве самых основных строительных блоков. По этой причине криптографические примитивы предназначены для выполнения одной очень конкретной задачи точно определенным и высоконадежным способом.
Поскольку криптографические примитивы используются в качестве строительных блоков, они должны быть очень надежными, т. е. работать в соответствии со своей спецификацией. Например, если процедура шифрования заявляет, что ее можно взломать только с помощью X компьютерных операций, а она взломана значительно меньшим количеством операций, чем X , то эта криптографическая примитива не сработала. Если обнаруживается, что криптографическая примитива не сработала, почти каждый протокол, который ее использует, становится уязвимым. Поскольку создание криптографических процедур очень сложно, а их проверка на надежность занимает много времени, по сути, никогда не разумно (и не безопасно) разрабатывать новый криптографический примитив для удовлетворения потребностей новой криптографической системы. Причины включают:
Криптографические примитивы являются одним из строительных блоков каждой криптосистемы, например, TLS , SSL , SSH и т. д. Разработчики криптосистем, не имея возможности окончательно доказать свою безопасность, должны считать используемые ими примитивы безопасными. Выбор наилучшего доступного примитива для использования в протоколе обычно обеспечивает наилучшую доступную безопасность. Однако в любой криптосистеме возможны композиционные слабости, и обязанность разработчика (разработчиков) — избегать их.
Криптографические примитивы не являются криптографическими системами, поскольку они сами по себе весьма ограничены. Например, простой алгоритм шифрования не предоставит механизма аутентификации или какой-либо явной проверки целостности сообщения. Только при объединении в протоколы безопасности можно удовлетворить более одного требования безопасности. Например, для передачи сообщения, которое не только закодировано, но и защищено от подделки (т. е. является конфиденциальным и защищено от целостности ), можно использовать в сочетании процедуру кодирования, такую как DES , и процедуру хэширования, такую как SHA-1 . Если злоумышленник не знает ключа шифрования, он не сможет изменить сообщение таким образом, чтобы значение(я) дайджеста сообщения были действительными.
Объединение криптографических примитивов для создания протокола безопасности само по себе является целой специализацией. Большинство эксплуатируемых ошибок (т. е. небезопасности в криптосистемах) обусловлены не ошибками проектирования примитивов (предполагая, что они всегда были выбраны с осторожностью), а способом их использования, т. е. плохим проектированием протокола и ошибочной или недостаточно тщательной реализацией. Математический анализ протоколов на момент написания этой статьи не был зрелым. [ необходима цитата ] Существуют некоторые основные свойства, которые можно проверить с помощью автоматизированных методов, таких как логика BAN . Существуют даже методы для полной проверки (например, исчисление SPI ), но они чрезвычайно громоздки и не могут быть автоматизированы. Проектирование протоколов — это искусство, требующее глубоких знаний и большой практики; даже в этом случае ошибки являются обычным явлением. Наглядный пример для реальной системы можно увидеть на странице новостей об уязвимостях OpenSSL здесь.