Вы находитесь на странице: 1из 8

Лабораторная работа №6.

«Генераторы псевдослучайных чисел».

г. Хабаровск
2020
Задание

Реализовать программно один из генераторов псевдослучайных чисел.

Теория

Случайные числа могут применяться:

 Для генерирования симметричных ключей


 Для генерирования параметров асимметричных систем шифрования и
ключевых пар
 Для генерирования векторов инициализации и т.п.

Способы получения случайной последовательности 0 и 1:

 Наблюдение за случайным физическим процессом


 Проведение вычислений

Псевдослучайные числа (ПСЧ):

 их можно вычислить
 не зная параметров вычислений, их нельзя предсказать
 Алгоритм генерирования может быть открытым

Требования к случайным и псевдослучайным числам в криптографии

• P(0) = P(1) = 0.5

• Генерируемые числа должны быть независимы

• Качество генераторов ПСЧ (ГПСЧ) проверяется на тестах NIST (16 основных


тестов)

• Возможно применение процедуры «стандартизации» или

«очистки»:

- Преобразование первоначальной последовательности 0 и 1

(неравновероятной, зависимой) в равновероятную и независимую

- Могут быть 2 случая:

1. Символы независимы, но, возможно, неравновероятны

1
2. Символы могут быть зависимы

Генераторы псевдослучайных чисел (ГПСЧ)

Представляют собой функцию F(s,i),

где i – номер генерируемого случайного двоичного слова,

s – параметр или секретный ключ (seed, «семя»)

- Таким образом, последовательность случайных чисел:

F(s, 1), F(s, 2), …, F(s, k)

Требования к ГПСЧ:

1. Генерируемая последовательность должна быть статистически неотличима


от абсолютно случайной

2. Знание начальной части последовательности не должно позволить


предсказать следующий бит этой последовательности.

Эти требования невыполнимы, если не ограничить сложность тестов и

методов прогноза (ограничить объем памяти или длительность проверки)

Доказано, что требования 1 и 2 эквивалентны. Установлена связь между

генерируемыми ПСЧ и односторонними функциями -> можно использовать

«доказуемо надежные» односторонние функции в качестве ГПСЧ

- Режимы шифрования DES, AES: OFB, CTR; RC4

ГПСЧ на основе алгоритма RSA

• Пусть P≠Q - большие простые числа

• N= PQ

• Выбираем число е – взаимнопростое с (P-1)(Q-1)

• x0 – семя, 1 < x0 <N-1

• Вычисляем xi = xi-1 mod N

• Вычисляем zi = xi mod 2, i= 1,2, 3, …, k, …

2
• Обычно е=3

Код программы

Реализуем ГПСЧ на основе RSA на языке C# со следующими параметрами:

p = 204983, q = 234457, e = 3.
public partial class FormPRNG : Form
{
string errorText;
public FormPRNG()
{
InitializeComponent();
}

private void btnRun_Click(object sender, EventArgs e)


{
errorText = string.Empty;
string result = string.Empty;

long p = 204983;
long q = 234457;
long E = 3;

long n = p * q;
CheckErrors(n);

if (errorText == string.Empty)
{
long length = Convert.ToInt32(tbLength.Text.Trim());
long temp = Convert.ToInt32(tbInit.Text.Trim());

for (int i = 0; i < length; i++)


{
temp = Convert.ToInt64(Math.Pow(temp, E) % n);
result += Convert.ToString(temp % 2);
}

tbResult.Text = result;
}
else
{
MessageBox.Show(errorText, "Ошибка!", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

private void CheckErrors(long n)


{
string init = tbInit.Text.Trim();
string length = tbLength.Text.Trim();

if (init == string.Empty)
{
errorText += "Вы не ввели начальное значение X0\r\n";
}

else if (Convert.ToInt64(init) > n || Convert.ToInt64(init) <= 1)


{
errorText += "Вы ввели недопустимое начальное значение X0\r\n";
3
}

if (length == string.Empty)
{
errorText += "Вы не ввели длину последовательности\r\n";
}

else if (Convert.ToInt64(length) < 1)


{
errorText += "Вы ввели недопустимую длину последовательности";
}
errorText.TrimEnd();
}
}

Скриншоты

Достоинства и недостатки ГПСЧ на основе RSA

Генератору псевдослучайных чисел на основе алгоритма RSA присущи те же


достоинства и недостатки, что и, собственно, самому алгоритму RSA.

Главное достоинство алгоритма RSA - имея открытый ключ и зная алгоритм


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

Хотя, из-за низкой скорости шифрования (около 30 кбит/с при 512 битном
ключе на процессоре 2 ГГц), сообщения обычно шифруют с помощью более
производительных симметричных алгоритмов со случайным ключом
(сеансовый ключ), а с помощью RSA шифруют лишь этот ключ. Такой
механизм имеет потенциальные уязвимости ввиду необходимости использовать
криптостойкий генератор случайных чисел для формирования случайного
сеансового ключа симметричного шифрования и эффективно противостоящий
атакам симметричный криптоалгоритм (в данное время широкое применение
находят AES, IDEA, Serpent, Twofish).
4
Существует вероятность что через некоторое время RSA-шифр будет взломан
это связано с ростом мощности процессоров и улучшением математических
алгоритмов поиска простых чисел - множителей.

Типы атак на ГПСЧ


Прямая криптоаналитическая атака
Если атакующий способен напрямую отслеживать выходные данные ГПСЧ и
исследовать закономерность их появления, то это является прямой
криптоаналитической атакой. Этот вид атаки распространяется на большинство
алгоритмов, использующие ГПСЧ. Однако если, например, ГПСЧ используется
только для генерации ключа, как сделано в Triple DES, то он не может быть
уязвим для такого рода атак, так как выходы ГПСЧ непосредственно никогда не
видны.

Атаки, основанные на входных данных


Данный тип атак возможен в случаях, когда злоумышленник может
использовать знания о входных сигналах ГПСЧ или контролировать их. Атаки,
основанные на входных данных, могут быть разделены на атаки с известными
входными данными, атаки с воспроизводимыми входными данными и атаки на
избранные входные данные.

Атаки с известными входными данными практически осуществимы в


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

Атаки с воспроизводимыми входными данными могут использоваться в тех


же ситуациях, но требуют менее сложных систем взлома и менее сложного
анализа со стороны атакующего.

Атаки на избранные входные данные могут быть практически реализованы


на системах использующих смарт-карты или токены. Также такая атака может
быть опасна для приложений, использующих в ГПСЧ в качестве входных
сигналов текстовые сообщения, пароли, задаваемые пользователем, статистику
сети, время и т. д.

Атаки, основанные на вскрытии внутреннего состояния


При проведении такого типа атак злоумышленник пытается использовать ранее
успешные атаки на ГПСЧ, вскрывшие его внутреннее состояние, с целью
предсказания состояния дальнейших или предыдущих состояний ГПСЧ,

5
насколько это возможно. Такого рода атаки могут быть успешны в том случае,
когда ГПСЧ начинает свою работу с известного или предсказуемого состояния.
На практике очень сложно определить тот факт, что внутреннее состояние было
скомпрометировано. Именно поэтому ГПСЧ должны противодействовать
компрометированию внутреннего состояния. Возможны как минимум 4
варианта такой атаки:

Атака с обратной прокруткой использует вскрытое состояние ГПСЧ в


момент времени с целью восстановления состояний ГПСЧ и, соответственно,
его выходов в предыдущие моменты времени.

Перманентное компрометирование состояния возможно для таких систем, в


которых однажды раскрытое состояние в момент времени делает все
предыдущие и последующие состояния уязвимыми для последующих атак.

Атака итеративным угадыванием использует знание о состоянии в момент


времени , и промежуточные выходы ГПСЧ, чтобы узнать в момент времени
, когда входы, собранные в течение этого периода времени, являются
угадываемыми (но неизвестными) для атакующего.

Встреча посередине является по сути сочетанием атаки итеративным


угадыванием и атаки с обратной прокруткой. Знание в моменты времени и
позволить злоумышленнику восстановить состояние в моменты
времени , a так же во всем временном промежутке от до .

Способы защиты от атак на ГПСЧ

 Используйте хеш-функции, чтобы скрыть реальные выходные


значения ГПСЧ. Используйте результаты хеш-функций от выходных
значений ГПСЧ вместо самих значений, чтобы предотвратить прямые
криптоаналитические атаки. Данная методика, хоть и не гарантирует
полной безопасности, делает систему более надёжной.

 Хешируйте источник энтропии с метками времени, значениями


счетчика или другими постоянно меняющимися
значениями. Хеширование источника энтропии с каким либо постоянно
меняющимся значением перед входом в ГПСЧ способно защитить
систему от атак, основанных на входных данных.

 Периодически меняйте внутреннее состояние ГПСЧ. Полностью


меняйте внутреннее состояние ГПСЧ время от времени. Это поможет
6
защититься от атак, основанных на вскрытии внутреннего состояния, или,
по крайней мере, уменьшит урон, нанесённый успешной атакой.