8月3日

Https的用途和工作模式

用Http协议看新闻没什么问题,但换到严肃的场景中就存在安全风向了,如支付,使用普通的Http协议就会被黑客盯上。通过拦截请求假装自己是服务器,让你输入密码等。解决这种问题的思路是对数据加密,加密方式分两种:

对称加密

在对称加密中,加密解密都使用相同的秘钥,因此秘钥的保密工作需要做好,只能给使用的人知道,存在问题

  • 秘钥的约定时机,秘钥通过互联网传输一样会被黑客截获

非对称加密

加密和解密使用的秘钥不相同。分公钥和私钥,且公钥加密只能私钥解密,反之亦然。对称加密会存在秘钥约定十几的问题,所以需要非对称加密介入。将非对称加密的公钥公开,私钥自己保留。同样存在问题

  • 服务器的回复数据,黑客可以通过公钥解密,且黑客也可以模拟发送请求,所以一对公钥私钥不够,客户端同样需要有自己的公钥和私钥,并且客户端的公钥给服务端

比较

对称加密的算法比分对称加密的算法效率高性能也好,大多数场景都是用对称加密

数字证书

非对称加密也存在同样的问题,如何将不对称的公钥给对方。一种是放在公网地址上,让对方下载;二是建立链接的时候传给对方。存在问题:

  • 如何鉴别别人发给你的公钥是对的,而不是冒充的
    通过权威机构(CA)部门的证书,证书里面包括公钥还要发布者的信息及发布机构,证书有效期等,如身份证一样的存在。证书的签名算法即CA的私钥,给公司的公钥加密。所有用户在网站上得到的是一个证书,你只要得到CA的公钥去解密签名就能得到公司的公钥了。关于CA公钥的可靠性,则需要更加权威的机构证实。

Https的工作模式

非对称加密性能不及对称加密,通过非对称加密只对对称加密的秘钥进行加密码,而真正通讯的传输数据则通过对称加密的秘钥进行加解密。过程

  1. 客户端发送Client Hello 到服务器,会以明文传输TLS版本信息,加密套件候选列表,压缩算法列表等信息,还有一个随机数,在协商对称秘钥的时候使用
  2. 服务器返回Server Hello消息,告诉客户端服务器所选的协议版本,加密套件和压缩算法等,还有一个随机数,用于后续秘钥协商
  3. 服务器发送证书
  4. 客户端从CA仓库里的公钥去解密证书,成功则可信任获得了服务器的公钥。最后客户端产生一个随机数,用服务器公钥加密发送给服务端
  5. 客户端接收到Client Key Exchange,通过私钥解密。最后协商出对称加密的秘钥为客户端的随机数+服务端的随机数+Pre-master产生与客户端相同的对称秘钥
  6. 客户端和服务端通过协商的对称秘钥进行通讯

小结

  • 对称加密的效率比非对称加密高,但无法解决了秘钥传输的问题。非对称加密可以解决这个问题,但是效率不高
  • 非对称加密需要通过证书合权威机构来验证公钥的合法性
  • Https是综合了对称加密合非对称加密算法的Http协议,既保证传输安全,有保证了传输效

阿里开源项目Alpha启动框架

是一个基于PERT图构建的异步启动框架,使用简单,高效。
在应用启动的时候,我们通常会做很多工作需要,为了提高启动速度,我们尽可能的让这些工作并发进行。但这些工作可能存在前后依赖关系,所以我们需要想办法保证执行顺序的正确性。

PERT

即计划评审技术,利用网络分析制定计划以及对计划予以评价的技术。它能调整计划的各道工序,合理安排资源,加速计划进度.

四个概念
  1. 事件:表示主要活动结束的哪一点
  2. 活动:表示从一个事件到另一个事件之间的过程
  3. 松弛事件:不影响完工前提下可能被推迟完成的最大时间
  4. 关键路线:是PERT中花费时间最长的事件和活动序列
基本要求
  1. 构建一个清晰精确的事件活动网络,其中包括时间和资源
  2. 对时间活动进行逻辑排序以确定关键路线
  3. 确定“不确定性”
  4. 计算关键路线和宽裕时间
作用
  1. 标识出项目的关键路径,以明确项目活动的重点
  2. 对关键步骤进行资源调度及优化
  3. 资源发生矛盾时,通过调度非关键路径资源,保证项目进度
  4. 通过PERT网络分析法可大大缩短项目完成的时间

在軟件设计的应用

  1. 软件的模块化,不同业务线并行开发
  2. 应用插件化,使宿主与插件分开编译,提高编译速度