Изобретение относится, к криптографии, в частности к способам поточного шифрования, в которых используется составной ключ.
В описании использованы следующие термины.
ASCII - (англ. American standard code for information interchange) - название таблицы (кодировки, набора), в которой некоторым распространённым печатным и непечатным символам сопоставлены числовые коды.
Алгоритмы шифрования делятся на две группы: алгоритмы симметричного шифрования и алгоритмы ассиметричного шифрования. В алгоритмах симметричного шифрования, которые также делятся на две большие группы: поточные и блочные, отправитель информации и получатель информации имеют одинаковые ключи, а в алгоритмах ассиметричного шифрования отправитель информации и получатель информации имеют по два ключа каждый - открытый и закрытый.
В настоящее время для шифрования открытого текста широкое применение нашли алгоритмы поточного шифрования, которые в отличие от блочного шифрования выполняют преобразование информации, поступающей от источника сообщений как по одному биту, так по 1 байту (8 бит). Таким образом, алгоритм поточного шифрования может преобразовывать поступающую информацию в момент её получения.
Недостатком поточного шифрования, как было отмечено ранее, является необходимость получения нового ключа (гаммы) для шифрования, поступающей информации.
Известен алгоритм шифрования RC-4 и алгоритм шифрования, использующий матричные преобразования [RU 2783406].
RC-4 - класс алгоритмов, определяемых размером его блока или слова - параметром n. В том случае, когда n = 8 бит или 1 байт, то тогда внутреннее состояние RC-4(S-бокс) состоит из массива размером 28 слов, то есть внутреннее состояние включает 256 элементов (0,1,2,…255).
В патенте RU 2783406 рассматривается побитовое поточное шифрование с использованием матричных преобразований, а в патенте RU 2811065 "Способ побайтовой передачи информации с помощью поточного шифрования" рассматривается побайтовое шифрование с использованием матричных вычислений.
С одной стороны применение n=8 даёт возможность использовать таблицу символов, например ASCII (American Standard Code for Information Interchange), в которой символы - буквы алфавита, цифры, арифметические операции, и другие знаки также представлены в виде 8 битовых значений, например символ A - 01000001, символ B - 01000010, символ C - 01000011 и так далее.
А с другой стороны, с помощью подхода, основанного на матричных преобразованиях [Дедов О.П. Применение матричного подхода к поточному шифрованию. Электронный научный журнал «E-Scio.ru», 2021.-5с, далее - Источник 1, С.А.Белецкий, О.П.Дедов, С.И.Журавлёв. Построение многослойной и бесконечной гаммы для поточного шифрования. Промышленные АСУ и Контроллеры. DOI: 10.25791/ asu.10.2022.1392 стр. 39-43 - далее Источник 2] возможно сформировать результирующую матрицу, элементы которой являются гаммой (ключом), также состоящую из 256 чисел, записанных в виде 8 битовых значений символ 0 - 00000000, 1 - 00000001, 2 - 00000010 и т.д., и суммируя символы открытого текста и вычисленные с помощью матричных преобразований элементы результирующей матрицы (гаммы) по модулю два, производить побайтовое шифрование открытого текста.
Наиболее близким аналогом к заявляемому изобретению является способ шифрование, известный из патента RU 2811065. В известном способе создают матрицу состояния SQ0, записывая числа по порядку от 0 до 255. Выбирают вариант построения вспомогательной матрицы-ключа KQ0. Производят вычисление вспомогательной матрицы-ключа KQ. Производят вычисление результирующей матрицы состояний SQL по формуле:
SQL= SQ0 ⊕KQ0 mod 256. (1)
Переводят числовые значения элементов матрицы SQL в двоичную систему счисления, соответствующую таблице символов ASCII. Символы открытого текста записывают с помощью таблицы символов ASCII, получая значение символа Xi, соответствующее символу открытого текста, записанное в двоичной системе счисления. Суммируют по модулю два один байт соответствующего символа ASCII Xi и один байт элемента матрицы SQL, получают зашифрованное сообщение Yi. Передают зашифрованное сообщение Yi получателю информации.
Предварительная матрица ключ KQ0 вычисляется как произведение матрицы столбца L на матрицу строку M, причём каждая матрица состоит из 16 чисел, выбранных случайным образом из диапазона от 1 до 255 [2]. А для вычисления результирующей матрицы SQL (элементы которой используются для шифрования) надо суммировать матрицу состояния SQ0 и матрицу KQ0. Можно было бы использовать вместо матрицы KQ обратную матрицу KQ-1, но она может и не существовать, то есть в этом случае на стороне отправителя информации необходимо произвести предварительное вычисление обратной матрицы и в таблицу № 1 надо добавить дополнительный столбец выбора матрицы KQ или обратной матрицы KQ-1. В случае выбора матрицы KQ-1 увеличится время шифрования и расшифрования.
Техническим результатом изобретения является создание способа поточного шифрования с использованием «составного» ключа.
Техническим результатом изобретения также является упрощение процесса шифрования и расшифрования текста, сокращение временных и вычислительных затрат.
В заявляемом способе предлагается вычислять «составной» ключ как на стороне отправителя, так и получателя информации по одинаковому алгоритму путем матричных преобразований на основе передаваемых коэффициентов µ (элементов матрицы состояния SQ0, состоящей из 256 элементов от 0 до 255, а коэффициент μ выбирается как из чисел входящих в состав матрицы столбца L и матрицы строки M (всего 32 числа), также может выбираться из диапазона 1< μ≤ 255).
В отличие от обычного ключа, вычисляемого с использованием элементов одной матрицы SQL (результирующей или основной), «составной» ключ вычисляется с использованием элементов нескольких матриц SQL, например, однослойной, двухслойной, трёхслойной [2]. Длина ключей обычного и составного одинакова, т.е. вместо передачи ключа необходимо произвести обмен коэффициентами (16 чисел матрицы столбца и 16 чисел матрицы строки выбранных на стороне отправителя с помощью ДСЧ (датчика случайных чисел), выбрать коэффициент μ или несколько таких коэффициентов), а на их основе c помощью матричных преобразований вычислять ключи, то есть матрицы SQL1, SQL2, SQL3…
Сущность заявляемого изобретения заключается в том, что в способе поточного шифрования, в котором:
- создают матрицу состояния SQ0, записывая числа по порядку от 0 до 255;
- выбирают вариант построения вспомогательной матрицы-ключа KQ0;
- производят вычисление вспомогательной матрицы-ключа KQ0;
- производят вычисление результирующей матрицы ключа SQL;
- переводят числовые значения элементов результирующей матрицы ключа в двоичную систему счисления, соответствующую таблице символов ASCII;
- символы открытого текста записывают с помощью таблицы символов ASCII, получая значение символа Xi, соответствующее символу открытого текста, записанное в двоичной системе счисления;
- суммируют по модулю два один байт символов ASCII результирующей матрицы ключа и один байт символов Xi, получая зашифрованное сообщение Yi;
- передают зашифрованное сообщение Yi:
- используют несколько результирующих матриц ключа SQLi, где i=1, 2, 3…;
- выбирают случайным образом коэффициенты шифрования для формирования матрицы KQ0: 16 чисел для матрицы столбца (L) и 16 чисел для матрицы строки (M) из диапазона от 1 до 255;
- вычисляют предварительную матрицу-ключ по формуле:
KQ0=L*M mod 256, где L и M - матрица-столбец и матрица-строка;
- выбирают количество матриц SQLi, которые будут использованы для шифрования, и элементы для шифрования из матриц SQLi, а также элемент, с которого начнётся шифрование и шаг шифрования,
- производят вычисление многослойной матрицы по формуле:
SQLi=SQLi-1 ⊕ KQi-1 mod 256,
где i = 1,2,3… ,
SQL1=SQL0 ⊕ KQ0 mod 256,
где SQL0=SQ, KQ0= L*M mod 256
- для вычисления матриц SQLi вычисляют несколько предварительных матриц-ключей по формуле:
KQi=μi*KQi-1 mod 256, где μi - константы, которые могут быть выбраны либо из элементов матриц L и M (32 числа), либо из диапазона от 1…..255.
- передают коэффициенты шифрования получателю информации.
Сущность поясняется следующим образом
В заявляемом способе создают матрицу состояния SQ0, записывая числа по порядку от 0 до 255; выбирают вариант построения вспомогательной матрицы-ключа KQ0; производят вычисление вспомогательной матрицы-ключа KQ0; производят вычисление нескольких результирующих матриц состояний SQL, например, SQL1, SQL2, SQL3, из которых выбирают числа для шифрования, начиная с элемента Ki c шагом Hi. Переводят числовые значения элементов матриц SQLi в двоичную систему счисления, соответствующую таблице символов ASCII. Символы открытого текста записывают с помощью таблицы символов ASCII, получая значение символа Xi, соответствующее символу открытого текста, записанное в двоичной системе счисления. Суммируют по модулю два один байт символов ASCII матрицы SQL и один байт символов Xi, получая зашифрованное сообщение Yi.
Выбирают коэффициенты для формирования матрицы KQ0 случайным образом с помощью датчика случайных чисел: выбираются 16 чисел для матрицы столбца и 16 чисел для матрицы строки из диапазона от 1 до 255, вычисляется матрица KQ0, а также определяется количество матриц SQLi (например, три), которые будут использованы для шифрования открытого текста, и номера элементов для шифрования из матриц SQLi (для i=3 каждая матрица SQL1, SQL2, SQL3 состоит из 256 элементов (чисел), то есть из этих чисел надо выбрать конкретные числа для шифрования).
Вычисляют предварительную (вспомогательную) матрицу-ключ по формуле:
KQ0= L*M mod 256, (2)
где L и M - матрица-столбец и матрица-строка, состоящие из 16 элементов, соответственно.
Производят вычисление результирующей матрицы по рекуррентной формуле:
SQLi=SQLi-1 ⊕ KQi-1 mod 256. (3)
SQL0 = SQ0 (4)
В дальнейшем возможно вычислять KQi=μi*KQi-1 mod 256, где μi - константа, выбираемая из чисел, либо входящих в матрицы L, M, либо из диапазона 1,2,…255.
Выбирают порядок использования матриц SQLi, а также выбирают начальный элемент Кi, с которого осуществляется выборка чисел для шифрования из матрицы SQLi, и выбирают шаг Hi выбора элементов матриц SQLi.
Передают зашифрованное сообщение Yi и коэффициенты получателю информации.
Заявляемое изобретение поясняется фигурами 1-2, на которых показано:
- фиг. 1 - схема алгоритма поточного шифрования;
- фиг. 2 - блок-схема предлагаемого алгоритма поточного шифрования.
На фиг. 1 показаны: Xi - i-ый байт открытого текста и sqlij - элемент матриц SQLi (SQL1, SQL2, SQL3), записанный в виде одного байта, находящийся в ячейке - Ki, где i=1,2,3..255.
Матрицы SQ0, КQ0 и SQL (матрица состояния SQ, матрица ключа КQ (предварительный ключ) и результирующая матрица SQL, элементы которой, переведённые в двоичную систему счисления, будут выступать в роли гаммы (ключа) причём в работе [Источник 1,2] было показано, что при n=4 параметр N, определяющий размер квадратных матриц SQ0, КQ0 и SQL вычисляется по формуле
N=24/2=22=4, (5)
то есть матрицы SQ0, КQ0 и SQL при n=4 являются квадратными матрицами размера 4x4, а при n = 8, N будет равно 16, а это значит, что матрицы SQ0, КQ0 и SQL будут квадратными матрицами размера 16х16, и каждая из них содержит по 256 элементов (чисел). Каждый элемент матрицы SQL (sqlij) может быть представлен как последовательность 8 нулей и единиц, то есть одним байтом.
Таким образом, каждый символ открытого текста Xi c помощью таблицы символов ASCII, записанный в виде последовательности 8 битов, то есть одним байтом, может быть сложен по модулю два с элементами матрицы SQL(sqlij), каждый из которых также записан виде 8 битовой последовательности (одним байтом), а в результате данного сложения получается Yi - зашифрованное значение Xi, которое поступает на вход получателя информации и расшифровывается в обратном порядке, то есть сложением по модулю два с элементами результирующей матрицы SQL(sqlij) или с элементами нескольких результирующих матриц в случае составного ключа, вычисленным по аналогичному алгоритму.
Рассмотрим матричные преобразования как показано в [Источнике 1,2] для вычисления результирующих матриц SQL1, SQL2 и SQL3 размерности 4*4. На первом этапе есть матрица состояния S (в алгоритме RC-4) и матрица SQ0 в предлагаемом алгоритме шифрования (n=4 и 24=16), которая включает 16 элементов: числа - 0,1,2,…15, расставленные по порядку. На втором этапе вычисляется матрица KQ0 (предварительный ключ) - аналог матрицы ключа К в алгоритме шифрования RC-4 (различными способами [Источник 2]). На третьем этапе вычисляется результирующая матрица SQL (основной ключ) как сумма матриц SQ0 и КQ0. Все матрицы SQ0, КQ0 и SQL в [Источнике 1,2] имеют одинаковый размер - 4×4 и вычисления будут производиться по модулю 16, а для n=8 данные матрицы будут иметь размер 16×16, то есть будут состоять из 256 элементов, и все вычисления будут проводиться по модулю 256.
Матричный подход позволяет вычислять предварительную (вспомогательную) матрицу-ключ KQ различными способами [Источник 2], например, как произведение матрицы-столбца размера 4×1, на матрицу строку размера 1×4 по модулю 24, выбранными из матрицы состояния SQ0 , или как произведение матрицы столбца на матрицу строки, числа которых могут выбираться с помощью датчика случайных чисел ДСЧ (среди чисел, находящихся в диапазоне от 1 до 2n-1) (обе матрицы получены из матрицы состояний S (RC-4) или SQ0 [Источники 1, 2]).
В [Источниках 1, 2] рассмотрено вычисление матриц SQ0, KQ0, SQL для n=4.
При n=4 матрица состояний SQ, состоит из 24 элементов и имеет вид:
Вычислим матрицу ключа KQ одним из способов, рассмотренных в [Источнике 1,2], например, как произведение матрицы-столбца L(4,1), состоящего из элементов (2, 3, 5, 7) на матрицу-строку M(1,4), состоящую из элементов (6, 5, 8, 9) то есть:
KQ0=L(4,1)×M(1,4)mod 16 (предположим, что данные элементы выбраны с помощью датчика случайных чисел (ДСЧ)).
Тогда матрица SQL1=SQ0⊕KQ0,
Так как KQi=μi*KQi-1 mod 16, то KQ1=μ1*KQ0 mod 16 , где μ1=6 ( 6 - первый элемент матрицы-строки М), а μ2=5(5 - второй элемент матрицы-строки М) и тогда
Результирующие матрицы SQL2 и SQL3 будут иметь вид
Таким образом, в результате всех этих вычислений получается набор матриц. Матричный аппарат позволяет из выбранного набора матриц определять матрицу или последовательность матриц и элемент в данной матрице (матрицах), с которого начнётся шифрование, а также шаг шифрования.
Например, пусть отправитель информации хочет зашифровать открытый текст, состоящий из 120 символов. При применении одной матрицы, например SQL он устанавливает номер элемента, с которого начинается шифрование и шаг шифрования, а если отправитель хочет использовать несколько матриц, то он может установить сколько матриц он предполагает использовать для шифрования - одну, две или три (однослойную, двухслойную и трёхслойную) или больше. При шифровании с использованием трёх матриц, в каждой матрице надо будет использовать для шифрования по 40 элементов матриц SQL1, SQL2, и SQL3, причём отправитель может установить порядок использования матриц, например, SQL3, SQL1, SQL2, а также установить, с какого элемента Кi надо начать шифрование и с каким шагом Hi выбирать элементы матриц для шифрования.
В том случае, если установлен порядок использования матриц, SQL3, SQL1, SQL2, указаны K10 и H=5, то при шифровании вначале будут выбираться 40 элементов матрицы SQL3 (10,15,20, 25….199), затем 40 элементов матрицы SQL1 и потом 40 элементов матрицы SQL2.
Каждый элемент данной матрицы sqlij, записанный в двоичном виде с помощью 8 бит, поступает на первый вход сумматора по модулю два (фиг. 1), где складывается с символом открытого текста Xi, который также записан в виде 8 бит (при применении ASCII), и на выходе сумматора получается зашифрованный символ Yi, а дешифрование производится в обратном порядке на стороне получателя информации.
Таким образом, каждый символ открытого текста может быть зашифрован и передан получателю информации.
Способ осуществляют следующим образом
На этапе «рукопожатие» («Handshakes») фиг. 2 между отправителем и получателем информации происходит обмен коэффициентами, в качестве которых могут применяться числа, вырабатываемые с помощью ДСЧ (16 чисел для матрицы столбца L и 16 чисел для матрицы строки M), при умножении которых по модулю 256 получается матрица KQ, а также указывается количество элементов, используемых при шифровании (40), если принято решение использовать при шифровании открытого текста, состоящего из 120 символов - по 40 символов матриц SQL1, SQL2, SQL3 а также необходимо указать номер элемента Ki, с которого начинается отчёт шифрования и шаг шифрования Hi. Кроме этого необходимо указать количество коэффициентов μi, которое необходимо для вычисления матриц KQi. По умолчанию вначале выбираются числа из матрицы-строки, а потом из матрицы-столбца. Все эти коэффициенты могут быть сведены в таблицу №1.
Таблица № 1
(16 чисел)
На фиг. 2 представлена блок-схема алгоритма вычисления «составного» ключа для поточного шифрования, где:
- блок № 1- блок инициализации матрицы SQ;
- блок № 2 - программа вычисления матрицы ключа KQ (предварительного);
- блок № 3 - вычисление результирующих матриц состояний SQL1, SQL2, SQL3 и выбор элемента для шифрования;
- блок № 4 - счётчик элементов результирующих матриц состояний SQL, а также учет элемента с которого начнётся шифрование K и шага шифрования H;
- блок № 5 - перевод элементов матриц из десятичной системы счисления в двоичную систему счисления;
- блок № 6 - открытый текст;
- блок №7 - блок перевода открытого теста в символы ASCII.
Цикл работы состоит из нескольких этапов. На первом этапе производится инициализация матрицы SQ (блок №1), то есть запись чисел в данную матрицу по порядку от 0 до 255 (при n=8) и вычисление матрицы KQ на основе коэффициентов из таблицы № 1.
На втором этапе по формуле (3) с учётом вычисленных значений матрицы KQi и значений матрицы SQ вычисляются матрицы SQL1, SQL2, SQL3 и в соответствии с порядком применения данных матриц (установленном в таблице №1) выбираются элементы для шифрования, при этом учитывается элемент, с которого начинается отчёт Ki и шаг шифрования Hi.
На третьем этапе происходит перевод числовых значений элементов матриц SQLi в двоичную систему счисления, соответствующую таблице символов ASCII.
На четвёртом этапе символы открытого текста записываются с помощью таблицы символов ASCII (блок №6 и блок №7) и на выходе блока № 7 получают значение символа Xi, соответствующее символу открытого текста, но записанное в двоичной системе счисления.
На пятом этапе после суммирования по модулю два 8 бит символов, поступивших из блока № 5, и 8 бит символов, поступивших из блока № 7, получают зашифрованное сообщение Yi.
Получатель информации, получив таблицу № 1, и вычислив матрицы SQL1, SQL2, SQL3, расшифровывает текст.
В данном методе производятся матричные операции, не требующие больших вычислительных и, как следствие, временных затрат, - матрицы не возводятся в степень и нет вычисления обратных матриц (которые могут и не существовать), что значительно упрощает применение данного метода в реальной практике.
Изобретение относится к области криптографии. Технический результат заключается в обеспечении возможности поточного шифрования с использованием составного ключа. В способе поточного шифрования создают матрицу состояния, записывая числа по порядку от 0 до 255, выбирают вариант построения вспомогательной матрицы-ключа, производят вычисление вспомогательной матрицы-ключа, производят вычисление результирующей матрицы ключа, переводят числовые значения элементов результирующей матрицы ключа в двоичную систему счисления, соответствующую таблице символов ASCII, символы открытого текста записывают с помощью таблицы символов ASCII, получая значение символа Xi, соответствующее символу открытого текста, записанное в двоичной системе счисления, суммируют по модулю два один байт символов ASCII результирующей матрицы ключа и один байт символов Xi, получая зашифрованное сообщение Yi, передают зашифрованное сообщение Yi, используют несколько результирующих матриц ключа, выбирают случайным образом коэффициенты шифрования для формирования матрицы, вычисляют предварительную матрицу-ключ, выбирают количество матриц, которые будут использованы для шифрования, и элементы для шифрования, а также элемент, с которого начнётся шифрование и шаг шифрования. Производят вычисление многослойной матрицы. Передают коэффициенты шифрования получателю информации. 1 з.п. ф-лы, 2 ил., 1 табл.
1. Способ поточного шифрования, в котором:
- создают матрицу состояния SQ, записывая числа по порядку от 0 до 255;
- выбирают вариант построения вспомогательной матрицы-ключа KQ;
- производят вычисление вспомогательной матрицы-ключа KQ;
- производят вычисление результирующей матрицы-ключа SQL;
- переводят числовые значения элементов матрицы ключа в двоичную систему счисления, соответствующую таблице символов ASCII;
- символы открытого текста записывают с помощью таблицы символов ASCII, получая значение символа Xi, соответствующее символу открытого текста, записанное в двоичной системе счисления;
- суммируют по модулю два один байт символов ASCII результирующей матрицы ключа и один байт символов Xi, получая зашифрованное сообщение Yi;
- передают зашифрованное сообщение Yi,
отличающийся тем, что
- используют несколько результирующих матриц ключа SQLi, где i=1, 2, 3…;
- выбирают случайным образом коэффициенты шифрования для формирования матрицы KQ0: 16 чисел для матрицы столбца (L) и 16 чисел для матрицы строки (M) из диапазона от 1 до 255;
- вычисляют предварительную матрицу-ключ по формуле:
KQ0=L*M mod 256, где L и M – матрица-столбец и матрица-строка;
- выбирают количество матриц SQLi, которые будут использованы для шифрования, и элементы для шифрования из матриц SQLi, а также элемент, с которого начнётся шифрование и шаг шифрования,
- производят вычисление многослойной матрицы по формуле:
SQLi = SQLi-1 ⊕ KQi-1 mod 256,
где i = 1, 2, 3…,
SQL1 = SQL0 ⊕ KQ0 mod 256,
где SQL0 = SQ, KQ0= L*M mod 256;
- для вычисления матриц SQLi вычисляют несколько предварительных матриц-ключей по формуле:
KQi = μi*KQi-1 mod 256, где μi – константы, которые могут быть выбраны либо из элементов матриц L и M (32 числа), либо из диапазона от 1…..255;
- передают коэффициенты шифрования получателю информации.
2. Способ по п.1, отличающийся тем, что выбирают порядок использования матриц SQLi.
СПОСОБ ПОБАЙТНОЙ ПЕРЕДАЧИ ИНФОРМАЦИИ С ПОМОЩЬЮ ПОТОЧНОГО ШИФРОВАНИЯ | 2023 |
|
RU2811065C1 |
Способ генерации гаммы, используемый при поточном шифровании | 2021 |
|
RU2783406C1 |
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ С ОДНОВРЕМЕННОЙ ВЫРАБОТКОЙ ПРОИЗВОДНОГО КЛЮЧА ШИФРОВАНИЯ | 2021 |
|
RU2775253C1 |
Электромагнитный прерыватель | 1924 |
|
SU2023A1 |
CN 101296358 A, 29.10.2008. |
Авторы
Даты
2024-12-16—Публикация
2024-04-25—Подача