hensel's_lift

branch and prune

いわゆる分枝限定法で、の半分程度のbit(実験によると大体53%〜が精度良く機能する)が分かっているときに素因数分解できる方法 ↓のコードでは分かっていると行ったbitのうち下位何bitかがエラーのケースに対応している。あと aeroctf と branch_and_prune …

Reconstructing RSA Private Keys from Random Key Bits

https://eprint.iacr.org/2008/510.pdf あたりの一部のbitがわかっている時に polynomial time decisional algorithmでNを素因数分解する [* Lifting solutions mod ] から bitまでわかっている時、bitを推定する。ここで、Hensel's Liftを使って、での解か…

Qiwi-Infosec CTF-2016 | Hensel

n = 1581688906457476363395126526567273673701408932950303338239208333630259409060558913573169944824614765761181142076812143239126525279272150531288099279324952069798370347137241407454006529222527499949838916908947248778974534402378297195202…

DEFCON 2020 quals | notbefoooled

ECDLP で、となる(=anomalous curveとなる)ようにを渡すと適当な原始根 を作ってくれるので、こちらからは を送る。すると向こうはSmart Attackでとなるを復元してくる。この攻撃が失敗するようなパラメータとを選べれば勝ち Uninteded solution python2…

p^n を見かけたら

p-adic number を考える。sageには Zp が用意されていて、例えば みたいな拡大体の上での演算を扱いたいときはGF(p^100)よりも、Zp(p, prec=100) とするのが良い。 https://doc.sagemath.org/html/en/reference/padics/index.html 例えば、 みたいな式が合っ…

HITCON CTF 2022 | easy NTRU

#HITCON_CTF_2022 from Crypto.Util.number import bytes_to_long as b2l from Crypto.Util.number import long_to_bytes as l2b import random Zx.<x> = ZZ[] def convolution(f, g): return (f * g) % (x ^ n-1) def balancedmod(f, q): g = list(((f[i] + q/</x>…

CONFidence CTF 2019 Teaser|Bro, do you even lift?

#CONFidenceCTF2019Teaser #Hensel's_Lift https://ctftime.org/task/7837 lift.sageとout.txtが与えられる。 flag = int(open('flag.txt','r').read().encode("hex"),16) ranges = int(log(flag,2)) p = next_prime(ZZ.random_element(2^15, 2^16)) k = 100…