Способы криптоанализа симметричных шифров



ФЕДЕРАЛЬНОЕ АГЕНТСТВО  ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

 

Федеральное государственное  бюджетное образовательное учреждение

высшего профессионального  образования

«ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»

(ФГБОУ ВПО ИРГУПС)

 

Факультет управления транспортом  и информационных технологий

Кафедра «Информационная безопасность»

 

К защите допускаю

Доцент кафедры «ИБ»

Бутин А. А.

____________________

«__»__________ 2012 г.


 

СПОСОБЫ КРИПТОАНАЛИЗА СИММЕТРИЧНЫХ ШИФРОВ

КР.460300.090105.65.ПЗ

 

Выполнил

Руководитель

студент гр. ЗИ-09-1

Макеев  М. В.

доцент кафедры ИБ

Бутин А. А.

______________________

______________________

«    »                        2012 г.

«   »                         2012 г.


 

 

 

 

 

Иркутск, 2012 г.

 

Аннотация

Курсовая работа 48 с., 7 рисунков, 1 таблица, 5 формул, 8 источников.

КРИПТОАНАЛИЗ, КРИПТОАТАКИ, АЛГОРИТМЫ, ВЗЛОМ, БЛОЧНЫЕ ШИФРЫ, ПОТОЧНЫЕ ШИФРЫ.

Объектом  исследования является криптоанализ симметричных шифров.

Цель  работы – изучить различные методы криптоанализа.

В результате были рассмотрены и классифицированы различные методы криптоанализа симметричный блочных и потоковых шифров, а так же приведен пример дифференциального криптоанализа на примере алгоритма DES.

 

Содержание

Введение 6

1 Теоретическая часть 7

1.1 Классификация криптоатак 7

1.2 Универсальные методы криптоанализа 14

1.2.1  Метод полного перебора 14

1.2.2  Атака по ключам 17

1.2.3  Частотный анализ 21

1.3 Методы криптоанализа блочных шифров 22

1.3.1  Статистический метод 23

1.3.2  Метод разностного (дифференциального) анализа 25

1.3.3  Метод линейного анализа 28

1.4 Методы криптоанализа поточных шифров 30

1.5 Криптоанализ по побочным каналам 36

1.5.1  Атака по времени 38

1.5.2  Атаки по мощности 39

1.5.3  Атаки по ошибкам вычислений 40

1.5.4  Атаки по электромагнитному излучению 41

2 Практическая часть 42

Заключение 47

Список использованных источников 48

 

 

 

Нормативные ссылки

ГОСТ 28147-89. Системы  обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. 

Обозначения и сокращения

БШ – блочный шифр;

ПСК – процедура статистической классификации;

ПШ – поточный шифр;

СБИС – сверхбольшая интегральная схема;

ЭВМ – электронно-вычислительная машина;

 

Введение

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

Наиболее  распространенные шифры – симметричные, так как они обладают наибольшей скоростью шифрования/дешифрования. Поэтому данные шифры должны отвечать ряду требований, среди которых одними из основных являются условия обеспечения стойкости шифра к различным видам криптоаналитических атак. 

  1. Теоретическая часть

    1. Классификация криптоатак

Основоположник  современной криптографии Клод Шеннон, показал, что если на любой исходный текст наложить (т.е. сложить по модулю с текстом) ключ длины не меньшей, чем само сообщение, то такой шифр будет нераскрываемым: потенциальному злоумышленнику потребуется перебрать все возможные ключи и каждым из них попробовать расшифровать сообщение. Однако использование такого способа шифрования, получившего название «одноразовых блокнотов», в большинстве случаев оказывается слишком дорогим и неоправданным. Это связано с тем, что нет смысла бороться за устойчивость системы защиты информации к взлому ниже некоторой «фоновой» вероятности, т.е. вероятности события, которое мы не в состоянии предотвратить.

Современная криптография — соревнование методов  шифрования и криптоанализа. Криптоанализом (от греческого kryptos – «скрытый» и analyein –«ослаблять» или «избавлять») называют науку восстановления (дешифрования) открытого текста без доступа к ключу. Фундаментальное допущение криптоанализа, впервые сформулированное Кирхгоффом, состоит в том, что секретность сообщения всецело зависит от ключа, т.е. весь механизм шифрования, кроме значения ключа, известен противнику. Как бы то ни было, секретность алгоритма не является большим препятствием: например, для определения типа программно реализованного криптографического алгоритма требуется лишь несколько дней инженерного анализа исполняемого кода.

Криптоанализ ставит своей задачей в разных условиях получить дополнительные сведения о ключе шифрования, чтобы значительно уменьшить диапазон вероятных ключей. Результаты криптоанализа могут варьироваться по степени практической применимости. Так, криптограф Ларс Кнудсен предлагает следующую классификацию успешных исходов криптоанализа блочных шифров в зависимости от объема и качества секретной информации, которую удалось получить:

  • Полный взлом – криптоаналитик извлекает секретный ключ.
  • Глобальная дедукция – криптоаналитик разрабатывает функциональный эквивалент исследуемого алгоритма, позволяющий зашифровывать и расшифровывать информацию без знания ключа.
  • Частичная дедукция – криптоаналитику удается расшифровать или зашифровать некоторые сообщения.
  • Информационная дедукция – криптоаналитик получает некоторую информацию об открытом тексте или ключе.

Однако  взлом шифра совсем не обязательно  подразумевает обнаружение способа, применимого на практике для восстановления открытого текста по перехваченному зашифрованному сообщению. В научной криптологии другие правила. Шифр считается взломанным, если в системе обнаружено слабое место, которое может быть использовано для более эффективного взлома, чем метод полного перебора ключей («brute-force approach»). Под взломом понимается лишь подтверждение наличия уязвимости криптоалгоритма, свидетельствующее о том, что свойства надежности шифра не соответствуют заявленным характеристикам. Как правило, криптоанализ начинается с попыток взлома упрощенной модификации алгоритма, после чего результаты распространяются на полноценную версию: прежде чем браться за взлом, например, 16-раундовой версии DES, естественно для начала попытаться взломать шифр с меньшим количеством раундов, чем указано в его спецификации (например, 8-раундовую версию шифра).

Попытка криптоанализа называется атакой. Прежде чем классифицировать атаки, необходимо ввести ряд обозначений: открытый текст будем обозначать буквой x, шифротекст - буквой y (в качестве x может выступать любая последовательность битов: текстовый файл, оцифрованный звук, точечный рисунок и т.д.). Пусть для зашифровывания и расшифровывания, используются ключи k и k′ соответственно (в симметричной криптографии k=k′); обозначим функцию зашифровывания Ek, расшифрования – Dk’ . Тогда выполняются Ek(x)=y, соотношения Dk’(y)=x. Известны четыре основных типа криптоаналитических атак. В каждом случае предполагается (согласно фундаментальному допущению Кирхгоффа), что криптоаналитик знает используемый алгоритм шифрования:

  • Атака на основе только шифротекста. Криптоаналитик располагает шифротекстами y1,…,ym, полученными из неизвестных открытых текстов x1,…,xm различных сообщений. Требуется найти хотя бы один из xi , 1≤i≤m (или соответствующий ключ ki), исходя из достаточного числа m криптограмм, или убедиться в своей неспособности сделать это. В качестве частных случаев возможно совпадение ключей: k1=…=km или совпадение открытых текстов: x1=…=xm.
  • Атака на основе открытого текста. Криптоаналитик располагает парами (x1,y1),…,(xm,ym) открытых и соответствующим им зашифрованных текстов. Требуется определить ключ ki для хотя бы одной из пар. В частном случае, когда k1=…=km=k , требуется определить ключ k или, убедившись в своей неспособности сделать это, определить открытый текст xm+1 еще одной криптограммы ym+1, зашифрованной на том же ключе.
  • Атака на основе подобранного открытого текста отличается от предыдущей лишь тем, что криптоаналитик имеет возможность выбора открытых текстов x1,…,xm. Цель атаки та же, что и предыдущей. Подобная атака возможна, например, в случае, когда криптоаналитик имеет доступ к шифратору передающей стороны.
  • Атака на основе адаптивно подобранного открытого текста. Это частный случай вышеописанной атаки с использованием подобранного открытого текста. Криптоаналитик может не только выбирать используемых шифруемый текст, но также уточнять свой последующий выбор на основе полученных ранее результатов шифрования.

Атаки с использованием известного или  подобранного открытого текста встречаются  чаще, чем можно подумать. Необходимым требованием к хорошему криптоалгоритму является способность противостоять таким атакам. Это означает, что рассекречивание некоторой информации, передававшейся по каналу связи в зашифрованном виде, не должно приводить к рассекречиванию другой информации, зашифрованной на этом ключе. Кроме того, указанное требование учитывает особенности эксплуатации аппаратуры и допускает некоторые вольности со стороны оператора или лиц, имеющих доступ к формированию засекреченной информации. В среде криптоаналитиков нельзя назвать неслыханными факты добычи открытого текста шифрованного сообщения или подкупа лица, которое должно будет зашифровать избранное сообщение. Применяются и «косвенные» методы осуществления атаки на основе подобранного шифротекста. Злоумышленник может убедить обладателя секретного ключа переслать некое сообщение, но в зашифрованной форме. Например, использованный командованием военно-морского флота США во время Второй Мировой Войны перед битвой на Мидвее. Чтобы убедиться в правильности результатов работы по взлому японского военного шифра, криптоаналитики США попросили американский гарнизон, дислоцированный на Мидвее, сообщить по открытому незащищенному каналу о нехватке пресной воды. Спустя два дня было перехвачено секретное сообщение, в котором японцы, осуществлявшие мониторинг использованного канала, сообщали о проблемах с водой в некоем «AF». Благодаря этому американцы узнали, «AF» – кодовое обозначение Мидвея в шифрограммах противника. Атаки на основе подобранных текстов считаются наиболее опасными.

Указанные криптоатаки относятся к классу пассивных. Так классифицируются действия противника, который «пассивно изучает» шифрованные сообщения, может их перехватить и подвергнуть криптоанализу с целью получения информации об открытом тексте или ключе. Однако современные технические средства позволяют потенциальному противнику «активно» вмешиваться в процесс передачи сообщения. Обычно различают два типа активных атак, которые носят названия имитации и подмены сообщения. Атака имитации состоит в том, что противник «вставляет» в канал связи сфабрикованное им «шифрованное сообщение», которое на самом деле не передавалось от законного отправителя к получателю. При этом противник рассчитывает на то, что получатель воспримет это сообщение как подлинное (аутентичное). Атака подмены состоит в том, что противник, наблюдая передаваемое по каналу связи подлинное сообщение от отправителя, «изымает» его и заменяет поддельным. Различные шифры могут быть более или менее уязвимыми к активным атакам. Способность самого шифра (без использования дополнительных средств) противостоять активным атакам обычно называют имитостойкостью шифра. Количественной мерой имитостойкости шифра служат вероятности успеха имитации и подмены соответственно. Эти вероятности определяют шансы противника на успех при навязывании получателю ложного сообщения.

Атаки можно также классифицировать по объему ресурсов, необходимых для  их осуществления:

  • Память – объем памяти, требуемый для реализации атаки;
  • Время – количество элементарных операций, которые необходимо выполнить;
  • Данные – необходимый объём открытых и соответствующим им зашифрованных текстов. В некоторых случаях эти параметры являются взаимозависимыми: например, за счет увеличения памяти можно сократить время атаки.

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

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

Теоретически  стойкие системы создают шифротексты, содержащие недостаточное количество информации для однозначного определения соответствующих им текстов (или ключей). В лучшем случае открытый текст может быть локализован в достаточно большом подмножестве множества всех открытых текстов, и его можно лишь «угадать» с ничтожно малой вероятностью. Для совершенного шифра открытый текст «локализуется» во всем множестве открытых текстов. Тем самым, для него сама задача расшифровывания становится бессмысленной. Никакой метод криптоанализа, включая полный перебор ключей, не позволяет не только определить ключ или открытый текст, но даже получить некоторую информацию о них. Алгоритм безусловно стоек, если восстановление открытого текста невозможно при любом объеме шифртекста, полученного криптоаналитиком. Безопасность безусловно стойких криптоалгоритмов основана на доказанных теоремах о невозможности раскрытия ключа. Как уже говорилось, принципиально не раскрываемые шифры (например, совершенно секретные системы Клода Шеннона, в которых ключ не может использоваться повторно, а его размер больше либо равен объему текста) неудобны на практике (симметричные криптосистемы с разовым использованием ключа требуют большой защищенной памяти для хранения ключей, системы квантовой криптографии требуют волоконно-оптических каналов связи и являются дорогими, кроме того, доказательство их безопасности уходит из области математики в область физики). В силу своей непрактичности и высокой ресурсозатратности абсолютно стойкие шифры применяются только в сетях связи с небольшим объемом передаваемой информации, когда есть возможность обеспечить всех абонентов достаточным запасом случайных ключей и исключить возможность их повторного применения: обычно это сети для передачи особо важной государственной информации.

Стойкость доказуемо стойких криптоалгоритмов определяется сложностью решения хорошо известной математической задачи, которую пытались решить многие математики и которая является общепризнанно сложной. В качестве примера можно привести системы DH (Диффи-Хеллмана) и RSA (Ривеста-Шамира-Адельмана), основанные на сложностях дискретного логарифмирования и разложения целого числа на множители соответственно. Достоинством доказуемо стойких алгоритмов является хорошая изученность задач, положенных в их основу, а недостатком - невозможность в случае необходимости оперативной доработки криптоалгоритмов, т.е. отсутствие гибкости. Повышение стойкости достигается увеличением размера математической задачи или ее заменой, что, как правило, влечет цепь изменений в аппаратуре, используемой для шифрования.

Предположительно  стойкие криптоалгоритмы основаны на сложности решения частной математической задачи, которая не сводится к хорошо известным задачам и которую пытались решить один или несколько человек. Примерами могут служить шифры ГОСТ 28147-89, AES, FEAL. Предположительно стойкие криптоалгоритмы характеризует сравнительно малая изученность математических задач, на которых базируется их стойкость. Однако такие шифры обладают большой гибкостью, что позволяет при обнаружении слабых мест не отказываться от алгоритмов, а проводить их доработку.

Создание  новых методов криптоанализа и повышение эффективности существующих методов необходимы как для анализа стойкости криптографических средств, так и для разработки методов их вскрытия. Каждый новый метод криптоанализа приводит к пересмотру безопасности шифров, к которым он применим.

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

    1. Универсальные методы криптоанализа

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

      1. Метод полного перебора

Часто криптоаналитики вскрывают шифры на ЭВМ методом перебора ключей. В процессе криптоанализа приходится перебирать миллиард ключей со скоростью тысяча ключей в секунду.

Предположим, злоумышленнику известна одна или несколько  пар (x, y). Пусть для простоты для любой пары (x, y) существует единственный ключ k, удовлетворяющий соотношению Ek(x)=y . Упорядочим множество возможных ключей (пространство ключей) и будем последовательно проверять ключи из K на выполнения равенства Ek(x)=y . Если считать проверку одного варианта ключа k ∈ K за одну операцию, то полный перебор ключей потребует |K| - число элементов в множестве. Пусть ключ в схеме шифрования выбирается случайно и равновероятно из множества K. Тогда с вероятностью ключ будет угадан и трудоемкость метода полного перебора будет равна 1. Поэтому естественно в качестве оценки трудоемкости метода взять математическое ожидание случайной величины α, где α - число опробований до момента обнаружения использованного ключа. Поскольку α – равномерно распределенная случайная величина, то .

Алгоритмы полного перебора допускают распараллеливание, что позволяет значительно ускорить нахождение ключа. Известно два направления  в организации параллельного вычисления ключа.

Во-первых, построение конвейера. Пусть алгоритм соотношения Ek(x)=y представим в виде детерминированной цепочки простейших действий (операций): O1,O2,…,ON.

Возьмем N процессоров A1, A2,…,AN, зададим их порядок и положим, что i-ый процессор выполняет три одинаковые по времени операции:

  1. прием данных от (i -1)-го процессора;
  2. выполнение операции Oi;
  3. передача данных следующему (i +1)-му процессору.

Тогда конвейер из N последовательно соединенных, параллельно и синхронно работающих процессоров работает со скоростью , где v -скорость выполнения одной операции процессором. Второе направление распараллеливания состоит в том, что множество K разбивается на непересекающиеся подмножества K1,K2,…,KQ. Система из Q машин перебирает ключи так, что i-ая машина осуществляет перебор ключей из множества Ki, 1≤i≤Q . Система прекращает работу, если одна из машин нашла ключ. Самой большой сложностью в изложенном подходе является организация деления ключевого множества. Однако если организовать поиск ключа таким образом, что при каждом очередном опробовании каждый из N процессоров стартует со случайной точки, то время опробования увеличится, но схема значительно упростится. Как показано в работе, среднее число шагов опробования N процессорами (машинами) ключей из множества K в этом случае составляет .

Реализация  такого параллелизма предполагает различные  решения. Самое очевидное решение – создание компьютерного вируса для распространения программы-взломщика в глобальной сети. Вирус должен использовать периоды простоя компьютера (по данным исследований, компьютер простаивает 70-90% времени) для осуществления перебора по множеству ключей. Рано или поздно один из зараженных компьютеров обнаружит искомый ключ (необходимо предусмотреть механизм оповещения злоумышленника); с ростом производительности компьютеров и скорости распространения вирусов угроза успешного исхода такой атаки растет.

Теперь  рассмотрим случай, когда криптоаналитик осуществляет атаку на основе только шифротекста. При осуществлении попытки определения ключа шифра по криптограмме путем ее расшифрования на разных ключах требуется некоторым образом анализировать выходные данные алгоритма и проверять их «осмысленность». Сегодня в качестве объекта шифрования может выступать графический файл или программа. В этом случае задача определения «осмысленности» выходных данных становится очень трудной. Рассмотрим более простой случай, а именно - защиту передаваемых текстовых сообщений. Когда известно, что открытый текст представляет собой предложение на естественном языке, проанализировать результат и опознать успешный исход дешифрования сравнительно несложно, тем более что нередко криптоаналитик располагает некоторой априорной информацией о содержании сообщения. Требуется по небольшому отрезку текста решить, что собой представляет дешифрованный текст: осмысленное сообщение или набор случайных символов. Однако вручную выполнить анализ множества фрагментов дешифрированных текстов невозможно. Поэтому задачу выделения осмысленного текста (то есть обнаружение правильно дешифрированного текста) решают с помощью ЭВМ. В этом случае используют теоретические положения, разработанные в конце XIX века петербургским математиком Марковым А.А., - так называемые цепи Маркова.

Тем не менее, возможно, что несколько  вариантов пройдут критерий на открытый текст. К. Шеннон привел следующий пример. Криптограмму WNAJW, полученную при использовании сдвигового шифра для шифрования текста на английском языке, порождают два открытых текста RIVER и ARENA, отвечающим ключам F (=5) и W (=22). При этом один из ключей является истинным, а другой – ложным. Для сдвигового шифра одинаковые криптограммы порождают и более длинные слова SULPHUR (сера) и PRIMERO (запал, учебник). Аналогичные примеры имеются и для русского языка: АГАТА – ОСОБО, КОНОПЛЕЮ – ОТСТУПИВ и т.д. Среднее число ложных ключей θL относительно всех возможных шифротекстов длины L определяется формулой 1:

       (1)

где VL - множество криптограмм длины L, p(v) - вероятность появления криптограммы v, θL(v) - число ложных ключей, соответствующих данной криптограмме.

Противник заинтересован в получении некоторой  вероятностной информации об исходном тексте сообщения. Например, известный факт написания текста на английском языке предоставляет криптоаналитику некоторую априорную информацию об этом сообщении даже до анализа шифровки. В этом случае он заранее знает, что слово «HELLO» является более вероятным началом сообщения, чем набор букв «FGHKM». Поэтому одной из целей криптоанализа может являться увеличение информации, относящейся к каждому возможному сообщению. Предположим, противник перехватил шифровку «ABCCD» и знает (или предполагает), что использованный шифр – это шифр простой замены. Анализ шифровки позволяет сделать вывод, что исходное сообщение состоит из пяти букв, причем на третьей и четвертой позициях стоит одна и та же буква, а остальные отличны от нее и различны между собой. Противник не может считать, что это сообщение «HELLO», потому что имеются и другие возможные сообщения, например, «TEDDY». Однако апостериорные вероятности таких открытых текстов возрастают относительно их априорных вероятностей. В то же время апостериорная вероятность таких открытых текстов, как «PEACE» или «GATES», снижается до нуля вне зависимости от их априорных вероятностей. По Шеннону, криптосистема является совершенной, если после анализа закрытых текстов апостериорные вероятности возможных открытых текстов остаются такими же, какими были их априорные вероятности.

      1. Атака по ключам

Одной из причин ненадежности криптосистем является использование слабых ключей. Согласно уже упомянутому принципу Кирхгофа, стойкость криптоалгоритма определяется секретностью ключа. Слабый ключ – это ключ, не обеспечивающий достаточного уровня защиты или использующий в шифровании закономерности, которые могут быть взломаны. Обычно считается, что алгоритм симметричного шифрования должен по возможности не иметь слабых ключей. Если это невозможно, то количество слабых ключей должно быть минимальным, чтобы уменьшить вероятность случайного выбора одного из них. Тем не менее, все слабые ключи должны быть заранее известны, чтобы их можно было отбраковать в процессе создания ключа.

Генераторы  случайных чисел – ещё одно уязвимое место криптографических систем. Это означает, что, если для генерации ключей используется криптографический слабый алгоритм, независимо от используемого шифра вся система будет нестойкой. Качественный ключ, предназначенный для использования в рамках симметричной криптосистемы, представляет собой случайный двоичный набор. Если требуется ключ разрядностью n, в процессе его генерации с одинаковой вероятностью должен получаться любой из 2n возможных вариантов. Генерация ключей для асимметричных криптосистем – процедура более сложная, т.к. ключи, применяемые в таких системах, должны обладать определенными математическими свойствами. Например, в случае системы RSA модуль шифрования представляет собой произведение двух больших простых чисел.

Рассмотрим  понятие криптографически стойкого генератора псевдослучайных кодов, или, для краткости, псевдослучайного генератора, которое было введено Блюмом и Микали. Пусть g: {0, 1}n →{0, 1}q(n) -функция, вычислимая за полиномиальное от n время, q(n) - некоторый полином. Такая функция называется генератором. Генератор g является псевдослучайным, если порождаемые им последовательности неотличимы никаким полиномиальным вероятностным алгоритмом от случайных последовательностей той же длины q(n). В 1989-1990 гг. Импальянцо, Левин, Луби и Хостад доказали, что псевдослучайные генераторы существуют тогда и только тогда, когда существуют односторонние функции.

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

  • Программная генерация, предполагающая вычисление очередного псевдослучайного числа как функции текущего времени, последовательности символов, введенных пользователем, особенностей его клавиатурного почерка и т.д.;
  • Программная генерация, основанная на моделировании качественного псевдослучайного генератора с равномерным законом распределения;
  • Аппаратная генерация с использованием качественного псевдослучайного генератора;
  • Аппаратная генерация с использованием генераторов случайных последовательностей, построенных на основе физических генераторов шума и качественных псевдослучайных генераторов.