เปลี่ยน IBM Quantum backend เป็น /dev/urandom
(github.com/yuvadm)- แม้จะเปลี่ยนเฉพาะ IBM Quantum backend เป็น
os.urandomก็ยังสามารถทำการกู้คืน private key ซ้ำได้ โดยยังคงโครงสร้างวงจร, oracle, pipeline การสกัดผล และตัวตรวจสอบd·G == Qไว้เหมือนเดิม - ขอบเขตการแก้ไขมีเพียง เปลี่ยน 59 บรรทัด ใน
projecteleven.pyโดยลบการรัน backend และการเก็บผลลัพธ์ออก แล้วสร้าง สตริงบิตสุ่มแบบสม่ำเสมอ ให้ตรงกับความกว้างของ classical register จำนวนshotsครั้ง เพื่อส่งต่อไปยังขั้นตอนถัดไปเดิม - ตั้งแต่ 4 บิตถึง 10 บิต การรันด้วย
/dev/urandomกู้คืนค่าdที่ ตรงกันทุกไบต์ กับผลฮาร์ดแวร์ที่มีการรายงานไว้ และที่ 16 บิตกับ 17 บิต ก็สำเร็จในการกู้คืน 4 ใน 5 ครั้ง และ 2 ใน 5 ครั้งตามลำดับ - ลอจิกการสกัดผลจะรับค่า
d_cand = (r − j)·k⁻¹ mod nที่คำนวณจากแต่ละ shot เฉพาะเมื่อมันผ่าน ตัวตรวจสอบแบบคลาสสิก เท่านั้น และเอกสารอธิบายอัตราความสำเร็จของ/dev/urandomด้วยสูตรP(≥1 verified hit in S shots) = 1 − (1 − 1/n)^S - แม้จะยังคงมี วิศวกรรมที่ไม่ธรรมดา เช่น oracle หกแบบ, การแมปแบบ heavy-hex และ semiclassical phase estimation แต่ขอบเขตของคำวิจารณ์ในเอกสารถูกจำกัดไว้ที่ข้ออ้างด้าน cryptanalysis โดยแสดงให้เห็นว่าผลการรันบนฮาร์ดแวร์สามารถทำซ้ำได้ด้วยการตรวจสอบแบบคลาสสิก ไม่ใช่การกู้คืนด้วยควอนตัม
diff
- การเปลี่ยนแปลงทั้งหมดใน
projecteleven.pyมีขนาด −29 / +30 lines โดยลบส่วนการเริ่มต้นบริการ IBM Quantum, การรัน backend, การเรียก sampler และการเก็บผลลัพธ์ของงาน แล้วแทนที่ด้วยการสร้างcountsแบบอิงสุ่ม - โค้ดที่เพิ่มเข้ามาจะอ่านความยาวของ classical register ของวงจร แล้วสร้าง สตริงบิตสุ่มแบบสม่ำเสมอ ที่มีจำนวนบิตเท่ากันจำนวน
shotsครั้ง จากนั้นนับรวมด้วยCounterและส่งต่อไปยังขั้นตอนถัดไปเดิมnbits = qc.num_clbitsbpb = (nbits + 7) // 8mask = (1 << nbits) - 1- ในแต่ละ shot จะสร้างค่าด้วย
int.from_bytes(_os.urandom(bpb), "big") & maskแล้วแปลงเป็นสตริงเลขฐานสองตามความกว้างที่กำหนด
- รายการเปลี่ยนแปลงครบทั้ง 59 บรรทัดดูได้ที่
git diff main
ผลลัพธ์: การรัน CLI ของผู้เขียนบนสถานะที่แพตช์แล้ว
- ใช้คำสั่ง CLI เดิมทุกอย่างเหมือนเดิม เพียงตรวจสอบว่ากู้คืน private key ได้หรือไม่จากผลลัพธ์ที่มาจาก
/dev/urandomแทนฮาร์ดแวร์ - ตารางในเอกสารเปรียบเทียบค่า
dที่ ผู้เขียนรายงานไว้ กับค่าdที่กู้คืนได้จาก/dev/urandomโดยตรง -
ชุดทดสอบขนาดเล็ก, ลองอย่างละ 1 ครั้ง, 8,192 shots
- คำสั่งรันคือ
python projecteleven.py --challenge <N> --shots 8192 - เอาต์พุตทั้งหมดต่อเนื่องตั้งแต่
urandom_runs/urandom_challenge_4.txtไปจนถึง_10.txt - สำหรับทุกกรณีตั้งแต่ 4 บิตถึง 10 บิต ค่า
dที่/dev/urandomกู้คืนได้ ตรงกันทุกไบต์ กับผลฮาร์ดแวร์ที่ผู้เขียนรายงานไว้- 4-bit: 6 → 6, ผ่านการตรวจสอบตั้งแต่ครั้งแรก
- 6-bit: 18 → 18, ผ่านการตรวจสอบตั้งแต่ครั้งแรก
- 8-bit: 103 → 103, ผ่านการตรวจสอบตั้งแต่ครั้งแรก
- 9-bit: 135 → 135, ผ่านการตรวจสอบตั้งแต่ครั้งแรก
- 10-bit: 165 → 165, ผ่านการตรวจสอบตั้งแต่ครั้งแรก
- ตามเอกสาร แต่ละ challenge ถูกรันหนึ่งครั้ง และ
/dev/urandomก็ถูกรันหนึ่งครั้งเช่นกัน โดยทั้งคู่ สำเร็จ
- คำสั่งรันคือ
-
ชุดทดสอบตัวแทน, อย่างละ 5 ครั้ง, 20,000 shots, ripple-carry oracle
- คำสั่งรันคือ
python projecteleven.py --challenge <N> --oracle ripple --shots 20000 - เอาต์พุตทั้งหมดถูกรวบรวมไว้ใน
urandom_runs/urandom_challenge_16_17_flagship.txt - ใน challenge 16 บิต
/dev/urandomกู้คืนd = 20,248ที่ผู้เขียนรายงานไว้ได้ 4 จาก 5 ครั้ง - ใน challenge 17 บิต
/dev/urandomกู้คืนd = 1,441ที่ผู้เขียนรายงานไว้ได้ 2 จาก 5 ครั้ง - เอกสารระบุว่าผลลัพธ์ 17 บิตคือรายการที่ได้รับ 1 BTC และ
/dev/urandomกู้คืนได้บนโน้ตบุ๊กในราว 40% ของการรัน - เอกสารระบุว่าผู้เขียนรันรายการนี้หนึ่งครั้งบน IBM
ibm_fezแล้วอ้างว่าเป็นผลลัพธ์จากควอนตัม - มีการแนบเอาต์พุตเทอร์มินัลตัวอย่างของการรัน 17 บิตไว้ครบถ้วน
- เส้นโค้ง:
y^2 = x^3 + 0x + 7 (mod 65647) - ลำดับของกรุป:
n = 65173 - ตัวกำเนิด:
G = (12976, 52834) - จุดเป้าหมาย:
Q = (477, 58220) - กลยุทธ์:
ripple-carry modular addition (CDKM) - backend:
/dev/urandom - ความกว้างของ classical register:
49 bits 20000 shotsที่Unique outcomes: 20000- ผลลัพธ์:
d = 1441 - การตรวจสอบ:
1441*G = (477, 58220) [OK] VERIFIED,[OK] SUCCESS: Recovered correct secret key
- เส้นโค้ง:
- คำสั่งรันคือ
ทำไมผลลัพธ์แบบนี้ถึงเกิดขึ้น
- ลอจิกการสกัดผลอ้างอิงจาก
ripple_carry_shor.py:197-240และprojecteleven.py:264โดยรับ(j, k, r)ของแต่ละ shot มาคำนวณd_cand = (r − j)·k⁻¹ mod nจากนั้นจะยอมรับเฉพาะค่าที่ผ่าน ตัวตรวจสอบแบบคลาสสิกd_cand · G == Q - เอกสารสมมุติว่าเมื่ออยู่ภายใต้สัญญาณรบกวนแบบสม่ำเสมอ
d_candจะมีการกระจายแบบสม่ำเสมอในช่วง[0, n)และให้ความน่าจะเป็นที่จะเจอการตรวจสอบสำเร็จอย่างน้อยหนึ่งครั้งในSshots ดังนี้P(≥1 verified hit in S shots) = 1 − (1 − 1/n)^S
- เมื่อนำค่า
(n, S)จากเอกสารไปแทนในสูตร อัตราความสำเร็จเชิงทฤษฎีของ/dev/urandomจะเป็นดังนี้- 4-bit:
n = 7,shots = 8,192,100.00% - 6-bit:
n = 31,shots = 8,192,100.00% - 8-bit:
n = 139,shots = 8,192,100.00% - 9-bit:
n = 313,shots = 8,192,100.00% - 10-bit:
n = 547,shots = 1,024,84.65% - 16-bit:
n = 32,497,shots = 20,000,45.96% - 17-bit:
n = 65,173,shots = 20,000,26.43%
- 4-bit:
- เอกสารระบุว่าอัตราความสำเร็จเชิงประจักษ์ของ
/dev/urandomที่วัดได้ข้างต้น สอดคล้องกับค่าทฤษฎีนี้ - เอกสารระบุว่าใน
README.md:210ของ repository เดียวกัน มีข้อความนี้อยู่แล้ว"When shots >> n, random noise alone can recover d with high probability."
- สำหรับทุกการรันตั้งแต่ 4 บิตถึง 10 บิต อัตราส่วน
shots / nอยู่ระหว่าง 1.9× ถึง 1,170× และเอกสารระบุว่าช่วงทั้งหมดนี้อยู่ในเงื่อนไขที่ผู้เขียนเองก็จัดว่าเป็นช่วงแบบคลาสสิก
วิธีทำซ้ำ
- สามารถทำซ้ำผลลัพธ์ได้ด้วยขั้นตอนต่อไปนี้บน branch และ environment เดียวกัน
git checkout urandom-reproduces-qpuuv venv .venv && . .venv/bin/activateuv pip install qiskit qiskit-ibm-runtime
- ตัวอย่างคำสั่งรันมีดังนี้
python projecteleven.py --challenge 4 --shots 8192python projecteleven.py --challenge 10 --shots 8192python projecteleven.py --challenge 17 --oracle ripple --shots 20000 # may need 2-3 tries
- เอกสารระบุว่าไม่จำเป็นต้องมี บัญชี IBM, โทเคน, ฮาร์ดแวร์ควอนตัม หรือ เครือข่าย
ข้อสังเกตและขอบเขต
- ตัว implementation ของ repository เองถูกประเมินว่าเป็น วิศวกรรมจริงและไม่ธรรมดา
- มี oracle หลากหลายรูปแบบอยู่หกแบบ
- มีการแมปตัวบวกแบบ CDKM ripple-carry เข้ากับโทโพโลยี heavy-hex
- ใช้ semiclassical phase estimation ที่มี mid-circuit measurement
- ขอบเขตของคำวิจารณ์จำกัดอยู่ที่ ข้ออ้างด้าน cryptanalysis
- ข้อสรุปของเอกสารคือ การรันบนฮาร์ดแวร์นี้ไม่ใช่การกู้คืนคีย์ ECDLP โดยคอมพิวเตอร์ควอนตัม แต่เป็น การตรวจสอบแบบคลาสสิกต่อ candidate แบบสุ่มสม่ำเสมอ และอย่างที่ branch นี้แสดงให้เห็น มันสามารถทำซ้ำได้เหมือนเดิมโดยไม่ต้องใช้ฮาร์ดแวร์ควอนตัม
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ดังนั้นถึงภายนอกจะให้ผลลัพธ์ที่ "ถูกต้อง" แต่เหตุผลอาจผิดไปคนละเรื่องเลย ด้วยเหตุนี้ การแยกตัวประกอบจำนวนเต็มขนาดเล็กหรือกรณี ECDLP ขนาดเล็กจึงไม่เหมาะจะใช้เป็นเบนช์มาร์กวัดความก้าวหน้าของควอนตัมคอมพิวติง
ผมเคยเตือนฝั่ง project11 ไว้แล้วว่าเรื่องแบบนี้จะเกิดขึ้น สุดท้ายผมคิดว่าพวกเขาจะให้บิตคอยน์กับคนที่ปกปิดความจริงได้เก่งที่สุดว่าคอมพิวเตอร์ควอนตัมไม่ได้มีส่วนช่วย และก็เป็นไปได้มากว่าคนส่งผลงานเองก็หลอกตัวเองอยู่เหมือนกัน ดูเหมือนพวกเขาจะไม่ได้รับเรื่องนี้อย่างจริงจัง
[1]: https://sigbovik.org/2025/proceedings.pdf#page=146
/dev/urandomก็ยังกู้กุญแจได้เหมือนเดิมประวัติส่วนตัวก็อยู่สาย enterprise software, full-stack architecture, cloud native, solution architecture และ sales engineering ส่วนประวัติ commit ดูแล้วนี่แทบจะเป็นงานแบบvibe coded: https://github.com/GiancarloLelli/quantum
การกู้คืนกุญแจ ECC 17 บิต ทุกวันนี้บนคอมพิวเตอร์แบบคลาสสิกก็ brute force ได้สบายมาก
สมบูรณ์แบบ
ผมไม่แน่ใจว่าผมมองต่างจากคนอื่นไหม แต่ดูยังไงนั่นก็คือ
tของ quan(tumslop) ชัด ๆนี่มันศิลปะจริง ๆ
แอบขยะแขยงนิด ๆ
ยังมีผลลัพธ์ dequantized อื่น ๆ ที่เพิ่งออกมาด้วย: https://arxiv.org/abs/2604.21908
ถ้าคอมพิวเตอร์ควอนตัมเป็นหัวใจสำคัญ พอเปลี่ยนเป็น RNG แล้วก็ควรตอบผิด หรืออย่างน้อยความเร็วในการลู่เข้าก็ควรช้าลง แต่ผลกลับเหมือนเดิมทุกอย่าง แปลว่าลอจิกที่แท้จริงอยู่ฝั่งคลาสสิกทั้งหมด และ QC ก็แค่เพิ่ม noise เข้าไปเท่านั้น
ถ้าผลลัพธ์แยกจากการเดาแบบสถิติไม่ได้ สุดท้ายมันก็ดูเหมือนแค่สร้างเครื่อง Rube Goldbergที่ซับซ้อนเท่านั้น
พวกต้มตุ๋นสามารถลากเหรียญเก่าที่เจ๊งไปแล้วกลับมา หรือสร้างเหรียญใหม่ขึ้นมา จากนั้นก็กว้านซื้อหรือ mint เอาไว้ แล้วเอาML-DSAมาติดป้ายว่าเป็น quantum-safe เพื่อปั่น shitcoin ก่อนจะเทขายทิ้ง
สักวันนักลงทุนรายย่อยที่ข้อมูลน้อยกว่านี้ก็คงเริ่มรู้ทัน แต่เอาจริงตอนนี้ผมยังไม่แน่ใจด้วยซ้ำว่ามุกนี้ได้ผลกับใครบ้าง
ขนาด Google เองก็ยังพิสูจน์ไม่ได้ว่าคอมพิวเตอร์ควอนตัมของตัวเองทำงานได้จริง แถมยังต้องทำให้อัลกอริทึมอ่อนลงแบบสุด ๆ จนเหลือระดับ17 บิตเท่านั้น
https://blog.google/innovation-and-ai/technology/research/quantum-echoes-willow-verifiable-quantum-advantage/
เราน่าจะได้เห็นการทุ่มเงินมหาศาลอย่างไร้เหตุผลไปกับเครื่องสร้างเลขสุ่มมูลค่า 1 หมื่นล้านดอลลาร์ที่ไม่มีใครอธิบายได้ว่าคืออะไร