Похожие презентации:
ПРОТОКОЛ SIGNAL
1. ПРОТОКОЛ SIGNAL
Выполил студент гр. КИ22-02/1бПантилеев Артём Владимирович
2. Актуальность
• Защищает переписку более 2 миллиардов пользователей по всему миру.• Лежит в основе популярных мессенджеров: WhatsApp, Signal, Facebook
Messenger (режим секретных бесед), Skype (Private Conversations).
• Признан "золотым стандартом" сквозного шифрования.
• Прошел множество независимых криптографических аудитов.
3. Преимущества протокола
• Каждое отдельное сообщение шифруется уникальным ключом.• Система обладает свойством самовосстановления после возможной компрометации.
• Отсутствие единой точки отказа - нет центрального сервера ключей, который можно
атаковать.
• Полная открытость исходного кода и алгоритмов для независимой проверки.
• Многократные успешные независимые криптографические аудиты.
4. Фундамент работы алгоритма
• Используемая кривая: Curve25519Уравнение: y² = x³ + 486662x² + x mod 2²⁵⁵ - 19
Базовая точка G(x, y): фиксированная точка на кривой
Приватный ключ: a = случайное число(256_бит)
Публичный ключ: A = a × G
• Метод Double Ratchet
Double Ratchet — это механизм, который периодически обновляет ключи с помощью новых
• обменов Диффи-Хеллмана. Срабатывает при получении нового ключи.
Шаг 1: Боб генерирует новые ключи
Шаг 1: Алиса получает новый ключ Боба из сообщения
B_priv_new, B_pub_new
Шаг 2: Алиса вычисляет тот же секрет
Шаг 2: Боб вычисляет секрет
secret_alice = ECDH(A_priv_old, B_pub_new) # Алиса_стары
й × Боб_новый
secret_bob = ECDH(B_priv_new, A_pub_old) # Боб_новый × Алиса_старый
Шаг 3: Боб создает новые ключи
new_RK, new_CK = KDF(old_RK, secret_bob)
secret_alice == secret_bob
Шаг 3: Алиса создает те же новые ключи
new_RK, new_CK = KDF(old_RK, secret_alice)
5. Функция KDF(Key Derivation Function)
Фаза 1:PRK = HMAC-SHA256(K, M)
! HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m)),
K — ключ, m — сообщение, H — хеш-функция (в Signal используется SHA-256), ⊕ — операция XOR, || —
конкатенация
opad, ipad — константы
Фаза 2:
OKM = HKDF-Expand(PRK, info, L)
! Для i от 1 до N:
T(i) = HMAC(PRK, T(i-1) || info || i) T = T || T(i), info – контекстная информация о назначении ключа, i –номер
итерации
OKM = первые L байт из T
6. Алгоритм работы протокола
• Подготовка. Создание ключейIK = ik_priv, ik_pub
# 0 < ik_priv < n, n = 2²⁵² + 27742317777372353535851937790883648493 (max
элементов в группе), ik_pub = ik_priv × G
SPK = spk_priv, spk_pub
OPK = opk_priv, opk_pub
• Первое рукопожатие (X3DH)
secret = KDF(
ECDH(IK_A_priv, SPK_B_pub) ||
CDH(EK_priv, IK_B_pub) ||
ECDH(EK_priv, SPK_B_pub) ||
ECDH(EK_priv, OPK_B_pub)), EK_priv - одноразовый ключ Алисы
• Обмен сообщениями (Double Ratchet)
Почему технически алгоритм криптостойкий?
1. Легко посчитать: A = a × G (зная a найти A)
2. Невозможно обратить: зная A найти a (задача дискретного логарифма)
3. Легко посчитать: KDF(input), но невозможно обратить: зная output найти input
7. Надежность протокола
Forward Secrecy: Взлом одного ключа ≠ чтение всех сообщенийPost-Compromise Security: Безопасность после возможного взлома
Открытость: Алгоритмы проверены независимыми экспертами
Эффективность: Работает на мобильных устройствах