1.6Kпросмотров
70.1%от подписчиков
1 декабря 2025 г.
📷 ФотоScore: 1.7K
🔑 #инструменты #offense ➡️Слышали про клептографию? Эта концепция родилась ещё в далёком 1996, но сейчас, почти 30 лет спустя, получила внимание одна из неплохих публичных реализаций атаки из этой области ⬇️ 🧩 monsieurPale/RSA-Backdoor В исследовании, положившем начало клептографии, рассматривается атака "SETUP" (Secretly Embedded Trapdoor with Universal Protection) – грубо говоря – бекдор для алгоритмов, основанных на факторизации; Чуть менее грубо: SETUP — алгоритмическая модификация, благодаря которой возможна генерация ключей, уязвимых к неавторизованной расшифровке, НО вычислительно неотличимых от сгенерированных "чистой" системой; 🧩 ‟Kleptography: Using Cryptography Against Cryptography” (A. Young & M. Yung) 🧩 ‟Kleptography: The unbearable lightness of being mistrustful” #️⃣Нормальная генерация ключей RSA:
1️⃣ Сгенерировать 2 больших простых p и q (≈1024 бит каждый для 2048‑битного ключа)
2️⃣ Вычислить n = p · q
3️⃣ Выбрать публичную экспоненту e (обычно 2¹⁶+1)
4️⃣ Вычислить d, такую что e · d ≡ 1 mod φ(n) при φ(n) = (p–1)(q–1) Публичный ключ: (n, e)
Приватный ключ: d
Шифрование: c = mᵉ mod n
Дешифрование: m = cᵈ mod n #️⃣Генерация ключей через SETUP:
1️⃣ Выбрать 1024-битное простое s и вычислить p = HASH(s) — повторять до тех пор, пока p не станет простым
2️⃣ Зашифровать s с помощью ключа атакующего: c = sᴱ mod N
3️⃣ Выбрать случайное z
4️⃣ Сформировать q такое, что c || z = p · q + r для некоторого произвольного остатка r — повторять, если q не простое
5️⃣ Вычислить n = p · q, задать e и вычислить d как в нормальном алгоритме Результат: нормально выглядящие публичный ключ (n, e) и приватный ключ d — но с бекдором ⚡️ #️⃣Восстановления приватного ключа:
1️⃣ Взять верхние n/2 бита n в качестве u (≈1024 бита)
2️⃣ Определить c₁ = u и c₂ = u + 1 — на случай возможной потери бита при вложении c||z 3️⃣ Расшифровать приватным ключом атакующего D:
s₁ = c₁ᴰ mod N, s₂ = c₂ᴰ mod N 4️⃣ Вычислить потенциальные простые:
p₁ = HASH(s₁), p₂ = HASH(s₂) 5️⃣ Вычислить q₁ = n / p₁ и q₂ = n / p₂ — деление, дающее в результате целочисленное, раскрывает p и q
6️⃣ Восстановить d из (p, q, e) Таким образом атакующий целиком восстанавливает приватный ключ RSA атакуемого ⚡️ ⬜➖⬜➖⬜➖ 🔑 #заметки #web3 ➡️Поверхность такой атаки в мире, где многое базируется на RSA, велика — особенно в связи с популярностью supply chain атак — но позволю себе обратить ваше внимание на применение клептографии в Web3; Казалось, что для восстановления приватного ключа нужно собрать множество подписей — но выяснилось, что достаточно всего 2 для 12 слов или 4 — для 24 (а то и 1 единственной). Тут исследователи рассмотрели подобную атаку с вредоносным hardware кошельком, который использовал бы слабый nonce при подписи: 🧩 ‟Dark Skippy Disclosure” 🧩 ‟DARK SKIPPY DEMO - A Powerful Method For A Malicious Signing Device To Leak Secret Keys” ➡️Самое близкое по смыслу, что случалось в реальной жизни к настоящему времени — это кейс от Kaspersky про перепрошитые кошельки Trezor: они заменяли фразу на одну из 20 предопределённых, а если устанавливался пароль — использовали лишь первый символ: 🧩 ‟Case study: fake hardware cryptowallet” И кейс, когда в сети Bitcoin обнаружили сотни кошельков, опустошённых из-за уязвимости, позволявшей восстановить приватный ключ всего из 1 подписи в связи с генерацией nonce подписи путём конкатенации половины битов хеша сообщения + половины битов ключа (поговаривают, то мог быть бекдор): 🧩 ‟The curious case of the half-half Bitcoin ECDSA nonces” 🧩 kudelskisecurity/ecdsa-polynomial-nonce-recurrence-attack 🧩 ‟Polynonce: An ECDSA Attack and Polynomial Dance” (DEFCON 31) ➡️Много "если б