量子密钥分发协议的新实现库

量子秘钥分发(QKD)介绍


量子加密通讯流程

量子密钥分发(英语:quantum key distribution,简称QKD)是利用量子力学特性实现密码协议的安全通信方法。它使通信的双方能够产生并分享一个随机的、安全的密钥,来加密和解密消息。它常常被误称为量子密码学,因为它是量子密码学任务中最著名的例子。

量子密钥分发的一个最重要的,也是最独特的性质是:如果有第三方试图窃听密码,则通信的双方便会察觉。这种性质基于量子力学的基本原理:任何对量子系统的测量都会对系统产生干扰。第三方试图窃听密码,必须用某种方式测量它,而这些测量就会带来可察觉的异常。通过量子叠加态或量子纠缠态来传输信息,通信系统便可以检测是否存在窃听。当窃听低于一定标准,一个有安全保障的密钥就可以产生了。

量子密钥分发的安全性基于量子力学的基本原理,而传统密码学是基于某些数学算法的计算复杂度。传统密码学无法察觉窃听,也就无法保证密钥的安全性。QKD的安全性是是可以依据信息论证明的,而且它还具有前向安全性。

量子密钥分发只用于产生和分发密钥,并没有传输任何实质的消息。密钥可用于某些加密算法来加密消息,加密过的消息可以在标准信道中传输。跟量子密钥分发最常见的相关算法就是一次性密码本,如果使用保密而随机的密钥,这种算法是具可证明的安全性。在实际的运用上,量子密钥分发常常被拿来与对称密钥加密的加密方式,如AES这类算法一同使用。

如何使用

首先git克隆仓库GitHub - gftea/cascade-protocol: Rust implementation for Cascade information reconciliation protocol for Quantum Key Distribution (QKD),示例代码如下:

const NUM_ITERATIONS: u32 = 9; //迭代次数常量,值为9
let key_str =   "100100011001000110010100011001000101000110010001010001100100011100010001".repeat(200);//表示密钥字符串,重复200次assert_eq!(key_str.len(), 14400); //  断言密钥字符串长度为1440
let (correct_key, noise_key) = create_test_shuffled_key(&key_str);   
//创建测试翻转密钥,得到正确密钥和噪声密钥
let initial_bit_err = [correct_key.nr];
correct_key.nr_bits_different(&*noise_key.borrow());   
//得到最初正确密钥和噪声密钥之间的比特差异
let reconciliation =   
    Reconciliation::new(NUM_ITERATIONS, correct_key.clone(), noise_key.clone());  
//创建新的校正,迭代次数为NUM_ITERATIONS,正确密钥和噪声密钥
print_keys(&correct_key, &noise_key);    
//打印正确密钥和噪声密钥reconciliation.start_iterations();  
//开始迭代
print_keys(&correct_key, &noise_key);  
//再次打印正确密钥和噪声密钥
let final_bit_err = [correct_key.nr]correct_key.nr_bits_different(&*noise_key.borrow());  
//得到最终正确密钥和噪声密钥之间的比特差异 
println!(     
    "bit differences: initial: {}, final: {}",   
    initial_bit_err, final_bit_err   
);  

该库当前实现进度

展开阅读全文

页面更新:2024-04-14

标签:密钥   量子   密码学   量子力学   噪声   算法   安全性   正确   协议   密码   消息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top