- •Инфа взята из книги, так что не факт, что это то, что надо (можете поискать ответы в лекциях).
- •1. Квадратичный вычет (невычет). Символ Лежандра.
- •2. Китайская теорема об остатках (кто).
- •3. Генерирование простых чисел. Тест Ферма.
- •4. Тест квадратного корня. Тест Миллера-Рабина.
- •5. Метод конструирования простых чисел (теорема Демитко).
- •9. Криптосистема Эль-Гамаля. Атаки. Условия стойкости.
- •10. Криптосистема rsa. Атаки при малом открытом ключе и малом числе сообщений.
- •11. Rsa. Атака Винера. Мультипликативное свойство.
- •12. Rsa. Общий модуль. Циклическая атака.
- •13. Rsa. Анализ времени выполнения. Атака внешним воздействием.
- •14. Криптосистема Рабина. Доказуемая стойкость.
- •15. Квантовые вычисления. Факторизация через нахождение периода.
- •16. Алгоритм Шора. Основные этапы факторизации.
- •17. Алгоритм Шора. Постквантовая обработка. Цепные дроби.
- •18. Алгоритм Шора для дискретного логарифма.
- •19. Криптосистема Мак-Элиса. Генерация ключей, шифрование, дешифрование.
- •21. Гомоморфное шифрование. Виды.
- •22. Гомоморфизм системы Эль-Гамаля.
- •23. Гомоморфная кс Пэйе. Генерация ключей, шифрование, дешифрование.
- •25. Протокол разделения секрета Шамира (n,m).
- •26. Проверяемое разделение секрета. Схема Фельдмана.
- •27. Доказательство с нулевым разглашением (zkp).
- •28. Zkp для закрытого ключа Эль-Гамаля.
- •29. Протокол: поручительство информации (обязательство/commitment).
- •30. Протоколы скрытного поиска точек интереса (pir/psi).
- •31. Электронное голосование. Mix-сети.
- •32. Электронное голосование. Слепая подпись.
- •33. Электронное голосование. Гомоморфное шифрование.
- •34. Распределение симметричных ключей. Жизненный цикл.
- •35. Ключевые структуры. Базовый набор.
- •36. Распределение ключей с использованием црк.
- •37. Распределение ключей без црк. Диффи-Хеллман.
- •38. Распределение открытых ключей. Аутентификация.
- •39. Инфраструктура открытых ключей (pki).
- •40. Сертификат открытого ключа X.509. Жизненный цикл.
- •41. Протокол ike в ipSec.
- •42. Требования к безопасности в протоколе sigma.
- •43. Криптографическая защита в tls 1.3. Протокол квитирования.
- •44. Формирование ключей в tls 1.3. Perfect Forward Secrecy.
- •45. Задача: Система электронного голосования на основе Пэйе.
- •5 Избирателей голосуют:
- •55. Задача: Тест Ферма. Проверить простоту числа a.
- •57. Задача: Решить систему уравнений по кто.
- •59. Задача: Схема разделения секрета Шамира (4,m). Восстановление по долям 1 и 4.
- •61. Задача: Эллиптическая кривая e(a,b) над gf(17). Операции с точками.
- •62. Задача: Демонстрация протокола скрытного поиска точки интереса (лр 8).
9. Криптосистема Эль-Гамаля. Атаки. Условия стойкости.
Вопрос: Криптосистема Эль-Гамаля. Атаки на криптосистему. Условия стойкости.
Источник: Яковлев, Коржик. Гл. 4 «Асимметричные криптосистемы», §4.4.
Генерация ключей:
Выбрать большое простое p, примитивный корень g по mod p. Закрытый ключ: случайное x (1<x<p-1). Открытый ключ: y = g^x mod p. Опубликовать (p, g, y).
Шифрование сообщения M:
Выбрать случайное k (1<k<p-1). C₁ = g^k mod p, C₂ = M·y^k mod p. Шифртекст: (C₁, C₂).
Дешифрование:
M = C₂ · (C₁^x)⁻¹ mod p = C₂ · C₁^(p-1-x) mod p.
Атаки:
1. Атака на основе задачи дискретного логарифма (DLP): если найти x из y=g^x mod p — система взломана. Безопасность основана на вычислительной сложности DLP.
2. Атака при повторном использовании k: если одно k использовано дважды, то C₁ одинаков и можно найти M.
3. Атака на основе мультипликативного гомоморфизма: если можно подать выбранный шифртекст — можно получить информацию о ключе.
Условия стойкости:
— p должно быть достаточно большим (≥2048 бит сейчас), (p-1)/2 тоже простое.
— k должно быть случайным и использоваться только один раз.
— g должен быть примитивным корнем (иметь порядок p-1).
10. Криптосистема rsa. Атаки при малом открытом ключе и малом числе сообщений.
Вопрос: КС РША. Атаки: малая открытая экспонента e, анализ при малом числе сообщений, отсутствие шифрования.
Источник: Яковлев, Коржик. Гл. 4, §4.2.
RSA кратко:
n=p·q, e·d≡1(mod φ(n)). Шифрование: C=M^e mod n. Дешифрование: M=C^d mod n.
Атака при малом e (broadcast attack, e=3):
Если одно сообщение M зашифровано с e=3 у 3 разных пользователей с модулями n₁,n₂,n₃: C_i=M^3 mod n_i. По КТО находим M^3 mod (n₁·n₂·n₃), затем берём кубический корень. M мало — не происходит редукции по модулям! Решение: добавить случайный padding.
Анализ при малом числе сообщений:
Если сообщение M<n^(1/e), то C=M^e без приведения по модулю, и M = C^(1/e) — обычный корень. Уязвимость при e=3 и коротких M.
Отсутствие шифрования (M=0 или M=1):
0^e=0, 1^e=1 — шифртекст равен открытому тексту. Необходима проверка и padding.
11. Rsa. Атака Винера. Мультипликативное свойство.
Вопрос: КС РША. Атака при малой секретной экспоненте d; атака, использующая мультипликативное свойство.
Источник: Яковлев, Коржик. Гл. 4, §4.2.
Атака Винера (малое d):
Если d < n^(1/4)/3, то d можно найти из разложения e/n в цепную дробь. Теорема Винера: непрерывная дробь e/n содержит d/k среди подходящих дробей.
Алгоритм:
1) Разложить e/n в цепную дробь [a₀; a₁, a₂, …]
2) Перебрать подходящие дроби p/q
3) Проверить: если (e·q - 1) делится на некоторое φ, и уравнение x²-(n-φ+1)x+n=0 имеет целые корни — найдены p,q, а q=d.
Мультипликативное свойство RSA:
RSA мультипликативен: E(M₁)·E(M₂) = (M₁^e·M₂^e) = (M₁·M₂)^e = E(M₁·M₂) mod n.
Атака: злоумышленник получает C=M^e. Выбирает r, вычисляет C'=C·r^e mod n, запрашивает расшифровку C'. Получает M'=M·r mod n. Находит M=M'·r⁻¹ mod n.
Защита: рандомизация (OAEP padding).
12. Rsa. Общий модуль. Циклическая атака.
Вопрос: КС РША. Атака при общем модуле для нескольких пользователей; циклическая атака.
Источник: Яковлев, Коржик. Гл. 4, §4.2.
Атака при общем модуле:
Если пользователи A и B используют один n, но разные e_A и e_B, при этом gcd(e_A, e_B)=1. Противник перехватывает C_A=M^(e_A) и C_B=M^(e_B).
По расширенному алгоритму Евклида: r·e_A + s·e_B = 1.
M = C_A^r · C_B^s mod n (один из r,s отрицателен — берётся обратный элемент).
Вывод: нельзя использовать один модуль n для разных пользователей!
Циклическая атака:
Противник шифрует C несколько раз: C₁=C^e, C₂=C₁^e, … Если за k шагов C_k=C, то C_{k-1}=M.
Работает когда порядок e в (Z/λ(n))* мал. Чтобы защититься, e должен иметь большой порядок по mod λ(n).
