Alice向Bob发送电子邮件, Alice称为 sender ,Bob称为recevicer,电子邮件称为 message, message是通过计算机从Alice发送到Bob的计算机上的, 发送的过程中,message会经过 多台计算机和通信设备 进行中转,这个过程就存在 eavesdrop 偷看到的可能性。
为了不让 eavesdrop窃听,Alice选择将message 进行encrypt,encrypt之前的message叫做 plaintext,encrypt之后的message叫做ciphertext。Bob收到Alice进行encrypt的cihertext,再进行decrypt后使用。
Alice 和Bob通过cryptography保证了message的confidentiality。
有些坏人想要知道plaintext的内容,就需要采取 cryptanalysis,这种人叫做cryptanalyst 。
对称密码 和 公钥密码加密和解密算法一般通过秘钥 key 来作为中介,根据秘钥的使用方法可以将密码分为 对称密码 和 公钥密码(又叫做非对称密码)。
symmetirc crytography 是指在加密和解密时使用的同一种秘钥的方式。asymmetric crytography 是指在加密和解密时使用不同秘钥的方式,又称为 public-key crytography 。
还有种将对称密码和公钥密码结合起来的密码方式叫做混合密码 hybrid cryptosystem。
有时候 我们在网上下软件时担心有没有人去恶心篡改原作者的软件,植入恶意代码什么的。为了防止软件被篡改,有安全意识的开发者会在发布软件的同时发布该软件的 散列值 。散列值就是用单向散列函数 one-way hash function 计算出来的数值。下载软件时,就可以下载文件的散列值来和开发者发布软件时的散列值进行对比,以此判断是否原软件是否被篡改。
单向散列函数保证的不是机密性,而是保证数据的完整性 integrity。
消息码认证为了确认消息是否来自所期望的通信对象,可以使用消息认证码 message authentication code, 通过消息认证码不仅能够保证数据的完整性,还能提供认证功能。
数字签名举个栗子: Bob刚刚收到Alice的一封邮件,内容是 “以100万元的价格购买该商品”
那这封来自Alice的邮件到底是不是本人写的呢?邮件的发送者 ( From:一栏内容) 很容易被伪造 ,所以存在别人 伪造 spoofing 成 Alice的风险。
假如Alice真的发出过邮件,但是Alice原本写的内容真的是 “以100万元的价格购买该商品”吗?原本可能写的是1万元,在邮件传输过程中被某些别有用心的人篡改为100万元呢,所以有可能存在内容被别人篡改的风险。
还有一种耍赖的风险,加入Alice后来又不想交易了,就撒慌说我没有发过那封邮件。这种推翻自己 先前的主张的行为,称为 否认 repudiation。
所以数字签名就起到了防止上述 伪装、篡改和否认等威胁的技术, Alice可以用内容 “以100万元的价格购买该商品” 加上数字签名 后在进行邮件发送,而Bob这边可以对该数字签名进行 验证 verify。
伪随机数生成器 伪随机数生成器是一种能够模拟产生随机数列的算法。随机数和密码技术有关,可能我们会感到诧异,实际上随机数承担着秘钥生成的总要职责。例如 web中进行 SSL/TSL 通信时,会产生一个仅用于当前通信的临时秘钥,这个秘钥就是 伪随机数生成器 产生的,如果生成随机数的算法不好,则就会有被窃听者推测出的风险。
密码是一种能让消息内容变的无法解读的技术,而隐身术则是能隐藏消息本身,例如
隐写术在计算机中的应用有 数字水印 等。
最近,社会工程学逐渐流行,社会工程学是通过对社会人的心里弱点、习惯弱点的分析,通过非技术手段达到目的的过程。
最典型的电信诈骗等等。
例如攻击着可以不去通过破译经过加密的邮件,而是直接攻击Alice的电脑直接获取加密前的邮件明文。
最近兴起的量子密码,被认为有可能造就完美密码的技术。