03 密码学基础:如何让你的密码变得“不可见”?

【其中S表示原文,A表示我的个人解释】

【请注意,这里面充满大量不成熟的、主观推测的看法】

【大家可以去极客时间支持各位老师的专栏,都是很不错的内容】

S1:密码学是“黄金法则”的基础技术支撑。失去了密码学的保护,任何认证、授权、审计机制都是“可笑”的鸡肋。在实际的生活工作中经常会有这样的场景发生:多个用户共用一个 Wi-Fi 来上网、共用一个服务器来跑任务;多个进程共用一个数据库来完成数据存储。在这些场景中,多方交互都通过一个共同的通道来进行,那我们该如何保障其中内容的 CIA 呢?这就需要用到各种加密技术了。

A1:我个人感觉加密算法对黄金法则的支撑体现在:首先认证上提供了身份的唯一性,其次,在授权上,数据只能被拥有解密手段的人使用,而审计所依赖的日志则是认证和授权操作的集合。保障CIA上则体现为:机密性上表现为数据只能被授权、拥有密钥的主体解密,完整性上则体现为数据的修改都需要使用到密钥。

S2:非对称加密代表加密和解密使用不同的密钥。具体的加解密过程就是,发送方使用公钥对信息进行加密,接收方收到密文后,使用私钥进行解密……大部分的非对称算法还提供签名的功能。这也就是说,我们可以使用私钥加密,公钥解密。一旦接收方通过公钥成功解密,我们就能够证明发送方拥有对应的私钥,也就能证实发送方的身份,也就是说,私钥加密就是我们说的签名。

A2:公钥是众所周知的,私钥是特定的主体才知道的,公钥加密确保了信息能够安全地从未知的发送方传给已知的接收方(因为只有接收方有私钥解密),而私钥签名则是已知的发送方向未知或已知的接收方证明其身份和消息完整性的方式,接收方通过公钥验证签名来确认这一过程。

S3:在使用的时候,你要记住下面这些内容:对称加密具备较高的安全性和性能,要优先考虑。在一对多的场景中(如多人登录服务器),存在密钥分发难题的时候,我们要使用非对称加密;不需要可逆计算的时候(如存储密码),我们就使用散列算法。

A3:个人观感,对称加密比较适合在通道进行通信的双方对内容加密时使用,非对称加密则比较适合,在某些事务上,要对多个人分发权限时使用以验证权限,散列算法则是生成唯一身份。非对称加密似乎也可以用在对称加密的场景上,但由于非对称加密算法是基于各种难解的数学难题进行设计的,所以耗时巨大,特别是应对大量数据包时,性能成本或许将增加到无法忍受的地步,而对称加密则显然更加实用,因此对于双方建立通道、收发信息的过程中:首先使用非对称加密安全地交换一个临时的对称密钥,之后利用这个对称密钥进行大量数据的快速加解密。这样做结合了两者的优点,既利用了非对称加密在密钥交换时的安全性,又发挥了对称加密在数据加密上的高效性。而散列算法则用于确保身份的唯一性和数据的完整性(在通道中没有因为修改导致散列值更改)。

S4:作为密码学的算法,散列算法除了提供唯一的 id,其更大的利用价值还在于它的不可逆性……在密码学上,我们对散列算法的要求还有:鲁棒性(同样的消息生成同样的摘要)、唯一性(不存在两个不同的消息,能生成同样的摘要)。

A5:不可逆意味着安全,从散列值不能逆向推导出原始信息,这为密码存储和保护敏感信息提供了基础,即便散列值被公开,也不会直接暴露原始数据;鲁棒性和唯一性则意味着能够很好的侦测出数据有没有在传输过程中遭到了篡改。但检验是否遭到了篡改这一点应该是基于接收方有可以进行比较的散列值才能成立吧?所以,发送方应该会将原始数据的散列值一并发送(或通过其他安全渠道预先共享),接收方接收到数据后,重新计算散列值并与发送方提供的散列值对比,如果两者一致,则可以认为数据在传输过程中未被篡改。但散列值是否也有遭到修改的可能呢?我想应该是有可能的。所以这个散列值应该也会使用加密算法,如非对称加密算法进行加密来保证安全。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值