美文网首页程序员口述
遨游密码世界(二)

遨游密码世界(二)

作者: dkvirus | 来源:发表于2018-02-13 17:52 被阅读15次
    密码工具箱

    上一篇介绍了消息传递存在的问题:机密性完整性认证不可否认性。本篇介绍解决这些问题的方案,我们形象的把它们统称为 密码工具箱,工具箱里的 工具 列举如下:

    • 对称加密: 解决 机密性 的工具;
    • 公钥加密(也叫非对称加密): 解决 机密性 的工具;
    • 单向散列函数 :解决 完整性的工具

    (接上文:遨游密码世界(一)

    二、密码学工具箱

    1. 对称加密

    1)异或运算

    层叠消融

    最强大脑有个 层叠消融 的项目,本质上就是属于密码学中的对称加密。

    层叠消融 把两个图形重叠在一起,相同的部分会消失,不同的部分会显示。如果这么说不太理解的话,可以看下面的 异或 运算,和 加减 运算一样简单。

    0 XOR 0 = 0;
    0 XOR 1 = 1;
    1 XOR 0 = 1;
    1 XOR 1 = 0;
    

    XOR+- 都是数学里面的运算符号,叫做 异或运算符。它的规则是相同的数字做运算之后结果为 0,不同的数字做异或运算之后结果为 1。这里即可看出 层叠消融 的本质即异或运算。

    2)对称加密的核心就是异或运算

    随机生成两个相同位数的数字 01001100 和 10101010,对第一个数字记做 A,第二个数字记做 B,对它两进行异或运算。

    0 1 0 0 1 1 0 0        // A
    1 0 1 0 1 0 1 0        // B
    1 1 1 0 0 1 1 0        // 结果
    

    将结果 11100110 在与 B 做一次异或运算。

    1 1 1 0 0 1 1 0         // 结果
    1 0 1 0 1 0 1 0         // B
    0 1 0 0 1 1 0 0         // 第二次的结果 === A
    

    第一次对 A 和 B 做 异或运算 可以看成是 加密行为

    // 加密过程
    0 1 0 0 1 1 0 0        // A:消息
    1 0 1 0 1 0 1 0        // B:密钥
    1 1 1 0 0 1 1 0        // 结果:密文,加密之后看不懂的东东
    

    第二次对第一次运算的结果再与 B 做 异或运算 可以看成是 解密行为

    // 解密行为
    1 1 1 0 0 1 1 0         // 结果:密文
    1 0 1 0 1 0 1 0         // B:密钥
    0 1 0 0 1 1 0 0         // A:密文通过密钥处理之后又得到密文 A
    

    电脑里的视频,图片,文本文件等如果要做加密,都是先转化为计算机识别的二进制数据,也就是 0 和 1 组成的数据,然后再做异或运算。

    密钥

    这个过程 B(密钥) 及其重要,加密时候使用它进行加密,解密也要使用它进行解密,如果你的密钥泄露了,那么别人就可以轻而易举的破解你的加密信息。

    3)当前使用的对称加密算法

    异或运算只是对称加密的最底层,实际使用的对称加密算法都是在这基础上发展的,并且要复杂的多,这里介绍这个是为了以后吹逼的时候增加光环属性。

    前面介绍了异或运算加/解密消息,那么加密算法如何理解呢。比如有个算法对消息进行 16 次异或操作,这是一种算法,另一个将消息拆分两半,只对其中一半进行加密,这又是一种加密算法。

    个人总结:加密算法就是加密的具体行为。比如上面使用异或运算加密中,异或加密这个行为就是个算法。对于消息加密,只有同时知道 加密算法密钥 这两个东东才能正确得到明文。

    • DES 对称加密算法

    DES 加密算法是 1977 年美联邦使用的标准,在那个年代被政府和银行广泛使用。

    老外整出了加密算法之后,为了验证加密算法的安全性,会定期举办个密码比赛邀请全世界的密码学大师来破译加密算法。在 1999 年举办的 DES challenge 第三次比赛中被人用了 22 个小时就给破译了(在 1997 年举办的 DES challenge 第一次比赛就被人用 96 天给破译了),自此之后安全性存在严重问题,新的加密算法应运而生。

    • 三重 DES 对称加密算法

    由于 DES 存在安全性问题,不久 三重 DES 加密算法 就诞生了,在 DES 基础上做细微修改,并且重复三次 DES 加密,所以叫 三重

    当然,DES 底层做了 16 次异或运算,三重 DES 也就做了 48 次异或运算(不仅仅做异或运算,还有其它行为),运算次数变得更复杂,导致加/解密速度并不高。有了不爽的东西人们就会寻求替代品。

    • AES 对称加密算法

    1997 年的时候,米国标准化机构 NIST 对外海选新的加密算法,以求替代 DES 带来的尴尬境遇。并提前指定了新的密码算法的名称就叫做 AES

    直到 2000 年,在世界各地的密码学专家竞争中,最终筛选出 15 个最终可能选择的加密算法;这 15 个加密算法经过又一轮的生死搏杀,最终比利时密码学家带来的加密算法 Rijndael 成为 AES 的最终选择。

    最在用的最多的对称加密算法还是 AES,当然没有绝对安全的算法,被破解也是时间问题,只不过这个时间来的会比较晚一点。

    4)对称密码实际应用中的缺陷

    办公室

    你将用对称密码加密后的纸条扔给你的同事,他需要知道密钥才能解密出明文,由于你们都在一个办公室里,可以很方便的告诉他密钥是什么(这里举例好傻,都能告诉他密钥是啥了,怎么不直接告诉他明文信息,只是举例而已~~)。

    如果你在上海,你的好朋友在北京,你用对称加密给他写了封信,你的好朋友需要密钥,你只好将密钥与信件一起塞进信封寄给好朋友。这样又显得很傻,信件被任何人拿到都可以通过密钥得到明文,加密失去意义。

    很不爽,去叫人

    最初看到这个场景的时候,我没忍住破口大骂,花了十分钟读到这里原来是个自相矛盾的东东,纯属浪费时间。对称加密的密钥传递是个老大难的问题,但可以通过其它技术弥补

    2. 公钥加密(也叫非对称加密)






    (未完待续,简书不能设置文章顺序,关于密码工具箱其它工具还需查阅资料完善,这里先发布文章占个位置,避免后续文章切断了遨游密码世界两篇文章的连续性)

    相关文章

      网友评论

        本文标题:遨游密码世界(二)

        本文链接:https://www.haomeiwen.com/subject/tydmzxtx.html