Ответы к заданиям — Криптография
Загляни сюда только после того, как сам(а) попробовал(а) решить!
Везде, где речь о буквах, — русский алфавит, 33 буквы (А=0, …, Я=32).
Урок 1. Шифр Цезаря
- УПЧ — М(13)+7=20=У, И(9)+7=16=П, Р(17)+7=24=Ч.
- ЩШКОНЙ — П(16)+10=26=Щ, О(15)+10=25=Ш, Б(1)+10=11=К, Е(5)+10=15=О, Д(4)+10=14=Н, А(0)+10=10=Й.
- МИР — вычитаем 7: У(20)−7=13=М, П(16)−7=9=И, Ч(24)−7=17=Р.
- ЧИСЛО — вычитаем 4: Ы(28)−4=24=Ч, М(13)−4=9=И, Х(22)−4=18=С, П(16)−4=12=Л, Т(19)−4=15=О.
- ЛОГИКА (ключ 5). При переборе ключей 3…7 осмысленное слово даёт только k=5: Р(17)−5=12=Л, У(20)−5=15=О, З(8)−5=3=Г, Н(14)−5=9=И, П(16)−5=11=К, Е(5)−5=0=А.
- Ключ 8. Самая частая буква Ц (номер 23) соответствует О (номер 15), значит сдвиг .
- У русского алфавита (33 буквы) — 32 осмысленных ключа; у английского (26 букв) — 25 (сдвиг 0 не считается).
- Одним ключом . Два последовательных сдвига складываются в один; чтобы расшифровать, надо снять суммарный сдвиг.
Урок 2. Шифр Виженера
- УУЫА — Г(3)+Р(17)=20=У; О(15)+Е(5)=20=У; Р(17)+К(11)=28=Ы; А(0)+А(0)=0=А.
- КИЮЮШ — Т(19)+Ш(25)=44≡11=К; А(0)+И(9)=9=И; Й(10)+Ф(21)=31=Ю; Н(14)+Р(17)=31=Ю; А(0)+Ш(25)=25=Ш.
- МАТЕМАТИКА — ключ КОД повторяется К-О-Д-К-О-Д-К-О-Д-К; вычитаем сдвиги 11,15,4,… из Ч,О,Ц,П,Ы,Д,Э,Ч,О,К.
- ООРВ. Ключ ВОД под МАМА даёт В-О-Д-В. Первая М: 13+2=15=О. Вторая М: 13+4=17=Р. Одинаковые М превратились в разные буквы (О и Р), потому что попали под разные буквы ключа (В и Д) — в этом и суть многоалфавитности.
- Распадается на 5 шифров Цезаря; в каждую «стопку» попадёт 8 букв.
- Длина ключа — делитель 12, кроме 1: 2, 3, 4, 6 или 12.
- У Цезаря сдвиг один на весь текст, поэтому частоты букв просто «съезжают», но горб самой частой буквы сохраняется — его сразу видно. У Виженера сдвигов несколько, они перемешивают частоты и сглаживают горб; частотный анализ заработает лишь после того, как найдена длина ключа и текст разбит на «стопки» с одним сдвигом в каждой.
- В шифр Цезаря. Ключ из одной буквы задаёт один-единственный сдвиг для всего текста.
Урок 3. Простые числа
- 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 — простые до 50.
- (84 = 2·42 = 2·2·21 = 2·2·3·7).
- (561 : 3 = 187 = 11 · 17).
- 91 — составное: . 101 — простое: не делится ни на одно простое до (2, 3, 5, 7).
- Достаточно проверять делители до , то есть простые 2, 3, 5, 7, 11, 13.
- Простых от 1 до 20 — восемь: 2, 3, 5, 7, 11, 13, 17, 19.
- не делится ни на 2, ни на 3, ни на 5 (везде остаток 1). Это показывает, что построенное в доказательстве Евклида число даёт новый простой делитель вне исходного списка (здесь само 31 — простое) — значит, список простых не может быть полным.
- Если считать 1 простым, к любому разложению можно было бы приписывать сколько угодно единиц: — единственность пропала бы.
Урок 4. Модульная арифметика
- 0.
- 2.
- 5 часов.
- 7 — обратный к 4 по модулю 9, потому что .
- У 6 нет обратного по модулю 9, потому что . Все кратные 6 по модулю 9 дают только 0, 6, 3 — единицы среди них нет.
- , а 24.
- 4. Так как , а , то .
- Если , то делит . Тогда тоже делится на (первый множитель делится), значит . ∎
Урок 5. Обмен ключами Диффи–Хеллмана
- Смешать две краски легко, а разделить смесь обратно на исходные цвета практически невозможно. Эта «односторонность» и позволяет обмениваться смесями открыто, не выдавая секретных красок.
- 2.
- 2; общий секрет 4 (то же даёт ).
- Открыто: , , , . Секретны и подслушивающему неизвестны , и сам общий секрет.
- Задача дискретного логарифма (найти показатель по известным , и ).
- При большом дискретный логарифм невозможно вычислить перебором за разумное время, тогда как при секрет находится мгновенно. Большое и обеспечивает стойкость.
- Оба вычисляют одно и то же число : Алиса как , Боб как . Поскольку , результаты совпадают.
- Идея атаки «человек посередине»: злоумышленник перехватывает канал и договаривается по Диффи–Хеллману отдельно с Алисой и отдельно с Бобом, выдавая себя каждому за другого. Тогда у него общий секрет с обоими, и он читает (и подменяет) все сообщения. Защита — подтверждать личность собеседника (например, цифровой подписью из урока 7).
Урок 6. Идея RSA
Ключи из урока: , , .
- 33; 20.
- — значит, 7 и 3 взаимно обратны по модулю 20. ✓
- 2.
- — исходное число вернулось. ✓ (Проверка: , затем .)
- 10. Забавно: число зашифровалось само в себя (это редкая «неподвижная точка»; в настоящем RSA с большими числами такое почти не встречается и не вредит стойкости).
- При , : , 40.
- Все вычисления идут по модулю , поэтому результат — это остаток от 0 до . Если , разные сообщения давали бы одинаковый остаток, и однозначно расшифровать было бы нельзя.
- Чтобы найти , нужен , а для него — разложить на простые и . Факторизация большого практически невыполнима, поэтому вычислить не удаётся, хотя открытый ключ у всех на виду.
Урок 7. Хэши, пароли и цифровая подпись
- Главное отличие: шифрование обратимо (расшифровал ключом — вернул данные), а хэш односторонний — по нему исходные данные восстановить нельзя.
- Односторонность, лавинный эффект (малое изменение входа полностью меняет хэш) и стойкость к коллизиям (трудно найти два входа с одинаковым хэшем).
- Потому что при краже базы утекут только хэши, а из них пароли не восстановить. Сайт проверяет вход, сравнивая хэши, и сам пароль хранить не обязан.
- Соль — случайная строка, добавляемая к паролю перед хэшированием, своя у каждого пользователя. Она защищает от заранее заготовленных таблиц хэшей («радужных таблиц») для популярных паролей.
- Потому что к каждому «qwerty» добавляется своя случайная соль, и после хэширования получаются разные строки. Одинаковые пароли в базе выглядят по-разному.
- Создают подпись закрытым ключом автора, а проверяют — его открытым ключом.
- Не пройдёт. Изменённый текст даёт другой хэш, а подпись сделана под старым хэшем. При проверке два хэша не совпадут, и подпись будет признана недействительной.
- Хэш — короткий и фиксированной длины, его быстро посчитать и подписать одной операцией, тогда как подписывать длинный документ целиком медленно и неудобно. При этом хэш надёжно «представляет» весь документ: изменение любой буквы меняет хэш, так что защита целостности сохраняется.