Криптографический примитив - Cryptographic primitive

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

Обоснование

При создании криптографические системы дизайнеры используют криптографические примитивы в качестве основных строительных блоков. Из-за этого криптографические примитивы предназначены для выполнения одной очень конкретной задачи точно определенным и высоконадежным образом.

Поскольку криптографические примитивы используются в качестве строительных блоков, они должны быть очень надежными, то есть работать в соответствии с их спецификацией. Например, если процедура шифрования утверждает, что ее можно взломать только с помощью Икс количество компьютерных операций, и он нарушается значительно меньше, чем Икс операций, то этот криптографический примитив не работает. Если обнаруживается, что криптографический примитив не работает, почти каждый протокол, который его использует, становится уязвимым. Поскольку создание криптографических подпрограмм очень сложно, а их проверка на надежность занимает много времени, по сути, никогда не имеет смысла (и не является безопасным) разрабатывать новый криптографический примитив, отвечающий потребностям новой криптографической системы. Причины включают:

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

Криптографические примитивы в некотором смысле похожи на языки программирования. Программист редко изобретает новый язык программирования при написании новой программы; вместо этого они будут использовать один из уже установленных языков программирования для программа в.

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

Обычно используемые примитивы

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

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

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

Смотрите также

  • Категория: Криптографические примитивы - список криптографических примитивов
  • Крипто-гибкость

Рекомендации

  • Левенте Буттян, Иштван Вайда: Kriptográfia és alkalmazásai (Криптография и ее приложения), Typotex 2004, ISBN  963-9548-13-8
  • Менезес, Альфред Дж .: Справочник по прикладной криптографии, CRC Press, ISBN  0-8493-8523-7, Октябрь 1996 г., 816 стр.
  • Крипто101 это вводный курс по криптографии, свободно доступный для программистов любого возраста и уровня подготовки.