2014 dxdy logo

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

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




 
 Шифрование гост: разъясните алгоритм
Сообщение10.04.2015, 09:56 
Пытаюсь понять алгоритм шифрования ГОСТ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 
max_himik в сообщении #1002220 писал(а):
как дополняются сообщение и ключ до кратной длины (64 и 256 соответственно)?
Ну, в принципе к собственно алгоритму это отношения не имеет. Простейший (и применимый на практике) вариант - обязательное дописывание единичного бита (даже если сообщение уложилось в блоки ровно) и потом нулевыми битами до целого числа блоков по необходимости.

 
 
 
 Re: Шифрование гост: разъясните алгоритм
Сообщение13.04.2015, 23:01 
Аватара пользователя
Алгоритм у Вас изложен неверно. Так, на 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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group