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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.