История сайта

Обработка информации

Все о принципах обработки, передачи, хранения, сортировки, и т.д. информации.

Алгоритмы шифрования данных

ЛАБОРАТОРНАЯ РАБОТА №1

Простой столбцевой перестановочный шифр

 

В данном виде шифра текст пишется на горизонтально разграфленном листе бумаги фиксированной ширины, а шифротекст считывается по вертикали. Дешифрование заключается в записи шифротекста вертикально на листе разграфленной бумаги фиксированной ширины и затем считывании открытого текста горизонтально.

Пример:

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

П

Р

О

Г

Р

А

М

М

Н

О

Е

О

Б

Е

С

П

Е

Ч

Е

Н

И

Е

В

Ы

Ч

И

С

Л

И

Т

Е

Л

Ь

Н

О

Й

Т

Е

Х

Н

И

К

И

 

Зашифрованный текст:

ПМЕИСНИРНСЕЛОИООП ИИКГЕЕВТ ИР ЧЫЕТ АОЕЧЛЕ МБНИЬХ

 

П

Р

О

Г

Р

А

М

М

Н

О

Е

О

Б

Е

С

П

Е

Ч

Е

Н

И

Е

В

Ы

Ч

И

С

Л

И

Т

Е

Л

Ь

Н

О

Й

Т

Е

Х

Н

И

К

И

 

Задание: Реализовать на любом языке программирования работу данного шифра


Перестановочный шифр с ключевым словом

 

Буквы открытого текста записываются в клетки прямоугольной таблицы по ее строчкам. Буквы ключевого слова пишутся над столбцами и указывают порядок этих столбцов (по возрастанию номеров букв в алфавите). Чтобы получить зашифрованный текст, надо выписывать буквы по столбцам с учетом их нумерации.

Открытый текст: Прикладная математика  Ключ: Шифр

 

Ш

И

Ф

Р

4

1

3

2

П

р

и

к

л

а

д

н

а

я

м

а

т

е

м

а

т

и

к

а

 

Криптограмма: Раяеикнааидммкплатт

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

Так как символы криптотекста те же, что и в открытом тексте, то частотный анализ покажет, что каждая буква встречается приблизительно с той же частотой, что и обычно. Это дает криптоаналитику информацию о том, что перестановочный шифр. Применение к криптотексту второго перестановочного фильтра значительно повысит безопасность. Существуют и еще более сложные перестановочные шифры, но с применением компьютера можно раскрыть почти все из них.

Хотя многие современные алгоритмы используют перестановку, с этим связана проблема использования большого объема памяти, а также иногда требуется работа с сообщениями определенного размера.

Задание: Реализовать на любом языке программирования работу данного шифра


Шифр Полибия

 

Одной из наиболее древней из известных является система греческого историка Полибия. Его суть состоит в следующем: рассмотрим прямоугольник, что называется доской Полибия.

 

А

Б

В

Г

Д

Е

А

А

Б

В

Г

Д

Е

Б

Ж

З

И

Й

К

Л

В

М

Н

О

П

Р

С

Г

Т

У

Ф

Х

Ц

Ч

Д

Ш

Щ

Ъ

Ы

Ь

Э

Е

Ю

Я

.

,

 

Каждая буква может быть представлена парой букв, указывающих строку и столбец, в которых расположена данная буква. Так представления букв В, Г, П, У будут АВ, АГ, ВГ, ГБ соответственно, а сообщение

ПРИКЛАДНАЯ МАТЕМАТИКА

зашифруется как

 

ВГВДБВБДБЕАААДВБААЕБЕЕВАААГААЕВАААГАБВБДААЕЕ

 

Задание: Реализовать на любом языке программирования работу данного шифра


ЛАБОРАТОРНАЯ РАБОТА №2

Исследование криптоалгоритма шифрования RSA

Цель работы: Исследование структуры алгоритма и методики  практической реализации криптосистемы шифрования RSA.

Основные теоретические положения:

Как известно, алгоритмы симметричного шифрования используют ключи относительно небольшой длины и поэтому могут быстро шифровать большие объёмы данных.

При использовании алгоритма симметричного шифрования отправитель и получатель применяют для шифрования и расшифрования данных один и тот же секретный ключ. Таким образом, алгоритмы симметричного шифрования основываются на предположении о том, что зашифрованное сообщение не сможет прочитать никто, кроме того кто обладает ключом для его расшифрования. При этом если ключ не скомпрометирован, то при расшифровании автоматически выполняется аутентификация отправителя, т.к. только он имеет ключ, с помощью

которого можно зашифровать сообщение. Таким образом, для симметричных криптосистем актуальна проблема безопасного распределения симметричных секретных ключей. В связи с этим без эффективной организации защищённого распределения ключей использование обычной системы симметричного шифрования в вычислительных сетях практически невозможно.

Решением данной проблемы является использование асимметричных алгоритмов шифрования, называемых криптосистемами с открытым ключом. В них для зашифрования данных используется один ключ, называемый «открытым» а для расшифрования — другой называемый «закрытым или секретным». Следует иметь в виду, что ключ расшифрования не может быть определён из ключа зашифрования.

В асимметричных криптосистемах отрытый ключ и криптограмма могут быть отправлены по незащищённым каналам. Концепция таких систем основана на применении однонаправленных функций.

В качестве примера однонаправленной функции может служить целочисленное умножение.

Прямая задача — вычисление произведения двух больших целых чисел р и q, n =р*q. Это относительно несложная задача для ЭВМ.

Обратная задача — факторизация или разложение на множители большого целого числа практически неразрешима при достаточно больших значениях n.

Например, если р ~q, а их произведение n ~2664, то для разложения этого числа на множители потребуется 223 операций, что практически невозможно выполнить за приемлемое время на современных ЭВМ.

Другим примером однонаправленной функции является модульная экспонента с фиксированным основанием и модулем.

Например, если y=ax, то естественно можно записать, что х = logа (у).

Задача дискретного логарифмирования формулируется следующим образом. Для известных целых а, n, у следует найти такое число х, при котором

ax(mod n) = у

Например, если a=2664и n=2664 нахождение показателя степени х для известного у потребует около 1026 операций, что также невозможно выполнить на современных ЭВМ .

В связи с тем, что в настоящее время не удалось доказать, что не существует эффективного алгоритма вычисления дискретного логарифма за приемлемое время, то модульная экспонента также условно отнесена к однонаправленным функциям.

Другим важным классом функций, используемых при построении криптосистем с открытым ключом являются, так называемые, однонаправленные функции с секретом. Функция относится к данному классу при условии, что она является однонаправленной и, кроме того, возможно эффективное вычисление обратной функции, если известен секрет.

В данной лабораторной работе исследуется криптосистема RSA, использующая модульную экспоненту с фиксированным модулем и показателем степени (т.е. однонаправленную функцию с секретом).

Схема алгоритма шифрования данных RSA

1. Определение открытого «е» и секретного «d» ключей

1.1.Выбор двух взаимно простых больших чисел р и q

1.2. Определение их произведения: n =р * q

1.3. Определение функции Эйлера: ф(n) = (р-1)(q-1)

1.4. Выбор открытого ключа е с учётом условий:

1< е <ф(п), НОД(е, ф(п)) =1

1.5. Определение секретного ключа d, удовлетворяющего условию

е*d (mod ф(n)) =1, где d < n

 

2. Алгоритм шифрования сообщения М (действня отправителя)

2.1. Разбивает исходный текст сообщения на блоки М1, М2,…, Мn,

i = 0, 1, 2,…, n)

2.2. Шифрует текст сообщения в виде последовательности блоков:

Сiie (mod n)

2.3. Отправляет получателю криптограмму: С1, C2,… Сn

2.4. Получатель расшифровывает криптограмму с помощью секретного ключа d по формуле:

Мi = Сid (mod n)

 

3. Процедуру шифрования данных рассмотрим на следующем примере (для простоты и удобства расчётов в данном примере использованы числа малой  разрядности):

3.1. Выбираем два простых числа р и q, р =3, q =11;

3.2. Определяем их произведение (модуль) n=p*q = 33;

3.3. Вычисляем значение функции Эйлера ф(n) = (р-1)(q-1)

ф(n) = 2*10 = 20

3.4. Выбираем случайным образом открытый ключ с учётом выполнения

условий

1 < е <ф(n) и НОД (е, ф(n)) = 1, е = 7;

3.5. Вычисляем значение секретного ключа d, удовлетворяющего условию

e*d( mod ф(n))=1, 7*d (mod 20)=1; d = 3;

3.6. Отправляем получателю пару чисел (n = 33, е = 7);

Представляем шифруемое сообщение М как последовательность целых чисел 312.

3.7. Разбиваем исходное сообщение на блоки М1 = 3, М2 = 1, М3 = 2;

3.8. Шифруем текст сообщения, представленный в виде последовательности , блоков: Сi = Мie(mod n)

 

С1=37 (mod 33) =2187(mod33) =9,

С2 =17 (mod 33) =1(mod33) =1,

С3 = 27 (mod  33) = 128 (mod 33) = 29.

 

3.9. Отправляем криптограмму С1 = 9, С2 = 1, С3 =29.

3.10. Получатель расшифровывает криптограмму с помощью секретного

ключа d по формуле: Мiid (mod n)

 

М1 =93 (mod 33) = 729(mod ЗЗ) =3

М2 =13 (mod ЗЗ) =1 (mod 33) = 1

М3 = 293 (mod 33) = 24389 (mod 33) = 2.

Полученная последовательность чисел 312 представляет собой исходное сообщение М.

 

4. Содержание отчёта

4.1. Составить блок-схему и программу алгоритма шифрования RSA.

4.2. Листинг программы шифрования заданного сообщения М с использованием алгоритма RSA.

 

 

 

 

ЛАБОРАТОРНАЯ РАБОТА №3

Исследование электронной цифровой подписи (ЭЦП)

RSA

Цель работы: Исследование структуры алгоритма и методики практической реализации (ЭЦП) RSA.

Основные теоретические положения: Технология применения системы ЭЦП предполагает наличие сети абонентов, обменивающихся подписанными электронными документами. При обмене электронными документами по сети значительно снижаются затраты, связанные с их обработкой, хранением и поиском.

Одновременно при этом возникает проблема, как аутентификации автора электронного документа, так и самого документа, т.е. установление подлинности автора и отсутствия изменений в полученном электронном сообщении.

В алгоритмах ЭЦП как и в асимметричных системах шифрования используются однонаправленные функции. ЭЦП используется для аутентификации текстов, передаваемых по телекоммуникационным каналам.

ЭЦП представляет собой относительно небольшой объём дополнительной цифровой информации, передаваемой вместе с подписанным текстом.

Концепция формирования ЭЦП основана на обратимости асимметричных шифров, а также на взаимосвязанности содержимого сообщения, самой подписи и пары ключей. Изменение хотя бы одного из этих элементов сделает невозможным подтверждение подлинности подписи, которая реализуется при помощи асимметричных алгоритмов шифрования и хэш-функций.

Система ЭЦП включает две процедуры:

  • формирование цифровой подписи;
  • проверку цифровой подписи.

В процедуре формирования подписи используется секретный ключ отправителя сообщения, в процедуре проверки подписи — открытый ключ отправителя.

Безопасность системы RSA определяется вычислительной трудностью разложения на множители больших целых чисел. Недостатком алгоритма цифровой подписи RSA является уязвимость её к мультипликативной атаке. Другими словами, алгоритм ЭЦП RSA позволяет хакеру без знания секретного ключа сформировать подписи под теми документами, в которых результат — хэширования можно вычислить как произведение результата хэширования уже подписанных документов.

Алгоритм электронной цифровой подписи (ЭЦП) RSA

1.Определение открытого «e» и секретного «d» ключей (действия отправителя)

1.1. Выбор двух взаимно простых больших чисел р и q

1.2. Определение их произведения n =p*q

1.3. Определение функции Эйлера: ф(n ) = (р-1)(q-1)

1.4. Выбор секретного ключа d с учетом условий: 1 < d < ф(n),

НОД(n, ф(n)) = 1

1.5. Определение значения открытого ключа е: е <n,

е*d(mod ф(n))=1

 

2. Формирование ЭЦП

2.1. Вычисление хэш — значения сообщения М: m = h (М)

2.2. Для получения ЭЦП шифруем хэш – значение m c помощью секретного ключа d и отправляем получателю цифровую подпись      S = md (mod n) и открытый текст сообщения М

 

3.Аутентификация сообщения — проверка подлинности подписи

3.1. Расшифровка цифровой подписи S с помощью открытого ключа e и вычисление её хэш — значения m’= Se(mod n)

3.2. Вычисление хэш — значения принятого открытого текста М и  m=h (M)

3.3. Сравнение хэш — значений m и m’, если m=m’, то цифровая подпись S — достоверна.

Процедуру формирования ЭЦП сообщения М рассмотрим на следующем простом примере:

3.4. Вычисление хэш — значения сообщения М: m= h(M).

Хэшируемое сообщение М представим как последовательность целых чисел

3.5. В соответствии с приведённым выше алгоритмом формирования ЭЦП RSA выбираем два взаимно простых числа р = 3, q = 11, вычисляем значение n=p*q=3*11=33, выбираем значение секретного ключа d = 7 и вычисляем значение открытого ключа е = 3. Вектор инициализации Н0 выбираем равным 6 (выбирается случайным образом).

Хэш — код сообщения M =312 формируется следующим образом:

 

Н1 =(М1 +H0)2 (mod n) =(3+ 6)2 (mod 33) = 81 (mod33) =15;

Н2 = (М2 + Н1)2 (mod n) = (1 + 15)2 (mod 33) = 256 (mod 33) = 25;

Н3 =(М32)2 (mod n) =(2+25)2 (mod33) = 729 (mod33) =3, m=З

 

3.6. Для получения ЭЦП шифруем хэш — значение m с помощью секретного ключа d и отправляем получателю цифровую подпись

 

S = md (mod n) и открытый текст сообщения М

S =37 (mod 33) =2187(mod33) = 9

 

3.7. Проверка подлинности ЭЦП

Расшифровка S (т. е. вычисление её хэш — значения m/) производится с помощью открытого ключа e.

 

m’=Se (mod n) =9 (mod 33) = 729(mod 33) =3

 

3.8. Если сравнение хэш — значений m’и m показывает их равенство, т.е. m =m’, то подпись достоверна.

 

4.Содержание отчета

4.1. Составить блок-схему алгоритма и программу формирования ЭЦП RSA.

4.2. Листинг программы расчета ЭЦП RSA в соответствии с заданием.

Реклама от гугла
Новости Белогорья Недавние статьи</div> </div><div class="art-blockcontent"> <ul> <li> <a href="http://vapankov.ru/?p=44961">Два пьяных водителя попались за рулём одной и той же «семёрки» за ночь</a> </li> <li> <a href="http://vapankov.ru/?p=44962">Под новый год россияне заняли в МФО на 12,6 % больше денег, чем осенью</a> </li> <li> <a href="http://vapankov.ru/?p=44963">Индексация выплат, загранпаспорт в МФЦ и новые кредиты – с 1 февраля в России</a> </li> <li> <a href="http://vapankov.ru/?p=44964">100-летие со дня образования Ленинского комсомола отметят в Белгороде</a> </li> <li> <a href="http://vapankov.ru/?p=44965">Артём Семейкин не прибыл на первый сбор «Энергомаша»</a> </li> </ul> </div> </div><div id="meta-2" class="art-block widget widget_meta clearfix"> <div class="art-blockheader"> <div class="t">Мета</div> </div><div class="art-blockcontent"> <ul> <li><a href="http://vapankov.ru/wp-login.php?action=register">Регистрация</a></li> <li><a href="http://vapankov.ru/wp-login.php">Войти</a></li> <li><a href="http://vapankov.ru/?feed=rss2"><abbr title="Really Simple Syndication">RSS</abbr> записей</a></li> <li><a href="http://vapankov.ru/?feed=comments-rss2"><abbr title="Really Simple Syndication">RSS</abbr> комментариев</a></li> <li><a href="https://ru.wordpress.org/" title="Сайт работает на WordPress — современной персональной платформе для публикаций.">WordPress.org</a></li> </ul> </div> </div> </div> </div> </div> </div><footer class="art-footer clearfix"><p><a href="http://vapankov.ru/?feed=rss2" class="art-rss-tag-icon" title="Сайт Василия Панкова RSS Feed" style="float: left; line-height: 0px;"></a></p> <a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p> <p>Copyright © 2011 - 2024гг. All Rights Reserved.</p> <!--LiveInternet counter--><script type="text/javascript"><!-- document.write("<a href='http://www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t16.3;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='LiveInternet: показано число просмотров за 24"+ " часа, посетителей за 24 часа и за сегодня' "+ "border='0' width='88' height='31'><\/a>") //--></script><!--/LiveInternet--> <!-- Yandex.Metrika informer --> <a href="https://metrika.yandex.ru/stat/?id=25737512&from=informer" target="_blank" rel="nofollow"><img src="//bs.yandex.ru/informer/25737512/3_1_B8BBFFFF_989BF0FF_0_pageviews" style="width:88px; height:31px; border:0;" alt="Яндекс.Метрика" title="Яндекс.Метрика: данные за сегодня (просмотры, визиты и уникальные посетители)" onclick="try{Ya.Metrika.informer({i:this,id:25737512,lang:'ru'});return false}catch(e){}"/></a> <!-- /Yandex.Metrika informer --> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter25737512 = new Ya.Metrika({id:25737512, clickmap:true, trackLinks:true, accurateTrackBounce:true}); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="//mc.yandex.ru/watch/25737512" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --></footer> </div> <p class="art-page-footer"> <span id="art-footnote-links">Designed by Василий.</span> </p> </div> <div id="wp-footer"> <script type='text/javascript'>jQuery(document).ready(function(){ jQuery('a.colorbox').colorbox({iframe:true, width:'80%', height:'80%'});jQuery('a.rssmi_youtube').colorbox({iframe:true, innerWidth:425, innerHeight:344})});</script><!-- Scroll Triggered Boxes v2.2.1 - https://wordpress.org/plugins/scroll-triggered-boxes/--> <div class="stb-container stb-top-left-container"> <div class="scroll-triggered-box stb stb-342 stb-top-left" id="stb-342" style="display: none;"> <div class="stb-content"> <p><strong><span style="color: #ff0000;">ВНИМАНИЕ! САНКЦИИ!</span></strong></p> <p>Санкции введены ТОЛЬКО в отношении Барака Обамы! <span style="color: #ff0000;"><strong>Бараку</strong></span> <span style="color: #ff0000;"><strong>ЗАПРЕЩЕНО посещать этот сайт!!!</strong></span></p> <p><strong><span style="color: #ff0000;">ATTENTION! SANCTIONS!</span></strong></p> <p>Sanctions were imposed ONLY in respect of Barack Obama! <span style="color: #ff0000;"><strong>Barack NOT visit this site!!!</strong></span></p> <p> </p> <p><span style="color: #0000ff;">После закрытия этого окна, оно сегодня больше не появится.</span></p> <p><span style="color: #0000ff;">After closing this window, it will not show up today.</span></p> </div> <span class="stb-close">×</span> </div> </div> <div id="stb-overlay"></div><!-- / Scroll Triggered Box --><link rel='stylesheet' id='wprssmi_colorbox-css' href='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/css/colorbox.css?ver=4.5.31' type='text/css' media='all' /> <link rel='stylesheet' id='frontend-css' href='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/css/frontend.css?ver=4.5.31' type='text/css' media='all' /> <script type='text/javascript'> /* <![CDATA[ */ var STB_Global_Options = {"testMode":""}; var STB_Box_Options = {"342":{"id":342,"title":"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435 ! \u0421\u0430\u043d\u043a\u0446\u0438\u0438! Attention! Sanctions!","trigger":"percentage","triggerPercentage":0,"triggerElementSelector":"","animation":"fade","cookieTime":1,"autoHide":false,"autoShow":true,"position":"top-left","minimumScreenWidth":0,"unclosable":false}}; /* ]]> */ </script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/scroll-triggered-boxes/assets/js/script.min.js?ver=2.2.1'></script> <script type='text/javascript' src='http://vapankov.ru/wp-includes/js/wp-embed.min.js?ver=4.5.31'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/jquery.colorbox-min.js?ver=4.5.31'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/detect-mobile.js?ver=4.5.31'></script> <script type='text/javascript' src='http://vapankov.ru/wp-content/plugins/wp-rss-multi-importer/scripts/show-excerpt.js?ver=4.5.31'></script> <!-- 51 queries. 1,418 seconds. --> </div> </body> </html>