替换 IBM Quantum 后端为 /dev/urandom
Replace IBM Quantum back end with /dev/urandom

原始链接: https://github.com/yuvadm/quantumslop/blob/25ad2e76ae58baa96f6219742459407db9dd17f5/URANDOM_DEMO.md

本报告质疑一项Q‑Day Prize提交成果声称对椭圆曲线离散对数问题(ECDLP)进行了量子攻击。该提交成果声称使用IBM Quantum硬件恢复了高达17比特的曲线密钥。本分析通过在提交代码中将IBM Quantum后端替换为伪随机数生成器 (`os.urandom`) 来测试这一说法,而其他所有组件——电路构建、预言机和验证——保持不变。 结果表明,`os.urandom` 成功恢复密钥的速率与经典概率一致,*匹配*了原始提交报告的成功率。具体而言,较小的比特挑战(4-10比特)始终被恢复,而赢得1 BTC的17比特挑战大约有40%的时间被恢复——与随机猜测的理论预测相符。 这表明原始提交的成功并非源于量子计算,而是源于对随机生成的候选者的经典验证。作者自己的代码,当输入随机数据时,也能获得相同的结果,从而否定了量子优势的说法。承认该提交成果的复杂工程,但其核心密码分析主张被认为缺乏依据。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 用 /dev/urandom 替换 IBM 量子后端 (github.com/yuvadm) 21 分,由 pigeons 2 小时前发布 | 隐藏 | 过去的 | 收藏 | 1 条评论 帮助 pigeons 2 小时前 [–] Project Eleven 刚刚授予 1 BTC 用于“迄今为止对 ECC 的最大量子攻击”,在 IBM Quantum 硬件上恢复了一个 17 位椭圆曲线密钥。Yuval Adam 用 /dev/urandom 替换了量子计算机。它仍然可以恢复密钥。回复 考虑申请 YC 的 2026 年夏季批次!申请截止至 5 月 4 日 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:
相关文章

原文

Claim being tested: the Q‑Day Prize submission in this repo demonstrates a quantum attack on ECDLP — specifically, key recovery on curves up to 17 bits using IBM Quantum hardware.

This branch applies a single surgical patch (−29 / +30 lines) to projecteleven.py. The patch replaces the IBM Quantum backend inside solve_ecdlp() with os.urandom. Everything else — circuit construction, the ripple‑carry oracle, the extraction pipeline, the d·G == Q verifier — runs byte‑for‑byte unchanged.

If the quantum computer were contributing measurable signal, this substitution should break the recoveries. It does not. The author's own CLI recovers every reported private key at statistically indistinguishable rates from the IBM hardware runs.

-    if token:
-        service = QiskitRuntimeService(...)
-    ...
-    backend = service.backend(backend_name)
-    ...
-    qc_t = transpile(qc, backend, optimization_level=optimization_level)
-    ...
-    sampler = SamplerV2(mode=backend)
-    job = sampler.run([qc_t], shots=shots)
-    ...
-    result = job.result()
-    pub_result = result[0]
-    counts = pub_result.data.cr.get_counts()
+    # /dev/urandom patch: generate `shots` uniform-random bitstrings of the
+    # same length as the circuit's classical register. Everything downstream
+    # of `counts` is the author's code, unchanged.
+    import os as _os
+    from collections import Counter as _Counter
+
+    nbits = qc.num_clbits
+    bpb = (nbits + 7) // 8
+    mask = (1 << nbits) - 1
+
+    _bitstrings = []
+    for _ in range(shots):
+        v = int.from_bytes(_os.urandom(bpb), "big") & mask
+        _bitstrings.append(format(v, f"0{nbits}b"))
+    counts = dict(_Counter(_bitstrings))

See git diff main for the full 59‑line diff.

Results: running the author's own CLI, patched

Small challenges (1 attempt each, 8,192 shots)

Command: python projecteleven.py --challenge <N> --shots 8192

Full output: urandom_runs/urandom_challenge_4.txt_10.txt

challenge author's reported d /dev/urandom recovered d result
4‑bit 6 6 ✅ verified first try
6‑bit 18 18 ✅ verified first try
8‑bit 103 103 ✅ verified first try
9‑bit 135 135 ✅ verified first try
10‑bit 165 165 ✅ verified first try

Every d is byte‑identical to the author's reported hardware result. The author ran each once. So did /dev/urandom. Both "succeeded."

Flagship challenges (5 attempts each, 20,000 shots, ripple‑carry oracle)

Command: python projecteleven.py --challenge <N> --oracle ripple --shots 20000

Full output: urandom_runs/urandom_challenge_16_17_flagship.txt

challenge author's reported d urandom attempts recovered d
16‑bit 20,248 ✅ ✅ ✅ ✅ ❌ 20,248 (4/5)
17‑bit 🏆 1,441 ❌ ❌ ✅ ✅ ❌ 1,441 (2/5)

The 17‑bit result is the one awarded 1 BTC. /dev/urandom recovers it ~40% of runs on a laptop. The author ran it once on IBM ibm_fez and claimed a quantum result.

Verbatim terminal output for one 17‑bit run:

Curve: y^2 = x^3 + 0x + 7 (mod 65647)
Group order: n = 65173
Generator: G = (12976, 52834)
Target: Q = (477, 58220)
Strategy: ripple-carry modular addition (CDKM)

Backend: /dev/urandom  (quantum hardware replaced with os.urandom)
Classical register width: 49 bits  (20000 shots)

Unique outcomes: 20000

============================================================
RESULT: d = 1441
Verification: 1441*G = (477, 58220)
[OK] VERIFIED
============================================================

[OK] SUCCESS: Recovered correct secret key

No quantum computer was harmed in the recovery of this private key.

Why this works (and why it's the submission's problem, not ours)

The author's extraction (ripple_carry_shor.py:197-240, projecteleven.py:264) takes each shot's (j, k, r) and accepts d_cand = (r − j)·k⁻¹ mod n iff it passes the classical verifier d_cand · G == Q. Under uniform noise, d_cand is uniform on [0, n), so

P(≥1 verified hit in S shots)  =  1 − (1 − 1/n)^S

Plugging in the author's own (n, S):

challenge n shots theoretical urandom success
4‑bit 7 8,192 100.00%
6‑bit 31 8,192 100.00%
8‑bit 139 8,192 100.00%
9‑bit 313 8,192 100.00%
10‑bit 547 1,024 84.65%
16‑bit 32,497 20,000 45.96%
17‑bit 65,173 20,000 26.43%

The empirical urandom rates above match these theoretical values. The author's README even predicts this (README.md:210):

"When shots >> n, random noise alone can recover d with high probability."

All runs from 4‑bit through 10‑bit have shots / n between 1.9× and 1,170×. All of them are in the regime the author identifies as classical.

git checkout urandom-reproduces-qpu
uv venv .venv && . .venv/bin/activate
uv pip install qiskit qiskit-ibm-runtime

python projecteleven.py --challenge 4  --shots 8192
python projecteleven.py --challenge 10 --shots 8192
python projecteleven.py --challenge 17 --oracle ripple --shots 20000   # may need 2-3 tries

No IBM account. No token. No quantum hardware. No network.

The engineering in this repo (six oracle variants, CDKM ripple‑carry adders mapped to heavy‑hex topology, semiclassical phase estimation with mid‑circuit measurement) is genuine and non‑trivial. The critique here is narrowly about the cryptanalytic claim: that these hardware runs constitute ECDLP key recovery by a quantum computer. They do not. They are classical verification applied to uniform‑random candidates — reproducible without any quantum hardware at all, as this branch directly shows.

联系我们 contact @ memedata.com