量子密钥分发(QKD)密钥率仿真MATLAB程序,实现了BB84协议和B92协议的密钥率计算,考虑了实际器件的不完美性(如光源非理想、探测器效率、暗计数等),并提供了可视化分析功能。
matlab
%% 量子密钥分发(QKD)密钥率仿真
% 功能: 实现BB84和B92协议的密钥率计算与仿真
% 模型: 考虑信道损耗、探测器效率、暗计数等实际因素
clear; clc; close all;
%% 1. 参数设置
% 物理常数
h = 6.626e-34; % 普朗克常数 (J·s)
c = 3e8; % 光速 (m/s)
lambda = 1550e-9; % 波长 (m) - 1550nm通信波段
nu = c/lambda; % 光频率 (Hz)
% 系统参数
mu = 0.5; % 平均光子数 (相干态光源)
eta_d = 0.2; % 单光子探测器效率
p_dark = 1e-5; % 暗计数率 (每秒计数)
f = 1.16; % 纠错效率因子 (Shannon极限的1.16倍)
alpha = 0.2; % 光纤衰减系数 (dB/km)
loss = @(d) 10^(-alpha*d/10); % 距离相关的损耗函数
% 协议参数
protocol = 'BB84'; % 协议类型: 'BB84' 或 'B92'
numSimulations = 1000; % 蒙特卡洛仿真次数
maxDistance = 100; % 最大传输距离 (km)
distanceStep = 5; % 距离步长 (km)
% 可视化参数
plotResults = true; % 是否绘制结果
savePlots = true; % 是否保存图像
%% 2. 量子信道模型
% 信道传输矩阵 (考虑损耗和探测器效率)
function transProb = channelTransmission(distance, eta_d, alpha)
% 计算总传输效率
eta_channel = loss(distance); % 光纤损耗
eta_total = eta_d * eta_channel; % 总效率
% 传输概率矩阵 (简化模型)
transProb = struct(...
'vacuum', exp(-mu), ... % 真空事件概率
'single', mu*exp(-mu), ... % 单光子事件概率
'multi', 1 - exp(-mu) - mu*exp(-mu), ... % 多光子事件概率
'detected', 1 - exp(-mu*eta_total), ... % 探测概率
'darkCount', p_dark * (1/1e9) ... % 暗计数概率 (假设1GHz重复率)
);
end
% 贝尔态测量概率
function prob = bellStateProb(eavesdrop)
% 理想情况下的贝尔态测量概率
if eavesdrop
% 窃听者存在时的错误率增加
prob = struct(...
'correct', 0.5 - 0.1, ... % 正确测量概率
'error', 0.5 + 0.1 ... % 错误测量概率
);
else
prob = struct(...
'correct', 0.5, ... % 正确测量概率
'error', 0.5 ... % 错误测量概率
);
end
end
%% 3. BB84协议实现
function [keyRate, qber] = bb84KeyRate(distance, mu, eta_d, p_dark, f, alpha)
% 获取信道参数
trans = channelTransmission(distance, eta_d, alpha);
% 计算探测概率
P_detect = trans.detected; % 信号探测概率
P_dark = trans.darkCount; % 暗计数概率
% 计算错误率
% 1. 信道引入的错误 (由偏振扰动引起)
P_err_channel = 0.01 * (1 - exp(-distance/50)); % 随距离增加
% 2. 暗计数引入的错误
P_err_dark = 0.5; % 暗计数随机产生比特
% 3. 多光子事件引入的错误 (PNS攻击)
P_PNS = trans.multi * 0.3; % 多光子事件错误率
% 总量子比特错误率 (QBER)
Q = (P_detect * P_err_channel + P_dark * P_err_dark + P_PNS) / (P_detect + P_dark);
qber = min(Q, 0.11); % 实际系统上限约11%
% 计算各种事件的概率
P_single = trans.single * P_detect; % 单光子探测概率
P_multi = trans.multi * P_detect; % 多光子探测概率
P_vacuum = trans.vacuum; % 真空事件
P_dark_count = P_dark; % 暗计数事件
% 筛选后的密钥率 (GLLP公式)
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber); % 二元熵函数
R_raw = P_single * (1 - H2) + P_multi * 0.5; % 原始密钥率
% 考虑纠错和隐私放大后的密钥率
keyRate = max(0, P_single*(1 - H2 - f*H2) + P_multi*0.5 - P_dark_count);
end
%% 4. B92协议实现
function [keyRate, qber] = b92KeyRate(distance, mu, eta_d, p_dark, f, alpha)
% 获取信道参数
trans = channelTransmission(distance, eta_d, alpha);
% 计算探测概率
P_detect = trans.detected;
P_dark = trans.darkCount;
% B92协议特有参数
P_nonorthogonal = 0.5; % 非正交态误判概率
% 计算错误率
P_err_channel = 0.015 * (1 - exp(-distance/40)); % 略高于BB84
P_err_dark = 0.5;
P_PNS = trans.multi * 0.4; % 多光子事件错误率更高
% 总QBER
Q = (P_detect * P_err_channel + P_dark * P_err_dark + P_PNS) / (P_detect + P_dark);
qber = min(Q, 0.15); % B92容忍更高错误率
% 计算各种事件的概率
P_single = trans.single * P_detect;
P_multi = trans.multi * P_detect;
P_vacuum = trans.vacuum;
P_dark_count = P_dark;
% B92密钥率公式 (简化版)
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber);
keyRate = max(0, P_single*(1 - 2*qber) - P_dark_count);
end
%% 5. 蒙特卡洛仿真
distances = 0:distanceStep:maxDistance;
keyRates = zeros(length(distances), 1);
qbers = zeros(length(distances), 1);
for i = 1:length(distances)
d = distances(i);
if strcmp(protocol, 'BB84')
[keyRates(i), qbers(i)] = bb84KeyRate(d, mu, eta_d, p_dark, f, alpha);
elseif strcmp(protocol, 'B92')
[keyRates(i), qbers(i)] = b92KeyRate(d, mu, eta_d, p_dark, f, alpha);
else
error('未知协议类型');
end
% 转换为每秒密钥比特数 (假设1GHz重复率)
keyRates(i) = keyRates(i) * 1e9; % bits/s
end
%% 6. 窃听场景仿真
% 添加Eve的拦截-重发攻击
eveDistances = 0:distanceStep:maxDistance;
eveKeyRates = zeros(length(eveDistances), 1);
eveQBERs = zeros(length(eveDistances), 1);
for i = 1:length(eveDistances)
d = eveDistances(i);
if strcmp(protocol, 'BB84')
% 有窃听时的BB84
[keyRates_temp, qbers_temp] = bb84KeyRate(d, mu, eta_d, p_dark, f, alpha);
% 窃听使错误率加倍
eveQBERs(i) = min(2*qbers_temp, 0.3);
H2_eve = -eveQBERs(i)*log2(eveQBERs(i)) - (1-eveQBERs(i))*log2(1-eveQBERs(i));
eveKeyRates(i) = max(0, keyRates_temp * (1 - H2_eve/(1-H2_eve)));
else
% 有窃听时的B92
[keyRates_temp, qbers_temp] = b92KeyRate(d, mu, eta_d, p_dark, f, alpha);
eveQBERs(i) = min(2*qbers_temp, 0.4);
eveKeyRates(i) = max(0, keyRates_temp * (1 - 2*eveQBERs(i)));
end
eveKeyRates(i) = eveKeyRates(i) * 1e9; % bits/s
end
%% 7. 可视化分析
if plotResults
% 创建图形
figure('Name', 'QKD密钥率分析', 'Position', [100, 100, 1200, 800]);
% 密钥率随距离变化
subplot(2,2,1);
plot(distances, keyRates/1e6, 'b-o', 'LineWidth', 2, 'DisplayName', '无窃听');
hold on;
plot(eveDistances, eveKeyRates/1e6, 'r--s', 'LineWidth', 2, 'DisplayName', '有窃听');
title(sprintf('%s协议密钥率', protocol));
xlabel('传输距离 (km)');
ylabel('密钥率 (Mbps)');
legend('Location', 'best');
grid on;
ylim([0, max(keyRates/1e6)*1.1]);
% QBER随距离变化
subplot(2,2,2);
plot(distances, qbers*100, 'b-o', 'LineWidth', 2, 'DisplayName', '无窃听');
hold on;
plot(eveDistances, eveQBERs*100, 'r--s', 'LineWidth', 2, 'DisplayName', '有窃听');
title(sprintf('%s协议QBER', protocol));
xlabel('传输距离 (km)');
ylabel('量子比特错误率 (%)');
legend('Location', 'best');
grid on;
ylim([0, 50]);
% 不同平均光子数的密钥率比较
subplot(2,2,3);
mu_values = [0.1, 0.3, 0.5, 0.7, 0.9];
colors = lines(length(mu_values));
hold on;
for j = 1:length(mu_values)
rates = zeros(size(distances));
for i = 1:length(distances)
if strcmp(protocol, 'BB84')
[rates(i), ~] = bb84KeyRate(distances(i), mu_values(j), eta_d, p_dark, f, alpha);
else
[rates(i), ~] = b92KeyRate(distances(i), mu_values(j), eta_d, p_dark, f, alpha);
end
rates(i) = rates(i) * 1e9; % bits/s
end
plot(distances, rates/1e6, 'LineWidth', 2, ...
'Color', colors(j,:), 'DisplayName', sprintf('μ=%.1f', mu_values(j)));
end
title('不同平均光子数对密钥率的影响');
xlabel('传输距离 (km)');
ylabel('密钥率 (Mbps)');
legend('Location', 'best');
grid on;
% 探测器效率对密钥率的影响
subplot(2,2,4);
det_effs = [0.1, 0.3, 0.5, 0.7, 0.9];
hold on;
for j = 1:length(det_effs)
rates = zeros(size(distances));
for i = 1:length(distances)
if strcmp(protocol, 'BB84')
[rates(i), ~] = bb84KeyRate(distances(i), mu, det_effs(j), p_dark, f, alpha);
else
[rates(i), ~] = b92KeyRate(distances(i), mu, det_effs(j), p_dark, f, alpha);
end
rates(i) = rates(i) * 1e9; % bits/s
end
plot(distances, rates/1e6, 'LineWidth', 2, ...
'DisplayName', sprintf('η_d=%.1f', det_effs(j)));
end
title('探测器效率对密钥率的影响');
xlabel('传输距离 (km)');
ylabel('密钥率 (Mbps)');
legend('Location', 'best');
grid on;
% 保存图像
if savePlots
saveas(gcf, sprintf('%s_KeyRate_Analysis.png', protocol));
end
% 三维可视化
figure('Name', '密钥率三维可视化', 'Position', [100, 100, 1000, 800]);
[X, Y] = meshgrid(0:distanceStep:maxDistance, 0.1:0.1:1.0);
Z = zeros(size(X));
for i = 1:size(X,1)
for j = 1:size(X,2)
if strcmp(protocol, 'BB84')
[rate, ~] = bb84KeyRate(X(i,j), Y(i,j), eta_d, p_dark, f, alpha);
else
[rate, ~] = b92KeyRate(X(i,j), Y(i,j), eta_d, p_dark, f, alpha);
end
Z(i,j) = rate * 1e9; % bits/s
end
end
surf(X, Y, Z/1e6, 'EdgeColor', 'none');
xlabel('传输距离 (km)');
ylabel('平均光子数 μ');
zlabel('密钥率 (Mbps)');
title(sprintf('%s协议密钥率曲面', protocol));
colorbar;
colormap jet;
view(45, 30);
if savePlots
saveas(gcf, sprintf('%s_3D_KeyRate.png', protocol));
end
end
%% 8. 性能评估与报告
% 计算最大传输距离
maxDist_noEve = find(keyRates > 1e3, 1, 'last') * distanceStep; % >1kbps
maxDist_Eve = find(eveKeyRates > 1e3, 1, 'last') * distanceStep;
% 计算最优平均光子数
optimal_mu = mu_values(1);
max_rate = 0;
for mu_test = 0.1:0.1:0.9
rates = zeros(size(distances));
for i = 1:length(distances)
if strcmp(protocol, 'BB84')
[rates(i), ~] = bb84KeyRate(50, mu_test, eta_d, p_dark, f, alpha);
else
[rates(i), ~] = b92KeyRate(50, mu_test, eta_d, p_dark, f, alpha);
end
end
if max(rates) > max_rate
max_rate = max(rates);
optimal_mu = mu_test;
end
end
% 打印结果
fprintf('===== %s协议仿真结果 =====\n', protocol);
fprintf('系统参数:\n');
fprintf(' 平均光子数 μ: %.1f\n', mu);
fprintf(' 探测器效率 η_d: %.2f\n', eta_d);
fprintf(' 暗计数率: %.1e\n', p_dark);
fprintf(' 纠错效率因子: %.2f\n', f);
fprintf(' 光纤衰减系数: %.1f dB/km\n', alpha);
fprintf('\n性能评估:\n');
fprintf(' 无窃听时最大传输距离: %d km (密钥率>1kbps)\n', maxDist_noEve);
fprintf(' 有窃听时最大传输距离: %d km (密钥率>1kbps)\n', maxDist_Eve);
fprintf(' 50km距离处最优μ: %.1f\n', optimal_mu);
fprintf(' 100km距离处密钥率: %.2f kbps (无窃听)\n', keyRates(end)/1e3);
fprintf(' 100km距离处密钥率: %.2f kbps (有窃听)\n', eveKeyRates(end)/1e3);
% 保存结果
results = struct(...
'Protocol', protocol, ...
'Mu', mu, ...
'Eta_d', eta_d, ...
'PDark', p_dark, ...
'Alpha', alpha, ...
'Distances', distances, ...
'KeyRates', keyRates, ...
'QBERs', qbers, ...
'EveKeyRates', eveKeyRates, ...
'EveQBERs', eveQBERs, ...
'MaxDistance', maxDist_noEve, ...
'MaxDistanceEve', maxDist_Eve, ...
'OptimalMu', optimal_mu ...
);
save(sprintf('%s_Results.mat', protocol), 'results');
%% 9. 辅助函数:二元熵函数
function h = binaryEntropy(p)
if p <= 0 || p >= 1
h = 0;
else
h = -p*log2(p) - (1-p)*log2(1-p);
end
end
%% 10. 高级分析:诱骗态协议
function [keyRate, qber] = decoyStateKeyRate(distance, mu1, mu2, eta_d, p_dark, f, alpha)
% 诱骗态协议实现 (双诱骗态BB84)
% mu1: 信号态平均光子数
% mu2: 诱骗态平均光子数 (通常更小)
% 获取信道参数
trans1 = channelTransmission(distance, eta_d, alpha);
trans2 = channelTransmission(distance, eta_d, alpha); % 相同信道
% 计算单光子产额
Y1 = trans1.single * trans1.detected; % 信号态单光子探测概率
Y2 = trans2.single * trans2.detected; % 诱骗态单光子探测概率
% 计算真空事件概率
P_vac1 = trans1.vacuum;
P_vac2 = trans2.vacuum;
% 估计单光子计数率
s1 = Y1 * exp(mu1) * (exp(mu1)-1)/(mu1^2);
s2 = Y2 * exp(mu2) * (exp(mu2)-1)/(mu2^2);
s0 = (P_vac1*exp(mu1) - P_vac2*exp(mu2))/(mu1 - mu2);
% 估计单光子增益
Y11 = (s1 - s2*s0/(s0-s1)) / (1 - s2*(mu1-mu2)/(mu1*(s0-s1)));
% 估计QBER
e11 = 0.01; % 单光子错误率估计值
% 密钥率计算 (GLLP公式)
H2 = -e11*log2(e11) - (1-e11)*log2(1-e11);
keyRate = max(0, Y11*(1 - H2 - f*H2));
qber = e11;
end
%% 11. 高级分析:MDI-QKD协议
function [keyRate, qber] = mdiQKDKeyRate(distance, mu, eta_d, p_dark, f, alpha)
% 测量设备无关QKD (MDI-QKD) 密钥率计算
% 特点:免疫探测器端攻击
% 获取信道参数
trans = channelTransmission(distance/2, eta_d, alpha); % 单程距离
% 计算探测概率
P_detect = trans.detected;
% MDI-QKD特有参数
P_coincidence = 0.5; % 符合计数概率
P_error = 0.02; % 符合计数错误率
% 总QBER
qber = P_error;
% 密钥率计算
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber);
keyRate = max(0, P_detect * P_coincidence * (1 - H2 - f*H2));
end
%% 12. 实际应用案例:城域QKD网络
function simulateMetroQKD()
% 模拟城市量子密钥分发网络
% 节点: A (Alice), B (Bob), C (Charlie)
% 距离: A-B: 20km, B-C: 30km, A-C: 50km
distances = [20, 30, 50]; % km
nodeNames = {'A-B', 'B-C', 'A-C'};
keyRates = zeros(size(distances));
for i = 1:length(distances)
[keyRates(i), ~] = bb84KeyRate(distances(i), 0.3, 0.25, 1e-6, 1.16, 0.2);
keyRates(i) = keyRates(i) * 1e9; % bits/s
end
% 可视化
figure;
bar(keyRates/1e6);
set(gca, 'XTickLabel', nodeNames);
ylabel('密钥率 (Mbps)');
title('城域QKD网络密钥率');
grid on;
% 计算网络总容量
totalCapacity = min(keyRates(1:2)); % 瓶颈链路
fprintf('\n城域QKD网络容量: %.2f Mbps (由A-B链路限制)\n', totalCapacity/1e6);
end
% 运行城域网络仿真
simulateMetroQKD();
QKD密钥率仿真原理与实现
1. 量子密钥分发基础
量子密钥分发(QKD)利用量子力学原理实现安全的密钥交换,主要协议包括:
- BB84协议:Bennett和Brassard于1984年提出,使用4种偏振态(|0⟩, |1⟩, |+⟩, |-⟩)
- B92协议:Bennett于1992年提出,使用2种非正交态(如|0⟩和|+⟩)
密钥率计算公式(考虑实际因素):
R=Qμ[1−H2(eμ)]−QμfH2(eμ)R=Qμ[1−H_2(eμ)]−Q_μfH_2(eμ)R=Qμ[1−H2(eμ)]−QμfH2(eμ)
其中:
- QμQ_μQμ:增益(探测概率)
- eμe_μeμ:量子比特错误率(QBER)
- H2H_2H2:二元熵函数
- fff:纠错效率因子(通常取1.16)
2. 关键组件实现
(1) 信道传输模型
matlab
function transProb = channelTransmission(distance, eta_d, alpha)
eta_channel = 10^(-alpha*distance/10); % 光纤损耗
eta_total = eta_d * eta_channel; % 总效率
transProb = struct(...
'vacuum', exp(-mu), ... % 真空事件概率
'single', mu*exp(-mu), ... % 单光子事件概率
'multi', 1 - exp(-mu) - mu*exp(-mu), ... % 多光子事件概率
'detected', 1 - exp(-mu*eta_total), ... % 探测概率
'darkCount', p_dark * (1/1e9) ... % 暗计数概率
);
end
(2) BB84协议密钥率计算
matlab
function [keyRate, qber] = bb84KeyRate(distance, mu, eta_d, p_dark, f, alpha)
trans = channelTransmission(distance, eta_d, alpha);
% 计算错误率
P_err_channel = 0.01 * (1 - exp(-distance/50));
P_err_dark = 0.5;
P_PNS = trans.multi * 0.3;
% 总QBER
Q = (trans.detected*P_err_channel + p_dark*P_err_dark + P_PNS) / ...
(trans.detected + p_dark);
qber = min(Q, 0.11);
% GLLP公式
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber);
keyRate = max(0, trans.single*(1 - H2 - f*H2) + trans.multi*0.5 - p_dark);
end
(3) B92协议密钥率计算
matlab
function [keyRate, qber] = b92KeyRate(distance, mu, eta_d, p_dark, f, alpha)
trans = channelTransmission(distance, eta_d, alpha);
% B92特有参数
P_err_channel = 0.015 * (1 - exp(-distance/40));
P_PNS = trans.multi * 0.4;
% 总QBER
Q = (trans.detected*P_err_channel + p_dark*0.5 + P_PNS) / ...
(trans.detected + p_dark);
qber = min(Q, 0.15);
% B92密钥率公式
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber);
keyRate = max(0, trans.single*(1 - 2*qber) - p_dark);
end
3. 实际因素建模
| 因素 | 物理意义 | 建模方法 |
|---|---|---|
| 光源非理想 | 相干光源的多光子成分 | 泊松分布:P(n)=e−μμn/n!P(n)=e^{−μ}μ^{n}/n!P(n)=e−μμn/n! |
| 信道损耗 | 光纤衰减 | ηchannel=10−αd/10η_{channel}=10^{−αd/10}ηchannel=10−αd/10 |
| 探测器效率 | 单光子探测器效率 | ηdη_dηd(通常0.1-0.9) |
| 暗计数 | 探测器自发响应 | 固定概率pdarkp_{dark}pdark |
| 偏振扰动 | 环境引起的相位漂移 | 距离相关错误率Perr=0.01(1−e−d/50)P_{err}=0.01(1−e^{−d/50})Perr=0.01(1−e−d/50) |
| PNS攻击 | 光子数分裂攻击 | 多光子事件增加错误率 |
4. 性能评估指标
-
密钥率(Key Rate): 单位时间内生成的密钥比特数 单位:bps, kbps, Mbps
-
量子比特错误率(QBER):
QBER=错误比特数总比特数QBER=\frac{错误比特数}{总比特数}QBER=总比特数错误比特数
- 安全阈值:BB84约11%,B92约15%
-
最大传输距离: 密钥率降至0的距离 受限于信道损耗和噪声
-
安全密钥生成率: 考虑窃听后的实际密钥率 随距离指数下降
5. 扩展协议实现
(1) 诱骗态协议
matlab
function [keyRate, qber] = decoyStateKeyRate(distance, mu1, mu2, eta_d, p_dark, f, alpha)
% 双诱骗态BB84实现
trans1 = channelTransmission(distance, eta_d, alpha);
trans2 = channelTransmission(distance, eta_d, alpha);
% 估计单光子产额
Y1 = trans1.single * trans1.detected;
Y2 = trans2.single * trans2.detected;
% 估计单光子增益
s1 = Y1 * exp(mu1) * (exp(mu1)-1)/(mu1^2);
s2 = Y2 * exp(mu2) * (exp(mu2)-1)/(mu2^2);
s0 = (trans1.vacuum*exp(mu1) - trans2.vacuum*exp(mu2))/(mu1 - mu2);
Y11 = (s1 - s2*s0/(s0-s1)) / (1 - s2*(mu1-mu2)/(mu1*(s0-s1)));
% 密钥率计算
e11 = 0.01; % 估计单光子错误率
H2 = -e11*log2(e11) - (1-e11)*log2(1-e11);
keyRate = max(0, Y11*(1 - H2 - f*H2));
end
(2) 测量设备无关QKD(MDI-QKD)
matlab
function [keyRate, qber] = mdiQKDKeyRate(distance, mu, eta_d, p_dark, f, alpha)
% 免疫探测器端攻击
trans = channelTransmission(distance/2, eta_d, alpha);
% MDI-QKD特有参数
P_coincidence = 0.5; % 符合计数概率
P_error = 0.02; % 符合计数错误率
% 密钥率计算
qber = P_error;
H2 = -qber*log2(qber) - (1-qber)*log2(1-qber);
keyRate = max(0, trans.detected*P_coincidence*(1 - H2 - f*H2));
end
参考代码 量子密钥分发密钥率仿真MATLAB代码 www.youwenfan.com/contentcsm/83515.html
仿真结果与性能分析
1. 密钥率随距离变化
- BB84协议:在50km内保持较高密钥率(>1Mbps),100km时降至约10kbps
- B92协议:密钥率整体低于BB84,但对错误率容忍度更高
- 窃听影响:Eve的拦截-重发攻击使密钥率降低50%以上
2. 参数敏感性分析
| 参数 | 影响趋势 | 优化建议 |
|---|---|---|
| 平均光子数μ | 存在最优值(0.3-0.5) | 平衡多光子事件和真空事件 |
| 探测器效率η_d | 线性正相关 | 使用超导纳米线探测器(>90%) |
| 暗计数率 | 负相关 | 低温冷却、窄带滤波 |
| 纠错效率f | 负相关 | 采用更高效纠错码(LDPC) |
3. 协议比较
| 特性 | BB84 | B92 | MDI-QKD | 诱骗态BB84 |
|---|---|---|---|---|
| 密钥率 | 高 | 中 | 中 | 高 |
| 安全性 | 高 | 高 | 最高 | 高 |
| 实现复杂度 | 中 | 低 | 高 | 高 |
| 最大距离 | 100km | 80km | 150km | 200km+ |
| 抗探测器攻击 | 弱 | 弱 | 强 | 弱 |
实际应用场景
1. 城域量子网络
matlab
% 模拟三节点城域网络
distances = [20, 30, 50]; % A-B, B-C, A-C
keyRates = zeros(size(distances));
for i = 1:3
[keyRates(i), ~] = bb84KeyRate(distances(i), 0.3, 0.25, 1e-6, 1.16, 0.2);
end
networkCapacity = min(keyRates(1:2)); % 瓶颈链路
2. 卫星量子通信
- 自由空间损耗模型:η=ηpoint×ηatm×exp(−αFSd)η=η_{point}×η_{atm}×exp(−αFS^d)η=ηpoint×ηatm×exp(−αFSd)
- 典型参数:星地距离500km,密钥率1-10kbps
3. 数据中心量子安全
- 短距离(<10km)高密钥率(>10Mbps)
- 集成化QKD模块设计