您的位置:首页 > 理论基础 > 计算机网络

Java网络编程——网络通信安全与加密

2018-01-24 22:43 573 查看

    网络通信安全与加密

       在网络数据传输时,传输双方的数据可能会被第三方非法监听获取。因此,在真实网络环境中,通常会使用一些加密技术对网络数据进行保护。加密技术一般使用SSL加密和TLS加密。这两种加密是基于TCP/IP协议的,IP协议在网络层,TCP协议在传输层,SSL和TLS在安全套接字层,应用层是一些HTTP、Telnet、FTP之类的面向用户的协议。

       SSL除了对数据进行加密外,还采用了身份认证机制,也就是安全证书认证。安全证书可以从权威机构购买,也可以自己创建自我签名证书。不过,自己创建的自我签名证书只有自己通过认证,不具有权威性。
       SSL通过握手来确认如何对网络数据进行加密和解密。SSL通过公钥/私钥来加解密数据,公钥加密的数据只能用私钥来解密,私钥加密的数据也只能用公钥来解密。首先A方会把公钥发给B方,B方把数据用公钥加密,再发给A方, 这时,A方就可以用密钥来解密了,在数据传输过程中,就算数据被意外截取了,不法分子也无法得知加密数据的原数据,因为只有A方的私钥可以解密,这样就保证了数据在网络传输过程中的安全。SSL握手主要是为了确认加密参数、协商使用的加密套件,确定使用的算法等信息。
     首先客户端会将自己的SSL版本号、加密参数与会话相关数据等发送给服务器,服务器也把一些相关参数发送给客户端,如果服务器还需要其他安全认证的话,服务器还会向客户端提出安全认证请求。客户端验证服务器的证书,如果验证失败,则SSL握手失败,如果成功,则生成 本次会话的预备主密码,并用服务器提供的公钥进行加密发送给服务器。服务器通过某些算法用预备主密码生成本次本次会话的主密码,客户端与服务器均使用此主密码生成本次会话的会话密钥,这个会话密钥是对称的,客户端通知服务器此后发送消息都使用这个会话密钥进程加密
,告知服务器SSL握手未完成,服务器也通知客户端此后发送消息都使用这个会话密钥进行加密,并告知客户端SSL握手完成。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: