Криптография. алгоритм rsa
Суть состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым, а другой закрытым. Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне.
Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату.
Ривест, Шамир и Эйдельман воспользовались тем фактом, что нахождение больших простых чисел в вычислительном отношении осуществляется легко, но разложение на множители произведения двух таких чисел практически невыполнимо. Доказано (теорема Рабина), что раскрытие шифра RSA эквивалентно такому разложению. Поэтому для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время.
RSA на примере:
Выбираем два простые числа p=7; q=17 (на практике они во много раз длиннее!!!)
В этом случае N = p*q будет равно 119.
Функция Эйлера K = (p-1)*(q-1) = 96
Теперь необходимо выбрать случайное e, взаимно простое сn ,выбираем e=5.
Сформируем число d так, чтобы (d*e) mod K = 1
(5*d) % 96 = 1 à d = 77
d – секретный ключ, e и n – характеризуют открытый ключ.
Текст, который нужно шифровать M = 19
Получаем зашифрованный текст С = Me mod n = 66
Получатель дешифрует сообщение М= Cd mod n =19
Двоичные коды с обнаружением и коррекцией одиночных ошибок. Графическая интерпретация.
Пример обнаружения ошибочного разряда в коде Хемминга
Дано кодовое слово (КС): 0 1 0 1 1 0 1 (0 1 0 1 – данные, 101 – синдром)
Пусть при передаче произошла ошибка, и оно исказилось: 0 1 0 1 1 0 0
Необходимо выполнить проверку на корректность и исправить ошибку, если она есть.
Перемножаем матрицу Н на столбец КС (по правилу строка на столбец), получаем код ошибки:
упрощенно:
>
Поскольку получен код, отличный от безошибочного {0 0 0},
ищем соответствующий ему столбец в матрице H.
Как наглядно видно – это крайний справа.
Исправляем ошибку и записываем ответ: 0 1 0 1 1 0 0 → 0 1 0 1 1 0 1
Коды Хемминга. Помехоустойчивость. Схема авто коррекции данных.
В другом файле.
Коды Хемминга для разной длины кодовых слов.
В другом файле.
Фонетические алфавиты. Алфавит ИКАО/ICAO.
Фонетический алфавит международной авиационной организации (ИКАО), также известный как международный радиотелефонный алфавит, или просто "радиоалфавит" — один из самых распространённых фонетических алфавитов в мире. Каждой букве он ставит в соответствие определённое кодовое слово (A как Alfa, B как Bravo, и т.д.) таким образом, чтобы последовательности букв (и цифр) могли быть легко произнесены и правильно поняты при голосовом общении по радио или телефону, независимо от родного языка передающей/принимающей стороны. Фонетический алфавит ИКАО используется многими международными и национальными организациями.
Реализация составных операций в языке Ассемблер. Условный оператор в полном и сокращенном (одна ветвь) виде.
CMP AX, BX ; анализирует разность (AX - BX), устанавливает флаги FZ и FS
; флаг знаков: FS = 0 если AX-BX≥0, FS = 1 если AX-BX<0 (0 – ”+”, 1 – ”-”)
; флаг значений: FZ = 0 если AX≠BX, FZ = 1 если AX=BX (разность = или ≠ 0)
Примечание: команды TEST и CMP только меняют флаги, значения операндов остаются прежними!
Передача управления (безусловный и условный переход):
METKA1: ........
JMP METKA1 ; безусловный переход к указанной метке (вверх или вниз)
Переход по условию:
JS METKA ; переход происходит, если FS = 1 (буква Sв имени команды – указывает флаг)
JNS METKA ; переход происходит, если FS = 0 (буква Nв имени команды – как бы отрицание)
JZ METKA ; переход происходит, если FZ = 1 (буква Zв имени команды – указывает флаг)
JNZ METKA ; переход происходит, если FZ = 0 (буква Nв имени команды – как бы отрицание)