密码学是一门通过转码解码来传递信息的学科,把人们能够读懂的消息变换成不易读懂的信息以隐藏信息内容,同时又能够让合法用户把变换的结果还原成能够读懂的消息。
一般而言,密码需要经历加密、解密两种过程。数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
密码学的发展主要经历了 3 个阶段: (1)古典密码 这个时期的密码应该被称之为艺术,而不是科学,是古代人民智慧的结晶,典型的密码有阴符、藏头诗、石蜡密信、反切密码(明代戚继光)、凯撒密码和天书等。 (2)近代密码 1949 年,伟大科学家香农发表了著名的《保密系统的通信理论》和《通信的数学理论》两篇文章,使得密码学从此由艺术走上了科学的道路,成为一门学科。 (3)现代密码学 1976 年,美国国家标准局公布了数据加密标准(DES),这一对称密码标准在世界上广泛流传和应用;同年,密码学家、图灵奖获得者 Diffie 和 Hellman(2016 年图灵奖)发表了《密码学的新方向》,开创了公钥密码学的新纪元。
在如今的信息安全领域,加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法。该实验中,增加了混合加密算法这一分类,但其本质上是对称加密和非对称加密的结合。
对称加密算法: 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。 在计算机专网系统中广泛使用的对称加密算法有 AES,DES 和 IDEA 等。
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。缺点是参与方需要提前持有密钥,一旦有人泄露则系统安全性被破坏。另外在不安全的通道中分发密钥时,为了保证密钥的安全性,需要借助其他加密算法对密钥进行加密。
衡量对称算法优劣的主要尺度是其密钥的长度。密钥越长,在找到解密数据所需的正确密钥之前必须测试的密钥数量就越多。需要测试的密钥越多,破解这种算法就越困难。
这种算法主要适用于大量数据或关键数据加密,不能用于签名场景,并且需要提前安全地分发密钥。
非对称加密算法: 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;甲方再用自己的私匙对乙方发送回来的数据进行验签。 使用最广泛的非对称加密算法是 RSA 算法,另一种常见的是 Elgamal 算法。
非对称加密算法的优点是保密性比较好,它消除了最终用户交换密钥的需要。缺点是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
这种算法主要适用于加密少量数据,对安全性要求比较高的场景。
哈希散列算法: 采用某种散列函数,输入不同长度的明文,得到相同的长度的密文,明文的微小变化都能引起密文的巨大变化。其实哈希散列算法不算是真正的加密,而是生成对应明文的指纹信息,用来校验数据的完整性。或者应用于生成信息摘要,验证信息的完整性。通常数据库中存储的用户密码就是经过哈希算法处理了的。
常见的哈希散列算法有 MD5,SHA-1 等。
混合加密算法: 混合加密机制同时结合了对称加密和非对称加密的优点。 该机制的主要过程为:先用非对称加密(计算复杂度较高)协商出一个临时的对称加密密钥(或称会话密钥),然后双方再通过对称加密算法(计算复杂度较低)对所传递的大量数据进行快速的加密处理。
典型的应用案例是网站中使用越来越普遍的通信协议 -- 安全超文本传输协议(Hyper Text Transfer Protocol Secure,HTTPS)。 它和明文方式传输数据的 HTTP 协议不同,HTTPS 在传统的 HTTP 层和 TCP 层之间引入 Transport Layer Security/Secure Socket Layer(TLS/SSL)加密层来实现安全传输。
OpenSSL: OpenSSL 是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及 SSL 协议,并提供了丰富的应用程序供测试或其它目的使用。可以实现:信息摘要、对称加密、非对称加密和秘钥证书管理四个功能。
信息摘要 OpenSSL 实现了 5 种信息摘要算法,分别是 MD2、MD5、MDC2、SHA(SHA1)和 RIPEMD。SHA 算法事实上包括了 SHA 和 SHA1 两种信息摘要算法。此外,OpenSSL 还实现了 DSS 标准中规定的两种信息摘要算法 DSS 和 DSS1。
对称加密 OpenSSL 一共提供了 8 种对称加密算法,其中 7 种是分组加密算法,仅有的一种流加密算法是 RC4。这 7 种分组加密算法分别是 AES、DES、Blowfish、CAST、IDEA、RC2、RC5。
非对称加密 OpenSSL 一共实现了 4 种非对称加密算法,包括 DH 算法、RSA 算法、DSA 算法和椭圆曲线算法(EC)。DH 算法一般用于密钥交换。RSA 算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA 算法则一般只用于数字签名。
密钥证书管理 OpenSSL 提供的 CA 应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。
查看OpenSSL报告手册:
OpenSSL的命令格式为 openssl command [command_opts] [command_args] 我们需要提供一个命令 command,及其对应的选项 command_opts 和参数 command_args。
对于 dgst(摘要命令),常用的选项有: -md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1 :指定一种摘要算法
通过dgst指令-md5算法加密文字:
学习时间 86分钟
操作时间 12分钟
按键次数 39次
实验次数 5次
报告字数 3227字
是否完成 完成