【免费下载链接】SimQNA network-layer simulator for the quantum network investigation项目地址https://gitcode.com/gh_mirrors/sim/SimQN点击查看免费下载SimQN 是一款开源的量子网络离散事件仿真器Python 库内置了完整的 BB84 量子密钥分发QKD协议栈。本教程面向新手带你用不到 30 行 Python 代码搭建一个可运行的 BB84 量子密钥分发仿真并对示例代码逐行讲解帮你快速掌握量子密钥分发网络仿真的核心流程。一、认识 SimQN为什么用它做 BB84 仿真SimQNSimulator for Quantum Networks采用离散事件驱动架构核心模块分为四层模块作用BB84 仿真中对应qns.simulator离散事件调度核心Simulator、Event驱动整个协议时间推进qns.entity量子节点、量子信道、经典信道、量子存储器Alice/Bob 节点与光纤链路qns.models量子比特与纠缠的物理模型量子态、噪声、门四态编码、退相干噪声qns.network拓扑生成、路由、协议应用BB84SendApp / BB84RecvApp对新手最友好的地方在于BB84 协议已经内置。你不需要自己实现基矢比对、误码估计、CASCADE 纠偏和隐私放大只要把 BB84SendApp发送方应用和 BB84RecvApp接收方应用装到节点上仿真器会自动跑完整个协议。二、SimQN 安装教程3 步完成环境搭建✅方式一pip 一键安装稳定版推荐pip3 install -U qns依赖非常轻只需numpy和pandas见 requirements.txtPython 3.7 以上即可。✅方式二从源码安装开发版git clone https://gitcode.com/gh_mirrors/sim/SimQN cd SimQN pip3 install setuptools wheel python3 setup.py develop 进阶若追求大规模仿真性能可用 Cython 编译加速版python3 setup-cython.py bdist_wheel详见 docs/source/install.rst 与 setup-cython.py。三、5 分钟搭建 BB84 量子密钥分发仿真附代码逐行讲解下面这份代码基于官方示例 examples/simple_bb84.py 精简而来场景为Alicen1与 Bobn2之间 10 km 光纤BB84 以 1000 bps 速率持续 10 秒。import numpy as np from qns.entity.cchannel.cchannel import ClassicChannel from qns.entity.qchannel.qchannel import QuantumChannel from qns.entity import QNode from qns.simulator.simulator import Simulator from qns.network.protocol.bb84 import BB84SendApp, BB84RecvApp, KEY_BLOCK_SIZE light_speed 299791458 # 光速 m/s用于计算链路延迟 def drop_rate(length): # 光纤损耗模型0.2 dB/km return 1 - np.exp(-length / 50000) length 10000 # 链路长度 10 km s Simulator(0, 10, accuracy10000000000) # 仿真 0~10 秒 n1 QNode(namen1) # Alice密钥发送方 n2 QNode(namen2) # Bob密钥接收方 qlink QuantumChannel(namel1, delaylength / light_speed, drop_ratedrop_rate(length)) clink ClassicChannel(namec1, delaylength / light_speed) n1.add_cchannel(clink); n2.add_cchannel(clink) n1.add_qchannel(qlink); n2.add_qchannel(qlink) sp BB84SendApp(n2, qlink, clink, send_rate1000) # 发送方应用 rp BB84RecvApp(n1, qlink, clink) # 接收方应用 n1.add_apps(sp) n2.add_apps(rp) n1.install(s) n2.install(s) s.run() print(key blocks:, len(sp.key_pool), len(rp.key_pool))逐行讲解第 1 步导入模块QuantumChannel传输量子比特的信道支持delay延迟和drop_rate丢失率两个物理参数ClassicChannel传输经典比特的信道BB84 的后处理基矢比对、CASCADE 纠偏等全靠它Simulator离散事件调度器是仿真的心跳BB84SendApp/BB84RecvAppqns/network/protocol/bb84.py 中封装好的 BB84 协议端点。第 2 步信道物理参数delaylength / light_speed10 km 光纤的传播时延约 50 μs严格按光速计算drop_rate示例采用 0.2 dB/km 标准单模光纤衰减模型。10 km 处损耗约1 - e^(-0.2) ≈ 18.1%即每 100 个光子约丢失 18 个——这正是真实 QKD 系统的核心瓶颈四态编码的量子态0、1、、−定义在 qns/models/qubit/const.py。第 3 步连接节点与信道每条信道必须同时add到两端的QNode上表示物理链路两端各自插好线。第 4 步挂载 BB84 应用易错点⚠️BB84SendApp(n2, ...)的第一个参数是对端节点destination所以发送应用要装到n1上n1.add_apps(sp)同理BB84RecvApp(n1, ...)装到n2上send_rate1000表示每秒发送 1000 个量子比特即每 1 ms 一个发送方通过事件链式调度自动持续发送。第 5 步安装并运行n1.install(s)会把节点及其上的应用接入仿真器并在安装时注入第一个发送量子比特事件见 BB84SendApp.install。s.run()之后事件队列驱动整个协议自动运转无需任何手动循环。第 6 步读取最终密钥key_pool是双方各自的密钥池每KEY_BLOCK_SIZE512 bit位打包成一块以该密钥块的 MD5 值为键存储。正常情况下两端块数一致密钥逐位相同。四、BB84 协议仿真流程详解从量子比特到最终密钥运行s.run()后SimQN 内部按下面五步自动完成完整 QKD 流程对应 bb84.py 中的 5 种经典数据包量子比特传输与随机测量发送方从 0/1//- 四态中随机选一个发送send_qubit接收方随机选 Z 或 X 基测量并记录结果。基矢比对Sifting双方通过PACKET_CHECK_BASIS包交换所选基矢基矢一致的比特保留为原始密钥约能留下 1/2 的比特。误码率估计随机牺牲约 20%ratio_for_estimating_error0.2的原始密钥比特公开比对得到 QBER。CASCADE 纠偏双方用逐次二分的奇偶校验对话定位并修正错误比特块PACKET_CASCADE包最多迭代max_cascade_round5轮块大小每轮翻倍。验证与隐私放大用 MD5 校验确认纠偏成功PACKET_CHECK_ERROR随后双方用同一个随机Toeplitz 矩阵压缩密钥PACKET_PRIVACY_AMPLIFICATION压缩量由泄露比特数bit_leak和安全参数security0.05决定最终得到安全密钥。 物理噪声方面QubitWithError 采用集体旋转噪声模型噪声角度随链路长度线性增大以 50 km 为参考尺度因此链路越长估计出的误码率越高、隐私放大压缩越多最终成码率下降——这与真实光纤 QKD 的规律完全一致非常适合用来做距离-成码率曲线实验simple_bb84.py 正是对 1 km~150 km 各跑 10 次取均值。五、进阶实战可信中继 BB84 多节点仿真想扩展到多节点链路官方提供了 examples/trusted_relay_bb84.py用 LineTopology 一键生成线性拓扑将 100 km 总距离分成 N 段每段独立运行 BB84由可信中继转发明文密钥LineTopology(num, qchannel_args..., cchannel_args...)自动完成建节点、连信道QuantumNetwork(topotopo, classic_topoClassicTopology.Follow)经典信道跟随量子信道布线。只需修改num [2, 3, 4, 5, 6]循环就能对比不同中继数量下的端到端成码率非常适合写中继跳数 vs 成码率论文图表。六、常见问题 FAQQ1Simulator(0, 10, accuracy10000000000)三个参数是什么0是仿真起始时间10是结束时间单位秒accuracy10^10是时间精度倒数即 0.1 ns 的事件分辨率。时间太短会导致成码块数为 0注意按需调整。Q2仿真结果每次运行都不一样正常。BB84 的编码、测量基和噪声都是随机过程建议像官方示例一样多次运行取np.mean/np.std。Q3如何验证密钥正确性跑通后检查sp.key_pool与rp.key_pool的键MD5是否一一对应最小可复现用例见 test/protocol/test_bb84.py。Q4仿真太慢怎么办用 Cython 加速版setup-cython.py重建事件调度核心有显著提速也可缩短仿真时长或降低send_rate。七、下一步学习路线 跑通官方协议测试pytest test/protocol/test_bb84.py对比其他协议示例entanglement_swapping.py纠缠交换、classic_packet_forward.py经典包转发深入拓扑与路由qns/network/topology/ER、BA、网格、Waxman 等生成器与 qns/network/route/dijkstra.py查阅完整 APIdocs/source/qns.rst至此你已经掌握了用 SimQN 搭建 BB84 量子密钥分发仿真的全部关键步骤。修改length、send_rate、drop_rate等参数即可开始你的量子网络性能研究。赞分享【免费下载链接】SimQNA network-layer simulator for the quantum network investigation项目地址https://gitcode.com/gh_mirrors/sim/SimQN点击查看免费下载相关推荐BB84量子密钥分发在QuantumKatas中实现安全通信的完整指南量子密钥分发QKD是量子计算最具实用价值的技术之一而BB84协议作为其中最经典的量子密钥分发协议在保障信息安全方面发挥着关键作用。在QuantumKat示例工程教程科研如何快速搭建Mohist服务器面向新手的完整教程如何快速搭建Mohist服务器面向新手的完整教程 Mohist是一个功能强大的 Minecraft Forge混合服务器 它完美结合了Forge模组支持和S游戏开发后端如何快速上手XTDrone无人机仿真完整入门教程如何快速上手XTDrone无人机仿真完整入门教程 想要掌握无人机仿真技术却不知从何入手XTDrone仿真平台正是你需要的解决方案这个基于PX4飞控、ROS机器人无人机ROS科研创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?