II Республиканская олимпиада по криптологии

ПЕРВЫЙ ТУР (ТЕОРЕТИЧЕСКИЙ)
Задание 1 (4 балла)
Найдите последние две цифры числа \( 88^{1986} \), записанного в системе счисления с основанием 5.
Посмотреть решение
Аналитическое обоснование: Поиск последних двух цифр числа в системе счисления с основанием \( n \) эквивалентен нахождению остатка от деления этого числа на \( n^2 \). В данном случае нам необходимо найти \( 88^{1986} \pmod{25} \).
1. Упростим основание по модулю 25:
\( 88 = 3 \cdot 25 + 13 \equiv 13 \pmod{25} \).
2. Воспользуемся теоремой Эйлера. Так как \( \text{НОД}(13, 25) = 1 \), имеем \( 13^{\phi(25)} \equiv 1 \pmod{25} \).
Вычислим функцию Эйлера: \( \phi(25) = 25 \left(1 - \frac{1}{5}\right) = 20 \).
Следовательно, \( 13^{20} \equiv 1 \pmod{25} \).
3. Разложим показатель степени 1986 по модулю 20:
\( 1986 = 20 \cdot 99 + 6 \).
Отсюда \( 13^{1986} \equiv 13^6 \pmod{25} \).
4. Вычислим \( 13^6 \pmod{25} \):
\( 13^2 = 169 = 6 \cdot 25 + 19 \equiv 19 \equiv -6 \pmod{25} \).
\( 13^6 = (13^2)^3 \equiv (-6)^3 = -216 \pmod{25} \).
\( -216 \div 25 = -9 \) (остаток 9), так как \( -216 = 25 \cdot (-9) + 9 \).
5. Переведем полученный остаток 9 в пятеричную систему счисления:
\( 9 = 1 \cdot 5^1 + 4 \cdot 5^0 = 14_5 \).
Ответ: 14
Задание 2 (4 балла)
Рассматривается двоичный канал, в котором каждый бит искажается с вероятностью \( p \) (\( 0 < p < 1/2 \)). Каждый бит передаётся три раза подряд. Получатель принимает решение по правилу большинства (какой бит чаще встречается в тройке). Найти вероятность правильного восстановления и определить, при каких \( p \) схема эффективнее одиночной передачи.
Посмотреть решение
1. Определим вероятность правильного восстановления \( P \). Согласно правилу большинства, ошибка не происходит в двух случаях:
— Если ни один из трех бит не искажен: \( (1-p)^3 \).
— Если искажен ровно один бит из трех (выбираем 1 бит из 3): \( \binom{3}{1} p (1-p)^2 = 3p(1-p)^2 \).
Суммируем вероятности:
\[ P = (1-p)^3 + 3p(1-p)^2 = (1-p)^2 \left( (1-p) + 3p \right) = (1-2p+p^2)(1+2p) \] \[ P = 1 + 2p - 2p - 4p^2 + p^2 + 2p^3 = 1 - 3p^2 + 2p^3 \]
2. Сравним эффективность с одиночной передачей, где вероятность успеха равна \( 1-p \). Условие эффективности: \( P > 1-p \).
\[ 1 - 3p^2 + 2p^3 > 1 - p \iff p - 3p^2 + 2p^3 > 0 \] \[ p(1 - 3p + 2p^2) > 0 \iff p(1-p)(1-2p) > 0 \]
Так как по условию \( 0 < p < 1/2 \), то множители \( p \), \( (1-p) \) и \( (1-2p) \) всегда положительны. Следовательно, неравенство выполняется на всем заданном интервале.
Ответ: \( P = 1 - 3p^2 + 2p^3 \); схема эффективнее при всех \( 0 < p < 0.5 \).
Задание 3 (5 баллов)
Булева функция \( f(x_1,x_2,x_3,x_4) \) обладает свойствами:
1. Изменение значения \( x_1 \) или \( x_4 \) всегда приводит к изменению значения функции.
2. Одновременное изменение значений \( x_2 \) и \( x_3 \) всегда приводит к изменению значения функции.
Траектория состояний задается рекуррентно: \( s_{k+4} = f(s_k, s_{k+1}, s_{k+2}, s_{k+3}) \).
Известен фрагмент последовательности: \( 0, 0, 1, 1, 0, 1 \). Найдите \( s_7, s_8 \) и определите, является ли функция линейной.
Посмотреть решение
Официальное решение:
1. Анализ вида функции: Заданные свойства определяют, как переменные входят в линейную часть функции (через операцию XOR — \(\oplus\)):
• По 1-му свойству переменные \(x_{1}\) и \(x_{4}\) входят в функцию \(f\) только в первой степени. Действительно, пусть \(f = x_{1} g \oplus h\), где \(h\) — часть функции \(f\), не зависящая от \(x_{1}\). Если переменную \(x_{1}\) инвертировать (т.е. \(x_{1} \oplus 1\)), то значение функции \(f\) изменится, и выполняется равенство \((x_{1} \oplus 1) g \oplus h = x_{1} \cdot g \oplus h \oplus 1\). Из этого уравнения следует, что \(g = 1\). Для переменной \(x_{4}\) — аналогично.
• По 2-му свойству в XOR-сумме участвует только одна из переменных \(x_{2}\) или \(x_{3}\) (если бы входили обе, то \(1 \oplus 1 = 0\), и при их одновременном изменении значение функции не изменилось бы).
• Общий вид: \(f = x_{1} \oplus x_{i} \oplus x_{4} \oplus \alpha \cdot x_{2} \cdot x_{3}\), где \(i \in \{2,3\}, \alpha \in \{0,1\}\).

2. Определение параметров по последовательности: Дан отрезок:
\(s_{1} = 0, s_{2} = 0, s_{3} = 1, s_{4} = 1, s_{5} = 0, s_{6} = 1\).
• Для \(s_{5}\): \(f(s_{1},s_{2},s_{3},s_{4}) = f(0,0,1,1) = 0\).
• Для \(s_{6}\): \(f(s_{2},s_{3},s_{4},s_{5}) = f(0,1,1,0) = 1\).
a) Если \(i=2\), то \(f = x_{1} \oplus x_{2} \oplus x_{4} \oplus \alpha \cdot x_{2} \cdot x_{3}\). Тогда для \(s_{5}\): \(0 \oplus 0 \oplus 1 \oplus \alpha \cdot 0 \cdot 1 = 1\). Но по условию \(s_{5} = 0\), значит, в этом случае приходим к противоречию.
b) Если \(i=3\), то \(f = x_{1} \oplus x_{3} \oplus x_{4} \oplus \alpha \cdot x_{2} \cdot x_{3}\). Подставляем заданные числа:
• \(s_{5} = s_{1} \oplus s_{3} \oplus s_{4} \oplus \alpha \cdot s_{2} \cdot s_{3} = 0 \oplus 1 \oplus 1 \oplus \alpha \cdot 0 \cdot 1 = 0\). Условие выполняется.
• \(s_{6} = s_{2} \oplus s_{4} \oplus s_{5} \oplus \alpha \cdot s_{3} \cdot s_{4} = 0 \oplus 1 \oplus 0 \oplus \alpha \cdot 1 \cdot 1 = 1 \oplus \alpha\). Но по условию \(s_{6} = 1\), откуда следует \(\alpha = 0\). Таким образом, \(f = x_{1} \oplus x_{i} \oplus x_{4}\).
Закон генерации: \(s_{k+4} = s_{k} \oplus s_{k+2} \oplus s_{k+3}\).

3. Вычисление:
• \(s_{7} = f(s_{3},s_{4},s_{5},s_{6}) = f(1,1,0,1) = 1 \oplus 0 \oplus 1 = \mathbf{0}\).
• \(s_{8} = f(s_{4},s_{5},s_{6},s_{7}) = f(1,0,1,0) = 1 \oplus 1 \oplus 0 = \mathbf{0}\).
Функция является линейной, так как не содержит произведений переменных.
Ответ: \(s_7 = 0, s_8 = 0\). Функция линейна.
Задание 4 (4 баллов)
В системе используются 6-битные ключи. Ключ считается «слабым», если он удовлетворяет хотя бы одному из условий:
A: начинается на «00»;
B: заканчивается на «11»;
C: содержит ровно 4 единицы.
Найдите общее количество слабых ключей.
Посмотреть решение
Для решения воспользуемся принципом включений-исключений:
\( N(A \cup B \cup C) = |A| + |B| + |C| - (|A \cap B| + |A \cap C| + |B \cap C|) + |A \cap B \cap C| \).

1. Вычислим мощности множеств:
— \( |A| \): вид \( 00xxxx \), \( 2^4 = 16 \) ключей.
— \( |B| \): вид \( xxxx11 \), \( 2^4 = 16 \) ключей.
— \( |C| \): число способов выбрать 6 позиции для 4 единиц — \( \binom{6}{4} = 15 \).

2. Вычислим попарные пересечения:
— \( |A \cap B| \): вид \( 00xx11 \), \( 2^2 = 4 \) ключа.
— \( |A \cap C| \): вид \( 00xxxx \) с 4 единицами. Единственный вариант — \( 001111 \), \( 1 \) ключ.
— \( |B \cap C| \): вид \( xxxx11 \) с 4 единицами. В первых 4 позициях должно быть 2 единицы — \( \binom{4}{2} = 6 \) ключей.

3. Вычислим тройное пересечение:
— \( |A \cap B \cap C| \): вид \( 00xx11 \) с 4 единицами. Только \( 001111 \), \( 1 \) ключ.

4. Итоговый расчет:
\( N = 16 + 16 + 15 - (4 + 1 + 6) + 1 = 47 - 11 + 1 = 37 \).
Ответ: 37
Задание 5 (7 баллов)
Пусть \( p = 2^{13}-1 = 8191 \) — простое число Мерсенна. Докажите, что 2 является квадратичным вычетом по модулю \( p \), и найдите значение \( x \), для которого \( x^2 \equiv 2 \pmod{p} \).
Посмотреть решение
1. Доказательство того, что 2 — квадратичный вычет:
Используем критерий для символа Лежандра \( (\frac{2}{p}) \): число 2 является вычетом тогда и только тогда, когда \( p \equiv 1 \) или \( 7 \pmod 8 \).
Вычислим \( 8191 \pmod 8 \):
\( 8191 = 8000 + 160 + 24 + 7 \equiv 7 \pmod 8 \).
Условие выполняется, значит \( (\frac{2}{p}) = 1 \).

2. Нахождение корня \( x \):
Заметим, что \( p = 8191 = 4 \cdot 2047 + 3 \), то есть \( p \equiv 3 \pmod 4 \).
Для таких чисел существует прямая формула извлечения корня:
\[ x \equiv \pm a^{\frac{p+1}{4}} \pmod p \]
Подставим значения: \( a = 2 \), \( p = 8191 \).
\( x = 2^{\frac{8191+1}{4}} = 2^{\frac{8192}{4}} = 2^{2048} \pmod{8191} \).

3. Упрощение вычислений:
Так как \( p = 2^{13}-1 \), то по определению модуля имеем \( 2^{13} \equiv 1 \pmod{8191} \).
Разделим показатель 2048 на 13:
\( 2048 = 13 \cdot 157 + 7 \).
Тогда:
\[ 2^{2048} = (2^{13})^{157} \cdot 2^7 \equiv 1^{157} \cdot 128 \equiv 128 \pmod{8191} \]
Проверка: \( 128^2 = (2^7)^2 = 2^{14} = 2^{13} \cdot 2 \equiv 1 \cdot 2 = 2 \pmod{8191} \).
Ответ: \( x = 128, x = -128 = 8063 \pmod{8191} \).
ВТОРОЙ ТУР (КРИПТОАНАЛИЗ)
Задача 1. (10 баллов)
Бинарный гамма-генератор состоит из «Нелинейного регистра сдвига с обратной связью» (NLFSR) длины 4. Работа генератора описывается двумя булевыми функциями: обновлением регистра (g) и фильтрацией выхода (f).
  1. Начальное состояние регистра (секретный ключ): \( K = (s_0, s_1, s_2, s_3) \), где \( s_i \in \{0, 1\} \).
  2. Закон обновления: \( s_{t+4} = s_t \oplus (s_{t+1} \cdot s_{t+2}) \oplus 1 \)
  3. Функция выхода: \( z_t = s_t \oplus s_{t+1} \oplus (s_{t+2} \cdot s_{t+3}) \)
Если первые 4 бита гаммы \( Z = (0, 1, 1, 1) \), определите:
а) начальное состояние регистра \( K = (s_0, s_1, s_2, s_3) \);
б) пятый бит гаммы (\( z_4 \)).
Посмотреть решение
Решение:
Для решения составим систему уравнений на основе значений гаммы \( z_0, z_1, z_2, z_3 \):
(1) \( z_0 = s_0 \oplus s_1 \oplus s_2 s_3 = 0 \)
(2) \( z_1 = s_1 \oplus s_2 \oplus s_3 s_4 = 1 \)
(3) \( z_2 = s_2 \oplus s_3 \oplus s_4 s_5 = 1 \)
(4) \( z_3 = s_3 \oplus s_4 \oplus s_5 s_6 = 1 \)

Согласно закону обновления: \( s_{t+4} = s_t \oplus s_{t+1} s_{t+2} \oplus 1 \).
Тогда \( s_5 = s_1 \oplus s_2 s_3 \oplus 1 \).
Из уравнения (1) имеем: \( s_1 \oplus s_2 s_3 = s_0 \).
Подставляя это в выражение для \( s_5 \), получаем инвариант: \( s_5 = s_0 \oplus 1 = \bar{s}_0 \).

Анализ случаев:
1. Пусть \( s_0 = 0 \). Тогда \( s_5 = 1 \).
Из (1) следует \( s_1 = s_2 s_3 \).
Вычислим \( s_4 = s_0 \oplus s_1 s_2 \oplus 1 = 0 \oplus (s_2 s_3) s_2 \oplus 1 = s_2 s_3 \oplus 1 \).
Подставим в (3): \( s_2 \oplus s_3 \oplus s_4 s_5 = s_2 \oplus s_3 \oplus (s_2 s_3 \oplus 1) \cdot 1 = 1 \implies s_2 \oplus s_3 \oplus s_2 s_3 = 0 \).
Это выполняется только при \( s_2 = 0, s_3 = 0 \). Тогда \( s_1 = 0 \).
Проверка по (2): \( z_1 = 0 \oplus 0 \oplus 0 \cdot s_4 = 0 \). Противоречие (должно быть 1).

2. Пусть \( s_0 = 1 \). Тогда \( s_5 = 0 \).
Из (3): \( s_2 \oplus s_3 \oplus s_4 \cdot 0 = 1 \implies s_2 \oplus s_3 = 1 \). Значит, \( s_2 s_3 = 0 \).
Из (1): \( 1 \oplus s_1 \oplus 0 = 0 \implies s_1 = 1 \).
Вычисляем \( s_4 = 1 \oplus 1 \cdot s_2 \oplus 1 = s_2 \).
Из (2): \( 1 \oplus s_2 \oplus s_3 s_4 = 1 \oplus s_2 \oplus s_3 s_2 = 1 \implies s_2(1 \oplus s_3) = 0 \).
Так как \( s_2 \oplus s_3 = 1 \), это возможно только при \( s_2 = 0, s_3 = 1 \).

Результат: \( K = (1, 1, 0, 1) \).
Вычислим \( z_4 \):
\( s_4 = 0, s_5 = 0, s_6 = 1, s_7 = 0 \).
\( z_4 = s_4 \oplus s_5 \oplus s_6 s_7 = 0 \oplus 0 \oplus 0 = 0 \).
Ответ: а) K = (1, 1, 0, 1); б) z4 = 0.
Задача 3. (10 баллов)
Алиса использует систему цифровой подписи Эль-Гамаля. Параметры системы: простое число \( p=23 \), порождающий элемент \( g=5 \). Ее открытый ключ \( y=13 \). При подписи сообщений она совершила ошибку: вместо того чтобы выбирать случайный секретный параметр \( k \) для каждой подписи, она выбирала их связанными: \( k_{i+1} = k_i + 1 \).
Ева перехватила две подписи для одного сообщения (или сообщений с одинаковым хеш-значением \( h \)): Помогите Еве найти секретный ключ Алисы \( x \).
Посмотреть решение
Решение:
Уравнения подписи по модулю \( p-1 = 22 \):
(1) \( 12 k_1 + 20 x \equiv 10 \pmod{22} \)
(2) \( 9(k_1 + 1) + 8 x \equiv 12 \pmod{22} \implies 9 k_1 + 8 x \equiv 3 \pmod{22} \)

Умножим (1) на 3, (2) на 4:
(1') \( 36 k_1 + 60 x \equiv 30 \pmod{22} \implies 14 k_1 + 16 x \equiv 8 \pmod{22} \)
(2') \( 36 k_1 + 32 x \equiv 12 \pmod{22} \implies 14 k_1 + 10 x \equiv 12 \pmod{22} \)

Вычтем (2') из (1'):
\( 6x \equiv -4 \equiv 18 \pmod{22} \).
Сократим на \( \text{gcd}(6, 22) = 2 \):
\( 3x \equiv 9 \pmod{11} \implies x \equiv 3 \pmod{11} \).
Возможные \( x \): 3 или 14.

Проверка по открытому ключу \( 5^x \equiv 13 \pmod{23} \):
\( 5^3 = 125 \equiv 10 \).
\( 5^{14} = (5^7)^2 = 17^2 = 289 \equiv 13 \).
Ответ: x = 14.