21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
RSA ve crypto için kafes (lattice) tabanlı saldırılar — Coppersmith, LLL/BKZ, Boneh-Durfee, Hastad broadcast, Franklin-Reiter, stereotyped message
インストールする前に、エージェントに与えられる指示の中身を確認できます。
CTF crypto kategorisinin en güçlü silahı. Klasik RSA saldırıları (Wiener, Fermat) belirli koşullarda çalışır; lattice saldırıları kısmi bilginin matematiksel olarak yetip yetmediğini sorar ve genelde yeter.
| Senaryo | Saldırı |
|---|---|
Mesajın bir kısmı biliniyor (örn. flag formatı picoCTF{...}) | Coppersmith stereotyped |
e küçük (3, 5, 17) ve m^e sadece biraz n'den büyük | Coppersmith small root |
Aynı m birden fazla n'e (en az e tane) şifrelenmiş | Hastad broadcast |
d küçük ama Wiener çalışmıyor (N^0.25 < d < N^0.292) | Boneh-Durfee |
p'nin yarısından çoğu biliniyor | Coppersmith factor recovery |
İki ilişkili mesaj m1, m2 = m1 + Δ aynı n ile şifrelenmiş | Franklin-Reiter |
| RSA değil ama "modüler denklemler" var | Genel Coppersmith small_roots() |
LLL (Lenstra-Lenstra-Lovász) algoritması, bir kafesin (lattice) "kısa" tabanını polinom zamanda bulur. Bir kafes = {c1*v1 + c2*v2 + ... : ci ∈ Z} formunda tam sayı katsayılı vektör kombinasyonları.
LLL'in sihri: kısa vektörler genelde "küçük çözümleri" kodlar. Bir polinom denklemi f(x) = 0 mod N'in küçük kökü x0 varsa, doğru kafesi kurarak LLL çalıştırıp x0'ı çıkarabilirsin.
Monic, derecesi
dolanf(x) ∈ Z[x]polinomu içinf(x0) ≡ 0 (mod N)olan kökx0aranıyorsa ve|x0| < N^(1/d)ise, polinom zamandax0bulunabilir.
Çıkarımı: Eğer RSA e=3 ise, m^3 = c (mod N) denkleminin küçük m'leri (örn. |m| < N^(1/3)) hızla bulunabilir.
Wiener d < N^0.25 için çalışır. Boneh-Durfee bivariate Coppersmith ile d < N^0.292'ye uzatır. Lattice boyutu büyük olduğu için pratikte d < N^0.27'ye kadar güvenilir.
M.LLL(), M.BKZ().f(x0) = 0 (mod N) mı?Senaryo: Flag formatı picoCTF{XXX_GIZLI_XXX} bilinen. RSA e=3 ile şifrelenmiş.
# sage exploit_stereotyped.sage
from sage.all import *
n = 0x... # modulus
e = 3
c = 0x... # ciphertext
prefix = b'picoCTF{'
suffix = b'}'
# Bilinmeyen uzunluk (denenir)
for unknown_len in range(8, 50):
msg_len = len(prefix) + unknown_len + len(suffix)
# Mesaj = prefix*256^(unknown_len+1) + x*256 + suffix
# şeklinde modüler polinom
known_prefix = int.from_bytes(prefix, 'big') << (8 * (unknown_len + len(suffix)))
known_suffix = int.from_bytes(suffix, 'big')
shift = 8 * len(suffix)
P.<x> = PolynomialRing(Zmod(n))
f = (known_prefix + (x << shift) + known_suffix)^e - c
# Beklenen kök <= 256^unknown_len
X = 2^(8 * unknown_len)
# small_roots üst sınır, epsilon ile dene
roots = f.small_roots(X=X, epsilon=1/30)
if roots:
m = int(roots[0])
flag = prefix + m.to_bytes(unknown_len, 'big') + suffix
print(f'[+] Flag: {flag}')
break
else:
print('[-] Coppersmith başarısız — daha büyük epsilon dene')
Senaryo: Aynı m üç farklı n ile (her biri farklı, e=3 sabit) şifrelenmiş.
# sage exploit_hastad.sage
from sage.all import *
# Toplanan veriler
ns = [n1, n2, n3]
cs = [c1, c2, c3]
e = 3
assert len(ns) >= e, 'En az e tane ciphertext gerekli'
# CRT ile birleştir
N = prod(ns)
M = sum(c * (N // n) * inverse_mod(N // n, n) for c, n in zip(cs, ns)) % N
# Şimdi M = m^e mod N, m küçük olduğu için doğrudan e. kök
m, ok = M.nth_root(e, truncate_mode=True)
assert ok, 'Tam kök değil — broadcast varsayımı yanlış olabilir'
print(f'[+] m = {m}')
print(f'[+] Flag: {int(m).to_bytes((int(m).bit_length() + 7) // 8, "big")}')
# Padding varsa: ci = (ai*m + bi)^e mod ni
# Cohen-Hastad ile multivariate Coppersmith
from sage.all import *
# ... ai, bi, ci, ni biliniyor
# Bkz: https://github.com/jvdsn/crypto-attacks/blob/master/attacks/rsa/hastad_attack.py
Senaryo: e ~ N, Wiener saldırısı başarısız (d > N^0.25), ama d < N^0.292.
# sage exploit_boneh_durfee.sage
# Standart Boneh-Durfee implementasyonu (David Wong / Mikael Aleksanyan versiyonu)
from sage.all import *
def boneh_durfee(N, e, delta=0.28, m=5):
"""
delta: d / N^delta beklenen üst sınır (0.292 teorik max)
m: lattice boyutu (büyük → yavaş ama güçlü)
"""
P.<x, y> = PolynomialRing(ZZ)
A = (N + 1) // 2
pol = 1 + x * (A + y)
# Lattice kur
X = 2 * floor(N^delta)
Y = floor(N^0.5)
# ... (uzun implementasyon, GitHub'dan al)
# https://github.com/mimoo/RSA-and-LLL-attacks
return d
d = boneh_durfee(N, e)
m = pow(c, d, N)
print(f'flag = {int(m).to_bytes(256, "big").strip(b"\\x00")}')
Senaryo: Aynı n, aynı e=3, iki mesaj m1 ve m2 = m1 + 1 (veya bilinen küçük fark).
# sage exploit_franklin_reiter.sage
from sage.all import *
n = ...; e = 3
c1 = ...; c2 = ...
delta = 1 # m2 - m1
R.<x> = PolynomialRing(Zmod(n))
f1 = x^e - c1
f2 = (x + delta)^e - c2
def gcd_mod(a, b):
while b:
a, b = b, a % b
return a.monic()
m = -gcd_mod(f1, f2).coefficients()[0]
print(f'm1 = {m}')
Senaryo: p'nin yüksek bitlerinin (örn. 512 bitin 320'si) sızdı.
# sage exploit_partial_p.sage
from sage.all import *
n = ...; e = 65537; c = ...
p_high = ... # bilinen yüksek bitler (gerisi 0)
unknown_bits = 192 # bilinmeyen düşük bitler
P.<x> = PolynomialRing(Zmod(n))
f = p_high + x
roots = f.small_roots(X=2^unknown_bits, beta=0.4)
if roots:
p = int(p_high + roots[0])
q = n // p
phi = (p - 1) * (q - 1)
d = inverse_mod(e, phi)
m = pow(c, d, n)
print(f'flag = {int(m).to_bytes((int(m).bit_length()+7)//8, "big")}')
# Ubuntu / Debian
sudo apt install sagemath
# Conda (önerilen)
conda create -n sage sage python=3.11
conda activate sage
# Docker (CI'da)
docker run -it -v $PWD:/work sagemath/sagemath
Python-only alternatif (lattice için):
pip install fpylll sympy gmpy2
RSA cycling attack: m^(e^k) = m (mod n) için k küçükse mesaj sızar. Hastad broadcast varyasyonu.
Coppersmith stereotyped — mesajın orta kısmı bilinmiyor. small_roots(X, epsilon) ile çözüldü.
Franklin-Reiter related message. İki mesaj delta = 0x123 farkıyla şifrelenmiş.
small_roots() çağrısı uzun sürer — epsilon=1/30 deneyin, küçük epsilon = büyük lattice = yavaş. Başlangıç değeri olarak 0.05.m parametresi çok küçük (m=3) olursa kafes zayıf, çok büyük (m=12+) RAM/zaman alır. m=5-7 ideal başlangıç.X) doğru tahmin edilmeli — gerçek kök bu sınırı aşıyorsa LLL kökü bulamaz. Önce küçük X dene, başarısızsa kademeli büyüt.gcd(x0, N) = 1 varsayımına dayanır. Aksi halde direkt çarpanlama.RSA challenge → rsa-wiener-attack başarısız
→ rsa-close-primes başarısız
→ factordb yok
→ buraya gel (lattice-attacks)
├── Mesaj kısmi biliniyor → Coppersmith stereotyped
├── Aynı m, farklı n → Hastad broadcast
├── d küçük (Wiener çalışmadı ama yakın) → Boneh-Durfee
├── İki ilişkili mesaj → Franklin-Reiter
└── p kısmi biliniyor → Coppersmith partial factor
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
AES CBC/ECB modlarına karşı kriptografik bütünlük saldırıları — bit flipping, IV manipulation, ECB cut-and-paste, CBC-MAC length extension, IV reuse
日本語の概要は準備中です。原文の説明を表示しています。
AES-GCM ve ChaCha20-Poly1305 nonce yeniden kullanımı saldırısı — GF(2^128) polinom kök bulma ile Hash Key kurtarma ve MAC sahteciliği.
日本語の概要は準備中です。原文の説明を表示しています。
tespit etmeabnormal access patterns in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics. Identifies after-hours bulk downloads, access from new IP addresses, unusual API calls (GetObject spikes), and potential data exfiltration using statistical baselines and time-series anomaly Tespit.
日本語の概要は準備中です。原文の説明を表示しています。
Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to tespit etmereentrancy, integer overflow, access control, and other vulnerability classes before Dağıt:ment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
Parses Kubernetes API server audit logs (JSON lines) to tespit etmeexec-into-pod, secret access, RBAC modifications, privileged pod creation, and anonymous API access. Builds threat Tespit rules from audit event patterns. Use investigating yaparken Kubernetes cluster compromise or building k8s-specific SIEM Tespit rules.
日本語の概要は準備中です。原文の説明を表示しています。