密码学书籍推荐—附赠读书笔记一枚
想象大家小时候都有这种所谓的“解密”情节吧,对那些深奥复杂的密码,都想要一探究竟,但当时我们了解的都是一些密码锁、密码箱,最近流行的小黄锁等类似password,今天让我和大家一同学习一下所谓的信息加密吧,通过这些知识,让你也能通过加解密建立一个你和朋友的独特专用信息通道,快来试试奥,你就是下一个密码之王。
今天我推荐的这本书是《图解密码技术》【日】结城浩著 周自恒译,这本书通俗易懂讲解了密码学,让你轻松明白密码的本质,以及加解密的原理方法等等,话不多说,先奉上干货了。
第一讲、3分钟环游密码世界
密码学总是给我们一种神秘感和好奇感,一看到密码学就会想到纷繁复杂、晦涩难懂的各种数学算法。今天,让我们抛开密码算法细节,从整体上了解一下密码世界的各个成员。
1、首先,让我们来了解一些密码学需要知道的名词。
想象一下小岗需要向小梅发送一份电子邮件,那么发邮件的小岗就叫做发送者(sender),接收邮件的小梅就叫做接收者(receiver),同时被发送的消息(本例中的邮件)也统称为消息。被发送的邮件会在许多台通信设备间进行中转,在此过程中就有可能被恶意监听者(eavesdropper)所监视或窃听(监听者可能是某个软件或者某种监听器)。
为了防止别人偷看自己发给小梅的邮件,小岗将邮件进行加密(encrypt)后发送,加密之前的消息称为明文(plaintext),加密之后的消息则称之为密文(ciphertext),这样即使被窃听者偷听,其得到的只不过是看不懂的乱码而已,但与此同时小梅收到邮件后也只是得到了密文,她需要将密文恢复为明文才能得以阅读,这个过程就叫做解密(decrypt)。
上述情景中,小岗和小梅通过密码技术(cryptography),保证了消息的机密性(confidentiality)。
使消息保密的技术与科学叫做密码编码学(cryptography),从事密码编码学的人叫做密码编码者(cryptographer);破译密文的科学与技术叫做密码分析学(cryptanalysis),从事密码分析的专业人员也叫做密码分析者(cryptanalyst),也叫破译者,破译者有时也指一些为了偷取信息而破译的人。精通密码分析与编码的人也称之为密码学家(cryptologist)。
算法(algorithm)是指用于解决复杂问题的“步骤”。加密算法、解密算法结合在一起称为密码算法。
密码学中的密钥(key)是一串相当大的数字,相当于现实生活中保险箱的钥匙,它可以帮你保护你的重要数据。我们需要特别注意保护好自己的密钥,防止密钥被盗,否则里边的重要数据也会被他人所窃取。
对称密码(symmetric cryptography)是指加密和解密时使用同一个密钥的方式。也称公共密钥密码(common-key cryptography)、传统密码(conventional
cryptography)、私钥密码(secret-key cryptography)、共享密钥密码(shared-key cryptography)。
公钥密码(public-key cryptography)则是指在加密和解密时使用不同密钥的方式。又称为非对称密码(asymmetric cryptography)
混合密码系统(hybrid cryptosystem)是指将公钥密码与对称密码相结合的方式。
对于经单向散列函数(one-way hash function)计算的散列值(hash)可以判断消息(或软件)的完整性(integrity),即是否被篡改。
散列值也称为哈希值、密码校验和(cryptographic checksum)、指纹(fingerprint)、消息摘要(message digest)等
消息认证码(message authentication code)既能确定消息是否被篡改,还能确认是否来自所期待的的通信对象,即既能保证完整性,又能提供认证机制(authentication).但不能防止伪装(spoofing)和否认(repudiation)。
数字签名(digital signature),是一种既能够确保其完整性又能提供认证并防止否认的密码技术。
伪随机数生成器(pseudo randomnumbergenerator,PRNG),是一种能够模拟产生随机数列的算法。
密码(cryptography)是一种能够让消息内容变得无法解读的技术;
隐写术(steganography)是一种能够隐藏消息本身的技术。例如藏头诗、最近的数字水印技术是一种将著作权拥有者及购买者的信息嵌入文件中的技术。但仅凭数字水印技术是无法对信息进行保密的,需要与其他技术配合使用。俄罗斯间谍通过隐写术将信息根据像素隐藏在图片中被FBI抓获。感兴趣的(不能看出3D效果)可到http://www.vision3d.com/察看。
密码影藏的是内容,隐写术隐藏的是密码本身。我们将要嵌入的文章进行加密并生成密文,然后再通过隐写术将密文隐藏在图片中就能更好的保密信息。
任务:探究如何将消息隐藏在图片中。
3、密码与信息安全常识
(1)不要使用保密的密码算法
从密码学历史来看,密码算法的秘密作中无一例外的会被暴露出来,总的来说,DVD的密码算法也没能幸免被扒皮的命运,RSA公司的RC4曾经是保密的但最终还是被一位匿名人士公布;而且仅靠公司的能力开发出强度较高的密码是非常困难的,而现在世界上公开的被认为强度较高的密码算法,几乎都是经过密码破译者长期尝试破解未果而存活下来的。因此,选择公开密码更具保密性。
试图通过密码的算法本身进行保密来确保安全性的行为,一般称为隐蔽式安全性(security by obsecurity),这种行为是危险且愚蠢的。
(2)任何密码总有一天都会被破解。
严格来说,绝对不会被破译的密码是存在的,这种算法被称为一次性密码本(one-time pad),、但他不是一种现实可用的密码。此外,量子密码被认为可能造就完美的密码技术。
(3)密码只是信息安全的一部分
或许窃取信息并不需要破解密码,可以直接攻击电脑获取解密后的信息,现在流行的社会工程学(social engineering)攻击开始流行。例如,办公室的内线电话响起,电话里说“我是IT部的,由于需要对你的电脑进行安全检查,请你将密码临时改为ly1234”,而实际上拨打电话的可能就是一名攻击者。
要保证密码的安全性,就需要理解system这一概念。复杂的system就像是一根由无数个环节相连组成的链条,如果用力拉,链条就会从最薄弱的环节处断开。因此,系统的强弱取决于其中最薄弱的环节的强度。
完美的密码技术因为有不完美的人类参与而无法实现完美的安全性!
图解密码技术【日】结城浩著周自恒译(学习笔记一)
推荐书目:《网络信息安全的真相》(Secret And Lies:Digital Security In Networked World)
布鲁斯•施莱尔2000年著中文版由机械工业出版社2001年9月出版吴世忠等译
《密码故事》(The Code Book:The History and Exploration),西蒙••辛格1999年中文版由海南出版社2001年10月出版,朱小蓬等译
《程序员的数学》日 结城浩著 中文版由人民邮电出版社出版 管杰译