Информатика
f— МОЛОДОЙ— ,
_
Iу ч ё н ы й !
7
Механизм коррекции результатов дешифровки квантово
устойчивого шифра на основе нейроcети
Чайко Владимир Иванович, студент
Кузбасский гуманитарно-педагогический институт Кемеровского государственного
университета (г. Новокузнецк)
В данной с т а т ь е а в т о р р а ск р ы в ает слож ности реализации к в а н т о в о
устойчивого шифра на основе нейронной сети при реализации на ЭВМ и пока
зы вает, как их можно у ст р ан и ть.
Ключевые слова: квантово-устойчивый шифр, нейронная сеть, т и п дан
ных, сложность вычисления.
О
дним из вариантов квантово-устойчивого шифрования является шифр, ос
нованный на применении нейронной сети. Данный шифр является теоре
тически не взламываемым, как и шифр Вернама, [1] и не требует обмена клю
чами между двумя сторонами.
На практике реализация данного шифра на ЭВМ сталкивается с рядом огра
ничений, обусловленных ограничениями нейронов и самой архитектурой ЭВМ.
Использование в алгоритме шифрования математических нейронов оказывает
ограничения на формат представления шифруемых данных. Формат и диапа
зон допустимых значений зависит от того, какую активационную функцию
используют для реализации математических нейронов. [2] Основные функ
ции активации, и ограничения, накладываемые ими, представлены в таблице 1.
Таблица 1. Функции активации и ограничения, накладываемые ими
Ф ункция акти
вации
С и гм ои да
Тангенс
А рктангенс
О бласть
Формула
О пределения
1
У
-да <
= ,1 + е - X
X
y=
y=
ta n X
t a n -1 X
Гиперболиче
ский арксинус
y = arsh X
Гиперболиче
ский арккосинус
y = arsh X
x
еR\
-да <
X
< +да, R
0
<
X
+ nk : k е Z j
X
< +да, R
-да < X < +да, R
1< X
Значения
< +да, R
<
1, е
R
yеR
П
П
-----< y < —
2
2
-да < y < +да, R
1<
y < +да, R
8
,— м о л о д о й — ,
[у ч ё н ы й ]
Исследования молодых ученых
Типы данных «float» и «double» регулируется международным стандартом
IEEE 754, согласно которому, под данный тип данных, ЭВМ должна отводить
32 и 64 бита памяти соответственно. Это позволяет хранить дробные числа
с 6 и 15 знаками после запятой. [3] Если, в результате вычислений, получилась
дробь с большим количеством разрядов, или же бесконечная дробь, ЭВМ «о т
брасывает» все знаки, находящиеся после 6 или 15 разряда. [4] Многие функ
ции активации нейронов и тригонометрические функции могут иметь зна
чения, гораздо превышающие 15 разрядов после запятой. Поэтому зачастую
реализация подобных функций на ЭВМ выдает результат с некоторой отрица
тельной погрешностью. [5]
При реализации каких-либо вычислений с числами типа «float» и «double»
на ЭВМ точность вычислений снижена по причине сложности их реализации.
Сложность заключается в том, что человек использует десятичную систему
счисления, а компьютер двоичную. Дробь в десятичной системе счисления не
возможно перевести в двоичную. Вместо этого, в память ЭВМ, записывается
максимально приближенное к дроби двоичное число. Размер погрешности
приближенного числа разнится и зависит от ОС. Такой тип данных нельзя ис
пользовать для сравнения на предмет равенства. [4]
Тригонометрические функции, при вычислении на ЭВМ, так-же считаются
с погрешностями. Это вызвано тем, что ЭВМ использует упрощенные методы
их вычислений, например Ряды Тейлора. Это приводит к тому, что результат
отличается от истинного (имеет погрешность). [6]
В построении нейронных сетей наличие данных погрешностей несуще
ственно, а в реализации шифрования критично. «О тбрасы вание» знаков по
сле запятой приводит к потере данных, а погрешность в расчетах не позволяет
точно декодировать шифр. Примеры этого представлены в таблице 2.
Таблица 2. Примеры искажения передаваемых данных
О тправлено
П олучено
Д
0,657
0.67444031601614
-0.00055968398385586
-0.082916145756424
0,1
0.099998176456816
-0,00000182354
-0.0018235431837044
0,25
0.2499715139834
-0,00002848601
-0.011394406638487
0,892
0.89071040554366
-0.0012895944563356
-0.14457336954435
Д%
Связи с этим, при реализации шифрования данных предлагаемой системой
шифрования, программист должен осуществить коррекцию данных после де
f— МОЛОДОЙ— ,
[у ч ё н ы й !
Информатика
_
9
шифровки. Наиболее простым способом коррекции данных является исполь
зование псевдоодносторонней функции деления с остатком (1). [7]
(1)
a mod b = q (ocm.r)
Особенность данной псевдоодносторонней функции заключается в том,
что, зная делимое и делитель (а и b), всегда можно найти неполное частное (q)
и остаток от деления (r). Однако, зная остаток от деления (r) и делитель (b),
невозможно сказать, каким было делимое (а), т. к. их бесконечное множество.
Пример подбора делимых представлен в таблице 3.
Таблица 3. Пример подбора делимых
Д елитель
О статок
Делимое
Расчет
2
0
2
2 m od 2 = 1 (ocm. 0)
2
0
4
4 m od 2 = 2 (ocm. 0)
2
0
6
6 m od 2 = 3 (ocm. 0)
2
0
8
8 m od 2 = 4 (ocm. 0)
2
0
10
10 m od 2 = 5 (ocm. 0)
2
0
12
12 m od 2 = 6 (ocm. 0)
2
0
14
14 m od 2 = 7 (ocm. 0)
Таким образом, передача неполного частного и остатка от деления пере
хватчику не даст вычислить делимое.
Условимся, что передаваемое сообщение (s) — это частное, а остаток от де
ления (r) должен быть равен 0. Тогда мы можем вычислить для сообщения де
литель (d), который можно передать вместе с сообщением. (2)
s mod d = q (ocm.0)
(2)
Данный делитель можно будет использовать для коррекции числа следу
ющим образом: в расшифрованное сообщение (число) нужно прибавлять 1
в младший разряд до тех пор, пока не получится число, которое без остатка
разделится на делитель. (3)
s mod d = n,n e N
(3)
Первое число, которое разделится без остатка на делитель и будет коррект
ным сообщением.
Найти такой делитель очень просто: достаточно разделить сообщение (s )
на целое случайное число. (4)
. _
10
,— м о л о д о й — ,
[у ч ё н ы й ]
Исследования молодых ученых
, 5
d = —,n e N
n
(4)
Передав такой делитель вместе с зашифрованным сообщением, получатель
сможет расшифровать данное сообщение и откорректировать. При этом пере
дача делителя угрозы не несет.
Шифр на основе нейронной сети с коррекцией результата расшифровки
представлен на листинге 1.
Листинг 1. Шифр на основе нейронной сети с коррекцией результата.
< ?p h p
fu n c tio n n e ir o ($ x ) {
$ y = a s in h ($ x );
r e tu r n $y;
}
fu n c tio n a n ti_ n e ir o ($ y )
$ x = a c o sh ($ y );
r e tu r n $y;
}
fu n c tio n p r o v _ f($ x ) {
re tu rn $ x /ra n d (1 ,
{
1 0 );
}
f u n c t i o n c o r r e c t _ f ( $ x , $ p ro v ) {
$ s t r = e x p lo d e ( " ." , s t r v a l ( $ x ) ) ;
$ c o r r e c t m in = " 0 ." ;
f o r ( $ i = 0 ; $ i < ( s t r l e n ( $ s t r [ 1 ] ) - 1 ) ; $ i+ + )
$ c o r r e c t m in = $ c o r r e c t m i n . " 0 " ;
$ c o r r e c t _ m in = flo a tv a l($ c o r r e c t_ m in ." 1 " );
f o r ( $ i = 0 ; $ i < 1 ; $ i+ + ) {
$ i— ;
$ u = flo a tv a l($ x )/flo a tv a l($ p r o v );
$ u = flo a tv a l(r o u n d ($ u )- $ u );
i f ($u = = 0) {
$u=1;
$ i= 2 ;
}
e ls e {
{
f— м о л о д о й — ,
[у ч ё н ы й !
Информатика
. .
11
$ x = flo a tv a l($ x )+ flo a tv a l($ c o r r e c t_ m in );
}
}
re tu rn $x;
}
$ k e y 1 = 0 .1 0 ; //П ер вы й ключ Алисы
$ k e y 2 = 0 .2 0 ; //В т о р о й ключ Алисы
$ k e y 1 1 = 0 .3 0 ; //П ер вы й ключ Боба
$ k e y 2 2 = 0 .4 0 ; //В т о р о й ключ Боба
$ p e r e d = 0 .1 2 3 4 5 6 7 8 9 ; //П е р е д а в а е м о е сообщ ение
$ p ro v = p ro v _ f($ p e re d );
ech o $ p e r e d . " / / Сообщение " . $ p r o v . " Число
п р о в е р к и \п " ;
$ e ta p 1 = n e iro (n e iro ($ p e re d *$ k e y 1 )*$ k e y 1 1 ); / /
Шифрование Алисы
ech o $ e t a p 1 . " / / Сообщение заш и ф рованн ое Алисой \ n " ;
$ e ta p 2 = n e iro (n e iro ($ e ta p 1 *$ k e y 2 )*$ k e y 2 2 ); / /
Шифрование Боба
ech o $ e t a p 2 . " / / Сообщение заш и ф рованн ое Бобом \ n " ;
$ e ta p 3 = a n ti_ n e ir o (a n ti_ n e ir o ($ e ta p 2 )/$ k e y 1 1 )/$ k e y 1 ;
//Д еш и ф р о вка Алисы
ech o $ e t a p 3 . " / / А лиса сн я л а с в о е шифрование \ n " ;
$ e ta p 4 = a n ti_ n e ir o (a n ti_ n e ir o ($ e ta p 3 )/$ k e y 2 2 )/$ k e y 2 ;
//Д еш и ф р о вка Боба
ech o $ e t a p 4 . " / / Боб сн ял с в о е шифрование \ n " ;
ech o " \ n " ;
$ c o r r e c t= c o r r e c t_ f($ p e r e d , $ p ro v );
ech o $ c o r r e c t . " / / Боб о т к о р р е к т и р о в а л с в о е зн ач ен и е
\n ";
ech o " \ n " ;
?>
Результат работы данной программы представлен на листинге 2.
Листинг 2. Результат работы программы.
0 .1 2 3 4 5 6 7 8 9 / / Сообщение 0 .0 1 3 7 1 7 4 2 1 Число п р о вер ки
0 .0 0 3 7 0 3 6 0 1 1 2 5 7 8 7 6 / / Сообщение заш и ф рованн ое Алисой
0 .0 0 0 2 9 6 2 8 8 0 5 8 6 3 4 1 / / Сообщение заш и ф рованн ое Бобом
0 .0 0 9 8 7 6 2 6 8 6 2 1 1 3 6 8 / / А лиса сн я л а с в о е шифрование
._
12
,— молодой— ,
[у ч ё н ы й !
Исследования молодых ученых
0 .1 2 3 4 5 3 3 5 7 7 6 4 2 1 / / Боб сн ял с в о е шифрование
0 . 1 2 3 4 5 6 7 8 9 / / Боб о т к о р р е к т и р о в а л с в о е зн ач ен и е
Данный код был написан на языке программирования PHP 8.4 [8] и прове
рен на онлайн интерпретаторе OnlineGDB. [9]
Л и те р ату р а:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Невзламываемый шифр Вернама // КОД. Код журнал Яндекс Практикума.
URL: https://thecode. media/vernam/ (дата обращения: 03.01.2025).
Rashid, Tariq. Make Your Own Neural Network / Tariq Rashid. CreateSpace,
2016. — 222c. — Текст: непосредственный.
IEEE 754. IEEE Standard for Binary Floating-Point Arithmetic. — NewYork:
American National Standard, 1985. — 18 c. — Текст: непосредственный.
Числа с плавающей точкой. — Текст: электронный // php.net: [сайт]. —
URL: https://www.php.net/manual/ru/language.types.float.php (дата обра
щения: 15.01.2025).
Карцев, М. А. Арифметика цифровых машин / М. А. Карцев. — М.: Наука,
1969. — 576 c. — Текст: непосредственный.
Как компьютер считает синусы. — Текст: электронный // КОД: [сайт]. —
URL: https://thecode. media/sinus/ (дата обращения: 15.01.2025).
MOD function. — Текст: электронный // Microsoft: [сайт]. — URL: https://
support.microsoft.com/en-us/office/m od-function-9b6cd169-b6ee-406aa97b-edf2a9dc24f3 (дата обращения: 15.01.2025).
PHP 8.4 // PHP. URL: https://www.php.net/releases/8.4/ru. php (дата об
ращения: 15.01.2025).
OnlineGDB. URL: https://www.onlinegdb.com/online_php_interpreter (дата
обращения: 15.01.2025).
Отзывы:
Авторизуйтесь, чтобы оставить отзыв