\documentclass{article}

\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\usepackage{forest}
\author{Варфоломеев Александр Алексеевич a.varfolomeev@mail.ru}
\title{Криптографические протоколы и стандарты}
\date{2022-09-06}

\setlist[itemize]{leftmargin=*}

\begin{document}
\maketitle
\tableofcontents
\newpage
\sloppy
\section{Введение (2022-09-06)}
Присутствие, 3 ЛР, 3 РК, ДЗ.

\textbf{Криптология} - это наука о создании и анализе систем безопасной связи. Работает в двух основных направлениях:
\begin{enumerate}
\item Криптография - создание систем;
\item Криптоанализ - анализ и дешифровка.
\end{enumerate}

Главный регулятор: ФСБ РФ (\href{fsb.ru}{fsb.ru}).

Безопасность определяется следующими компонентами:
\begin{itemize}
\item подлинность (аутентичность);
\item секретность;
\item целостность - информация не искажена;
\item non-repudiation - неотказуемость - свойства, обеспечивающие невозможность отказа от знакомства с информацией;
\item анонимность - утаивание идентичности при наличии прав;
\end{itemize}

СКЗИ - средства криптографической защиты информации.

КМЗИ - криптографические методы защиты информации

\section{Обработка риска}
\textbf{Риск} - это вероятность от угрозы и тяжести последствий.

Три кита информационной безопасности:
\begin{enumerate}
\item конфиденциальность
\item целостность
\item доступность
\end{enumerate}

\textbf{Протокол} - последовательность действий, с помощью которой два и больше участника решают определённую задачу. По сути, это распределённый алгоритм. \textbf{Криптографический протокол} - это протокол, использующий криптографические функции или примитивы: зашифровать, дешифровать и так далее.

Например, в задаче о волке, козе и капусте - один участник, а значит, это не протокол, а алгоритм.

\textbf{Цикл протокола} - временной интервал, в который активен только один из участников. \textbf{Шаг} - это конкретное законченное действие во время одного цикла.

Литература:
\begin{itemize}
\item Словарь криптографических терминов, 2006;
\item Запечников. Криптографические протоколы и их применение в финансовой и коммерческой деятельности, 2002;
\item Черёмушкин. Криптографические протоколы, 2009.
\item iacr.org
\end{itemize}

Стандартизации:
\begin{itemize}
\item iso.org
\item ietf.org
\item RFC 7801 ГОСТ 34.12 Кузнечик\footnote{\href{https://ru.wikipedia.org/wiki/Кузнечик_(шифр)}{wiki}}
\item RFC 8891 ГОСТ 34.12 Магма\footnote{\href{https://ru.wikipedia.org/wiki/ГОСТ_28147-89}{ГОСТ 28147-89, wiki}}
\item tk26.ru (стандарты разработаны в основном Инфотекс)
  \begin{itemize}
  \item ГОСТ Р 34.10-2012 Процессы формирования и проверки ЭЦП
  \item ГОСТ Р 34.11-2012 Функции хэширования
  \item ГОСТ Р 34.12-2015 Блочные шифр\'{ы}
  \item ГОСТ Р 34.13-2015 Режимы работы блочных шифр\'{о}в
  \end{itemize}
\item Рекомендации и технические спецификации
\end{itemize}

\begin{itemize}
\item (- 1946) Донаучный период развития;
\item 1946 Клод Шеннон. Теория связи в информационных системах. Опирался на теорию информации и доказал, что есть абсолютно (теоретически) стойкие шифры, например, шифр одноразового блокнота;
\item 1976 Практически стойкие шифры Diffie и Hellman New direction in crypto
  \begin{itemize}
  \item Старая стала называться криптографией с секретным ключом (симметричная, одноключевая криптография). Ключ шифрования такой же как расшифрования. ($K_c = K_d$).
  \item Криптография с открытым ключом (асимметричная, двухключевая криптография). Один ключ открытый (для шифрования, второй секретный для расшифрования). по ключу шифрования невозможно найти ключ расшифрования. ($PK_c \neq SK_d$). Асимметрия в том, что все могут шифровать, но расшифровать может только владелец секретного ключа. Потребность возникла из открытого мира.
  \end{itemize}
  Был предложен Key agreement protocol, который используется до сих пор в системах шифрования.
\item Rivest Shamir Adleman (RSA)
\item 2000+ Квантовый компьютер. И следовательно разработка Post-quantum cryptography. Симметричным оказалось достаточно увеличить вдвое размер ключа, а асимметричным системам этого не удаётся сделать просто. NIST competition объявляет конкурс на замещение асимметричного шифрования. Квантовая криптография занимается разработкой квантовых каналов связи, где любое вмешательство приводит к искажению передаваемой информации.
\end{itemize}

\begin{frm}
  (по мнению википедии) \textbf{Шифр} - это (от фр. chiffre «цифра») — система обратимых преобразований, зависящая от некоторого секретного параметра (ключа) и предназначенная для обеспечения секретности передаваемой информации.
  (по мнению Варфоломеева) \textbf{Шифр} - это множество обратимых преобразований (отображений) открытого текста, проводимых с целью его защиты. $ \{E_K, E_K^{-1} \} \forall E_K \cdot E_K^{-1} = I \text{тождественное преобразование}$
\end{frm}


\begin{frm}
  (по мнению википедии) Ключ - секретная информация, используемая криптографическим алгоритмом при зашифровании/расшифровании сообщений, постановке и проверке цифровой подписи, вычислении кодов аутентичности.
  (по мнению Варфоломеева) Ключ - это совокупность данных, определяющая выбор конкретного преобразования из множества преобразований шифра.
\end{frm}

Зашифрование - процесс применения конкретного преобразования шифра к открытому тексту. Результат называется шифрованным текстом (криптограммой). $E_{K_o}(M) = C$

Расшифрование - процесс применения обратного преобразования шифра к шированному тексту для восстановления открытого текста. Не тоже самое, что дешифрование. $E_{K_c}^{-1} = M$

Дешифрование - процесс расшифрования не целевым пользованием.

Стойкость шифра - способность противостоять дешифрованию. Измеряется трудоёмкостью алгоритмов дешифрования (временн\'{а}я $T(n)$ и ёмкостная $S(n)$ сложность).

Имитостойкость - стойкость к имитации и подделке.

Принципы, которые закладываются в пост-квантовые алгоритмы криптографии с открытым ключом:
\begin{itemize}
\item lattice-based crypto (алгебраические решётки);
\item code-based crypto (теория кодирования);
\item hash-based (основанные на хэш-таблица);
\item multy-variate (многопеременные);
\item isogeny (основано на отображении супер-сингулярных эллиптических кривых).
\end{itemize}

\section{Плюсы и минусы симметричной и асимметричной криптографии}
Секретный ключ, симметричный шифр
\begin{itemize}
\item [+] короткие ключи (128-256 бит);
\item [+] высокая скорость (Магма 120Мб/сек, Кузнечик 135Мб/сек);
\item [+] «легче» анализировать (системы строятся из известных блоков, например регистров сдвига, булевых функций, функций К-значной логики);
\item [+] большая история изучения;
\item [+] существуют «совершенно стойкие» шифры.
\item [-] требуется полное доверие сторон;
\item [-] сложнее организовать механизмы ЦП (а именно свойство неотказуемости от информации);
\item [-] не доказана стойкость практически используемых криптосистем (энтропия ключа должна быть больше энтропии открытого текста). Сложной задачей в этом вопросе является доказательство стойкости нижней границы.
\end{itemize}

Асимметричный шифр, открытый ключ
\begin{itemize}
\item [+] не требуется полного доверия (возможно, что два участника доверяют третьему общему участнику, сертификационный центр);
\item [+] только один ключ секретный (либо это ключ зашифрования, либо выработки ЦП) секретность обеспечить сложнее, чем подлинность или целостность;
\item [+] более эффективные алгоритмы цифровой подписи;
\item [-] работает медленнее симметричных;
\item [-] размер ключа обычно больше (Elliptic curve требует б\'{о}льших ключей), Размер ключа влияет на скорость работы алгоритма;
\item [-] история изучения меньше чем у симметричных (с $\approx 1976$);
\item [-] не доказана безопасность. Доказательство сводится к решению задач, например факторизации больших целых чисел или дискретного логарифмирования. Обычно доказывается что атаковать систему не проще, чем решить какую-то известную задачу из теории чисел.
\end{itemize}

\section{Как использовать плюсы и минусы каждой из систем?}
Например, есть два участника А и Б, есть задача передачи открытого текста от А к Б. у А есть открытый ключ Б, для симметричного шифрования есть секретный ключ.

Для А: сначала вырабатывается секретный ключ для симметричного алгоритма, с его помощью шифруется открытый текст. Шифруем открытым ключом участника Б симметричный ключ. отправляем шифрованный текст по каналу связи.

Для Б: применяет свой секретный ключ на шифрованный текст и восстанавливает симметричный ключ, расшифровывает своим симметричным ключом исходный текст.

Получается в протоколе два раунда.

Существует проблема неоптимальности ключа на втором этам е зашифрования, принято решение о создании алгоритмов расширения ключа, например, optimal asymmetric encryption padding. Все расширения дают определённые слабости.

Как передавать ключи по открытому каналу? С помощью алгоритма KEM - key Encapsulation Mechanism,  который заключается в том, что участник А сразу вырабатывает случайный секретный параметр большого размера, например, 2048 бит, применяет KDF - key derivation function, в результате применения которой будет малый, но зашифрованный ключ, на котором и происходит шифрования открытого текста. Но для этого нужно, чтобы у участника Б был первый, большой ключ зашифрования. KDF строится например на функции хэширования с добавлением случайных параметров.

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

\section{Классификация методов дешифрования по информации, известной противнику}
\begin{enumerate}
\item Cipher text only attack (только по известному шифрованному тексту). Предполагается, что противнику дан шифрованный текст ($C$) и все преобразования ($\{ E_K, E_K^{-1} \}, \{ E_{SK}, E_{PK} \}$). То есть противник знает, как реализован стандарт шифрования).
  \begin{frm}
    Принцип Керкг\'{о}ффса — правило разработки криптографических систем, согласно которому в засекреченном виде держится только определённый набор параметров алгоритма, называемый ключом, а сам алгоритм шифрования должен быть открытым. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей.

    То есть секретность шифра должна быть основана только на неизвестности ключа шифрования.
  \end{frm}
Найти нужно ключ (k) и открытый текст (M). Часто объём переписки многое говорит противнику. 
\item Known plaintext attack. Известного открытого текста и соответствующего шифрованного текста. Дано $M, C=E_k(M)$, найти k. Ситуация возможна, когда открытый текст стал известен со временем или из стороннего источника (семантический анализ).

Делается для дальнейшего использования ключа и дешифрования последующих сообщений или предшествующей переписки.
\item Метод протяжки вероятного слова. Всегда возможно предположить, что где-то в шифрованном тексте стоит известный текст, например, «уважаемый...» или «в ответ на ваш...». этот текст нужно просто подставлять в зашифрованное сообщение и практика показывает, что чаще всего совпадения действительно находятся.
\item Coffee break attack. Методы по выбранному открытому тексту. Противнику доступен алгоритм зашифрования как чёрный ящик и он может получать зашифрованный текст отправляя открытый текст в этот ящик.
  \begin{itemize}
  \item Adaptive chosen plaintext attack. Противник может отправить открытый текст, а затем адаптировать исходник чтобы получить новый зашифрованный текст и проанализировать его.
    
  \item Non-adaptive chosen plaintext attack. Противник может подойти к шифрующему устройству только один раз
  \end{itemize}
\item методы по выбранному шифрованному тексту и соотвтетствующему открытому тексту. В этом классе противник имеет доступ к расшифрованию как к чёрному ящику. задача найти секретный ключ, но не обязательно. Также есть адаптивная и неадаптивная атака. Как правило зная открытый текст задача дешифрования решается более эффективно.
\end{enumerate}

\subsection{Модель предполагаемого противника}
(ИБ - модель угроз и модель нарушителя).

Приказ ФСБ России №378 2014 «Об утверждении Состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных с использованием средств криптографической защиты информации, необходимых для выполнения установленных Правительством Российской Федерации требований к защите персональных данных для каждого из уровней защищенности» \footnote{\href{https://base.garant.ru/70727118/53f89421bbdaf741eb2d1ecc4ddb4c33}{ГАРАНТ}}

СКЗИ имеет класс (КС1, КС2, КС3, КВ, КА). Раньше нужно было получить лицензию на разработку СКЗИ и тогда описание классов раскрывалось. \textbf{Нарушитель классифицируется}

В модель противника кроме класса добавляется \textbf{модель анализа протоколов Dolev-Yao}.
\begin{itemize}
\item attackers
\item advesaries
\item enemies
\item intruders
\item imposters
\item eavesdroppers (подслушиватель)
\end{itemize}
Злоумышленник просматривает открытые каналы связи и \textbf{может} стать участником протокола, получить сообщения из протокола, стать авторизованным пользователем (insider), посылать сообщения. но при этом \textbf{не может} угадывать случайные числа, расшифровать без ключа, угадывать ключи, найти секретный ключ по открытому ключу, иметь доступ к закрытым ресурсам.

\begin{frm}
  Все криптографические примитивы с точки зрения этой модели - идеальны.
\end{frm}

\textbf{Вычислительные возможности}.

\subsection{Классификация криптографических примитивов и протоколов}
Методы классификации:
\begin{itemize}
\item иерархический: описывает иерархию, чтобы описать объект нужно от корня дерева привести объект к листу.
\item фасетный (списочный): списки независимых свойств, фактически нужно определить объект к местоположению в списках (например, рост, вес, цвет волос).
\end{itemize}

Криптографические примитивы (иерархия)
\begin{itemize}
\item КП без ключа - гсп
\item КП с секретным ключом
\item КП с открытым ключом
\end{itemize}

\subsection{Криптографические примитивы}
\begin{itemize}
\item Без ключа
  \begin{itemize}
  \item \textbf{генераторы случайной последовательности.} Проверяется: статистическими тестами Пример: «Соболь» Информзащита (Энтропия 400 бит) Используют: физические величины. требование: равновероятность независимость (следующего значения от предыдущего). применение: генерация ключей, генерация начальных векторов, генерация параметров криптосистем
  \item \textbf{One way function Однонаправленная функция без ключа} Каждый может вычислять эту функцию существует полиномиальный алгоритм. Для любого у случайно выбранного из области значений найти праобраз вычислительно. невозможно не существует или неизвестен полиномиальный алгоритм. Применяется: в парольных системах, облегчает обеспечение безопасности.
  \item \textbf{Hash functions Функции хэширования без ключа} это однонаправленные функции + дополнительные требования, которые к ним предъявляются. где х это однонаправленный вектор неизвестной длины. у - двоичный вектор фиксированной длины (ГОСТ 34.11-2012 Функции хэширования 256 и 512 бит). невозможно найти $x_1 \neq x_2$, такое, что $H(x_1) = H(x_2)$ (Collision) Коллизий избежать невозможно, но их должно быть невозможно найти за полиномиальное время (Сильная Strong collision-free function). Для любого $x_1$ невозможно найти $\neq x_2$  как в предыдущем пункте, но для $\forall x_1$. Если это сделать сложнее - функция называется слабой.
  \end{itemize}
\item С секретным ключом (симметричные или одноключевые)
  \begin{itemize}
  \item \textbf{Блочные} Для шифрования каждого блока (64-128 бит) используется один и тот же ключ
  \item \textbf{Поточные} Открытый текст также делится на сегменты 1-128 бит и каждый шифруется своим ключом (KeyStream в русскоязычной литературе Гамма режим гаммирования) считался схожим с одноразовым блокнотом One Time Pad. Бывают
    \begin{itemize}
      \item \textbf{Синхронные} Знаки синхронного ключа не зависят от знаков открытого и шифрованного текста. Обычно есть генератор, который формирует гамму которая поступает на блок наложения гаммы куда также поступают знаки шифрованного текста. Самый простой блок наложения текста - это сумматор.
      \item \textbf{Самосинхронизирующиеся} каждый знак открытого потока зависит от фиксированного числа знаков шифрованного текста. например ГОСТ 34.13-2015 каждый знак это функция от предыдущего знака шифрованного текста. Возникает необходимость вычислить первый знак и он равен начальному вектору нужен генератор случайных чисел
    \end{itemize}
    Обеспечивают секретность или конфиденциальность, но затем появились шифры, которые обеспечивают и шифрование и аутентификацию Authenticated Encryption Mode. Они обеспечивают более экономичные шифры, чем эти шифры по отдельности. Можем действовать тремя способами:
    \begin{itemize}
      \item \textbf{Encrypt then MAC} (Зашифр и МАС от него. Если код без ключа то только контроль целостности. МАС контролирует имитостойкость, если МАС не совпал сразу запрашиваем текст повторно).
      \item \textbf{Encrypt and MAC} (зашифровали и МАС от открытого текста) Получатель должен сначала расшифровать а потом уже проверять код аутентификации. Плюс в том что мы контролируем целостность открытого текста. Но МАС идёт в открытом виде.
      \item \textbf{MAC then Encrypt}. Сначала МАС открытого текста, затем шифруется на ключе.
    \end{itemize}
  \item Authentication Encryption with Associated Data (AEAD). на входе есть открытый текст и АД. на выходе есть шифрованный текст и некоторый вектор. нужно обеспечить секретность для ОТ а для АД нужно обеспечить только подлинность и целостность
  \item \textbf{Хэш-функция с СК} Фактически это ХФ но зависит от ключа. разница в том что нужен ключ для вычисления значения хэша. Любую ХФ можно превратить в ХФ с ключом. Например вход это вектор произвольной длины его возможно разбить на две части и в начале будет стоять ключ тогда ХФ превращается в ХФ с ключом. Часто алгоритм используется с алгоритмом ЭЦП и ослабляет его. Придумали стандарт HMAC - The Keyed-Hash Message Authentication Code - Код аутентификации сообщения на основе ключевой функции. $HMAC(text,k)=H((K_0\oplus opad)||H(K_0\oplus ipad)||text)$ где ipad и opad - это константы а К это ключ. В итоге получаются 256 или 512 бит. MD5 при этом не рекомендуется. Вычисление подтверждает целостность данных
  \item \textbf{Format Preserving Encryption} Шифрование сохраняющее формат. Должно сохранять формат входных данных
  \item \textbf{Deniable Encryption} два текста два ключа, в результате один шифрованный текст, но если расшифровываем не тем ключом - получаем не тот текст. Расшифрование по принуждению
  \item\textbf{ ГПСЧ и последовательностей}. На основе зерна (Seed). Требование чтобы последовательность была похожа на случайную, равновероятна и независима. Например регистры сдвига с обратной связью. Если используются с целью безопасности должны быть непредсказуемые (по части последовательности нельзя предсказать следующие знаки). Рекомендации: ANSI X9.17, ГОСТ-Р ИСО 28640-2012 (Статистические методы генерации случайных чисел), Р 1323856.1.006-2017 Механизмы выработки псевдослучайных последовательностей, рекомендации.
  \end{itemize}
\item \textbf{С открытым ключом} (асимметричные, двухключевые)
  Есть как Public Key так и Secret Key. (Открытый и закрытый ключ).
  \begin{itemize}
  \item \textbf{Шифры с открытым ключом} - открытый ключ шифрования и секретный ключ расшифрования. Отсюда асимметрия - все шифруют, только один может расшифровать. Как только появился PK, возникает проблема управления открытыми ключами (PKManagement). Способы:
    \begin{itemize}
    \item PKI - Инфраструктура открытых ключей. Для обеспечения секретности, подлинности и неискажённости используются сертификаты открытого ключа (фактически цифровая подпись удостоверяющего центра) Certification Authority. X.509 v3 описывает поля сертификата RFC 5280. инфраструктура RFC 2459 определяет несколько вариантов: иерархический, сетевой, мост, итд.
    \item Identity-based crypto (ID-based encryption) - смысл в том, что открытый ключ $\approx$ идентификатору пользователя (телефон, почта, адрес, фио, и так далее). тогда закрытый ключ должен получаться некоторым key generation center, то есть закрытый ключ выдаётся пользователю некоторым центром (депонирование секретного ключа, нужно доверие центру генерации секретных ключей).
    \item Certificateless encryption (бессертификатное шифрование, цифровые подписи итд) подвид id-based, но SK разбивается на две части - SKпользователя и SKцентра. Избавляемся от проблемы депонирования (потенциальной компрометации центра генерации ключей)
    \end{itemize}
    Основные принципы построения этих щифров
    \begin{itemize}
    \item на основе алгебраических групп с неизвестным, трудноопределимым порядком. АГ - это множество с одной бинарной операцией, которая всюду определена, в которой есть нейтральный элемент, в которой выполнен ассоциативный закон, $a\cdot a^{-1}=e$. RSA, Rabin, и другие
    \item на основе алгебраических групп с трудноопределяемым порядком элементов. ПЭ - это минимальная гамма, такая что а в степени гамма даёт нейтральный элемент. ElGamal, Damgaid, и другие. Основаны на Discrete logarithm problem, DLP.
    \item Создание пост-квантовых систем post quantum crypto - стойкость для симметричных можно обеспечить удвоением размера ключа, а для асимметричных нужно использовать разные системы решёток, хэширования, итд.
    \end{itemize}
    Многое в криптографии зависит от АГ. В них обычно рассматриваются какие-то труднорешаемые задачи, лежащие в основе стойкости криптосистем с ОК. Например задача дискретного логарифмирования. Если в качестве группы выбрать группу точек эллиптической кривой с опреацией сложения этих точек, то задача дискретного логарифмирования окажется сложной.

    Кроме секретности ключам предъявляют требования, например:
    \begin{itemize}
    \item fully homomorphic encryption полностью гомоморфное шифрование, чтобы можно было зная шифрованный текст, можно было построить такой шифрованный текст, который является результатом зашифрования некоторй функции от открытого текста без знания ключа. Тогда возможно отправить законному пользователю не шифрованный текст.  
    \item functional encryption по тому же шифрованному тексту должны найти функцию от открытого текста без знания ключа. Может использоваться в системах голосования (если функция это подсчёт голосов, а открытый текст сами голоса, можно без раскрытия самого текста посчитать их сумму)
    \end{itemize}
  \item \textbf{цифровая подпись}. Реализуемые требования безопасности - подлинность, целостность, неотказуемость (никакой секретности). В российских документах называется шифровальным средством, хотя фактически это просто криптографическое средство. Состоит как правило из трёх алгоритмов:
    \begin{itemize}
    \item алгоритм выработки параметров,
    \item алгоритм выработки ЦП
    \item алгоритм проверки ЦП
    \end{itemize}
    На сегодняшний день - самый используемый на практике примитив. Если не нужна неотказуемость достаточно рассчитать message authentication code. Задействованы и открытый (включ проверки) и закрытый ключ (ключ выработки). Получается, что все могут проверять ЦП, но подписывать может только обладатель SK. Аналогично возникает проблема управления открытыми ключами, как в шифрах. Различают два вида ЦП
    \begin{itemize}
    \item Digital Signature with appendix (ЦП с приложением). Выработка происходит по следующему алгоритму: Пользователь А имеет документ и преобразует его с помощью хэш-функции и вырабатывает хэш-код (по ГОСТ длиной 256 или 512) и подписывается хэш-кодом от выработки и получаем ЦП размером 512 бит. Получается текст и ЦП существуют как единое целое. Пользователь Б (проверяющий) получает ключ, текст, ключ пользователя А. Вычисляет хэш, и проверяет полученное сообщение полученным хэшем.
    \item Digital signature with message recovery (ЦП с восстановлением сообщения). Для проверки не нужно даже само сообщение. Преобразуем ОТ так, чтобы внести в него некоторую структурность (например, чтобы состояло из двух одинаковых половин), далее пользователь А применяет к этому тексту свой СК выработки ЦП и получает подпись. Тогда ЦП существует сама по себе. Проверяющий получает ЦП и ОК проверки ЦП. он должен применить ОК на ЦП и получить равенство половин полученного сообщения, тогда ЦП считается корректной. Обычно используется на небольших размерах исходных документов (например, команды в системах).
    \end{itemize}
  \item \textbf{Blind Signature (подпись вслепую)}
Цифровая подпись обеспечивает подлинность, целостность, неотказуемость.

К подписи вслепую прибавляется требование анонимности и неотслеживаемости. Отсюда требования можно расшифровать следующим образом:
\begin{enumerate}
\item Подписывающий не знает содержимого сообщения;
\item Не может определить, кому и когда он подписал документ.
\end{enumerate}

В классическом протоколе ЦП есть подписывающий и проверяющий, а здесь возникают следующие роли
\begin{itemize}
\item Запрашивающий ЦП;
\item нотариус (проставляющий ЦП);
\item проверяющий ЦП.
\end{itemize}
Фактически, нотариус просто может вести учёт хэшей, которыми он подписал документы, и когда, но не может знать, что именно за документы он подписывает.
\textbf{Протокол.}
\begin{enumerate}
\item автор сообщения запрашивает подпись имея хэш и собственный ключ (затенения) код документа (отправляет нотариусу)
\item нотариус не зная ключа затенения (не может найти ни хэш ни тем более текст). подписывает значение h. формирует секретный ключ ЦП
\item зная СКЦП и КЗ применяет преобразование подписи. ПП и КЗ должны быть перестановочными. это даст возможность переставить эти преобразования и получим тождественное преобразование, а именно ЦП от нашего хэша под документом.
\item для проверки нужны документ, цп и открытый ключ нотариуса. При этом нотариус тоже может быть проверяющим.
\end{enumerate}
  \end{itemize}
\end{itemize}

Протоколы (фасет)
\textbf{E-voting}
требования:
\begin{enumerate}
\item только имеющий право голоса может голосовать
\item никто не может голосовать более одного раза
\item никто не может определить, кто конкретно за что голосовал (тайна голосования)
\item никто не может подменить чей-либо выбор
\item можно точно узнать, голосовал ли я
\item точно можно определить, кто голосовал
\end{enumerate}
анонимность - не только невозможность идентифицировать персону, но и имеет право на эту анонимность. Чтобы осуществить проверку публикуются все данные голосования.

\textbf{Протокол анонимных электронных чеков}
Система платежей с электронными чеками. Участники
\begin{itemize}
\item [] А - клиент
\item [] B - банк
\item [] S - shop магазин
\item []ЭЧ - это совокупность данных номер, сумма, ЦП банка.
\end{itemize}
Протокол
\begin{itemize}
\item А кладёт чек на копирку и в конверт, на конверте пишет ИД и ЦП, отправляет в банк.
\item Б видит только что это клиент А, и его ЦП. проверяет ЦП и из счёта пользователя А вычитает 100р
\item Б подписывает своей ЦП факт списания и возвращает конверт пользователю А.
\item А извлекает номер чека, сумму и ЦП банка. и несёт его в магазин.
\item М проверяет ЦПб по сумме и номеру чека, но есть проблема копирования чека (проблема повторной платы). обращается в банк и предъявляет номер чека. Банк проверяет свою ЦП и если она корректная то заносит номер чека в свою БД.
\item На счёт магазина кладётся 100р.
\end{itemize}

Cut-and-Choose Technique.
один делит, а второй выбирает.

\textbf{S-box (S-блок)}
используются в стандарте шифрования и представляют из себя
\[S_{n\times m}-box\]
схема из N входов и M выходов, система их M булевых функциий от N переменных. в DES $S_{6\times 4}$, ГОСТ Магма $S_{4\times 4}$.

\[f_i(x_4, x_3, x_2, x_1), i = 1...4;\]

П\_6
\begin{enumerate}
\item посчитать многочлен Жегалкина (алгебраическая нормальная форма для $f_i(x_4, x_3, x_2, x_1)$)
  \[f_i(x_n, ..., x_1) = a_0 \oplus \sum_{i=1}^n a_i x_i \oplus \sum a_{ij}x_i x_j \oplus ... \oplus a_{12...n}x_1 x_2...x_n\]
n = 4. если положим все $х = 0 =  а_0$, $а(0, ..., 1) = a_0 \oplus a$. это позволит убедиться, что все функции зависят от всех переменных.
\item найти спектр Уолша-Адамара $\forall f_i$
  \[\forall f(x) \to f^{*}{x} = (-1)^{f_x} \]

  \[ f^{*}(x) = 2^{-n}\sum z_a \cdot (-1)^{(a, x)} \]

  \[ (a, x) = a_1x_1\oplus a_2x_2 \oplus ... \oplus a_nx_n \]

  \[ \{z_a\} = \sum_x(-1)^{f(x)\oplus(a,x)}  \]

  $Z_0$ возможно найти следующим образом: $a = 0000$, поэтому произведение $= 0$, значит это $\sum (-1) ^{f(x)} = 0$.
  нужно построить таблицу где будет $a0=15$, и $z0-...$
  $z_1 = a_1(=1)(0001 a_4...a_1). (a*x = x_1) = \sum(-1)^{f(x)}$
\item найти статистическую структуру $\forall f_i$
  \[ \{\Delta_a \} = 2^{n-1} - ||f(x)\oplus(a,x) ||\]
  вес функции (число единиц, которое она принимает на всех наборах). она характеризует насколько функция близка к линейной.
  \[ \Delta_0 = 2^3 = ||f(x)|| = 8 - 8  \]
\item посчитать вероятность $P_i$ изменения выходного бита при изменении одного входного бита.
\item посчитать среднее число изменяющихся выходных бит при изменении одного входного бита.
  \[M = 0\cdot P_0 + 1\cdot P_1 + ... + 4\cdot P_4\]
\end{enumerate}

\section{Алгоритм блочного шифрования с длиной блока n=128}
Кузнечик (US = AES) Кузьмин-Нечаев

В магме основная структура это петля Фестеля, а в Кузнечике SP-сеть.
Значение параметров
\textbf{Нелинейное преобразование }Вектор превращаем в число и превращаем по подстановке в другое число и затем обратно в вектор. Эта подстановка фиксирована

\[ \pi:Vec_8; \pi' Int_8: V_8 \to V_8 \]

\[ \pi' = (\pi'/0, \pi'/1, ..., \pi'/255): Z_{2^8} \to Z_{2^8} = \{0,1,2,...,255\} \]

\textbf{Линеое преобразование} $l = V_8\to V_{16}$ это декартово произведение.

\[ l(a_{15},...,a_0) = \nabla(148\cdot\Delta(a_{15}) + 32\cdot\Delta(a_{14}) + ... + 148\cdot\Delta(a_{1}) + 1\cdot\Delta(a_{1}))\]

\textbf{Преобразования}
\[ X[k] : V_{128} \to V_{128}; x[k](a) = a\oplus K; k,a \in V_{128} (2) \]

\[ S(a):S(a_{15}||...||a_0) = \pi(a_{15} || ... ||\pi(a_0)) a_i\in V_8 (3)\]

\[ S^{-1}: S^{-1}\cdot S = I \text{тождественно}\]

\[ S^{-1}(a) = \pi^{-1}(a_{15})||...||\pi^{-1}(a_0) (4)\]

\[ R(a):R(a_{15}||...||a_0) = l(a_{15}, ..., a_0) ||  a_{15} || a_1 (5)\]

\[ l(a) = R^{16}(a) (6)\]

\[ R^{-1}(a) = R^{-1}(a_{15}||...||a_0) = a_{14}||a_{13}||...a|l(a_{14},...,a_0,a_{15}) (7)\]

\[ L^{-1} = (R^{-1})^{16} (a) (8)\]

\[ F[k](a, a_0)=LSX[k](a_1)\oplus a_0, a_1 = (A, B)(9)\]

\textbf{Алгоритм развёртывания ключа}
Получаем 10 ключей из исходного ключа длиной 256

\textbf{Базовый алгоритм шифрования}
Алгоритм зашифрования $E_{K_1...K_{10}}(a) = X[k_{10}]LSX[K_9]...LSX[K_1](a)$

Алгоритм расшифрования $D_{K_1...k_{10}}(a) = X[K_1]S^{-1}L^{-1}X[K_1]...S^{-1}L^{-1}X[K_{10}](a)$

Кузнечик быстрее и лучше ложится на аппаратную основу. Размер блока 128 - это параметр стойкости алгоритма.

\section{Открытое распределение ключей. Шарада Меркля}
R.Merkle - Secure communication over insecure channel изложил протокол.
Два пользователя А и Б. не имеют никакой общей секретной информации, между ними открытый канал. То есть, что делать когда нет ключей. Злоумышленник Ж.
\begin{enumerate}
\item А формирует серию открытых текстов ($10^6$). Зашифровать все эти тексты шифром с энтропией 20 бит, например, DES (размер ключа 56 бит). 20 бит будут информативными, а все остальные возьмём и зашифруем тексты. Они будут называться шарадами Меркля. Шарады Меркля передаются по открытому каналу.
\item Б выбирает шараду и начинает дешифровать методом полного опробования ключей. Должен получить истинный ключ шифрованного текста. Мат ожидание получения такого ключа случайным образом $2^{20}\frac{1}{2^{30}}$. 
\item Канал открытый и злоумышленник видит полученный открытый ключ. Пользователь А перебирает все ключи ($10^6$) и находит нужный (по статистическому анализу языка СЕНОВАЛИТР TETRISHONDA).
\end{enumerate}
Работа пользователей А и Б $O(n)$, а злоумышленника $O(n^2)$.

Этой же цели служит трёхэтапный протокол Шамира.

По постановлению №313 Без лицензии можно использовать ключ длиной 56 бит. Как увеличить стойкость? шифровать ключом по ГОСТ (256 бит) но из них различаем только 56 бит и следующие $\delta$ бит, остальные будем полагать нулями. Информативными будут только 56 бит. Шифруем на ключе по ГОСТ. Всё зависит от того, как определено понятие ключа.

Работа пользователей А$O(1)$ и Б $O(2^\delta)$, а злоумышленника $O(2^{\delta+56})$.

\subsection{All or Nothing}
Остаётся вопрос, насколько точно дано определение ключа (просто или однозначно).
Применяется AON (All or nothing) transform. К нему предъявляются следующие требования (свойства):
\begin{itemize}
\item обратимость
\item полиномиальность прямого и обратного преобразования (быстрота)
\item экспоненциальная сложность восстановления ОТ в случае отсутствия хотя бы одного знака псевдотекста
\item случайность (вариативность) преобразования. Чтобы оно не передавало закономерности открытого текста, чтобы противник не строил критерий по знакам псевдотекста.
\end{itemize}
Преобразованный севдотекст шифруем на слабом ключе (с энтропией 56 бит). Для расшифрования нужен метод полного опробования ключей. Возможно оценить трудоёмкость метода полного опробования ключей (для ГОСТ это $2^{256}$) то есть нам нужно перебрать вообще все возможные ключи. Машина может понять, удачно ли расшифрован текст - статистический критерий. При этом нужно расшифровать только часть текста на длину критерия. Идея АОН преобразования заключается в том, чтобы ОТ преобразовать в псевдотекст и в методе полного опробования нужно будет раскручивать на всю длину псевдотекста.

Важно, что AON это не шифрование, а преобразование. Берём блок открытого текста, прибавили вектор полученный из зашифрования на ключе и получили блок псевдотекста. К ключу прибавили столько векторов сколько блоков ОТ, где каждый блок это зашифрованный на некотором известном постоянном ключе псевдоблока с прибавленным индексом. Длина псевдотекста увеличилась на один блок, но блок может быть достаточно большим, соответственно для этого и исходные векторы должны быть большие.

\begin{enumerate}
\item [ГОСТ] Режим простой замены (Electronic code book ECB)
\item [ГОСТ] Режим гаммирования (counter CTR)
\item [ГОСТ] Режим гаммирования с обратной связью по выходу (output feedback OFB)
\item Режим простой замены с зацеплением (Cipher blockchain CBC)
\item Режим гаммирования с обратной связью по шифр-тексту (Cipher feedback CFB)
\item [ГОСТ] Режим выработки имитовставки (Message auth code MAC)
\end{enumerate}
для DES не применяется 2 и 6.

\textbf{Например режим CBC}
Зашифрование
\[c_i = E_K(M_i\oplus C_{i-1}), i=\overline{1, s}\]

\[C_1 = E_K(M_1\oplus C_0) \]
Нужно взять Initial Vector $С_0$

Расшифрование
\[ E_K^{-1} (C_i) = M_i\oplus C_{i-1} \to E_K^{-1}(C_i)\oplus C_{i-1} = M_i \]

\section{Однонаправленные функции и их применение}
One-way functions and applications

Data origin authentication - подлинность происхождения данных (сообщения).
например,
\[y=GOST_x(m_0)\]

\[y=a^x(vbpn); Z_p^*\]

\[y=x\cdot A; A=EI(F_p)\]

S/Key Bellure Corp

А - клиент S-сервер

Entity authentication (аутентификация сущности). Подлинность чего мы определяем? это может быть объект, субъект, ПО. Identification protocols.
Сначала выбирается однонаправленная функция и строится цепочка из значений этой однонаправленной функции $x_0, x_1=f(x_0), ..., x_{100}=f(x_{99})$. после этого передаётся пользователю с обязательной подлинностью и целостностью, но не секретностью. Когда нужно авторизоваться клиент отправляет $x_{99}$ который может попасть злоумышленнику. Сервер вычисляет, что $x_{99}$ является праобразом $x_{100}$ и подтверждается подлинность пользователя. В следующий раз, поскольку $x_{99}$ уже перехвачен, клиент посылает $x_{98}$ и сравнение на сервере происходит с $x_{99}$. Если злоумышленник желает выдать себя за клиента, он должен найти праобраз от перехваченной им $x_{99}$, но по определению однонаправленной функции это вычислительно невозможно. Клиент действует до тех пор, пока он не исчерпает всю цепочку $x_{0} .. x_{99}$.

\textbf{Применение однонаправленных функций для микроплатежей.}
Здесь не нужна надёжность и сложность полноценной ЭЦП. Payward, Micromint, etc. Вся структура простой аутентификации остаётся. \circled{А} - клиент, S - провайдер услуг. Система является системой предоплаты. А передаёт заранее некоторую сумму, выстраивается цепочка и договариваются, что если клиент хочет получить услуги на 10 рублей, он высылает одно значение из цепочки. на 20р - два значения, и так далее.

Клиент провайдера обмануть не может, а провайдер может обмануть клиента. нужна третья сторона. Для доказательства нужно, чтобы провайдер предоставил всю цепочку, чтобы доказать, что клиент переслал её всю. Если у провайдера она не вся, нужно как злоумышленнику восстановить функцию, что вычислительно невозможно.

One time signature (одноразовая подпись, схема Lamport).
Подлинность, целостность, неотказуемость.
\begin{enumerate}
\item алгоритм выработки параметров
\item алгортим выработки ЦП
\item алгроитм проверки ЦП
\end{enumerate}

Лампорт предложил ЦП на однонаправленной функции.

А - подписываюший, B - проверяющий.

\begin{enumerate}
\item договариваются о выборе ОФ (или можно выбирать хэш-функцию). и вырабатывают секретные ключи. СК - это значения из области определения функции. также генерируются открытые ключи. В справочник помещается ОК и всё готово для подписания.
\item подписание - документ, строка длины М. ЦП - это цепочка $[X_{\gamma_1}^{(1)}, X_{\gamma_2}^{(2)}, X_{\gamma_m}^{(m)}]$.
\item Для проверки подписи нужен сам документ, подпись, ОК. Проверка заключается в том, что подписи - это праобразы ОК. 
\end{enumerate}

УЦ содержит ОК, и именно он удостоверяет что ключи принадлежат подписывающему А. Одноразовая подпись, потому что передав сообщение с ОК мы израсходовали и соответствующий ему (праобраз) СК.

\begin{itemize}
\item [-] одноразовость
\item [-] размер (если рассматриваем ГОСТ, то размер ЦП при подписании 10 бит информации $256*10$)
\item [+] одноразовость (есть технология, которая позволяет ОК строить в виде дерева Меркля)
\item [+] очень быстрая подпись
\item [+] такие схемы подписи стойкие против квантового компьютера. Нахождение праобраза от функции хэширования не поддаются квантовому компьютеру.
\end{itemize}

На этом принципе построена hash-based post-quantum crypto systems.

Что нужно, чтобы подделать эту схему подписи?
Допустим есть документ из трёх подписей и положим какое-то гамма = 0б значит чему равен в подписи соответствующий х? также нулю. а что нужно сделать чтобы заменить гамму на 1? для этого нужно чтобы в этой подписи появился х1 (являющийся праобразом у1).

One time signature Winternitz (1979 в работе Merkle).
\begin{enumerate}
\item Берём хэш-функцию, М-документ (подписанный Д - это число из интервала от нуля до W-1 где W это параметр метода). СК - это случайная строка K (вход в ХФ). ОК - это $H^W(K)$. ОК легко получить из строки К. W - это число применений ХФ к К. Размер исходного текста М тоже ограничен. 
\item ЦП будет являться $Q = H^M(K)$. 
\item для проверки нужен ОТ, ЦП и ОК. Проверка заключается в том, что нужно проверить $H^{W-M}(Q) = H^W(K) = PK$. Так если подпись верна, то только обладатель СК мог её вычислить.
\end{enumerate}
Стойкость основана на том, что невозможно вычислить праобраз от ХФ. Некоторые минусы в том, что если есть подпись Q к документу M, то возможно легко создать подпись к документу M+1. Чтобы бороться с этим нужно ещё раз подписать документ, но выбрать для этого другую строку, в этом случае подпись будет $Q'=H^{W-M}(K')$.

В качестве праобраза ЦП которая применяется международным сообществом используются именно эти подписи, основанные на трудности нахождения.

\end{document}


% конспект приказа на 1 лист а4 от руки к 4.10
%%% Приказ утверждает состав и содержание мер по обеспечению безопасности персональных данных в системах с использованием средств криптографической защиты информации (СКЗИ) (далее, меры). Устанавливает ответственных за исполнение мер операторов СКЗИ, а также определяет соответствие эксплуатации СКЗИ, документации и требований.

% Документ разделяет защищённость данных на 4 уровня, и предлагает следующие меры
% для 4: организовать режим обеспечения безопасности помещений, в которых размещена информационная система (двери, замки, правила доступа в рабочее и нерабочее время, перечень лиц, имеющих доступ в помещение); обеспечить сохранность носителей персональных данных (хранить съёмные носители в сейфах, вести журналы учёта носителей информации), определить перечень лиц, которым разрешён доступ к персональной информации (разработать соответствующий документ и поддерживать его в актуальном состоянии), использовать СЗИ, прошедшие оценку соответствия требованиям законодательства РФ (для предотвращения атак необходимо получить исходные данные для формирования предположений о векторе атаки, утвердить такой список предположений у руководителя, использовать СКЗИ класса КС1 или выше).

% для 3: СКЗИ класса KB и выше в случаях, когда для информационной системы актуальны угрозы 2 типа; СКЗИ класса КС1 и выше в случаях, когда для информационной системы актуальны угрозы 3 типа.

% для 2: СКЗИ класса КА в случаях, когда для информационной системы актуальны угрозы 1 типа; СКЗИ класса KB и выше в случаях, когда для информационной системы актуальны угрозы 2 типа; СКЗИ класса КС1 и выше в случаях, когда для информационной системы актуальны угрозы 3 типа. обеспечение информационной системы автоматизированными средствами, регистрирующими запросы пользователей на получение персональных данных, а также факты предоставления персональных данных по этим запросам в электронном журнале сообщений; обеспечение информационной системы автоматизированными средствами, исключающими доступ к содержанию электронного журнала сообщений лиц, не указанных в утвержденном руководителем оператора списке; обеспечение периодического контроля работоспособности автоматизированных средств (не реже 1 раза в полгода).

% для 1: СКЗИ класса КА в случаях, когда для информационной системы актуальны угрозы 1 типа; СКЗИ класса KB и выше в случаях, когда для информационной системы актуальны угрозы 2 типа. автоматическая регистрация в электронном журнале безопасности изменения полномочий сотрудника оператора по доступу к персональным данным, создание отдельного структурного подразделения, ответственного за обеспечение безопасности персональных данных, обеспечение периодического контроля работоспособности автоматизированных средств (не реже 1 раза в месяц). оборудовать окна Помещений металлическими решетками или ставнями, охранной сигнализацией или другими средствами, препятствующими неконтролируемому проникновению посторонних лиц в помещения;

%Угрозы 1-го типа актуальны для информационной системы, если для нее в том числе актуальны угрозы, связанные с наличием недокументированных (недекларированных) возможностей в системном программном обеспечении, используемом в информационной системе.

%Угрозы 2-го типа актуальны для информационной системы, если для нее в том числе актуальны угрозы, связанные с наличием недокументированных (недекларированных) возможностей в прикладном программном обеспечении, используемом в информационной системе.

%Угрозы 3-го типа актуальны для информационной системы, если для нее актуальны угрозы, не связанные с наличием недокументированных (недекларированных) возможностей в системном и прикладном программном обеспечении, используемом в информационной системе.

% СКЗИ КС1 применяются для нейтрализации атак без привлечения специалистов в области разработки и анализа СКЗИ, атак вне контролируемого пространства, атак на этапе разработки или модернизации СКЗИ, атак непосредственно на СКЗИ, а именно персональные данные, парольную информацию, программные или аппаратные компоненты СКЗИ; программные или аппаратные  компоненты среды функционирования (СФ), включая программное обеспечение BIOS, данные, передаваемые по каналам связи; получение из находящихся в свободном доступе источников информации об информационной системе, в которой используется СКЗИ, а именно: общие сведения, сведения об информационных технологиях, базах данных, АС, ПО, используемых в информационной системе, содержание конструкторской документации на СКЗИ; содержание находящейся в свободном доступе документации на аппаратные и программные компоненты СКЗИ и СФ; общие сведения о защищаемой информации, сведения о каналах связи, все возможные данные, передаваемые в открытом виде, сведения о нарушениях правил, неисправностях и сбоях аппаратных компонентов СКЗИ и СФ. применение находящихся в свободном доступе или используемых за пределами контролируемой зоны АС и ПО, включая аппаратные и программные компоненты СКЗИ и СФ, специально разработанных АС и ПО; использование на этапе эксплуатации в качестве среды переноса от субъекта к объекту (от объекта к субъекту) атаки действий, осуществляемых при подготовке и (или) проведении атаки каналов связи, не защищенных от несанкционированного доступа к информации организационными и техническими мерами; каналов распространения сигналов, сопровождающих функционирование СКЗИ и СФ;

% СКЗИ КС2 применяются для нейтрализации атак из КС1 и не менее чем одной из следующих: проведение атаки при нахождении в пределах контролируемой зоны;  проведение атак на этапе эксплуатации СКЗИ на следующие объекты: документацию на СКЗИ и компоненты СФ; Помещения, в которых находится совокупность программных и технических элементов систем обработки данных; получение в рамках предоставленных полномочий, а также в результате наблюдений следующей информации: сведений о физических мерах защиты объектов, сведений о мерах по обеспечению контролируемой зоны объектов, сведений о мерах по разграничению доступа в Помещения; использование штатных средств, ограниченное мерами, реализованными в информационной системе, в которой используется СКЗИ, и направленными на предотвращение и пресечение несанкционированных действий.

% СКЗИ КС3 применяются для нейтрализации атак из КС2 и не менее чем одной из следующих: физический доступ к системам, на которых реализованы СКЗИ и СФ; возможность располагать аппаратными компонентами СКЗИ и СФ.

% СКЗИ КВ применяются для нейтрализации атак из КС3 и не менее чем одной из следующих: атак с привлечением специалистов в области анализа сигналов, и использования недокументированных возможностей прикладного ПО; проведение лабораторных исследований СКЗИ, используемых вне контролируемой зоны; проведение работ по созданию способов и средств атак в научно-исследовательских центрах, специализирующихся в области разработки и анализа СКЗИ.

% СКЗИ КА применяются для нейтрализации атак из КВ и не менее чем одной из следующих: атак с привлечением специалистов в области недокументированных возможностей системного ПО; возможность располагать сведениями, содержащимися в конструкторской документации на аппаратные и программные компоненты СФ;  возможность располагать всеми аппаратными компонентами СКЗИ и СФ.





