七夕的晚上,我想和我的另一半私聊,如何保证聊天内容不被黑客窥探,看完这篇文章,我终于知道了一点。1、初级阶段:裸信息传输的特点:在网络上进行明文传输;黑客定理1:在网络上传输的数据是不安全的,网络是黑客的公共场所,可以被拦截。如何改进?很容易想到,先加密,再传输。2、高级阶段:传输密文特点:服务器端和客户端首先约定加密算法和加密密钥;客户端,在传输前用约定的密钥加密;传输密文;服务器,收到消息后使用约定的密钥进行解密;黑客定理2:客户端不安全,属于黑客本地范畴,可逆向工程。任何客户端和服务端事先约定好的算法和密钥都是不安全的,那么如何改进呢?密钥不能固定,每个用户都有一把密钥。3.中间阶段:一人一密,服务器生成密钥特点:客户端和服务器事先约定好加密算法,协商好密钥后再发送消息;客户端请求密钥;服务器返回密钥;然后使用协商好的密钥对报文进行加密,传输密文;这种传输安全吗?答案是不。根据黑客定理1,互联网上传输的内容是不安全的,因此黑客可以获得加密key=X;根据黑客定理2,客户端和服务器事先约定的加密算法是不安全的,因此黑客可以获取加密算法;因此,黑客截获了随后传输的密文,并可以使用相应的算法和密钥对其进行解密;应该如何优化?从根本上说,密钥不能直接在网络上传输。四、高级阶段:一人一密,客户端确定密钥,不再传输密钥特点:协商好的密钥不需要在网络上传输;使用“具有用户特征的东西”作为加密密钥,例如:用户密码哈希值;一个人,一个秘密,每个人都有一把不同的钥匙;然后密钥加密消息并传输密文;服务器从数据库中获取这个“具有用户特征的东西”并解密;黑客定理三:用户客户端内存是安全的,属于黑客的远程范畴,被认为是安全的。画外音:中了木马,电脑被控制了。使用“具有用户特征的东西”作为加密密钥是安全的,一人一密。但这仍然不是最优解。5.高级阶段:一次性一密,密钥协商在每次通信之前,进行密钥协商,一次一密。密钥协商过程如下图,需要随机生成三个动态密钥:两个非对称加密密钥(公钥、私钥);一个对称加密密钥;这称为“安全通道建立的三次握手”,安全通道建立后,发送密文。密钥交换的步骤为:(1)服务器随机生成一对公私密钥(publickeypk1,privatekeypk2),并将公钥pk1传给客户端;画外音:此时黑客可以截获pk1。(2)客户端随机生成一对公私钥(公钥pk11,私钥pk22),通过pk1加密公钥pk11,传给服务器,服务器收到密文,用私钥pk2解密得到pk11;画外音:此时黑客可以截获密文,也知道是用pk1加密的,但是因为黑客不知道私钥pk2,所以无法解密(3)服务器随机生成一个对称加密密钥key=X,用pk11加密,传给客户端,客户端收到密文后解密用私钥pk22得到key=X;无法解密密文得到密钥。至此,安全通道就建立起来了,后续的通信都使用key=X进行加密,保证信息的安全。6、总结信息安全程序设计的三个假设:网络上传输的数据是不安全的,可以被拦截;用户客户端不安全,属于黑客本地类,可逆向工程;客户端内存是安全的。它属于黑客的远程类别,可以认为是安全的;针对信息安全传输的不同阶段:明文传输就像裸奔一样,不安全;客户端和服务端事先约定好加密算法和密钥,不安全;画外音:很多公司是这样实现的=_=。一人一钥,服务端随机生成一个密钥发给客户端,不安全;一人一钥,客户端使用“具有用户特征的东西”作为加密密钥,安全;一次性一键,三次握手建立安全通道,安全;嗯,是时候嘿嘿嘿了。对了,很多公司说我们永远不会存储或窥探用户的聊天记录,你信吗?好文
