💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
对基尔霍夫-洛-约翰逊噪声(KLJN)安全密钥交换协议的统计随机数生成器攻击研究
💥1 概述
文章来源:
本文介绍并演示了对 Kirchhoff-Law-Johnson-Noise(KLJN)安全密钥交换方案的四种新的统计攻击。这些攻击利用了在Alice/Bob站点的受损随机数生成器。探讨了Alice/Bob以及Eve探测噪声之间的部分相关性情况,也就是说,Eve对Alice和Bob的噪声的了解是受限的但不为零。我们探讨了Eve部分了解Alice和Bob随机数生成器的双边情况。结果表明,在这种情况下,Eve可以利用她的探测噪声和导线中测量的电压噪声之间的最高互相关来破解安全密钥比特。她还可以通过她的噪声电压和她评估的Alice/Bob噪声电压之间的最高互相关来破解安全密钥比特。然后我们探讨了Eve只对Alice的随机数生成器有部分了解的单边情况,因此只有Alice和Eve的噪声相关。在这种情况下,Eve仍然可以破解安全密钥比特,但是为了获得足够低的错误概率,她需要利用整个比特交换周期进行攻击。与其他协议类似,KLJN密钥交换方案的安全性要求随机数生成器的输出对Eve来说是真正随机的。
本文介绍并演示了针对基尔霍夫-洛-约翰逊噪声(KLJN)安全密钥交换方案的两种新攻击。这些攻击基于安全性受损的随机数生成器。首先,我们探讨了Eve知晓Alice和Bob随机数生成器的种子的情况。我们展示了在这种情况下,即使她的电流和电压测量只有单比特分辨率,Eve也能在比特交换周期的一小部分时间内破解安全密钥比特。在第二次攻击中,我们探讨了Eve只知道Alice随机数生成器种子的情况。我们展示了在这种情况下,Eve仍然可以破解安全密钥比特,但她需要利用整个比特交换周期进行攻击。详细文章见第4部分。
对基尔霍夫-洛-约翰逊噪声(KLJN)安全密钥交换协议的统计随机数生成器攻击研究
一、KLJN协议的基本原理与安全基础
KLJN(Kirchhoff-law–Johnson-noise)协议是一种基于热力学第二定律和电路理论的物理层安全密钥交换方案。其核心原理是通过电阻器的随机选择和约翰逊噪声的统计特性实现信息论安全性。具体流程如下:
- 比特状态生成:Alice和Bob各自从预定义集合{R₀, R₁}中随机选择电阻值(R₀和R₁分别代表比特0和1),形成四种可能的组合(00、01、10、11)。当双方选择的电阻值不同(即01或10)时,Eve无法通过测量电压和电流的均方值区分电阻方向,从而确保安全比特交换;而当电阻值相同时(00或11),该比特被丢弃。
- 热力学安全性保障:KLJN的安全性依赖于热力学第二定律,即Eve无法在热平衡条件下通过被动测量获取方向性信息。波动-耗散定理进一步保证噪声信号的统计特性在安全比特交换中不可区分。
二、随机数生成器(RNG)在KLJN中的作用与攻击切入点
KLJN协议的安全性高度依赖RNG的不可预测性。RNG用于:
- 电阻值选择:Alice和Bob在每个比特交换周期(BSP)中随机选择电阻值。
- 噪声生成:模拟理想约翰逊噪声的统计特性(高噪声温度、准静态特性)。
攻击切入点:若RNG存在漏洞(如种子泄露、统计相关性或非线性失真),Eve可通过以下方式破坏协议:
- 预测电阻选择序列:若RNG种子被泄露,Eve可直接推断Alice和Bob的电阻选择,从而破解密钥。
- 利用噪声相关性:通过分析Eve与Alice/Bob噪声的部分相关性,提取互信息。
- 非线性失真攻击:噪声生成器的非线性特性(如二阶/三阶失真)会导致信道功率泄露,Eve可检测到微小直流分量以推断密钥。
三、针对KLJN协议的统计随机数生成器攻击类型与技术手段
1. 种子泄露攻击
- 实现条件:Eve获知Alice和Bob的RNG种子。
- 攻击效果:即使Eve的测量分辨率仅1位,也能在单个BSP的片段内破解安全比特。若仅掌握单侧种子(如Alice的),则需整个BSP周期进行攻击以降低误码率。
- 案例:通过Matlab仿真验证,当种子已知时,Eve可通过重构噪声电压序列直接推断密钥比特。
2. 部分相关性攻击
- 双边攻击:Eve对Alice和Bob的噪声生成器具有部分统计知识(如共享部分熵源)。通过计算Eve噪声与导线电压噪声的互相关性,或Eve噪声与估计的Alice/Bob噪声的互相关性,可显著提升猜测正确率。
- 单边攻击:仅掌握Alice的噪声统计特性时,Eve需利用整个BSP的数据进行互相关分析,错误概率随噪声相关性增强而降低。
3. 非线性失真攻击
- 技术原理:实际噪声发生器可能存在非线性(如总失真TD≥1%),导致信道中出现非对称功率流。Eve通过检测直流成分的符号推断电阻组合。
- 防御策略:降低有效温度(即导线电压)以减少非线性效应,使KLJN趋近理想安全性。
4. 瞬态与寄生参数攻击
- 静态环路电流攻击:利用电缆寄生电阻/电容导致的电压失衡,通过测量瞬态响应获取电阻值信息。
- 防御:添加电容补偿装置或动态调整噪声温度以消除非对称性。
四、KLJN与传统协议在抗统计攻击方面的差异
- 安全性基础:传统协议(如RSA)依赖计算复杂度,而KLJN基于物理定律(热力学第二定律),理论上具有无条件安全性。
- 攻击面差异:传统协议易受算法漏洞或量子计算威胁,KLJN的脆弱性集中于物理实现缺陷(如RNG质量、电缆寄生参数)。
- 错误传播特性:KLJN的比特错误率随BSP持续时间呈指数衰减,无需复杂纠错机制;而传统协议需依赖纠错码。
五、现有防御策略与漏洞缓解
- 增强RNG安全性:
- 使用真随机数生成器(TRNG)替代伪随机数生成器(PRNG),避免种子泄露风险。
- 定期更换种子或采用动态熵源(如环境噪声)。
- 物理层优化:
- 提高噪声温度以逼近理想统计特性。
- 补偿电缆寄生参数(如电容抑制器)。
- 协议增强:
- 引入隐私放大技术(如哈希函数)降低信息泄露影响。
- 动态调整电阻组合规则,增加Eve的分析复杂度。
六、文献对KLJN-RNG漏洞的共识与开放问题
-
共识:
- KLJN的理论安全性在理想条件下成立,但实际部署中RNG缺陷是主要攻击向量。
- 即使Eve对RNG仅有统计知识(非完全控制),仍可能通过高阶分析破解密钥。
-
开放问题:
- 统计性知识攻击:如何量化Eve对RNG的部分知识对安全性的影响。
- 多物理场耦合效应:温度、电磁干扰等环境因素对RNG和噪声生成器的综合影响。
- 后量子时代适应性:KLJN是否可抵御量子计算增强的统计攻击。
七、总结
KLJN协议通过物理层机制实现了理论上的无条件安全性,但其实际安全性高度依赖RNG的质量和物理实现的完善性。针对RNG的统计攻击揭示了协议在非理想条件下的脆弱性,未来的研究方向需聚焦于RNG安全增强、多维度物理参数优化以及新型攻击模型的动态防御。尽管存在挑战,KLJN在智能电网、硬件安全模块等领域的应用潜力仍值得深入探索。
📚2 运行结果
部分代码:
%multimeter's bits of resolution
N = 1;
Nvector = 1:1:N;
%if key(1) == RH && key(2) == RH
% range = max(HH)-min(HH);
%elseif key(1) == RL && key(2) == RL
% range = max(LL)-min(LL);
%elseif key(1) == RH && key(2) == RL
% range = max(HL)-min(HL);
%elseif key(1) == RL && key(2) == RH
% range = max(LH)-min(LH);
%else
% disp('Not a valid key');
% return;
%end
%resolution = 2*range/2^N;
%let's take the n-sample average for how many times Eve guesses correctly
%for each bit of resolution
%the structure is, for a matrix of i rows and j columns, the j index will
%represent the bits of resolution, and the i index will represent the ith
%sample value. n-sample averaging will be used.
nsamples = 1000; %Occurrences
averageuesses = zeros(nsamples,N-min(Nvector)+1);
averageLL = zeros(nsamples,N-min(Nvector)+1);
averageHL = zeros(nsamples,N-min(Nvector)+1);
averageLH = zeros(nsamples,N-min(Nvector)+1);
guessrecord = zeros(N,length(nsamples));
guessrecord_twocases = zeros(N,length(nsamples));
%Why not use Shah's noise?
fileID = fopen('shah_GBLWN_Entire_RNG.txt','r');
%noise = fscanf(fileID,'%f');
%noise = noise';
for x = 1:1:N
for j = 1:1:nsamples
%set RNG noise voltages, each with a different seed
UAH = randn(1,n)*sqrt(4*k*Teff*RH*fB);
UBH = randn(1,n)*sqrt(4*k*Teff*RH*fB);
UAL = randn(1,n)*sqrt(4*k*Teff*RL*fB);
UBL = randn(1,n)*sqrt(4*k*Teff*RL*fB);
%Why not use Shah's noise?
%UAH = noise((4*n*(j-1)+1):1:(4*j-3)*n);
%UAH = (UAH/rms(UAH))*sqrt(4*k*Teff*RH*fB);
%UBH = noise(((4*j-3)*n+1):1:(4*j-2)*n);
%UBH = (UBH/rms(UBH))*sqrt(4*k*Teff*RH*fB);
%UAL = noise(((4*j-2)*n+1):(4*j-1)*n);
%UAL = (UAL/rms(UAL))*sqrt(4*k*Teff*RL*fB);
%UBL = noise(((4*j-1)*n+1):1:4*j*n);
%UBL = (UBL/rms(UBL))*sqrt(4*k*Teff*RL*fB);
%let's have another set of noises just for the histogram
UAHhist = randn(1,n);
UAHhist = (UAHhist/rms(UAHhist))*sqrt(4*k*Teff*RH*fB);
UBHhist = randn(1,n);
UBHhist = (UBHhist/rms(UBHhist))*sqrt(4*k*Teff*RH*fB);
UALhist = randn(1,n);
UALhist = (UALhist/rms(UALhist))*sqrt(4*k*Teff*RL*fB);
UBLhist = randn(1,n);
UBLhist = (UBLhist/rms(UBLhist))*sqrt(4*k*Teff*RL*fB);
if key(1) == RH && key(2) == RH
UA = UAH;
UB = UBH;
elseif key(1) == RL && key(2) == RL
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。