我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
目录
一、为什么现在的传输不安全
使用固定密钥的存在密钥泄露的风险(比如使用社工攻击)。
使用固定密钥的可以通过大量数据来破解(高智商分析或大型计算机计算)。
量子计算机在未来可以轻松破解我们现在认为不可能破解的加密算法。
二、非对称加密算法解决了什么问题
通过互联网传输信息最头疼的是初始密钥的传递,非对称加密算法利用神奇的数学解决了这个问题:
密钥A加密-》只能用密钥B解密
密钥B加密-》只能用密钥A解密
每个人都自己生成一对密钥A和B,密钥A自己藏好,密钥B公开,给别人发送信息时用别人的密钥B加密,则只有拥有对应的密钥A的人才能解密,这样其他人就无法窃取信息。
密钥A称为“私钥”,密钥B称为“公钥”,公钥一般交给CA保管(CA会盖个章,盖章后的公钥文件叫做证书,“盖章”就是签名,签名的意思是用CA自己的私钥加密,CA的公钥则是操作系统内置的),私钥要自己保存,现在流行的做法是用专用芯片(windows上叫做TPM),芯片可以生成公钥和私钥,也可以保存私钥,芯片的设计保证私钥不可能被读取、只能加密解密。
三、非对称加密算法和对称加密算法的关系
非对称加密算法特别慢(但并不意味着更安全,安全性和密钥长度、运算方法有关),并不适合对大量数据加密,实际中非对称加密算法主要用来给对称密钥加密,也就是随机生成一个对称密钥,用非对称加密算法加密对称密钥,传输给对方,然后后面都只用对称密钥了。
四、非对称密钥怎么就不行了
非对称密钥解决了互联网传递密钥的问题,是过去几十年互联网传输安全的基础。但是量子计算机已经在路上,量子计算机理论上能够在很短时间内破解非对称密钥(目前的量子计算机的量子位数量尚不足,但未来可期),到那时整个互联网就垮了。
五、量子通讯
利用量子纠缠可以实现理论上绝对安全的通讯(量子隐形传态),但是只能用在量子计算机之间,所以这个距离现实比较远。
六、量子密钥分发
非对称密钥算法即将被量子计算机破解,因此需要一种新的密钥分发方法。
利用量子的测不准原理和测量会破坏量子态,发送方随机选择一个量子态进行调制(携带一个信息),接收方也随机选择一个量子态进行测量,如果接收方选择的量子态正确,那么将得到一个确定的结果(得到了发送方发送的信息),如果选错了,得不到明确的结果(因为测不准原理),或者被偷听了,也得不到明确的结果(测量会破坏量子态),发送足够多量子之后,接收方用传统方式告诉发送方哪些量子被自己正确读取(量子上携带的信息并不传输,因此只有发送方和接收方知晓),这些正确读取的信息就可以作为后续传输信息的密钥(传统方式)。
量子密钥分发解决的是密钥分发问题,而且必须使用量子传输——一般是用光子,通过真空、空气直线传播或者光纤。
七、量子密钥和量子随机数
生成密钥依赖随机数,现在的随机数算法多数是“伪随机数”,与一定的预设条件相关,如果预设条件完全相同,就会生成相同的随机数——从而就不随机了。
最常用的rand函数以一个整数作为种子(srand函数设置,默认是0),同一个种子会生成完全相同的随机序列,所以这是典型的伪随机数。
因为伪随机数有规律可循,因此容易被破解,根据既往数值猜到下一个数值。
利用量子可以生成完全随机的“真随机数”,用真随机数生成密钥就不可能被预测到下一个数值。
已经有量子芯片可以生成量子随机数(如三星发布的“量子加密手机”内置量子随机数生成芯片)。
通过量子随机数可以得到密钥,或可称为量子密钥,但是“量子密钥”一般指的是“量子密钥分发”。
(这里是文档结束)
(当年《量子力学》考了91分的我当然无法理解“量子密话”是什么)