码技术(Cryptography)包含了密码学(Cryptography)和密码分析学(Cryptanalysis)两大分支,一方为红军(守),一方为蓝军(攻),两者缺一不可。
自古以来,密码学领域加密和解密的故事不断被演绎,你方唱罢,我方登场。
当前人创造一种看似完美的加密技术,经过若干年,又会被后人通过先进技术解密。在这加密-解密-再加密-解密的过程中,展现出不可估量的人类智力,激发让人探寻的无穷乐趣。
本期,让我们盘点密码学领域的重要历史节点,看看前辈大佬们如何运用密码学交锋,留下一段段里程碑式的传奇故事。
古典密码学时期
凯撒大帝:置换密码
在古典密码学时期,密码学主要用于军事的密文传递。公元前58年左右,Caesar(凯撒大帝)使用的凯撒密码就是运用军事命令的传递。他将每一个字母都进行了位移,以防止他的敌人在截获凯撒的军事命令之后,直接获取到他的真实情报。
加密方法:
加密的双方首先要对字母的位移数字达成共识,比如,我们约定好的加密位移的数字是3,那么,我发送的每一个字母都要经过3个位移,(A变成D,B变成E,C变成F... ...)假设我的明文是“attack” ,经过位移为3的凯撒加密之后,就会变成“dwwtfn”。成功拿到密文的人,再通过把密文的每个字母减3的方式,就能得到真实的明文信息。
算法稳定币今日平均涨幅为2.36%:金色财经行情显示,算法稳定币今日平均涨幅为2.36%。8个币种中5个上涨,3个下跌,其中领涨币种为:BAC(+19.06%)、ONS(+3.19%)、BAGS(+1.60%)。领跌币种为:FRAX(-2.41%)、LUNA(-2.03%)、AMPL(-1.33%)。[2021/6/5 23:14:42]
解密方法:
首先通过频率分析或者样式单词分析的方法,判定是否用的是凯撒密码。如果是,则可以使用穷举的办法,按照字母系统寻找偏移量。由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,26个英文字母,至多偏移25位。
频率分析是基于某些字母在英文写作中出现不同频率的事实 – 例如,E通常最常出现,其次是T和A;而Q和Z出现次数最少(见下图)。
英文字母频率
参考如下加密文本:
PZ AOL TVZA MYLXBLUA SLAALY PU AOPZ ZLUALUJL
如果算上字母,你会注意到L的出现频率高于其他任何字母(8次)。因此,如果这是替换密码并且原始消息是英语,则L代表E是安全的猜测,L与字母表中的E相距7个空格。如果位移量是7,则这组密码文本将变成:
IS THE MOST FREQUENT LETTER IN THIS SENTENCE
OpenZeppelin的智能合约开发库将迁移到Solidity 0.7版本:区块链开发工具提供商OpenZeppelin的智能合约开发库OpenZeppelin Contracts宣布将迁移到智能合约编程语言Solidity最新发布的0.7版本,目前已经发布了基于最新版OpenZeppelin Contracts 3.1的Solidity 0.7的特殊版本。OpenZeppelin表示Solidity 0.7是一个突破性的变化,但目前还没有决定如何适应OpenZeppelin Contracts的版本规则,以及如何支持Solidity 0.6版本的继续迭代。Solidity于7月底更新为0.7版本,官方称这是对Solidity语言和编译器的重大更新。[2020/8/10]
对于非常短的消息,手动执行暴力攻击或频率分析可能很容易,但对于整个段落或文本页面来说可能会非常耗时。
近代密码学时期
Enigma(转轮密码机):多表替代密码
Enigma(转轮密码机)由德国工程师Arthur Scherbius创造,在二战时是德军用来传播信息的加密机,彼时,英法联军完全不知道德国正在借用此机器传递信息。
Enigma的加密原理是多表替代——通过不断改变明文和密文的字母映射关系,对明文字母们进行着连续不断的换表加密操作。
密码机设计有3个转轮,在每个转轮的边缘上标记26个德文字母,借以表示转轮的26个位置。经过巧妙的设计,每次转轮旋转后,都会停留在这26个位置中的某个位置上。在转轮组内,转轮们相互接触的侧面之间,都有相对应的电路触点,可以保证转轮组的内部构成通路。
于是,输入的字母K,经过第一个转轮,变成输出字母R;之后这个R进入第二个转轮,咱们假设它又变成了C;尔后,这个C再进入第三个转轮,假设又变成了Y。如此,初始字母K历经3次轮转,变成了谁也认不出来的Y。
二战时期,阿兰·麦席森·图灵(Alan Mathison Turing)基于前人的经验,从Enigma的整个密文入手,设计了“图灵炸弹机”来进行破解。
因为德国人会在特定时间发送特定的电报,而“天气”和“希特勒”这两个词是“明文库”中最常见的两个单词。所以,图灵采用基于明文的攻击,在早上六点多的电报密文中寻找“天气”和“希特勒”两个单词加密后的密文,就能根据明文和密文的对应关系计算出密钥。
关于这段历史的更多趣闻,感兴趣的小伙伴可参见电影《模仿游戏》。
现代密码学时期
在1976年以前,所有的加密方法都是同一种模式:加密、解密使用同一种算法,即对称加密算法(symmetric encryption algorithm)。在交互数据的时候,彼此通信的双方就必须将规则告诉对方,否则没法解密。那么加密和解密的规则( 简称密钥 )的保护就显得尤其重要,传递密钥成为了最大的隐患。
当密码学进入现代时期,从艺术变成科学,开始建造完备的体系,这一隐患被得以有效解决。同时,多种密码学技术的诞生,也让原本神秘变换的密码学世界变得更加精彩纷呈。
重大历史节点:
1976年,是现代密码学的开端,密码学开始由艺术转为科学,并建立一套完整的理论体系。两位美国计算机学家迪菲(W.Diffie)、赫尔曼(M.Hellman)提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥交换。这被称为“ 迪菲赫尔曼密钥交换 ”算法,开创了密码学研究的新方向。
1977年,三位麻省理工学院的数学家罗纳德·李维斯特(Ron L. Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard M. Adleman)一起设计了一种算法,可以实现非对称加密。这个算法用他们三个人的姓氏首字母命名,叫做 RSA 算法。
【 加密方式需要两个密钥:公开密钥,简称公钥( public key );私有密钥,简称私钥(private key),公钥加密,私钥解密。RSA算法也具有缺陷 : 效率相对较低 , 字节长度限制等,在实际应用中我们往往会结合对称性加密一起使用 , 秘钥使用RSA算法 】
1978年,Ron L. Rivest,Leonard M. Adleman以及 Michael L. Dertouzos提出了同态加密(Homomorphic Encryption)概念。允许对密文进行特定的代数运算后依然能得到加密的结果,将该结果解密以后的结果与对明文进行同样运算的结果会保持一致。
1982年,姚期智先生提出安全多方计算,即MPC。主要探讨n个参与方必须各自输入信息去计算一个约定的函数。除了计算的正确性,这一计算过程还必须保障每个参与方输入数据的隐私。
1989年,麻省理工学院研究人员Goldwasser、Micali 及 Rackoff提出了“零知识证明”的概念。指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
随着人类科技水平的不断进步,密码学和密码分析学技术得以推陈出新,这驱动着密码从业者不断突破创新,让密码学技术发挥出应有价值,得以运用在社会生活的各个角落。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。