У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


ГОСТ 28147-89.

ГОСТ 28147-89 - це стандарт, прийнятий в 1989 році в Радянському Союзі і алгоритм шифрування даних, що встановив, складових гостайну. Історія створення цього алгоритму - таємниця, покрита мороком. За свідченням причетних до його реалізацій і використання людей, алгоритм був розроблений в 70-і роки в 8-м Головному Управлінні КДБ СРСР, тоді він мав гриф Сов.Таємно. Потім гриф був знижений до Таємно, а коли в 89-му році алгоритм був проведений через Держстандарт і став офіційним державним стандартом, гриф з нього був знятий, проте алгоритм залишався ДСП. На початку 90-х років він став повністю відкритим.

ГОСТ передбачає 3 режими шифрування (проста заміна, гамування, гамування із зворотним зв'язком) і один режим вироблення імітовставки. Перший з режимів шифрування призначений для шифрування ключової інформації і не може використовуватися для шифрування інших даних, для цього передбачені два інших режиму шифрування. Режим вироблення імітовставки (криптографічній контрольній комбінації) призначений для імтозахисту шифрованих даних, тобто для їх захисту від випадкових або навмисних несанкціонованих змін.

Алгоритм побудований за тим же принципом, що і DES - це класичний блоковий шифр з секретним ключем - проте відрізняється від DES'а більшою довжиною ключа, великою кількістю раундів, і більш простій схемою побудови самих раундів. Нижче приведені його основні параметри, для зручності - порівняно з параметрами DES'а:

Параметри | ГОСТ | DES

1. Розмір блоку шифрування | 64 біта | 64 біта

1. Розмір блоку шифрування | 64 біта | 64 біта

2. Довжина ключа | 256 бітний | 56 бітний

2. Довжина ключа | 256 бітний | 56 бітний

3. Число раундів | 32 | 16

3. Число раундів | 32 | 16

4. Вузли замін (S-блоки) | не фіксовані | фіксовані

4. Вузли замін (S-блоки) | не фіксовані | фіксовані

5. Довжина ключа для одного раунду | 32 біта | 48 бітний

5. Довжина ключа для одного раунду | 32 біта | 48 бітний

6. Схема вироблення раундового ключа | проста | складна

6. Схема вироблення раундового ключа | проста | складна

7. Початкова і кінцева перестановки бітів | немає | є

7. Початкова і кінцева перестановки бітів | немає | є

Через набагато більшу довжину ключа ГОСТ набагато стійкіше DES'а до розтину "грубою силою" - шляхом повного перебору по безлічі можливих значень ключа.

Функція шифрування (*) ГОСТУ набагато простіша за функцію шифрування DES'а, вона не містить операцій бітових перестановок, якими рясніє DES і які украй неефективно реалізуються на сучасних універсальних процесорах (хоча дуже просто апаратний - шляхом розводки провідників в кристалі або на платі). Через сказаний, при удвічі більшій кількості раундів (32 проти 16) програмна реалізація ГОСТУ на процесорах Intel x86 більш ніж в 2 рази перевершує по швидкодії реалізацію DES'а. Природно, порівнювалися близькі до оптимуму по швидкодії реалізації [1].

З інших відмінностей ГОСТУ від DES'а треба відзначити наступне:

1. На кожному раунді шифрування використовується "раундовий ключ", в DES'е він 48-бітовий і виробляється по відносно складному алгоритму, що включає бітові перестановки і заміни по таблиці, в Гості він береться як фрагмент ключа шифрування. Довжина ключа шифрування в Гості рівна 256 бітам, довжина раундового ключа - 32 бітам, разом отримуємо, що ключ шифрування Госту містить 256/32=8 раундових ключів. У Гості 32 раунди, отже, кожен раундовий ключ використовується 4 рази, порядок використання раундових ключів встановлений в Гості і різний для різних режимів.

2. Таблиця замін в Гості - аналог S-блоків DES'а - є таблицею (матрицю) розміром 8x16, що містить число від 0 до 15. У кожному рядку кожне з 16-ти чисел повинне зустрітися рівно 1 раз. На відміну від DES'а, таблиця замін в Гості одна і та ж для всіх раундів і не зафіксована в стандарті, а є змінюваним секретним ключовим елементом. Від якості цієї таблиці залежить якість шифру. При "сильній" таблиці замін стійкість шифру не опускається нижче за деяку допустиму межу навіть у разі її розголошування. І навпаки, використання "слабкої" таблиці може зменшити стійкість шифру до неприпустимо низької межі. Ніякої інформації за якістю таблиці замін у відкритому друці Росії не публікувалася, проте існування "слабких" таблиць не викликає сумніву - прикладом може служити "тривіальна" таблиця замін, по якій кожне значення замінюється на нього самого. Це робить непотрібним для компетентних органів Росії обмежувати довжину ключа - можна просто поставити недостаточно "сильну" таблицю замін.

3. У ГОСТІ, на відміну від DES'а, немає початкової і кінцевої бітових перестановок шифрованого блоку, які, на думку ряду фахівців, не впливають істотно на стійкість шифру, хоча впливають (у бік зменшення) на ефективність його реалізації.  

Ісходні коди на мові програмування СІ:

GOST

typedef unsigned long u4; typedef unsigned char byte;

typedef struct {

u4 k[8];

/* Constant s-boxes -- set up in gost_init(). */

char k87[256],k65[256],k43[256],k21[256]; } gost_ctx;

/* Note: encrypt and decrypt expect full blocks--padding blocks is
caller's responsibility. All bulk encryption is done in
ECB mode by these calls. Other modes may be added easily
enough. */

void gost_enc(gost_ctx *, u4 *, int);

void gost_dec(gost_ctx *, u4 *, int);

void gost_key(gost_ctx *, u4 *);

void gost_init(gost_ctx *);

void gost_destroy(gost_ctx *);

#ifdef __alpha /* Any other 64-bit machines? */

typedef unsigned int word32;

#else

typedef unsigned long word32;

#endif

kboxinit(gost_ctx *c) {

int i;

byte k8[16] = {14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6,

12, 5, 9, 0, 7 };

byte k7[16] = {15, 1, 8,


Сторінки: 1 2