网络工程
大力海棠
蓝桥杯Java组个人赛省二,麻瓜ACMer的北京尚学堂·百战程序员( ̄y▽ ̄)~*
展开
-
TLS/SSL性能:密钥长度性能测试
这篇日志总结的是我在Ubuntu下用openssl测试各个密码学算法的性能,从前面的HTTPS抓包里看到,在客户端和服务器端建立完整的TLS握手连接时,Client Hello子消息中带有cipher_suites密码套件列表,Server Hello子消息中含有cipher_suite表示从中选择一个双方都支持的密码套件。随便拿一个密码套件看:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256密码套件就是一系列密码学算法的组合,例如上面这个密码套件可以看出使用的密钥协商原创 2020-05-11 17:37:24 · 3257 阅读 · 0 评论 -
HTTP/1.1队首阻塞和HTTP/2优化
应用层的优化的方式很多,我知道的有浏览器上的优化,通常我们浏览一个HTML网页时,客户端向服务器端发送请求得到主页面,主页面上由很多元素组成,JS文件,CSS样式文件和各种音频图片等资源,等待服务器端发送HTTP或HTTPS响应,在接收到主页面响应后,开始进行页面布局,即构建DOM文档对象模型。页面构建完成后,客户端浏览器继续发送请求,获取页面上的子元素(CSS文件,图片音频等)进行页面渲染。由于...原创 2020-05-04 17:22:14 · 1877 阅读 · 1 评论 -
性能问题:流量控制和阻塞控制
目录流量控制窗口缩放阻塞控制慢启动拥塞避免慢启动重启 说到网络性能问题,影响的因素有很多,以前上课时老师讲的主要有时延和带宽两个,时延简单来说就是一条消息从一端发送到另一端接收的时间,长短也有很多方面决定,例如从物理层开始,网络数据在光纤等不同设备上的传输时间不同,网络层上消息会经过路由转发,在路由器上会因为等待发送而产生延迟,一般来说经过的路由器越多,产...原创 2020-04-27 17:32:01 · 2030 阅读 · 0 评论 -
抓HTTPS报文分组来分析TLS/SSL协议
追踪TCP流TLS/SSL建立在应用层和传输层TCP之间,将到达TCP前的数据都进行加密处理,前面做了那么多的工作,握手密钥协商,数字签名防抵赖等,都是为了保证数据的完整性和机密性。HTTP结合TLS/SSL协议就是HTTPS,如果HTTP消息不交由TLS/SSL协议,一旦流量被截获了,最大的问题就是隐私泄露, 如果我们在一个没有部署HTTPS的网站上登陆我们的信息,以HTTP流量方式进行发送...原创 2020-04-20 17:43:54 · 999 阅读 · 1 评论 -
Session会话恢复:两种简短的握手总结SessionID&SessionTicket
目录完整的握手会话恢复Session ID会话恢复流程回退攻击Session ID分布式负载均衡问题SessionTicket恢复过程NewSessionTicket子消息完整的握手当客户端和服务器端初次建立TLS握手时(例如浏览器访问HTTPS网站),需要双方建立一个完整的TLS连接,该过程为了保证数据的传输具有完整性和机密性,需要做很多事情,密钥协...原创 2020-04-13 17:46:35 · 4809 阅读 · 0 评论 -
TLS:总结下ClientHello和ServerHello中的扩展项
目录TLS/SSL协议扩展SNI服务器名称指示Max Fragment Length分块最大数量Status Request证书状态请求Signature Algorithm签名和摘要算法ALPN应用层协议协商扩展以前的我一直很少在意扩展项这部分(除了证书扩展外),但是后来接触的TLS/SSL协议越多,发现扩展项很多地方都出现,而且挺重要的,如证书链结构里的CRL分发点...原创 2020-04-06 17:46:56 · 5073 阅读 · 0 评论 -
TLS:接近上层应用层的握手层协议
上一篇日志总结了TLS协议中,在握手层之下接近TCP传输层的记录层协议,其主要工作是将上层握手层的消息进行分块,封装,添加消息头处理。那么,握手层发来的消息里面都有些什么呢?我们都知道客户端和服务器端握手时会进行密钥协商,协商得出一个密码套件(或者叫预备主密钥),密码套件指定了客户端和服务器端连接使用的密钥协商算法,加密算法等,密码套件通过密码衍生算法转换为主密钥(或者说会话密钥),主密钥再用同样...原创 2020-03-30 17:24:08 · 1138 阅读 · 0 评论 -
TLS:接近TCP协议底层的记录层
作为构建在TCP之上应用层之下的协议,TLS是独立开来的协议,任何应用层协议都可以直接引入使用它,其最重要的作用就是将应用层协议,如FTP,HTTP或SMTP等加密处理后,再传递给下层的TCP协议来保证数据传输的可靠性。TLS将来自高层的协议数据进行封装,过程中分有两层结构,握手层和记录层,握手层在上,记录层在下,所以握手层更接近应用层,记录层更接近传输层TCP。记录层协议的作用大致有,将上层协议...原创 2020-03-23 17:55:12 · 2092 阅读 · 0 评论 -
Ubuntu下certbot申请和部署证书
前面总结的获取证书方式里,使用的是先手动生成CSR文件和密钥对,然后再根据CSR文件生成自签名证书,最后进行CRL和OCSP校验。接下来就把自己在Ubuntu下用certbot申请和部署Let’s Encrypt证书的过程和步骤也总结一下。Let’s Encrypt只能申请DV证书(Domain Validated),也就是最常见的一种证书,还记得之前说到证书分类,DV,OV和EV证书的分类方式是...原创 2020-03-16 17:54:39 · 4013 阅读 · 0 评论 -
总结证书CT:证书透明度
证书部分,从服务器生成CSR证书请求文件开始,利用CSR生成自签名证书,然后开始校验,顺着证书链校验服务器身份,签名值,根证书等信息。签名值和根证书校验成功,只能表明该服务器证书是由某一个CA机构所签发的,之后还要校验证书是否已被吊销,可以从CRL校验或者OCSP校验两方面实现。除了OCSP校验是要向OCSP服务提供方进行请求校验外,其他如根证书校验或CRL校验,都是通过CA机构进行,作为校验的基...原创 2020-03-09 17:48:44 · 2239 阅读 · 0 评论 -
CRL校验与OCSP套封
上一篇日志利用CSR文件生成自签名证书,接下来可以进行CRL校验和OCSP校验,两者都是校验证书的吊销状态,区别在于校验的方式不同,CRL需要校验方从CRL分发点下载CRLs吊销列表文件,OCSP则是一种在线证书状态协议,校验方发送OCSP请求查询证书的吊销状态,然后接收带有吊销状态信息的OCSP响应完成校验。CRL校验CRL标准属于TLS/SSL协议的一部分,CA机构会把所有自己签...原创 2020-03-02 17:52:24 · 2304 阅读 · 0 评论 -
证书管理:证书获取和生成
证书获取通过浏览器查看网站证书已经可以看到许多信息,版本号、签名算法、公钥,证书链和各种扩展项,如果我们想获取该证书,用浏览器的方式也很简单。在查看证书处,详细信息,复制到文件就可以选择以某种格式导出证书。获取网站证书也可以让我们看到其中的中间证书和根证书,例如我们可以看看CSDN网站的证书:从Certificate chain证书链信息中可以看到,blog.csdn.net网...原创 2020-02-24 17:46:30 · 2690 阅读 · 0 评论 -
CRL问题与OCSP
从证书的扩展项CRL分发点可以看到,CRL证书吊销列表,是服务器身份验证的一部分,验证证书除了校验签名值外,还要校验证书的吊销状态,如果一张证书已过期,或者被吊销,那么身份校验失败。要注意的是,证书过期并不代表其被吊销,证书过期了便无效,如果证书没有过期,但因为某种原因被吊销了,也一样无效。我们知道,浏览器校验证书吊销状态时,会通过CRL分发点找到CRLs文件的URL,然后去下载CRLs文件,从中...原创 2020-02-17 17:52:51 · 5130 阅读 · 0 评论 -
CA运作模式-认证与过期吊销
从前面证书链校验可以看到,浏览器校验服务器身份时,需要校验整个信任链,中间证书和服务器证书。中间证书是可以签发服务器证书的,之所以要多出这样一个中间证书,而不是由CA机构直接签发,原因是权威的CA机构数量并不多,如果所有的服务器实体证书都交由权威CA机构签发,当然可以,可是这样CA机构的工作量将非常大,所以CA机构采取授权二级CA机构的方式,让有授权的中间证书(也就是二级CA机构)也可以签发服务器...原创 2020-02-10 19:19:38 · 2351 阅读 · 0 评论 -
证书链-证书校验
先来打开一个网站的证书链看看:它的结构是,顶端根证书DigiCert,中间证书GeoTrust RSA CA 2018,和最下级的服务器证书*.csdn.net。为什么会有中间证书?原因上一篇日志说过,由于权威的CA机构数量不多,如果所有的服务器申请证书都将CSR证书请求文件发送到CA机构,那么CA机构的工作量就会非常大,因此CA机构采取授权二级机构的方式来管理证书申请,经授权的二级机构也...原创 2020-02-03 17:55:40 · 8688 阅读 · 1 评论 -
总结证书扩展和证书分类
自签名证书签发后的CA证书可以进行扩展,分为私有扩展和标准扩展,私有扩展针对的是自签名证书,即由用户自己签发的证书,而非CA机构签发的,一般浏览器也不会集成有字签名证书的根证书,所以访问这类网站时,浏览器会提示给证书是不安全的,可能是伪造的。当然用户也可以选择信任该证书,然后继续TLS/SSL的握手过程,完成握手后,TLS/SSL仍然提供数据加密等完整性保护。自签名证书通常是内部使用,或者用在...原创 2020-01-27 18:43:45 · 2472 阅读 · 0 评论 -
总结HTTPS握手层和加密层
前面说过,TLS/SSL协议可以和应用层协议结合,例如HTTP,SMTP和FTP等。提供数据完整性和机密性TLS/SSL协议建立在TCP或UDP之上,应用层协议之下,任何应用层协议使用了TLS,都要先把数据经过TLS/SSL处理。客户端浏览器连接服务器的443端口,发送HTTP数据到TLS/SSL协议,再到传输层TCP处。TLS协议部分有握手层和加密层两部分,握手层在上,加密层在下,握手层负责完成...原创 2020-01-20 18:21:05 · 2555 阅读 · 0 评论 -
总结中间方攻击和CA认证中心
中间方攻击在密钥协商阶段,通信双方都需要向对方提供密钥,拿DH密钥协商举例,客户端需要把自己的公钥发送给服务器端,服务器端把DH参数和服务器公钥发送给客户端,最终双方都持有对方的公钥拿来加密用,自己的私钥用来解密。RSA密钥协商也差不多,不过两种协商算法都有可能会遭到中间方攻击,导致密码套件泄露,来看个例子,在RSA密钥协商中,中间方是如何“获取”通信双方的密码套件的。RSA密钥协商,首先...原创 2020-01-13 18:16:07 · 1143 阅读 · 0 评论 -
整理TLS(SSL)协议关键步骤(下)
接着上一篇,在通信双方建立连接时,完成密钥协商,协商出预备主密钥,预备主密钥通过密码衍生算法算出主密钥,主密钥也叫做密码套件,从密码套件中再转换出各个密钥块,这些密钥块就是各种算法,如对称加密的密钥,消息验证码的密钥等。好了,在建立连接阶段完成协商密钥和决定密码套件后,接下来到了通信数据加密部分,对称加密和公开密钥。对称加密对称加密就是使用一个密钥和一个算法,将明文信息加密成密文,对...原创 2020-01-06 18:57:11 · 599 阅读 · 0 评论 -
整理TLS(SSL)协议关键步骤(上)
HTTP不安全问题前面复习总结了数据加密算法保证数据安全不泄露,消息验证码MAC算法保证数据没有被篡改,还有公开密钥算法三种用途,加密解密,密钥协商,身份验证。上面这些方案,算法都是TLS协议的一部分,用来解决HTTP不安全的问题。这篇日志把上面这些东西整理下,看看TLS/SSL协议在开始到结束的身份认证,密钥协商和数据加密步骤如何一步一步保证HTTP安全的。TLS/SSL协议既然是用来解决H...原创 2019-12-30 18:31:42 · 1400 阅读 · 1 评论 -
总结数字签名实现身份验证
消息篡改和不可抵赖性TCP协议确保数据能够正确发送到通信双方,加上数据加密算法保证数据安全传输,但是在HTTP应用中通信双方通常不清楚发送方的身份,尤其在客户端服务器通信下,通常一个服务器会处理多个客户端连接,结合前一篇日志讲到的密钥协商,对于服务器来说,它不需要知道客户端是谁,在建立连接,协商好密钥后,只要接收到的HTTP请求格式正确,数据解密无误后便会发送相应信息,对于客户端来说也是一样。...原创 2019-12-23 18:10:35 · 6031 阅读 · 0 评论 -
总结DH密钥协商(会话密钥)
密钥安全性在对称加密中,无论加密解密,通信双方都是使用相同的密钥,如果其中一方密钥泄露了,信息便会遭到破解。使用公开密钥双向加密可以极大提高安全性,通信双方手握对方的公钥进行信息加密,保留自己的私钥进行解密,从客户端发去的加密信息即使被中途截获,没有私钥的话也无法解密,而私钥保存在服务器端,相反一样。这样将密钥对分成公钥和私钥的方式,比起对称加密共同使用相同的密钥,明显更安全。无论是对称加密还...原创 2019-12-16 18:15:20 · 9723 阅读 · 3 评论 -
总结公开密钥RSA算法
对称加密从名字上很容易理解,就是加密和解密使用相同的密钥和算法,加密解密过程是可逆的。与之对应还有一种非对称加密算法,即加密和解密使用不同的密钥,非对称密钥我比较喜欢叫公开密钥算法,因为公开密钥中使用的密钥是一对的,分为公钥和私钥两部分,其中公钥是可以公开的,私钥则不公开,通常由密钥对的生成方持有。总结下对称加密和公开密钥(非对称加密)的不同点:密钥:对称加密中的密钥是一串数字,加密和解密都使...原创 2019-12-09 18:12:46 · 3122 阅读 · 0 评论 -
消息验证码-MAC算法总结
密文截获篡改如果使用的是对称加密,即通常一个算法和一个密钥的情况下,接收方只有使用与加密相同的密钥,才能解出正确的密文,如果使用了不同的密钥,解密出来的明文可能就是一串乱码。假如在确定密钥是与明文加密密钥同一个的情况下,解密出来的明文如果是可读的,明白的,看似就可以确定密文是安全的,完整的,来自发送者发送过来的,其实不然,如果密文信息在发送过程中被别人截获了,然后修改密文信息,再发送给接收方,...原创 2019-12-02 18:15:26 · 7096 阅读 · 0 评论 -
对称加密算法总结 – 流密码与块密码
随机数在对称加密的流密码算法和块密码算法中,都需要生成随机的密钥流,明文通过密钥加密得到密文,所以随机数生成算法显得十分重要,它决定加密密钥,密钥决定了加密算法的安全性。随机数的类型分有三种,伪随机数生成器,密码学伪随机数生成器和真正的随机数生成器,前两者生成随机数通过软件实现,真正的随机数生成器通过硬件实现。1、伪随机数生成器:软件实现,随机性。2、密码学伪随机数生成器:软件实现...原创 2019-11-25 18:10:40 · 9786 阅读 · 1 评论