Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Псевдослучайные числа





При генерировании псевдослучайных чисел используется 24-байтовое начальное значение и создается 16-байтовый сеансовый ключ, 8-байтовый вектор инициализации и новое начальное значение, которые предполагается использовать для получения следующего псевдослучайного числа. Алгоритм строится на основе алгоритме Х12.17, но использует для шифрования CAST-128 вместо "тройного" DES. Алгоритм задействует следующие структуры данных.

1. Ввод.

• randseed.bin (24 октета). Если этот файл пуст, он заполняется 24 истинно случайными октетами.

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

2. Вывод.

• К (24 октета). Первые 16 октетов, К[0..15], содержат сеансовый ключ, а последние восемь октетов, К[16.. 23], включают значение IV.

• randseed.bin (24 октета). В этом файле размещается новое начальное значение для генератора псевдослучайных чисел.

3. Внутренние структуры данных.

• dtbuf (8 октетов). Первые четыре октета, dtbuf [0.. 3], инициализиру-ются с помощью текущего значения даты-времени. Этот буфер эквивалентен переменной DT из алгоритма Х12.17.

• rkey (16 октетов). Ключ шифрования CAST-128, действующий на всех стадиях алгоритма.

• rseed (8 октетов). Эквивалент переменной V, из алгоритма XI2.17.

• rbuf (8 октетов). Псевдослучайное число, генерируемое алгоритмом. Это буфер эквивалентен переменной R, из алгоритма Х12.17.

• К' (24 октета). Временный буфер для нового значения randseed.bin. Алгоритм состоит из девяти шагов. Первый и последний шаги призваны уменьшить долю файла randseed.bin, которая может быть перехвачена противником. Остальные шаги, по существу, эквивалентны трем итерациям алгоритма Х12.17 и иллюстрируются на рис. 10.11.

 

 

Рисунок 10.11 - Генерирование сеансового ключа и вектора инициализации PGP (шаги G2-G8 алгоритма)

 

Следующее пошаговое описание алгоритма соответствует описанию, предложенному Стефаном Ньюхаусом (Stephan Neuhaus).

1. [Дооперационная обработка начального значения.]

• randseed.bin копируется в К[0.. 23].

• Хэш-код сообщения (он уже имеется, если сообщение подписано, иначе используется 4К первых октетов сообщения), служит в качестве ключа, вводится нулевое значение IV, и К шифруется в режиме CFB; результат сохраняется в К.

2. [Установка начального значения.]

• Для dtbuf[O..3] устанавливается значение, равное 32-битовому значению текущего локального времени. Значение dtbuf[4..7] обнуляется. Копируется rkey «- К [0.. 15]. Копируется rseed <r- К [16.. 23].

• 64-битовое значение dtbuf шифруется с использованием 128-битового значения rkey в режиме ЕСВ; результат сохраняется в dtbuf.

3. [Подготовка к генерированию случайных октетов.]

Устанавливается rcount <— О и к <— 23. Циклическое повторение шагов G4-G7 будет выполнено 24 раза (для к = 23... 0), и при каждом выполнении будет получен случайный октет, помещаемый в К. Переменная rcount представляет число еще неиспользованных случайных октетов в rbuf. Ее значение трижды уменьшается от 8 до 0, чтобы в результате было получено 24 октета.

4. [Доступны ли еще байты?] Еслиrcount = 0,следует перейти кшагу G5, в противном случае — к шагу G7. Шаги G5 и G6 представляют однократное выполнение алгоритма Х12.17, порождающего новый набор из восьми случайных октетов.

5. [Генерирование новых случайных октетов.]

• rseed <— rseed ⊕ dtbuf.

• rbuf <- Erkey, [rseed] в режиме ЕСВ.

6. [Генерирование следующего начального значения.]

• rseed «— rseed ⊕ dtbuf.

• rbuf <r- Erkey[rseed] в режиме ЕСВ.

• Устанавливается rcount <— 8.

7. [Перенос по одному байту из rbuf в К.]

• Устанавливается rcount <— rcount -1.

• Генерируется истинно случайный байт b и устанавливается

К [к] <- rbuf[rcount]0b.

8. [Готово?] Если к = 0,следует перейти к шагуG9,в противном случаеустановить к <- к -1 и перейти к шагу G4.

9. [Послеоперационная обработка начального значения и возвращение результата.]

• Генерируется еще 24 байта методом, представленным шагами G4-G7, но связывания с помощью операции XOR со случайным значением в G7 не производится. Результат помещается в буфер К'.

• К' шифруется в режиме CFB с ключом К [0.. 15] и вектором инициа-лизации К [16.. 23]; результат сохраняется в randseed.bin.

• Возвращается К.

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

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

Date: 2015-06-06; view: 662; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию