Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Обоснование [ править ]

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

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

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

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

Криптографические примитивы являются одним из строительных блоков каждой криптосистемы, например 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 страниц. 
  • Crypto101 - это вводный курс по криптографии, свободно доступный для программистов любого возраста и уровня подготовки.