2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Шифрование гост: разъясните алгоритм
Сообщение10.04.2015, 09:56 


05/04/12
2
Пытаюсь понять алгоритм шифрования ГОСТ89 (самый простой его вариант). По открытым источникам (wiki, habrahabr, github source) сделать это не удалось. Пытаюсь вручную пройтись по всем описанным этапам:
- есть открытое сообщение "hello world!"
- и ключ "localadmin"
1. Перевожу открытое сообщение в бинарный вид: 0110...
получаю строку из 92 битов
2. Перевожу ключ в бинарный вид: 0100...
3. Разбиваю ключ на 8 равных частей
... и на этом затык!

В принципе я понимаю, что:
- сообщение разбивается на две части: левую и правую
- правая часть складывается с ключом
- сумма подается на s-box (блок подстановки)
- результат складывается с левой неизмененной частью
- ключ смещается на 11 бит влево
- части меняются местами
- все предыдущие операции повторяются 32 раза
- для дешифрации используется обратный порядок ключей

Вопросы:
- как дополняются сообщение и ключ до кратной длины (64 и 256 соответственно)?
- как работает s-box, и почему в openssl он задается матрицей?
- верно ли, что библиотека openssl использует только 16 раундов шифрования?
- как приведенный мной пример будет обрабатываться дальше (желательно "до соплей")?

 Профиль  
                  
 
 Re: Шифрование гост: разъясните алгоритм
Сообщение11.04.2015, 03:01 
Заслуженный участник


02/08/11
6874
max_himik в сообщении #1002220 писал(а):
как дополняются сообщение и ключ до кратной длины (64 и 256 соответственно)?
Ну, в принципе к собственно алгоритму это отношения не имеет. Простейший (и применимый на практике) вариант - обязательное дописывание единичного бита (даже если сообщение уложилось в блоки ровно) и потом нулевыми битами до целого числа блоков по необходимости.

 Профиль  
                  
 
 Re: Шифрование гост: разъясните алгоритм
Сообщение13.04.2015, 23:01 
Заслуженный участник
Аватара пользователя


11/03/08
9496
Москва
Алгоритм у Вас изложен неверно. Так, на 11 бит сдвигается не ключ, а шифруемый блок. Левая часть с правой не складывается, а XOR-ится. Неверно описано использование ключа.

Алгоритм выглядит так:
0. Шифруемый текст разбивается на блоки по 64 бита. Если длина блока менее 64, он дополняется (нулями или случайной последовательностью, но тогда надо сообщить, где конец текста; дополнение случайными может быть полезно, чтобы одинаковые сообщения в шифрованном виде были бы различны).
Ключ имеет 256 бит (8 блоков по 32 бита), если, как в примере, он явно меньше (10 байт вместо 32), он должен быть дополнен (нулями, не очень удачное решение, или продолжая заданный ключ - localadminlocaladminlocaladminlo)
1. 64-битный блок текста разбивается на 32-битную младшую и 32-битную старшую части. Младшая часть складывается с очередной частью ключа (в первых 8 раундах используются части 1-8, потом опять 1-8, и опять 1-8, а в последних порядо обратный, 8-1). Сложение происходит по модулю $2^{32}$
2. Результат подвергается замене по таблице, для чего 32-битный результат разбивается на 8 4-битных блоков, и каждый заменяется по своей таблице замены

Код:
Номер S-блока   Значение
       0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
1   4   A   9   2   D   8   0   E   6   B   1   C   7   F   5   3
2   E   B   4   C   6   D   F   A   2   3   8   1   0   7   5   9
3   5   8   1   D   A   3   4   2   E   F   C   7   6   0   9   B
4   7   D   A   1   0   8   9   F   E   4   6   C   B   2   5   3
5   6   C   7   1   5   F   D   8   4   A   9   E   0   3   B   2
6   4   B   A   0   7   2   1   D   3   6   8   5   9   C   F   E
7   D   B   4   1   3   F   5   9   0   A   E   7   6   8   2   C
8   1   F   D   0   5   7   A   4   9   2   3   E   6   B   8   C

(Это т.н. "таблицы Центробанка", они не единственные, возможно, и не лучшие, есть и другие)
3. Полученный 32-битный блок циклически сдвигается влево на 11 битов.
4. Затем на место старших битов записываются прежние младшие, а на место младших - исключающее ИЛИ бывших старших с результатом вышеприведенных вычислений.
5. И так 32 раза.

-- 13 апр 2015, 23:02 --

Что до библиотеки - она мне не знакома, так что посмотрите сами. Замечу одно - если там лишь 16 раундов, то это не ГОСТ 28147-89, а "отрывок, взгляд и нечто" по его мотивам.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group