Skip to content

Commit

Permalink
rewrite stream ciphers chapter
Browse files Browse the repository at this point in the history
  • Loading branch information
vlsergey committed May 3, 2015
1 parent 62cc6f8 commit 11cf8eb
Show file tree
Hide file tree
Showing 11 changed files with 647 additions and 34 deletions.
79 changes: 77 additions & 2 deletions bibliography.bib
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ @techreport{NIST:2001
year = {2001},
month = {may},
day = {15},
institution = {Booz Allen & Hamilton},
institution = {Booz Allen \& Hamilton},
journal = {NIST Special Publication 800-22 (with revisions dated May 15, 2001)},
location = {McLean, VA},
title = {A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications},
Expand All @@ -658,6 +658,21 @@ @book{Bucknall:2001
language = {English},
}

@incollection{Fluhrer:Mantin:Shamir:2001,
year = {2001},
isbn = {978-3-540-43066-7},
booktitle = {Selected Areas in Cryptography},
volume = {2259},
series = {Lecture Notes in Computer Science},
editor = {Vaudenay, Serge and Youssef, AmrM.},
doi = {10.1007/3-540-45537-X_1},
title = {Weaknesses in the Key Scheduling Algorithm of RC4},
publisher = {Springer Berlin Heidelberg},
author = {Fluhrer, Scott and Mantin, Itsik and Shamir, Adi},
pages = {1-24},
language = {English}
}

@article{aks:2002,
author = {Agrawal, Manindra and Kayal, Neeraj and Saxena, Nitin},
title = {PRIMES is in P},
Expand Down Expand Up @@ -692,6 +707,21 @@ @book{Schneier:2002
language = {Russian},
}

@incollection{Mantin:Shamir:2002,
year = {2002},
isbn = {978-3-540-43869-4},
booktitle = {Fast Software Encryption},
volume = {2355},
series = {Lecture Notes in Computer Science},
editor = {Matsui, Mitsuru},
doi = {10.1007/3-540-45473-X_13},
title = {A Practical Attack on Broadcast RC4},
publisher = {Springer Berlin Heidelberg},
author = {Mantin, Itsik and Shamir, Adi},
pages = {152-164},
language = {English}
}

@book{Mak:2003,
author = {Mak, Ronald},
title = {Java Number Cruncher},
Expand Down Expand Up @@ -816,6 +846,22 @@ @book{Press:2007
language = {English},
}

@incollection{Paul:Maitra:2007,
year = {2007},
isbn = {978-3-540-77359-7},
booktitle = {Selected Areas in Cryptography},
volume = {4876},
series = {Lecture Notes in Computer Science},
editor = {Adams, Carlisle and Miri, Ali and Wiener, Michael},
doi = {10.1007/978-3-540-77360-3_23},
title = {Permutation After RC4 Key Scheduling Reveals the Secret Key},
publisher = {Springer Berlin Heidelberg},
keywords = {Bias; Cryptanalysis; Key Scheduling; Permutation; RC4; Stream Cipher},
author = {Paul, Goutam and Maitra, Subhamoy},
pages = {360-377},
language = {English}
}

@misc{MS-NLMP,
year = {2009},
title = {NT LAN Manager (NTLM) Authentication Protocol},
Expand Down Expand Up @@ -857,12 +903,27 @@ @book{Schneier:2011
language = {English},
}

@incollection{Sepehrdad:Vaudenay:Vuagnoux:2011,
author = {Sepehrdad, Pouyan and Vaudenay, Serge and Vuagnoux, Martin},
year = {2011},
isbn = {978-3-642-19573-0},
booktitle = {Selected Areas in Cryptography},
volume = {6544},
series = {Lecture Notes in Computer Science},
editor = {Biryukov, Alex and Gong, Guang and Stinson, DouglasR.},
doi = {10.1007/978-3-642-19574-7_5},
title = {Discovery and Exploitation of New Biases in RC4},
publisher = {Springer Berlin Heidelberg},
pages = {74-91},
language = {English},
}

@book{Sirca:Horvat:2012,
author = {Sirca, Simon and Horvat, Martin},
year = {2012},
title = {Computational Methods for Physicists},
subtitle = {Compendium for Students},
publisher = {Springer Science & Business Media},
publisher = {Springer Science \& Business Media},
pagetotal = {735},
isbn = {978-3-64232478-9},
language = {English},
Expand All @@ -889,3 +950,17 @@ @misc{rfc7230
url = {http://www.ietf.org/rfc/rfc7230.txt},
language = {English},
}

@misc{rfc7465,
author = {Popov, A.},
title = {Prohibiting RC4 Cipher Suites},
series = {Request for Comments},
number = {7465},
howpublished = {RFC 7465 (Proposed Standard)},
publisher = {IETF},
organization = {Internet Engineering Task Force},
year = {2015},
month = {feb},
url = {http://www.ietf.org/rfc/rfc7465.txt},
language = {English},
}
2 changes: 1 addition & 1 deletion crypto-random.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

\textit{Криптографически стойким генератором псевдослучайных чисел} будем называть функцию $g$ вида
\[g: \left\{0, 1\right\}^{n} \to \left\{0, 1\right\}^{q\left(n\right)},\]
вычислимую за полиномиальное время, результатом работы которой является последовательность чисел, удовлетворяющей тесту на следующий бит: не должно существовать полиномиального алгоритма, который по $k$ битам последовательности будет предсказывать следующий с вероятностью более $1/2$.
вычислимую за полиномиальное время, результатом работы которой является последовательность чисел, удовлетворяющая тесту на следующий бит: не должно существовать полиномиального алгоритма, который по $k$ битам последовательности будет предсказывать следующий с вероятностью более $1/2$.

В 1982 году Эндрю Яо (\langen{Andrew Chi-Chih Yao},~\cite{Yao:1982}) доказал, что любой генератор, проходящий тест на следующий бит, сможет пройти и любые другие статистические полиномиальные тесты на случайность.

Expand Down
10 changes: 5 additions & 5 deletions generators.tex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ \chapter{Генераторы псевдослучайных чисел}\label{c
\item стойкость многих протоколов распределения ключей (см. главу~\ref{chapter-key-distribution-protocols}) основывается в том числе на выработке одной или несколькими сторонами случайных чисел (\langen{nonce}), которые не может предугадать злоумышленник.
\end{itemize}

Генератором случайных чисел (\langen{random number generator})\index{генератор!случайных чисел} мы будем называть процесс\footnote{Есть и строгое математическое определение генератора в общем смысле. Генератором называется функция $g: \left\{0, 1\right\}^{n} \to \left\{0, 1\right\}^{q\left(n\right)}$, вычислимая за полиномиальное время. Однако мы пока не будем использовать это определение, чтобы показать разницу между истинно случайными числами и псевдослучайными.}, в результате работы которого получается случайная последовательность чисел, а именно такая, что зная произвольное число предыдущих чисел последовательности (и способ их получения) даже теоретически нельзя предсказать следующее с вероятностью, большей заданной. К таким случайным процессам можно отнести:
Генератором случайных чисел (\langen{random number generator})\index{генератор!случайных чисел} мы будем называть процесс\footnote{Есть и строгое математическое определение генератора в общем смысле. Генератором называется функция $g: \left\{0, 1\right\}^{n} \to \left\{0, 1\right\}^{q\left(n\right)}$, вычислимая за полиномиальное время. Однако мы пока не будем использовать это определение, чтобы показать разницу между истинно случайными числами и псевдослучайными.}, в результате работы которого получается случайная последовательность чисел, а именно такая, что зная произвольное число предыдущих чисел последовательности (и способ их получения), даже теоретически нельзя предсказать следующее с вероятностью больше заданной. К таким случайным процессам можно отнести:

\begin{itemize}
\item результат работы счётчика элементарных частиц, работа с которым включена в лабораторный практикум по общей физике для студентов первого курса МФТИ;
Expand All @@ -19,11 +19,11 @@ \chapter{Генераторы псевдослучайных чисел}\label{c

Хотя для всех этих процессов можно предсказать приблизительное значение, самый последний бит значения (чётное или нечётное) будет оставаться достаточно случайным для практических целей. С учётом данной поправки их можно называть надёжными или качественными генераторами случайных чисел.

Однако, к генератору случайных чисел предъявляются и других требования. Кроме уже указанного критерия \textit{качественности} или \textit{надёжности}, генератор должен быть \textit{быстрым} и \textit{дешёвым}. Быстрым -- чтобы получить большой объём случайной информации за заданный объём времени. И дешёвым -- чтобы его можно было бы использовать на практике. Количество случайной информации от перечисленных выше генераторов составляет не более десятков килобайт в секунду (для теплового шума), и значительно меньше, если мы будем требовать ещё и равномерность распределения полученных случайных чисел.
Однако, к генератору случайных чисел предъявляются и других требования. Кроме уже указанного критерия \textit{качественности} или \textit{надёжности}, генератор должен быть \textit{быстрым} и \textit{дешёвым}. Быстрым -- чтобы получить большой объём случайной информации за заданный период времени. И дешёвым -- чтобы его можно было бы использовать на практике. Количество случайной информации от перечисленных выше генераторов составляет не более десятков килобайт в секунду (для теплового шума), и значительно меньше, если мы будем требовать ещё и равномерность распределения полученных случайных чисел.

С целью получения большего объёма случайной информации используют специальные алгоритмы, которые называют генераторами псевдослучайных чисел (ГПСЧ). ГПЧС это детерминированный алгоритм, выходом которого является последовательность чисел, обладающая свойствами случайности. Работу ГПСЧ можно описать следующей моделью. На подготовительном этапе оперативная память, используемая алгоритмом, заполняется начальным значением (\landen{seed}). Далее на каждой итерации своей работы ГПСЧ выдаёт на выход число, которое является функцией от состояния оперативной памяти алгоритма, и меняет содержимое своей памяти по определённым правилам. Содержимое оперативной памяти называется \textit{внутренним состоянием} генератора.
С целью получения большего объёма случайной информации используют специальные алгоритмы, которые называют генераторами псевдослучайных чисел (ГПСЧ). ГПСЧ это детерминированный алгоритм, выходом которого является последовательность чисел, обладающая свойствами случайности. Работу ГПСЧ можно описать следующей моделью. На подготовительном этапе оперативная память, используемая алгоритмом, заполняется начальным значением (\landen{seed}). Далее на каждой итерации своей работы ГПСЧ выдаёт на выход число, которое является функцией от состояния оперативной памяти алгоритма, и меняет содержимое своей памяти по определённым правилам. Содержимое оперативной памяти называется \textit{внутренним состоянием} генератора.

Как и у любого алгоритма, у ГСПЧ есть определённый размер используемой оперативной памяти.\footnote{Только алгоритмы с фиксированным размером используемой оперативной памяти и можно называть \textit{генераторами} в строгом математическом смысле этого слова, как следует из определения.} Исходя из практических требований, предполагается, что размер оперативной памяти для ГПСЧ сильно ограничен. Так как память алгоритма ограничена, то ограничено и число различных внутренних состояний алгоритма. Так как выдаваемые ГПСЧ числа являются функцией от внутреннего состояния, то любой ГСПЧ, работающий с ограниченным размером оперативной памяти и не принимающий извне дополнительной информации, будет иметь \textit{период}. Для генератора с памятью в $n$ бит максимальный период, очевидно, равен $2^n$.
Как и у любого алгоритма, у ГПСЧ есть определённый размер используемой оперативной памяти.\footnote{Только алгоритмы с фиксированным размером используемой оперативной памяти и можно называть \textit{генераторами} в строгом математическом смысле этого слова, как следует из определения.} Исходя из практических требований, предполагается, что размер оперативной памяти для ГПСЧ сильно ограничен. Так как память алгоритма ограничена, то ограничено и число различных внутренних состояний алгоритма. Так как выдаваемые ГПСЧ числа являются функцией от внутреннего состояния, то любой ГПСЧ, работающий с ограниченным размером оперативной памяти и не принимающий извне дополнительной информации, будет иметь \textit{период}. Для генератора с памятью в $n$ бит максимальный период, очевидно, равен $2^n$.

Качество детерминированного алгоритма, то есть то, насколько полученная последовательность обладает свойствами случайной, можно оценить с помощью тестов, таких как набор тестов NIST (\langen{National Institute of Standards and Technology}, США,~\cite{NIST:2001}). Данный набор содержит большое число различных проверок, включая частотные тесты бит и блоков, тесты максимальных последовательностей в блоке, тесты матриц и так далее.

Expand All @@ -37,7 +37,7 @@ \chapter{Генераторы псевдослучайных чисел}\label{c

\section{КСГПСЧ на основе РСЛОС}

Как уже упоминалось ранее, использование РСЛОС в качестве ГСПЧ не является криптографически стойким. Однако можно использовать комбинацию из нескольких регистров сдвига, чтобы в результате получить быстрый, простой (дешёвый) и надёжный (криптографически стойкий) генератор псевдослучайных чисел.
Как уже упоминалось ранее, использование РСЛОС в качестве ГПСЧ не является криптографически стойким. Однако можно использовать комбинацию из нескольких регистров сдвига, чтобы в результате получить быстрый, простой (дешёвый) и надёжный (криптографически стойкий) генератор псевдослучайных чисел.

\input{generators_with_multiple_shift_registers}

Expand Down
Loading

0 comments on commit 11cf8eb

Please sign in to comment.