Qunicy 2013-11-26
怎么样保证客户端和服务端通信是加密安全的呢?
我们一般会用到如下关键字公钥私钥X509数字证书签名base64sha1挑战码
那么他们的作用分别是什么呢?下面的说明比较通俗
1私钥PrivateKdey:说白了就是用来对内容进行加密的算法,需要CA证明合法性
2公钥PublicKey:与私钥相对应,用来解密的
3X509CA:证明私钥的身份是合法的,面包含了用户,设备等一些信息,还包含最关键的签名算法标识,该算法标识可以动态配置,告诉客户端签名用什么算法,这样就可以和服务端采用相同的签名算法,防止被篡改
4数字证书pfx:包含私钥PrivateKey和X509证书,他们是配对的,是保证客户端和服务端签名一致的关键,PrivateKey本地存储,X509是动态的,不被存储,那么如果私钥被篡改,服务器就知道了
因此一般公钥存储与服务器,私钥客户端存储,当然也可以相反,相反就导致你这套算法被写死,非动态;另外公钥客户端存储,容易被恶意篡改。
5数字签名signature:用来保证内容的没有被篡改,是正确的,客户端用私钥和CA中的算法进行签名,服务端用公钥解密,判断两端对内容的签名是否一致
6Sha1:也是种数字签名,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要,它具有特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要
7Base64用于传输8Bit字节代码的编码方式之一,作用是什么呢?如果你的内容很长很长,那么可以使用Base64,他比较简短,并且不可读
8挑战码:一种对信息的加密,同时保证每次的生成都是唯一的,主要作用:假设一个商品有N个数量,那么一个购买URL如果被恶意截获,重放,那么就会无限扣费,挑战码的作用就是要求你每次重放必须依赖服务器下发的一个挑战码,然后和本地的证书进行重签,保证每次的请求都是不同的,不可重放
下面也有一个链接可以对比着看:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
关于OATH2.0
主要是对服务器的接口不想直接暴露给第三方而采用的一套标准协议
具体可以查看这个网址:
http://plaintext.blog.edu.cn/2011/704841.html