Криптографические примитивы

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

Криптографические примитивы — низкоуровневые криптографические алгоритмы, которые часто используются для построения криптографических протоколов. В узком смысле это операции и процедуры, определяющие требуемые свойства криптосистемы[1].

Введение[править | править код]

Криптографические примитивы используются как основные строительные блоки при создании криптосистемы, то есть они предназначены для узкого класса задач с высокой степенью надёжности. В качестве примера можно рассмотреть такую ситуацию: пусть для некоторой подпрограммы шифрования указано, что она может быть взломана только с числом операций X на компьютере, тогда если она может быть взломана с помощью значительно меньшего количества операций, чем X, этот криптографический примитив считается ненадёжным.

При проектировании протоколов и криптосистем разработчик несёт ответственность за устранение композиционных недостатков. Не имея возможности доказать их безопасность, разработчик должен считать надёжными примитивы, которые они используют. Выбор лучшего примитива, доступного для использования в протоколе, обычно обеспечивает наилучшую доступную безопасность из возможных. Если обнаружен сбой криптографического примитива, почти каждый протокол, который его использует, становится уязвимым[2].

Свойства примитивов[править | править код]

Криптографические примитивы должны обладать следующими свойствами:

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

Относительная важность различных критериев в значительной степени зависит от применения и имеющихся ресурсов. Например, в среде, где вычислительная мощность ограничена, возможно, придётся отказаться от очень высокого уровня безопасности для повышения производительности системы в целом.

Основные примитивы[править | править код]

  • Хеширование — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хеш-кодом, контрольной суммой или дайджестом сообщения (англ. message digest). Результаты хеширования статистически уникальны. Последовательность, отличающаяся хотя бы одним битом, не будет преобразована в то же самое значение[3][4].
  • Криптография с симметричным ключом — заключается в том, что обе стороны — участники обмена данными имеют абсолютно одинаковые ключи для шифрования и расшифровки данных. Данный способ осуществляет преобразование, позволяющее предотвратить просмотр информации третьей стороной[3][4].
  • Асимметричное шифрование — предполагает использовать в паре два разных ключа — открытый и секретный. В асимметричном шифровании ключи работают в паре — если данные шифруются открытым ключом, то расшифровать их можно только соответствующим секретным ключом и наоборот — если данные шифруются секретным ключом, то расшифровать их можно только соответствующим открытым ключом. Использовать открытый ключ из одной пары и секретный из другой — невозможно. Каждая пара асимметричных ключей связана математическими зависимостями. Данный способ также нацелен на преобразование информации от просмотра третьей стороной[3][4].
  • Цифровая подпись — используются для установления подлинности документа, его происхождения и авторства, исключает искажения информации в электронном документе[4].
  • Схема обязательства — это метод, позволяющий пользователю подтверждать какое-либо значение, которое не разглашается, то есть в случае разглашения этого значения благодаря этой схеме будет известно, что пользователь знал его на момент выдачи обязательства и что оно не изменилось[5].
  • Генератор псевдослучайных чисел — это генератор псевдослучайных чисел с определёнными свойствами, позволяющими использовать его в задачах криптографии[6].

Объединение криптографических примитивов[править | править код]

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

Большинство проблем криптографических систем (то есть ненадёжности в системах) связано, как правило, с неправильным использованием примитивов, то есть ошибками при построении архитектуры криптографического протокола, неправильным использованием и комбинированием примитивов, а не с ошибками внутри самих примитивов. Существуют методы для полного анализа криптографических протоколов, но они очень сложны. Однако некоторые основные свойства могут быть проверены с помощью автоматических методов, например, с помощью логики Бэрроуза — Абади — Нидхэма[2].

См. также[править | править код]

Примечания[править | править код]

  1. Молдовян Н. А. Криптография: от примитивов к синтезу алгоритмов. — 2004. — С. 11. — 448 с. — ISBN 9785941575244.
  2. 1 2 Patel Parth. Cryptovirology // U & P U PatelDepartment of Computer Engineering,Gujarat University, India. — С. 6. — 8 с.
  3. 1 2 3 Menezes A.J., Oorschot P.C., Vanstone S.A. Handbook of applied cryptography. — 1996. — С. 5—6. — 780 с. — ISBN 0-8493-8523-7.
  4. 1 2 3 4 Марков А. С., Цирлов В. Л. Основы криптографии: подготовка к CISSP // Вопросы кибербезопасности No2(10). — 2015. — С. 66.
  5. Oded Goldreich. Foundations of Cryptography: Volume 1, Basic Tools. — Cambridge University Press. — 2004. — С. 223—228. — 372 с. — ISBN 0-521-79172-3.
  6. Michela Meister. A Survey of Pseudorandom Functions // Stanford University. — С. 1. — 5 с.