алгоритм шифрования гостиница

алгоритм шифрования гостиницы

реализующей алгоритм шифрования ГОСТ 28147-89». Студент группы 1541.  · Анализ алгоритмов шифрования ГОСТ 28147-89

Описание алгоритма. Термины и обозначения.
Описание стандарта шифрования Российской Федерации содержится в очень интересном документе, озаглавленном «Алгоритм криптографического преобразования ГОСТ 28147-89» [1]. То, что в его названии вместо термина «шифрование» фигурирует более общее понятие « криптографическое преобразование», вовсе не случайно. Помимо нескольких тесно связанных между собой процедур шифрования, в документе описан один построенный на общих принципах с ними алгоритм выработки имитовставки. Последняя является не чем иным, как криптографической контрольной комбинацией, то есть кодом, вырабатываемым из исходных данных с использованием секретного ключа с целью имитозащиты, или защиты данных от внесения в них несанкционированных изменений.
На различных шагах алгоритмов ГОСТа данные, которыми они оперируют, интерпретируются и используются различным образом. В некоторых случаях элементы данных обрабатываются как массивы независимых битов, в других случаях – как целое число без знака, в третьих – как имеющий структуру сложный элемент, состоящий из нескольких более простых элементов. Поэтому во избежание путаницы следует договориться об используемых обозначениях.
Элементы данных в данной статье обозначаются заглавными латинскими буквами с наклонным начертанием (например, X). Через | X| обозначается размер элемента данных X в битах. Таким образом, если интерпретировать элемент данных X как целое неотрицательное число, можно записать следующее неравенство: .
Если элемент данных состоит из нескольких элементов меньшего размера, то этот факт обозначается следующим образом: X=( X 0, X 1,…, X n –1)= X 0|| X 1||…|| X n –1. Процедура объединения нескольких элементов данных в один называется конкатенацией данных и обозначается символом «||». Естественно, для размеров элементов данных должно выполняться следующее соотношение: | X|=| X 0|+| X 1|+…+| X n -1|. При задании сложных элементов данных и операции конкатенации составляющие элементы данных перечисляются в порядке возрастания старшинства. Иными словами, если интерпретировать составной элемент и все входящие в него элементы данных как целые числа без знака, то можно записать следующее равенство:
В алгоритме элемент данных может интерпретироваться как массив отдельных битов, в этом случае биты обозначаем той же самой буквой, что и массив, но в строчном варианте, как показано на следующем примере:
X=( x 0, x 1,…, x n –1)= x 0+2
1· x 1+…+2
n–1· x n –1.
Таким образом, если вы обратили внимание, для ГОСТа принята т.н. «little-endian» нумерация разрядов, т.е. внутри многоразрядных слов данных отдельные двоичные разряды и их группы с меньшими номерами являются менее значимыми. Об этом прямо говорится в пункте 1.3 стандарта: «При сложении и циклическом сдвиге двоичных векторов старшими разрядами считаются разряды накопителей с большими номерами». Далее, пункты стандарта 1.4, 2.1.1 и другие предписывают начинать заполнение данными регистров-накопителей виртуального шифрующего устройства с младших, т.е. менее значимых разрядов. Точно такой же порядок нумерации принят в микропроцессорной архитектуре Intel x86, именно поэтому при программной реализации шифра на данной архитектуре никаких дополнительных перестановок разрядов внутри слов данных не требуется.

Анализ алгоритмов шифрования ГОСТ 28147-89  В данной работе изучен алгоритм шифрования ГОСТ 28147-89.

Если над элементами данных выполняется некоторая операция, имеющая логический смысл, то предполагается, что данная операция выполняется над соответствующими битами элементов. Иными словами A• B=( a 0• b 0, a 1• b 1,…, a n –1• b n –1), где n=| A|=| B|, а символом «•» обозначается произвольная бинарная логическая операция; как правило, имеется в виду операция исключающего или, она же – операция суммирования по модулю 2: Логика построения шифра и структура ключевой информации ГОСТа.
Если внимательно изучить оригинал ГОСТ 28147–89, можно заметить, что в нем содержится описание алгоритмов нескольких уровней. На самом верхнем находятся практические алгоритмы, предназначенные для шифрования массивов данных и выработки для них имитовставки. Все они опираются на три алгоритма низшего уровня, называемые в тексте ГОСТа циклами. Эти фундаментальные алгоритмы упоминаются в данной статье как базовые циклы, чтобы отличать их от всех прочих циклов. Они имеют следующие названия и обозначения, последние приведены в скобках и смысл их будет объяснен позже:
цикл зашифрования (32-З);
цикл расшифрования (32-Р);
цикл выработки имитовставки (16-З).
В свою очередь, каждый из базовых циклов представляет собой многократное повторение одной единственной процедуры, называемой для определенности далее в настоящей работе основным шагом криптопреобразования.
Таким образом, чтобы разобраться в ГОСТе, надо понять три следующие вещи:
что такое основной шаг криптопреобразования;
как из основных шагов складываются базовые циклы;
как из трех базовых циклов складываются все практические алгоритмы ГОСТа.
Прежде чем перейти к изучению этих вопросов, следует поговорить о ключевой информации, используемой алгоритмами ГОСТа. В соответствии с принципом Кирхгофа, которому удовлетворяют все современные известные широкой общественности шифры, именно ее секретность обеспечивает секретность зашифрованного сообщения. В ГОСТе ключевая информация состоит из двух структур данных. Помимо собственно ключа, необходимого для всех шифров, она содержит еще и таблицу замен. Ниже приведены основные характеристики ключевых структур ГОСТа.

Симметричные алгоритмы Алгоритмы шифрования делятся на два больших класса: симметричные (AES, ГОСТ, Blowfish, CAST, DES) и асимметричные (RSA, El-Gamal).

Ключ является массивом из восьми 32-битовых элементов кода, далее в настоящей работе он обозначается символом K: В ГОСТе элементы ключа используются как 32-разрядные целые числа без знака: . Таким образом, размер ключа составляет 32·8=256 бит или 32 байта.
Таблица замен является вектором, содержащим восемь узлов замены. Каждый узел замены, в свою очередь, является вектором, содержащим шестнадцать 4-битовых элементов замены, которые можно представить в виде целых чисел от 0 до 15, все элементы одного узла замены обязаны быть различными. Таким образом, таблица замен может быть представлена в виде матрицы размера 8x16 или 16x8, содержащей 4-битовые заменяющие значения. Для языков программирования, в которых двумерные массивы расположены в оперативной памяти по строкам, естественным является первый вариант (8x16), его-то мы и возьмем за основу. Тогда узлы замены будут строками таблицы замен. В настоящей статье таблица замен обозначается символом H: . Таким образом, общий объем таблицы замен равен: 8 узлов x 16 элементов/узел x 4 бита/элемент = 512 бит = 64 байта. Основной шаг криптопреобразования.
Основной шаг криптопреобразования по своей сути является оператором, определяющим преобразование 64-битового блока данных. Дополнительным параметром этого оператора является 32-битовый блок, в качестве которого используется какой-либо элемент ключа. Схема алгоритма основного шага приведена на рисунке 1.
Рисунок 1. Схема основного шага криптопреобразования алгоритма ГОСТ 28147-89.
Ниже даны пояснения к алгоритму основного шага: Шаг 0
Определяет исходные данные для основного шага криптопреобразования:
N – преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая ( N 1) и старшая ( N 2) части обрабатываются как отдельные 32-битовые целые числа без знака. Таким образом, можно записать N=( N 1, N 2).
X – 32-битовый элемент ключа; Шаг 1
Сложение с ключом. Младшая половина преобразуемого блока складывается по модулю 2
32 с используемым на шаге элементом ключа, результат передается на следующий шаг; Шаг 2
Поблочная замена. 32-битовое значение, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S=( S 0, S 1, S 2, S 3, S 4, S 5, S 6, S 7), причем S 0 содержит 4 самых младших, а S 7 – 4 самых старших бита S.
Далее значение каждого из восьми блоков заменяется новым, которое выбирается по таблице замен следующим образом: значение блока S i меняется на S i-тый по порядку элемент (нумерация с нуля) i-того узла замены (т.е. i-той строки таблицы замен, нумерация также с нуля). Другими словами, в качестве замены для значения блока выбирается элемент из таблицы замен с номером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа. Отсюда становится понятным размер таблицы замен: число строк в ней равно числу 4-битовых элементов в 32-битовом блоке данных, то есть восьми, а число столбцов равно числу различных значений 4-битового блока данных, равному как известно 2
4, шестнадцати. Шаг 3
Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается циклически на 11 бит в сторону старших разрядов и передается на следующий шаг. На схеме алгоритма символом обозначена функция циклического сдвига своего аргумента на 11 бит влево, т.е. в сторону старших разрядов. Шаг 4
Побитовое сложение: значение, полученное на шаге 3, побитно складывается по модулю 2 со старшей половиной преобразуемого блока. Шаг 5
Сдвиг по цепочке: младшая часть преобразуемого блока сдвигается на место старшей, а на ее место помещается результат выполнения предыдущего шага. Шаг 6
Полученное значение преобразуемого блока возвращается как результат выполнения алгоритма основного шага криптопреобразования. Базовые циклы криптографических преобразований.
Как отмечено в начале настоящей статьи, ГОСТ относится к классу блочных шифров, то есть единицей обработки информации в нем является блок данных. Следовательно, вполне логично ожидать, что в нем будут определены алгоритмы для криптографических преобразований, то есть для зашифрования, расшифрования и «учета» в контрольной комбинации одного блока данных. Именно эти алгоритмы и называются базовыми циклами ГОСТа, что подчеркивает их фундаментальное значение для построения этого шифра.
Базовые циклы построены из основных шагов криптографического преобразования, рассмотренного в предыдущем разделе. В процессе выполнения основного шага используется только один 32-битовый элемент ключа, в то время как ключ ГОСТа содержит восемь таких элементов. Следовательно, чтобы ключ был использован полностью, каждый из базовых циклов

Алгоритм шифрования по ГОСТ 28147-89 (pdf). Подписаться на новости. Подпишусь.

В публикации представлена реализация на С# алгоритма шифрования ГОСТ 28147-89.  Наслаждайтесь. Основной класс GOST28147.cs.


Пакет расширения Secret Disk Crypto Extension Pack позволяет использовать алгоритм шифрования ГОСТ 28147-89, предоставляемый сторонними криптопровайдерами

Выбор алгоритма шифрования у нас невелик — либо ГОСТ, либо AES.19 октября 2013


•2001 г. – ГОСТ Р 34.10-01 (ЭЦП на основе математическогоаппарата эллиптических кривых).  решаемой задачей; 2. При известном ключе шифрования PK вычисление

ГОСТ 28147-89 (Магма) — советский и российский стандарт симметричного шифрования, введённый в 1990 году, также является стандартом СНГ. Полное название — «ГОСТ 28147-89 Системы обработки информации.


Винокуров А. Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86.

Анализ алгоритмов шифрования ГОСТ 28147-89; Разработка программы реализующей алгоритм шифрования ГОСТ 28147-89


 

Меню