1. 密码学概述
(1)密码学的发展历程
密码学是一门古老而深奥的学科,是结合数学、计算机科学、电子与通信等诸多学科于一体的交叉学科,是研究信息系统安全保密的一门科学 。密码学主要包括密码编码学和密码分析学两个分支,其中密码编码学的主要目的是寻求保证信息保密性或仁整形的方法,密码分析学的主要目的是研究加密消息的破译或消息的伪造 。密码学经历了从古代密码学到现代密码学的演变 。
文章插图
文章插图
文章插图
最早将现代密码学概念运用于实际的是Caesar大帝,他是古罗马帝国末期著名的统帅和政治家 。Caesar发明了一种简单的加密算法把他的信息加密用于军队传递,后来被称为Caesar密码 。它是将字母按字母表的顺序排列,并且最后一个字母与第一个字母相连 。加密方法是将明文中的每个字母用其后边的第三个字母代替,就变成了密文 。
替代密码的基本思想,是将明文中的每个字母用此字符在字母表中后面第 k个字母替代,加密过程可以表示为函数E(m)=(m+k) mod n 。其中:m 为明文字母在字母表中的位置数,n 为字母表中的字母个数,k 为密钥,E(m)为密文字母在字母表中对应的位置数 。其解密过程可以表示为函数E(m)=(m-k) mod n 。
置换密码的基本思想,不改变明文字符,只是将字符在明文中的排列顺序改变,从而实现明文信息的加密,又称为换位密码 。矩阵换位法是实现置换密码的一种常用方法,它将明文中的字母按照给的顺序安排在一个矩阵中,然后根据密钥提供的顺序重新组合矩阵中字母,从而形成密文 。
第一阶段:古代―1949年
这阶段的密码技术可以说是一种艺术,而不是一种科学,密码学专家常常是凭知觉和信念来进行密码设计和分析,而不是推理和证明,没有形成密码学的系统理论 。这一阶段设计的密码称为经典密码或古典密码,并且密码算法在现代计算机技术条件下都是不安全的 。
第二阶段:1949―1975年
1949年C.E.Shannon(香农)发表在《贝尔实验室技术杂志》上的《保密系统的信息理论(Communication Theory of Secrecy System)》为私钥密码体系(对称加密)建立了理论基础,从此密码学成为一门科学 。图3-3为Shannon提出的保密通信模型 。密码学直到今天仍具有艺术性,是具有艺术性的一门科学 。这段时期密码学理论的研究工作进展不大 。1967年David Kahn发表了《The Code Breakers(破译者)》一书,详尽地阐述了密码学的发展和历史,使人们开始了解和接触密码 。1976年,Pfister(菲斯特)和美国国家安全局NSA(National Security Agency)一起制定了数据加密标准(Data Encryption Standard,DES),这是一个具有深远影响的分组密码算法 。
文章插图
第三阶段:1976年到~
1976年Diffie和Hellman发表的文章“密码学发展的新方向”导致了密码学上的一场革命,他们首先证明了在发送端和接收端无密钥传输的保密通信是可能的,从而开创了公钥密码学的新纪元 。从此,密码开始充分发挥它的商用价值和社会价值 。1978年,在ACM通信中,Rivest、Shamir和Adleman公布了RSA密码体系,这是第一个真正实用的公钥密码体系,可以用于公钥加密和数字签名 。由于RSA算法对计算机安全和通信的巨大贡献,该算法的3个发明人因此获得计算机界的诺贝尔奖—图灵奖(A.M.Turing Award) 。在EuroCrypt’91年会上,中国旅居瑞士学者来学嘉(X.J.Lai)和James L. Massey提出了IDEA,成为分组密码发展史上的又一个里程碑 。
3.1.2 密码学的基本知识
密码学的基本目的是使得两个在不安全信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信 。不安全信道在实际中是普遍存在的,例如电话线或计算机网络 。Alice发送给Bob的信息,通常称为明文(plaintext),例如英文单词、数据或符号 。Alice使用预先商量好的密钥(key)对明文进行加密,加密过的明文称为密文(ciphertext),Alice将密文通过信道发送给Bob 。对于敌手Oscar来说,他可以窃听到信道中Alice发送的密文,但是却无法知道其所对应的明文;而对于接收者Bob,由于知道密钥,可以对密文进行解密,从而获得明文 。图3-4给出加密通信的基本过程,加密算法E,解密算法D,明文M,密文C;要传输明文M,首先要加密得到密文C,即C=E(M),接受者收到C后,要对其进行解密,即D(C)=M,为了保证将明文恢复,要求D(E(M))=M 。
推荐阅读
- 2020十大基础软件创新
- 一文搞懂 SQL:基础知识和业务实践总结
- 淘宝店铺0销量怎么办 淘宝新店怎么做基础销量
- CentOS 7中常用的基础命令
- 淘宝店铺怎么做基础 零基础怎么开网店
- 淘宝开店技巧与营销 做淘宝店铺最基础的运营技巧
- 基础通俗讲解集成学习算法
- 淘宝如何做到月销几千 淘宝新店怎么做基础销量
- 太厉害了!总算有人把“串行通信”的基础知识讲的明明白白了
- 混淆矩阵-不再那么令人混淆了