服务器认证

身份认证:数字证书+USBKey认证算法:RSA2048(非对称密码算法)。双向认证。

过程:key中包括的信息有:自己的数字证书,服务器的数字证书,和私钥。

1.client向server提交身份认证请求,附带将产生随机数R1和client的签名证书发送给server。

2.server收到请求后,先验证client的签名证书。因为我们客户端的数字证书是由服务器端产生,服务器端把客户的签名证书匹配证书库,确认其有效。

3.server用私钥加密随机数R1,产生签名sig1,并把server的签名证书和随机数R2发给client。

4.client首先验证服务器的证书。这个客户端和服务器的证书是配套的,在key中有保留。服务器的证书有效,客户端用服务器的数字证书去解密sig1,得到的解密在和随机数R1比较,若是相同,表示服务器没有错误,完成了客户端对服务器认证。

5.client用自己的私钥,对server发过来的R2进行加密,产生sig2,发送给server。

6.server用client的数字证书解密sig2,得到的结果去匹配server产生的随机数R2.若匹配,表示client正确,client的身份得到认证。

客户端加密:有CA的 有公私钥加密和对称加密(AES 128)。

加密需要密钥和加密信息。密钥是key中随机产生。客户端新建文档,用密钥加密文档,用client证书加密AES密钥,通过FTP把加密后的文档和加密的AES密钥上传到服务器。

用户打开文档,先从数据库中下载加密的AES密钥,用自己的私钥解密得到AES密钥,用AES密钥对加密的文档进行解密。

用户共享:

客户端共享文件,创建了文档的副本,把用服务器的证书加密AES密钥和加密的文档上传到数据库中。其他用户下载共享文档时,服务器用自己的私钥解密共享文档的AES密钥,在用共享用户的证书加密AES密钥,并把加密文档一起下发给用户。用户接受后,用自己的私钥去解密AES密钥,在用密钥解密加密文档。

文档外带:

用户用自己的证书加密AES密钥,和加密文档保存在客户端。用户离线使用时,用自己的私钥去解密AES密钥,在用密钥去解密文档。

服务器文档加密。

FTP服务器收到上传的文档,产生随机数作为文档加密的密钥。通过密码卡对文档数据进行加密,用服务器的证书对文档加密的密钥进行加密并放入数据库中,把加密的文档放在FTP目录中。

FTP服务器下载文档,在数据库中获取密钥加密,用服务器的私钥去解密,用文档加密密钥和密码卡对文档进行解密,把解密后的文档传送给客户端。