Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Информатика 2015

8.2.4. Вопросы программировании

Процедуру составления программ проиллюстрируем на примере шифра Цезаря.

Необходимые элементы для формирования программ размещены на вкладке Математика (Программирование).

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

Оператор ORIGIN определяет, с какого числа начинается отсчёт векторов. По умолчанию отсчёт начинается с нуля. В данном случае отсчёт удобнее вести с единицы.

Открытое сообщение ABCXY Z присваивается переменной mess:

Следующая команда преобразует буквы в их десятичные коды:

Переменной d присваивается число символов в сообщении:

Результаты шифрования присваиваются переменной С.

Дальше приведён листинг программы.

Шифрование происходит путём формирования вектора V, элементы которого увеличены на три единицы но сравнению с элементами вектора т.

Оператор передачи управления проверит, превышают или нет элементы вектора V величину 90 (код заглавной буквы Z).

В случае выполнения этого условия элементы уменьшаются на 26 единиц и шифрование ведётся буквами, расположенными в начале латинского алфавита:

Если текст криптограммы предполагается записывать строчными латинскими буквами, то в операторе передачи управления вместо числа 90 нужно записать число 122 (в соответствии с таблицей кодировки).

Вставка линий новой структуры (вертикальная линия) осуществляется на вкладке Математика (Программирование).

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

На последних шагах алгоритма числовое значение матрицы С преобразуются в буквы:

Сравнение открытого текста mess с крип тограммой crypt подтверждает правильность работы составленной программы:

Рассмотрим ещё один пример составления программ. Для программной реализации выберем алгоритм RSA.

Процесс передачи информации в асимметричной криптосистеме рассмотрим на примере взаимодействия банкира и вкладчика. В программе переменные банкира содержат цифру 1, а переменные вкладчика - цифру 2.

В соответствии с протоколом создания защищенного канала связи RSA, описанном в [12], банкиру и вкладчику следует выполнить следующие действия.

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

Пусть банкир выбрал простые числа:

Простые числа вкладчика:

2. Вычислить произведение простых чисел:

3. Рассчитать функцию Эйлера:

4. Выбрать случайное число S, взаимно простое с W из интервала

Формирование взаимно простых чисел осуществляют с помощью следующих функций пользователя:

Результаты расчётов взаимно простых чисел:

Из предыдущих таблиц нужно выбрать числа из интервала 0 < s < W и присвоить их переменным si и s2. Например:

5. Рассчитать секретный ключ банкира tl. Расчёт секретного ключа ведётся с помощью обобщённог о алгоритма Евклида [13].

Итак, секретный ключ банкира 10525.

6. Теперь нужно определить секретный ключ вкладчика.

Секретный ключ вкладчика:

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

Банкир: si =5329, rl =13961.

Вкладчик: s2=3897, г2 =64741.

Естественно, что секретные ключи t хранятся в местах, недоступных для посторонних лиц.

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

Предположим, что банкир решил отправить вкладчику сообщение seerb, например, некоторое число. Если нужно передать символьную информацию, то она должна быть предварительно закодирована числами.

Для формирования криптограммы банкир использует открытый ключ вкладчика, который состоит из двух частей s2 и г2. Секретное сообщение (число seerb) возводят в степень S2 и находят остаток от деления на г2.

Пусть банкир передаёт сообщение:

Тогда:

Сформированное число cryptb=51300 является криптограммой, за которой скрывается открытое сообщение банкира seerb=50. Криптограмму cryptb банкир по открытому каналу связи передаёт вкладчику.

Принятую криптограмму cryptb вкладчик должен расшифровать с помощью своего секретного ключа t2. Для этого принятое число cryptb возводят в степень 12 и находят остаток от деления на г2:

Из рассмотренного примера видно, что вкладчик принял число 50, которое отправил банкир, хотя по открытому каналу связи предавалось число 51300. При этом банкир зашифровал своё сообщение открытым (опубликованным) ключом вкладчика. Расшифровать криптограмму может только лицо, которое владеет ключом 12.

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

Пусть:

Шифрование своего сообщения вкладчиком даст число:

Криптограмма с ryptv =4018 передаётся банкиру. Для расшифрования криптограммы банкир должен использовать собственный секретный ключ И:

Итак, переданное вкладчиком число после расшифрования без искажений принято банкиром.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >
 

Популярные страницы