Криптографические примитивы
Криптографические примитивы — низкоуровневые криптографические алгоритмы, которые часто используются для построения криптографических протоколов. В узком смысле это операции и процедуры, определяющие требуемые свойства криптосистемы[1].
Введение
Криптографические примитивы используются как основные строительные блоки при создании криптосистемы, то есть они предназначены для узкого класса задач с высокой степенью надёжности. В качестве примера можно рассмотреть такую ситуацию: пусть для некоторой подпрограммы шифрования указано, что она может быть взломана только с числом операций X на компьютере, тогда если она может быть взломана с помощью значительно меньшего количества операций, чем X, этот криптографический примитив считается ненадёжным.
При проектировании протоколов и криптосистем разработчик несёт ответственность за устранение композиционных недостатков. Не имея возможности доказать их безопасность, разработчик должен считать надёжными примитивы, которые они используют. Выбор лучшего примитива, доступного для использования в протоколе, обычно обеспечивает наилучшую доступную безопасность из возможных. Если обнаружен сбой криптографического примитива, почти каждый протокол, который его использует, становится уязвимым[2].
Свойства примитивов
Криптографические примитивы должны обладать следующими свойствами:
- Уровень безопасности. Обычно определяется количеством операций, требуемых (с использованием лучших методов, известных в настоящее время), чтобы достигнуть намеченную цель. Обычно уровень безопасности определяется необходимой верхней границей объёма работы. Это иногда называют рабочим фактором.
- Функциональность. Примитивы должны быть объединяемы для достижения различных целей. Какие примитивы наиболее эффективны для данной цели, будет определяться основными свойствами примитивов.
- Методы работы. Примитивы, когда они применяются в различных направлениях и при разных вложениях, как правило, проявляют различные характеристики; таким образом, один примитив мог бы использоваться по-разному, в зависимости от необходимости.
- Производительность. Это относится к эффективности примитива в определённом режиме работы
(например, алгоритм шифрования может оцениваться по количеству битов в секунду, которую он может зашифровать).
- Простота реализации. Это относится к трудности реализации примитива в практической реализации, например реализации примитива в программной или аппаратной среде.
Относительная важность различных критериев в значительной степени зависит от применения и имеющихся ресурсов. Например, в среде, где вычислительная мощность ограничена, возможно, придётся отказаться от очень высокого уровня безопасности для повышения производительности системы в целом.
Основные примитивы
- Хеширование — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хеш-кодом, контрольной суммой или дайджестом сообщения (англ. message digest). Результаты хеширования статистически уникальны. Последовательность, отличающаяся хотя бы одним байтом, не будет преобразована в то же самое значение[3][4].
- Криптография с симметричным ключом — заключается в том, что обе стороны — участники обмена данными имеют абсолютно одинаковые ключи для шифрования и расшифровки данных. Данный способ осуществляет преобразование, позволяющее предотвратить просмотр информации третьей стороной[3][4].
- Асимметричное шифрование — предполагает использовать в паре два разных ключа — открытый и секретный. В асимметричном шифровании ключи работают в паре — если данные шифруются открытым ключом, то расшифровать их можно только соответствующим секретным ключом и наоборот — если данные шифруются секретным ключом, то расшифровать их можно только соответствующим открытым ключом. Использовать открытый ключ из одной пары и секретный из другой — невозможно. Каждая пара асимметричных ключей связана математическими зависимостями. Данный способ также нацелен на преобразование информации от просмотра третьей стороной[3][4].
- Цифровая подпись — используются для установления подлинности документа, его происхождения и авторства, исключает искажения информации в электронном документе[4].
- Схема обязательства — это метод, позволяющий пользователю подтверждать какое-либо значение, которое не разглашается, то есть в случае разглашения этого значения благодаря этой схеме будет известно, что пользователь знал его на момент выдачи обязательства и что оно не изменилось[5].
- Генератор псевдослучайных чисел — это генератор псевдослучайных чисел с определёнными свойствами, позволяющими использовать его в задачах криптографии[6].
Объединение криптографических примитивов
Криптографические примитивы сами по себе довольно ограничены. Они не могут рассматриваться как криптографическая система. Например, простой алгоритм шифрования не обеспечит ни механизма аутентификации, ни какой-либо явной проверки целостности сообщения. Если мы используем комбинацию подпрограмм кодирования (например DES) и хеширования (например SHA-1), то получим систему для передачи сообщения, которое не только закодировано, но и защищено от подделки. И если злоумышленник не знает ключа шифрования, он не может вмешаться в передачу сообщения.
Большинство проблем криптографических систем (то есть ненадёжности в системах) связано, как правило, с неправильным использованием примитивов, то есть ошибками при построении архитектуры криптографического протокола, неправильным использованием и комбинированием примитивов, а не с ошибками внутри самих примитивов. Существуют методы для полного анализа криптографических протоколов, но они очень сложны. Однако некоторые основные свойства могут быть проверены с помощью автоматических методов, например, с помощью логики Бэрроуза — Абади — Нидхэма[2].
См. также
Примечания
- ↑ Молдовян Н. А. Криптография: от примитивов к синтезу алгоритмов. — 2004. — С. 11. — 448 с. — ISBN 9785941575244.
- ↑ 2,0 2,1 Patel Parth. Cryptovirology // U & P U PatelDepartment of Computer Engineering,Gujarat University, India. — С. 6. — 8 с.
- ↑ 3,0 3,1 3,2 Menezes A.J., Oorschot P.C., Vanstone S.A. Handbook of applied cryptography. — 1996. — С. 5—6. — 780 с. — ISBN 0-8493-8523-7.
- ↑ 4,0 4,1 4,2 4,3 Марков А. С., Цирлов В. Л. Основы криптографии: подготовка к CISSP // Вопросы кибербезопасности No2(10). — 2015. — С. 66.
- ↑ Oded Goldreich. Foundations of Cryptography: Volume 1, Basic Tools. — Cambridge University Press. — 2004. — С. 223—228. — 372 с. — ISBN 0-521-79172-3.
- ↑ Michela Meister. A Survey of Pseudorandom Functions // Stanford University. — С. 1. — 5 с.