<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; квантовые комппьютеры</title>
	<atom:link href="http://web.snauka.ru/issues/tag/kvantovyie-komppyuteryi/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 17 Apr 2026 07:29:22 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Реализация крипто-системы Merkle и ее анализ</title>
		<link>https://web.snauka.ru/issues/2017/06/83971</link>
		<comments>https://web.snauka.ru/issues/2017/06/83971#comments</comments>
		<pubDate>Thu, 29 Jun 2017 03:55:04 +0000</pubDate>
		<dc:creator>Явич Максим Павлович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[квантовые комппьютеры]]></category>
		<category><![CDATA[кибер]]></category>
		<category><![CDATA[Пост квантовая криптография]]></category>
		<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=83971</guid>
		<description><![CDATA[Идет активная работа по разработке квантовых компьютеров. Данные компьютеры, используя алгоритм Шора, могут легко взломать системы основанные на факторизации целых чисел. Соответственно самая распространённая криптосистема открытого ключа RSA является уязвимой [1]. Альтернативой RSA для пост квантовой эпохи являются крипто системы, основанные на хешировании. Безопасность, которых основывается на безопасности хеш-функции. Были предложены системы одноразовых подписей [2] Данные [...]]]></description>
			<content:encoded><![CDATA[<p><span>Идет активная работа по разработке квантовых компьютеров. Данные компьютеры, используя алгоритм Шора, могут легко взломать системы основанные на факторизации целых чисел. Соответственно самая распространённая криптосистема открытого ключа RSA является уязвимой </span><span>[1]</span><span>.</span></p>
<p><span>Альтернативой RSA для пост квантовой эпохи являются крипто системы, основанные на хешировании. Безопасность, которых основывается на безопасности хеш-функции. Были предложены системы одноразовых подписей </span><span>[2]</span></p>
<p><span>Данные системы являются неэффективными из-за, передачи открытого ключа множество раз. Криптосистема Меркле улаживает эту проблему. В этой системе один и тот же открытый ключ используется для шифрования множества сообщений. В данной системе генерируются ключи X<sub>i</sub> и Y<sub>i </sub>для N записей и вычисляется h<sub>i</sub>=h(Y<sub>i</sub>), и строится дерево </span><span>Merkle</span><span>[3,4].</span></p>
<p><span>В данном дереве последующий узел является хешированием объединения своих потомков. a<sub>1,0 </sub>= h(a<sub>0,0</sub>|| a<sub>0,1</sub>);  Корень дерева a<sub>n,0 </sub>является открытым ключом public.</span></p>
<p><a href="https://web.snauka.ru/issues/2017/06/83971/merkle-2" rel="attachment wp-att-83972"><img class="aligncenter size-full wp-image-83972" src="https://web.snauka.ru/wp-content/uploads/2017/06/merkle.jpg" alt="" width="839" height="727" /></a></p>
<p><span>Для  того, чтобы получить подпись мы используем криптосистему одноразовой подписи и объединяем ее с каждым братским узлом. sig = (signew ||auth<sub>0</sub>||auth<sub>1</sub>||…||auth<sub>n−1</sub>). Для верификации подписи проверяется одноразовая подпись и открытый ключ, используя братские узлы.</span></p>
<p><span>Мы реализовали данный алгоритм, на языке программирования </span><span>Python</span><span>, ниже приведен псевдо код данной реализации:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Importing necessary libs</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Define class</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Defining “ alt_hashes(hashes) “ method</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Set list “ arr ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>If  hashes == “ ”, raise Exception</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Foreach loop</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span> sorting hashes and appending into arr</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Length_of_block == length of arr</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>While loop, if length is odd, copy last element in list</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span> append it into arr list</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Set list “ another_arr ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Foreach loop</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>For loop with range from 0 to length of “ arr “ and iteration by 2</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Define variable with “ sha512() “ value</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Hash elements that are in “ arr “ list</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Apennd them into new “ another_arr “ list</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Return this list</span><span>in hex</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Set list “ </span><span>hash_arr</span><span> ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Foreach loop</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Generate Hex and put it into “ hash_arr ” list</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Create message put it in “ st “ variable</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Convert “ st “ value in binary</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>First_secret_key = hash_arr</span><span>[0]</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Second_secret_key = hash_arr</span><span>[1]</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Generate “ one-time signature ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>If st == 0</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Choose  “</span><span>First_secret_key “ bit</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Else</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Choose  “Second _secret_key “ bit</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>First_pub_key = hash(hash_arr</span><span>[0]</span><span>)</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Second_pub_key = hash (hash_arr</span><span>[1]</span><span>)</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Encryption</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Concatenate “ one-time signature ” with message’s hash</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Verification of  “ one-time signature ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>If bit of  “ one-time signature ” == 0</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Compare with </span><span>“</span><span>First_secret_key “ bit</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Else</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Compare  with </span><span>“Second _secret_key “ bit</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 72.0pt;"><span>·<span>         </span></span><span>Verification of  “ signature ”</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Concatenate siblings with each other</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>If this equals to public key</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Sign is correct</span></p>
<p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 108.0pt;"><span>o<span>   </span></span><span>Else</span></p>
<p class="MsoListParagraphCxSpLast" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 144.0pt;"><span>§<span>  </span></span><span>Sign is not correct</span></p>
<div id="m_538550661811977378yiv7719925784yui_3_16_0_ym19_1_1506910376407_3388">
<div id="m_-5921628449681010186yui_3_16_0_ym19_1_1507100672896_9455">Мы протестировали данный алгоритм на компьютере с процессором I3 и оперативной памятью 4 гб.</div>
<div id="m_-5921628449681010186yui_3_16_0_ym19_1_1507100672896_9456">Размер хешированного сообщения составляет 400 бит. Генерация открытого ключа происходит за 0.000835152757866 с., время шифрования сообщения – 0.000888468500357 с., время подтверждения подписи – 0.00144478985986.</div>
<div id="m_-5921628449681010186yui_3_16_0_ym19_1_1507100672896_9457">Как мы видим мы получили довольно хорошие результаты во времени.</div>
<div id="m_-5921628449681010186yui_3_16_0_ym19_1_1507100672896_9458">Длина подписи получилась – 166 800 бит. Что является довольно большим размером.</div>
<div id="m_-5921628449681010186yui_3_16_0_ym19_1_1507100672896_9459" dir="ltr">Как мы видим данная система является актуальной пост квантовой альтернативой RSA, но нужно провести работу на уменьшением размера подписи и оптимизации алгоритма.</div>
</div>
<p><em><strong>РАБОТА ВЫПОЛНЕНА В РАМКАХ НАУЧНОГО ГРАНТА «НАЦИОНАЛЬНОГО НАУЧНОГО ФОНДА  ШОТА РУСТАВЕЛИ» YS2015.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2017/06/83971/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
