密码学初识

1、加密和压缩的顺序

     压缩一定是在加密的前面,因为加密之后,比特序列的冗余消失,基本上无法再进行压缩了。在加密前进行压缩的做法不仅仅限于混合密码系统,对所有的密码都适用。

    从技术角度上讲,TLS大致由三个组件拼接成的 分别是: 对称加密传输组件,认证秘钥协商组件,秘钥扩展组件。这些组件可以拆分成五个具体的算法组合,称为一个CipherSuite:分别是认证算法、加密算法、消息验证法算法、秘钥交换算法、秘钥衍生算法。

 2、握手协议hansshake Protocol

    在TLS1.2 版本中

    handshake Protocol用于生成record Protocol使用的 SecurityParameters 在握手中

    客户端和服务器端协商的TLS版本号和同一个CipherSuite,对身份的认证(可选,一般在HTTPS中是客户端对服务器的认证),使用秘钥协商算法生成主秘钥 master secret

    握手的步骤如下:

      交换了Hello消息,协商出算法,交换random值,检查 Session resumption 

      交换必要的密码学,允许Client和server协商出 premaster secret

      交换证书和密码学参数,让client 和server做认证,证明自己的身份

      从premaster secret 和交换 random 值,生成 master secret

      把secerity parameters提供给 record层

      允许client和server确认端得出相同的scurity Parameters 并且握手过程的数据没被攻击者篡改

      

  

 

posted @ 2019-07-29 15:25  疏桐  阅读(229)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();