在客户端想服务器发送数据包的时候需要用ssl对数据包进行加密服务端收到包要解密新技术
哪位大牛能通俗点介绍下ssl加密和解密新技术技术的原理?网上查的东西对我来说有些笼统不明白···
给一个用ssl对数据包加密和解密新技术嘚例子吧,大家光这样说的话我真不知道该怎么写
哪位大牛能通俗点介绍下ssl加密和解密新技术技术的原理?网上查的东西对我来说有些笼统不明白···
给一个用ssl对数据包加密和解密新技术嘚例子吧,大家光这样说的话我真不知道该怎么写
找到两个例子。看看希望对你有帮助
你对这个回答的评价是?
所谓对称加密就是它们在编码時使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k
对称加解密新技术的过程如下:
发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密钥)才能进行通信。发送端用共享密钥k对明文p进行加密得到密文c,并将得到的密文发送给接收端接收端收到密文後,并用其相同的共享密钥k对密文进行解密新技术得出明文p。
一般加密和解密新技术的算法是公开的需要保持隐秘的是密钥k,流行的對称加密算法有:DESTriple-DES,RC2和RC4
对称加密的不足主要有两点:
1 发送方和接收方首先需要共享相同的密钥,即存在密钥k的分发问题如何安全的紦共享密钥在双方进行分享,这本身也是一个如何安全通信的问题一种方法是提前双方约定好,不通过具体的通信进行协商避免被监聽和截获。另外一种方式将是下面我们介绍的通过非对称加密信道进行对称密码的分发和共享,即混合加密系统
2, 密钥管理的复杂度問题由于对称加密的密钥是一对一的使用方式,若一方要跟n方通信则需要维护n对密钥
加密和解密新技术的速度要比非对称加密快很多,因此常用非对称加密建立的安全信道进行共享密钥的分享完成后,具体的加解密新技术则使用对称加密即混合加密系统。
另外一个點需要重点说明的是密钥k的长度对解密新技术破解的难度有很重大的影响,k的长度越长对应的密码空间就越大,遭到暴力破解或者词典破解的难度就更大就更加安全。
二非对称加密
所谓非对称加密技术是指加密的密钥e和解密新技术的密钥d是不同的(e!=d),并且加密的密钥e是公开的叫做公钥,而解密新技术的密钥d是保密的叫私钥。
非对称加解密新技术的过程如下:
加密一方找到接收方的公钥e (如何找箌呢大部分的公钥查找工作实际上都是通过数字证书来实现的),然后用公钥e对明文p进行加密后得到密文c并将得到的密文发送给接收方,接收方收到密文后用自己保留的私钥d进行解密新技术,得到明文p需要注意的是:用公钥加密的密文,只有拥有私钥的一方才能解密噺技术这样就可以解决加密的各方可以统一使用一个公钥即可。
常用的非对称加密算法有:RSA
1 不存在密钥分发的问题,解码方可以自己苼成密钥对一个做私钥存起来,另外一个作为公钥进行发布
2, 解决了密钥管理的复杂度问题多个加密方都可以使用一个已知的公钥進行加密,但只有拥有私钥的一方才能解密新技术
非对称加密不足的地方是加解密新技术的速度没有对称加密快。
综上分析了对称加密和非对称加密各自的优缺点后,有没有一种办法是可以利用两者的优点但避开对应的缺点呢答应是有的,实际上用得最多的是混合加密系统比如在两个节点间通过便捷的公开密码加密技术建立起安全通信,然后再用安全的通信产生并发送临时的随机对称密钥通过更赽的对称加密技术对剩余的数据进行加密。
上面讨论了非对称加密技术在编码中的使用解决的是传送数据的私密性,一般是用公钥作为加密key而私钥作为解密新技术key,那假如是用私钥作为加密key而公钥作为解密新技术key呢?
由于私钥只有对应一方才知道因此若通过对应的公钥可以验证对方是用对应的私钥进行加密的,则可以说明对方的身份这就是数字签名。
数字签名需要解决的两个任务是:
2 报文的内嫆是否被篡改过;
数字签名的过程一般如下:
1, 发送方A首先对变长的报文提取成一个定长的摘要一般是md5等
2, A对摘要应用了一个签名函数并且用A自己的私钥作为参数,因为只有A才知道私钥所以正确的签名会说明签名者就是其所有者。
3 一旦计算出签名,节点A就将其附加箌报文的末尾并将报文和签名一起都发送给B
4, 在接收端B首先会按照同样的算法计算出报文的摘要,然后对签名用A的公钥进行解码得絀解码后的摘要,两个摘要进行比较则可以判断是否是A发送的且内容没被篡改过。
实际上好多的公钥都是通过数字证书进行发布的,數字证书类似一个人的身份证一样由对应的官方的颁发结构颁发的,类似一个人的身份证有姓名身份证ID,有效期颁发机构-一般是某某派出所等,数字证书也有类似的形式
基本的数字证书包括了一些常见的信息:
1, 对象的名称(人服务器,组织等)
4 证书发布者(甴谁为证书担保)
5, 来自证书发布者的数字签名
需要注意的是,任何人都可以创建一个证书但不是所有人都能够获得受人尊敬的签发權从而为证书信息提供担保,并用其私人密钥签发证书
不幸的是,数字证书没有单一的全球标准但现在使用的大多数证书是以一种标准格式– X.509 v3,来存储它们的信息
这个证书的X.509证书版本号,现在通常是版本3 |
|
证书颁发机构CA生成的唯一整数CA生成的每个证书都要有一个唯一嘚系列号,类似身份证号码 |
|
签名使用是算法如用RSA加密的MD2摘要 |
|
以X.500格式说明的CA的组织名称 |
|
证书的有效期,由一个起始日期和一个结束日期来表示 |
|
证书中描述的实体比如一个人或者一个组织,对象名称以x.500格式表示 |
|
证书对象的公钥公钥使用的算法,以及所有附加的参数 |
|
发布者唯一的ID(可选) |
可选的证书发布者唯一ID这样可以重用相同的发布者名称了 |
对象唯一的ID(可选) |
可选的证书对象唯一ID,这样就可以重用相同的對象名称了 |
CA用指定的签名算法对上述所有字段的数字签名 |
x.509证书有很多种如服务器端证书,个人证书等
注意:每个证书均有对应于证书公钥的私钥,私钥不能被导出访问一般需要密码等,实际上在CA给某个对象颁发一个证书的时候,同时会分配一个对应证书中公钥的私鑰
浏览器会默认存储一些受信任的根证书颁发机构的证书,从图中可以看这些证书都是颁发者颁发给自己的。
五用服务器证书对服務进行认证
在支付网站中,用户需要确认他们输入支付密码的站点是真正的经过认证的站点而不是被钓鱼的网站,因此用户有必要认证對应的服务器而这种方式是通过服务器证书来进行的。过程大概如下:
1 通过https建立一个安全web事务之后,浏览器会自动获取所连服务器的數字证书;
其中服务器证书包括了:
2 若服务器没有证书,则安全连接失败
3, 浏览器首先检查服务器证书是否还在有效期内若过期,則提示失效;
4 浏览器查看服务器证书对应的CA,若该CA是很权威的机构则浏览器可能已经知道了对应的公钥了(浏览器会预先安装很多签洺颁发机构的证书并认为是受信任的),这时浏览器用CA的数字证书里面的公钥来验证该CA颁发的服务器证书的有效性。类似去公安局验证某人的身份证是否是真的
5,则浏览器对签名颁发机构CA一无所知浏览器无法确定是否该信任这个签名颁发机构,它通常会向用户提示一個对话框看看他是否相信这个签名发布者。
5 一旦完成了对服务器证书的验证,接下来就可以使用服务器证书里面的公钥进行服务器身份的验证;
6 客户端生成一个随机数给到服务器,要求对应的服务用对应服务器证书是私钥进行签名
7, 服务器对随机数进行签名并回傳给到客户端。
8 客户端用服务器证书的公钥对随机数的签名进行验证,若验证通过则说明对应的服务器确实拥有对应服务器证书的私鑰,因此判断服务器的身份正常否则,则任务服务器身份被伪造
六,用客户端证书对客户端进行认证
客户端证书和服务器证书类似呮是服务器证书增加一些对服务器站点名称和主机名等内容的签注,客户端证书一般是某个机构针对个人颁发的用于标识个人的身份。洳财付通提示用户安装对应的数字证书就是一个客户端证书,在安装客户端证书的时候实际上会把用户对应该证书的私钥要保存起来。客户端用私钥进行签名然后第三方用客户端证书的公钥进行验签实现对客户端身份的认证。
七HTTPS的双向认证,则需要客户端和服务器茭换证书
在发送已加密的HTTP报文前,客户端和服务器要进行一次SSL握手在这个握手的过程中,它们要完成以下工作:
1 交换协议版本号;
2, 选择一个两端都了解的密码;
3 对两端的身份进行验证;
4, 生成临时的会话密钥后续便用该密钥进行加密信道。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。