本章主要围绕认证、授权、凭证、保密、传输、验证几个方面来讲述的,
“公钥加密,私钥解密,这种就是加密,用于向私钥所有者发送信息,这个信息可能被他人篡改,但是无法被他人得知。如果甲想给乙发一个安全保密的数据,那么甲乙应该各有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据,最后发给乙,这样确保了内容既不会被读取,也不能被篡改。
·私钥加密,公钥解密,这种就是签名,用于让所有公钥所有者验证私钥所有者的身份,并且防止私钥所有者发布的内容被篡改。但是它不用于保证内容不被他人获得。”
“这两种用途在理论上肯定是成立的,在现实中却一般不成立。单靠非对称加密算法,既做不了加密也做不了签名。因为不论是加密还是解密,非对称加密算法的计算复杂度都相当高,其性能比对称加密要差上好几个数量级(不是好几倍)。加解密性能不仅影响速度,还导致现行的非对称加密算法都没有支持分组加密模式。这句话的含义是:由于明文长度与密钥长度在安全上具有相关性,通俗地说,多长的密钥决定了它能加密多长的明文,如果明文太短就需要进行填充,太长就需要进行分组。因非对称加密本身的效率所限,难以支持分组,所以主流的非对称加密算法都只能加密不超过密钥长度的数据,这也决定了非对称加密不能直接用于大量数据的加密。”
慢哈希函数是指 执行时间可以调节的哈希函数,通常是以控制调用次数来实现的。BCrypt 算法就是一种典型的慢哈希函数,它做哈希计算时接受盐值Salt和执行
成本Cost两个参数。如果我们将BCrypt的执行时间控制在0.1s完成一次哈希计算的话,按照1s生成10个哈希值的速度,算完所有的10位大小写字母和数字的弱密码大概
需要P(62,10)/(360024365)/0.1=1237204169 年时间。
client_hash = BCrypt(mdt(password) + salt)
慢哈希,其实就是指执行这个哈希函数非常慢,这样暴力破解需要枚举遍历所有可能结果时,就需要花上非常非常长的时间,但是也只是针对攻击者而言,穷举密码的时候会
很慢,有目的的对比其实是很快的。最好对不同用户的密码随机生成不同的salt,salt库和密码库分离。
存不存在某种绝对安全的保密方式?答案可能出乎多数人的意料,确实是有的。信息论之父香农严格证明了一次性密码(One Time Password)的绝对安全性。但是使用一次性密码必须有个前提,就是已经提前安全地把密码或密码列表传达给对方。譬如,给你的朋友送去一本存储了完全随机密码的密码本,然后每次使用其中一条密码来进行加密通信,用完一条丢弃一条,理论上这样可以做到绝对的安全,但显然这种绝对安全对于互联网没有任何的可行性。
***********************************************************************
【如果文字看累了,可b站搜索“沙皮狗2021”,用听的方式领略知识的魅力】
传送门 :https://space.bilibili.com/407643589
***********************************************************************