30 _md5加密, HTTPS握手流程图

1, 密码保存
使用md5加密 + salt (加盐), 盐需要有一定的长度, 太短很容易破解。 没个密码对应一个盐。

因为盐太短、太简单了,如果用户原始密码也很简单,那么整个拼起来的密码也很短,这样一般的MD5破解网站都可以直接解密这个MD5,除去盐就知道原始密码了。
相同的盐,意味着使用相同密码的用户MD5值是一样的,知道了一个用户的密码就可能知道了多个。
我们也可以使用这个盐来构建一张彩虹表,虽然会花不少代价,但是一旦构建完成,所有人的密码都可以被破解。

**更好的做法是,不要使用像MD5这样快速的摘要算法,而是使用慢一点的算法。**比如 BCryptPasswordEncoder BCrypt把盐作为了算法的一部分,强制我们遵循安全
保存密码的最佳实践。

身份证号码也要机密后保存

2, HTTPS加密

HTTPS=SSL/TLS+HTTP,通过使用一系列加密算法来确保信息安全传输,以实现数据传输的机密
性、完整性和权威性。
机密性:使用非对称加密来加密密钥,然后使用密钥来加密数据,既安全又解决了非对称加密大量数据慢的问题。你可以做一个实验来测
试两者的差距。
完整性:使用散列算法对信息进行摘要,确保信息完整无法被中间人篡改。
权威性:使用数字证书,来确保我们是在和合法的服务端通信。
在这里插入图片描述
建立HTTPS连接的过程,首先是TCP握手,然后是TLS握手的一系列工作,包括:

  1. 客户端告知服务端自己支持的密码套件(比如TLS_RSA_WITH_AES_256_GCM_SHA384,其中RSA是密钥交换的方式,AES_256_GCM
    是加密算法,SHA384是消息验证摘要算法),提供客户端随机数。
  2. 服务端应答选择的密码套件,提供服务端随机数。
  3. 服务端发送CA证书给客户端,客户端验证CA证书(后面详细说明)。
  4. 客户端生成PreMasterKey,并使用非对称加密+公钥加密PreMasterKey。
  5. 客户端把加密后的PreMasterKey传给服务端。
  6. 服务端使用非对称加密+私钥解密得到PreMasterKey,并使用PreMasterKey+两个随机数,生成MasterKey。
  7. 客户端也使用PreMasterKey+两个随机数生成MasterKey。
  8. 客户端告知服务端之后将进行加密传输。
  9. 客户端使用MasterKey配合对称加密算法,进行对称加密测试。
  10. 服务端也使用MasterKey配合对称加密算法,进行对称加密测试。
    其实,CA证书是一个证书链,你可以看一下上图的左边部分:
    从服务端拿到的CA证书是用户证书,我们需要通过证书中的签发人信息找到上级中间证书,再网上找到根证书。
    根证书只有为数不多的权威机构才能生成,一般预置在OS中,根本无法伪造。
    找到根证书后,提取其公钥来验证中间证书的签名,判断其权威性。
    最后再拿到中间证书的公钥,验证用户证书的签名。
    这,就验证了用户证书的合法性,然后再校验其有效期、域名等信息进一步验证有效性。
    总结一下,TLS通过巧妙的流程和算法搭配解决了传输安全问题:使用对称加密加密数据,使用非对称加密算法确保密钥无法被中间人解密;
    使用CA证书链认证,确保中间人无法伪造自己的证书和公钥。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值