diff --git a/appendix/questions-4.tex b/appendix/questions-4.tex index b7960e812..7c123fc9e 100644 --- a/appendix/questions-4.tex +++ b/appendix/questions-4.tex @@ -19,7 +19,7 @@ \section{Курс <<Защита информации>>} \item Терморектальный криптоанализ. Формулировка основной теоремы, идея доказательства. Свойства, примеры использования. \item Современные потоковые шифры на примере A5/1. Общий вид, требования, характеристики и анализ защищённости. \item Современные потоковые шифры на примере RC4. Общий вид, требования, характеристики и анализ защищённости. - \item Задача о словаре и хеш-функции. Коллизии в хеш-фунциях. Криптографически стойкие хеш-функции. Свойства, принципы построения криптографически стойких хеш-функций (стандарта США или ГОСТ Р 34.11-2012 <<СТРИБОГ>>). Структуры Меркла~---~Дамгарда, Миагучи~---~Пренеля. Использование хеш-функций в криптографии. + \item Задача о словаре и хеш-функции. Коллизии в хеш-фунциях. Криптографически стойкие хеш-функции. Свойства, принципы построения криптографически стойких хеш-функций (стандарта США или ГОСТ Р 34.11-2012 <<СТРИБОГ>>). Структуры Меркла~---~Дамгора\index{структура!Меркла~---~Дамгора}, Миагучи~---~Пренеля\index{структура!Миагучи~---~Пренеля}. Использование хеш-функций в криптографии. \item База данных на основе Echo-сети. Blockchain. Доказательство работы (proof-of-work, proof-of-share). BitCoin. \item Односторонние функции с потайной дверцей. Пример, не связанный с задачами из области теории чисел (т.е. не факторизация, не дискретный логарифм, etc.) Возможность использования односторонних функций в криптографии. Общие идеи использования криптографии с открытым ключом для шифрования. Проблемы криптографической стойкости, производительности. \item Цифровые подписи. Цели, основные принципы получения и использования. Конкретные примеры использования цифровых подписей в современных информационных системах. diff --git a/definitions.tex b/definitions.tex index c369d2471..09fe41538 100644 --- a/definitions.tex +++ b/definitions.tex @@ -32,7 +32,7 @@ \chapter{Основные понятия и определения} Попытка криптоаналитика нарушить свойство криптографической системы по обеспечению защиты информации (например, получить информацию вопреки свойству обеспечения конфиденциальности) называется \emph{криптографической атакой} (\emph{криптоатакой}). Если данная попытка оказалась успешной, и свойство было нарушено или может быть нарушено в ближайшем будущем, то такое событие называется \emph{взломом криптосистемы} или \emph{вскрытием криптосистемы}. Конкретный метод криптографической атаки также называется \emph{криптоанализом} (например, линейный криптоанализ, дифференциальный криптоанализ и~т.~д.). Криптосистема называется \emph{криптостойкой}, если число стандартных операций для её взлома превышает возможности современных вычислительных средств в течение всего времени ценности информации (до 100 лет). -Для многих криптографических примитивов существует атака полным перебором\index{атака!полным перебором} или аналогичная, которая подразумевает, что если выполнить очень большое количество определённых операций (по одной на каждое значение из области определения одного из аргументов криптографического метода), то один из результатов укажет непосредственно на способ взлома системы (например, укажет на ключ для нарушения конфиденциальности, обеспечиваемой алгоритмом шифрования, или на допустимый прообраз для функции хеширования, приводящий к нарушению аутентичности и целостности). В этом случае под \emph{взломом криптосистемы} понимается построение алгоритма криптоатаки с количеством операций меньшим, чем планировалось при создании этой криптосистемы (часто, но не всегда, это равно именно количеству операций при атаке полным перебором\footnote{Например, сложность построения второго прообраза для хеш-функций на основе конструкции Меркла~---~Дамгарда составляет $2^n / \left|M\right|$ операций, тогда как полный перебор -- $2^n$. См. раздел~\ref{section-stribog}.}). Взлом криптосистемы -- это не обязательно, например, реально осуществлённое извлечение информации, так как количество операций может быть вычислительно недостижимым как в настоящее время, так и в течение всего времени защиты. То есть могут существовать системы, которые формально взломаны, но пока ещё являются криптостойкими. +Для многих криптографических примитивов существует атака полным перебором\index{атака!полным перебором} или аналогичная, которая подразумевает, что если выполнить очень большое количество определённых операций (по одной на каждое значение из области определения одного из аргументов криптографического метода), то один из результатов укажет непосредственно на способ взлома системы (например, укажет на ключ для нарушения конфиденциальности, обеспечиваемой алгоритмом шифрования, или на допустимый прообраз для функции хеширования, приводящий к нарушению аутентичности и целостности). В этом случае под \emph{взломом криптосистемы} понимается построение алгоритма криптоатаки с количеством операций меньшим, чем планировалось при создании этой криптосистемы (часто, но не всегда, это равно именно количеству операций при атаке полным перебором\footnote{Например, сложность построения второго прообраза для хеш-функций на основе конструкции Меркла~---~Дамгора составляет $2^n / \left|M\right|$ операций, тогда как полный перебор -- $2^n$. См. раздел~\ref{section-stribog}.}). Взлом криптосистемы -- это не обязательно, например, реально осуществлённое извлечение информации, так как количество операций может быть вычислительно недостижимым как в настоящее время, так и в течение всего времени защиты. То есть могут существовать системы, которые формально взломаны, но пока ещё являются криптостойкими. Далее рассмотрим модель передачи информации с отдельными криптографическими методами. diff --git a/hash-functions/GOST_R_34.11-2012.tex b/hash-functions/GOST_R_34.11-2012.tex index 250efb25c..f74607b3a 100644 --- a/hash-functions/GOST_R_34.11-2012.tex +++ b/hash-functions/GOST_R_34.11-2012.tex @@ -11,16 +11,16 @@ \section{Хеш-функция «Стрибог»}\label{section-stribog}\index{ \item максимальная производительность \emph{программной} реализации (процессоры архитектуры \texttt{x64}). \end{itemize} -В соответствии с данными требованиями алгоритм новой хеш-функции основывается на хорошо изученных конструкциях Меркла~---~Дамгарда\index{структура!Меркла~---~Дамгарда}~\cite{Merkle:1979, Merkle:1990, Damgard:1990} и Миагучи~---~Пренеля\index{структура!Миагучи~---~Пренеля}~\cite{Espen:Mieghem:1989, Miyaguchi:Ohta:Iwata:1990:03, Miyaguchi:Ohta:Iwata:1990:11}, во внешней своей структуре практически полностью повторяя режим HAIFA\index{HAIFA} (\langen{HAsh Iterative FrAmework},~\cite{Biham:Dunkelman:2007}), использовавшийся в хеш-функциях SHAvite-3\index{хеш-функция!SHAvite-3} и BLAKE\index{хеш-функция!BLAKE}. +В соответствии с данными требованиями алгоритм новой хеш-функции основывается на хорошо изученных конструкциях Меркла~---~Дамгора\index{структура!Меркла~---~Дамгора} (см. раздел~\ref{sec:merkle-damgard}) и Миагучи~---~Пренеля\index{структура!Миагучи~---~Пренеля}~\cite{Espen:Mieghem:1989, Miyaguchi:Ohta:Iwata:1990:03, Miyaguchi:Ohta:Iwata:1990:11}, во внешней своей структуре практически полностью повторяя режим HAIFA\index{HAIFA} (\langen{HAsh Iterative FrAmework},~\cite{Biham:Dunkelman:2007}), использовавшийся в хеш-функциях SHAvite-3\index{хеш-функция!SHAvite-3} и BLAKE\index{хеш-функция!BLAKE}. \begin{figure}[htb] \centering \includegraphics[width=0.95\textwidth]{pic/stribog-md} - \caption{Использование структуры Меркла~---~Дамгарда в хеш-функции <<Стрибог>>} + \caption{Использование структуры Меркла~---~Дамгора в хеш-функции <<Стрибог>>} \label{fig:stribog-md} \end{figure} -Как показано на рис.~\ref{fig:stribog-md}, входное сообщение разбивается на блоки по 512 бит (64 байта). Последний блок \emph{слева} дополняется последовательностью из нулей и одной единицы до 512 бит (длина дополнения не учитывается в дальнейшем, когда длина сообщения используется как аргумент функций). Для каждой части сообщения вычисляется значение функции $g_N(h, m)$, которая в качестве аргумента использует текущий номер блока (умноженный на 512), результат вычисления для предыдущего блока и очередной блок сообщения. Также есть два завершающих преобразования. Первое вместо блока сообщения использует количество обработанных бит N (то есть длину сообщения), а второе -- арифметическую сумму значений всех блоков сообщения. В предположении, что функция $g_N(h, m)$ является надёжной для создания криптографически стойких хеш-функций, известно, что конструкция Меркла~---~Дамгарда позволяет получить хеш-функцию со следующими параметрами: +Как показано на рис.~\ref{fig:stribog-md}, входное сообщение разбивается на блоки по 512 бит (64 байта). Последний блок \emph{слева} дополняется последовательностью из нулей и одной единицы до 512 бит (длина дополнения не учитывается в дальнейшем, когда длина сообщения используется как аргумент функций). Для каждой части сообщения вычисляется значение функции $g_N(h, m)$, которая в качестве аргумента использует текущий номер блока (умноженный на 512), результат вычисления для предыдущего блока и очередной блок сообщения. Также есть два завершающих преобразования. Первое вместо блока сообщения использует количество обработанных бит N (то есть длину сообщения), а второе -- арифметическую сумму значений всех блоков сообщения. В предположении, что функция $g_N(h, m)$ является надёжной для создания криптографически стойких хеш-функций, известно, что конструкция Меркла~---~Дамгора позволяет получить хеш-функцию со следующими параметрами: \begin{itemize} \item сложность построения прообраза: $2^n$ операций; diff --git a/hash-functions/merkle-damgard.tex b/hash-functions/merkle-damgard.tex index 421e3bbbe..0dce60e2d 100644 --- a/hash-functions/merkle-damgard.tex +++ b/hash-functions/merkle-damgard.tex @@ -1,4 +1,4 @@ -\section{Структура Меркла~---~Дамгора}\index{кострукция!Меркла~---~Дамгора|(} +\section{Структура Меркла~---~Дамгора}\label{sec:merkle-damgard}\index{структура!Меркла~---~Дамгора|(} \selectlanguage{russian} Приведём пример метода построения хеш-функции, называемого структурой (конструкцией, методом) Меркла~---~Дамгора (рис.~\ref{fig:merkle-damgard}), впервые описанной в кандидатской диссертации Ральфа Меркла в 1979 году. Меркл и Дамгор независимо друг от друга показали, что если раундовая функция сжатия (обозначенная $f$ на рис.~\ref{fig:merkle-damgard}) устойчива к коллизиям, то итоговая хеш-функция будет также устойчива (\langen{Ralph Charles Merkle}, \langda{Ivan Bjerre Damgård}, \cite{Merkle:1979, Merkle:1990, Damgard:1990}). @@ -31,4 +31,4 @@ \section{Структура Меркла~---~Дамгора}\index{костру С использованием данной конструкции построены такие криптографические хеш-функции, как MD4\index{хеш-функция!MD4}, SHA-1\index{хеш-функция!SHA-1}, SHA-2\index{хеш-функция!SHA-2}, российский стандарт ГОСТ~Р~34.11-2012 (<<Стрибог>>)\index{хеш-функция!Стрибог} и многие другие. -\index{кострукция!Меркла~---~Дамгора|)} \ No newline at end of file +\index{структура!Меркла~---~Дамгора|)} \ No newline at end of file