русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм шифрования и выработки ЭЦП по ГОСТ 28147-89


Дата добавления: 2015-08-31; просмотров: 1065; Нарушение авторских прав


Российский стандарт шифрования ГОСТ 28147-89 является более современным, чем DES и значительно более стойким, чем даже 3-DES и AES за счет применения более длинного ключа 256 бит и использования при шифровании блоков 32-х проходов (для ускорения преобразования некоторые авторы также предлагают использовать сокращенную версию на основе 64-бит ключа и 8 проходов).

Как и в случае с DES, стандартом предусмотрены четыре режима:

1. Простое шифрование – базовая версия алгоритма, когда каждый блок из 64 бит открытого текста независимо преобразуется в блок 64 бита шифртекста.

2. Гаммирование с обратной связью – режим сцепления блоков, когда очередной блок шифртекста получается путем побитного сложения по модулю 2 открытого текста и предыдущего блока, преобразованного по алгоритму простого шифрования (см. п.1). Для сложения с самым первым блоком используется зашифрованная специальная начальная комбинация, называемая имитовектором. Этим, как уже говорилось, достигается общая связанность всего шифруемого текста, усиливающая стойкость алгоритма. Данная модификация используется наиболее часто.

3. Гаммирование – также представляет собой режим сцепления блоков, только инициирующий вектор создается из самого открытого текста. Этот режим используется в основном для генерации псевдо случайных чисел (последовательностей).

4. Выработка имитовставки – фактически представляет собой режим гаммирования с обратной связью. Однако во время преобразований используется сокращенное число проходов (16 вместо 32 двух, см. ниже). В качестве результата работы в данном режиме рассматривают итог шифрования последнего блока из 64 бит, который служит криптографической хэш-функцией от открытого текста с ключом и в терминах стандарта называется имитовставкой, применяемой для контроля целостности и аутентификации открытого текста (т.е. ЭЦП).



Процесс работы алгоритма в случае простого шифрования одного блока 64 бит выглядит следующим образом:

1. Ключевая комбинация из 256 бит делится на 8 частей по 32 бита:

KEY = k0k1k2k3k4k5k6k7

Если алгоритм применяется для шифрования блока в режиме простого шифрования, гаммирования с обратной связью или просто гаммирования, данный ключ преобразуется в расширенную последовательность из n = 32 частей по 32 бита:

KEY' = =

k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k7k6k5k4k3k2k1k0

Если же применяется режим выработки имитовставки, то ключ преобразуется в расширенную последовательность меньшей длины из n = 16 частей по 32 бита:

KEY' = = k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k0

2. Очередной блок открытого текста из 64 бит разделяется на две части по 32 бита: T = AB.

3. Внутри каждой из частей A и B происходит перестановка бит в обратном порядке, т.е. 1-й бит становится 32-м, 2-й бит становится 31-м и т.д. Таким образом, в вычислительных системах с архитектурой x86 восстанавливается "естественная" последовательность бит от младших к старшим "слева-направо" (в то время как в компьютерах следование бит от младшего к старшему идет справа-налево). В результате получаются комбинации A0 и B0.

4. Происходит n преобразований (32 или 16) в соответствии с правилами:

для i = 1 ... n:

Ai = f(Ai–1 Å ) xor Bi–1;

Bi = Ai–1;

Здесь Å – сложение по модулю 232, т.е. при переполнении слова в 32 бита, соответствующий разряд просто игнорируется.

5. Последние по счету комбинации меняются местами:

A32 = A31;

B32 = f(A31 Å k0) xor B31.

А затем происходит их обратная перестановка, т.е. их 1-е биты становятся 32-ми, 2-е биты становятся 31-ми и т.д. В результате получаются комбинации Aш и Bш.

6. Блок шифртекста является комбинацией AшBш.

Как и в случае с алгоритмом DES основная нагрузка при шифровании возложена на функцию шифрования f, которая, однако, в данном случае намного более проще и, соответственно, быстрее. Суть ее работы заключается в следующем:

1. На вход функции поступает комбинация из 32-х бит. Она разделяется на 8 частей по 4 бита:

B = B1B2B3B4B5B6B7B8

2. Для каждой комбинации Bi существует специальный вектор Si, состоящий из 16-ти элементов, пронумерованных, начиная с нуля. Каждый элемент представляет собой число от 0 до 15 (т.е. в двоичном виде 4 бита). На основе этих векторов каждая комбинация Bi заменяется на комбинацию B'i, являющуюся каким-либо элементом вектора Si. Элемент выбирается по следующему правилу: номер элемента равен значению Bi.

Например, B7 = 1100. Значит комбинация B'7 будет равна 12-му элементу вектора S7.

3. В результате получается комбинация из 32-х бит:

B' = B'1B'2B'3B'4B'5B'6B'7B'8

4. Комбинация B' циклически сдвигается влево на 11 разрядов, в результате чего и появляется 32-битное значение функции шифрования.

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

 

 



<== предыдущая лекция | следующая лекция ==>
Алгоритм шифрования AES | Общая характеристика


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.794 сек.