CAIE AS and A Level CS revision - Unit 17 (2nd)
如遇到公式加载异常,请刷新页面!
Unit 17 Security 安全
17.1 Encryption, Encryption Protocols and Digital certificates 加密、加密协议和数字证书
- 大纲要求
17.1.1 Show understanding of how encryption works 了解加密的工作原理
Including the use of public key, private key, plain text, cipher text, encryption, symmetric key cryptography and asymmetric key cryptography 包括使用公钥、私钥、明文、密文、加密、对称密钥密码和非对称密钥密码
How the keys can be used to send a private message from the public to an individual/organisation 如何使用密钥将私人信息从公众发送给个人/组织
How the keys can be used to send a verified message to the public 如何使用密钥向公众发送经过验证的消息
How data is encrypted and decrypted, using symmetric and asymmetric cryptography 数据如何加密和解密,使用对称和非对称密码学
Purpose, benefits and drawbacks of quantum cryptography 量子密码学的目的、优缺点
- Encryption:加密,指以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,仍然无法了解信息的内容。
- Decryption:解密,指加密的逆过程,将已加密的信息数据还原回之前未加密前的状态。
- Encryption加密与Decryption解密的运行过程如下图所示:
- plain text:明文,指未加密前的数据。
- cipher text:密文,指加密后的数据。
- key:密钥,指加解密数据的工具。
- 注意:加密的算法是公开的,但密钥是保密的。
- 数据安全性的考量:
- Confidentiality:机密性,指只有预期的接收者才能解密密文。
- Authenticity:真实性,指接收者必须确定谁发送了密文。
- Integrity:完整性,指密文在传输过程中不得修改。
- Non-repudiation:不可否认性,指发送者和接收者都不能否认参与传输。
- Availability:可获得性,指不应该发生任何事情来阻止接收者接收传输。
- 加密方法:
- Symmetric key encryption:对称密钥加密方法,指发送者和接收者使用相同的密钥进行加解密的方法。
- 注意:本方法保密关键在于如何安全传输密钥,以确保该密钥不会被其他人非法获取。
- 常见的对称密钥加密方法:DES、3DES、IDEA、RC5、RC6等。【参考17.1.1】
- Asymmetric key encryption:非对称密钥加密方法,指发送者和接收者使用public key公钥和private key私钥来进行加解密的方法。
- public key公钥:与私钥一起使用的密钥对的非秘密一半,对外公开,可以传输给任何希望接收信息的对方。
- private key私钥:与公钥一起使用的密钥对的秘密一半,仅供自己使用,必须保持秘密。
- 注意:本方法不再关注传输密钥的安全性,因为对外传输的公钥是公开的。本方法关注于加密算法的复杂性和密钥的位数,一旦被他人非法窃取,如果加密算法足够复杂、密钥位数足够多,则可以尽量避免被对方暴力破解。
- 非对称密钥的加解密过程:发送者向接收者请求公钥,接收者将自己的公钥发送给对方。发送者使用对方提供的公钥对信息进行加密后,将密文发送给接收者。接收者收到密文后,使用自己的私钥对密文进行解密,恢复成明文。
- 常见的非对称密钥加密方法:RSA、PGP 等。【参考17.1.1】
- 注意:非对称加密比对称加密要安全,但算法速度较慢。
- Symmetric key encryption:对称密钥加密方法,指发送者和接收者使用相同的密钥进行加解密的方法。
- Symmetric key encryption对称密钥加密方法的加密过程(S-DES):整个过程分为IP置换、密钥置换、E扩展置换、S盒代替、P盒置换和逆初始置换IP-1。加密的具体过程如下:
- 准备必要的置换表。
- 为了加密一段数据,算法中准备了如下的置换表:
- 准备必要的置换表。
- 输入。加密过程需要加密人提供8位的明文M和10位的密钥key。
- 输入明文m= 00010110,10位的key=0111111101。
- 生成子密钥K1和K2。需要对输入的key做P10置换,之后将左半部分与右半部分进行左移循环后组合,得到新的10位数据后进行P8置换,得到子密钥K1。再次将左半部分与右半部分进行左移循环后组合,得到新的10位数据后进行P8置换,得到子密钥K2。
- 对key做P10置换。引入P10置换表{3,5,2,7,4,10,1,9,8,6}。按照置换规则,新数据的第1位是key的第3位,第2位是key的第5位,第3位是key的第2位,以此类推。由此得到置换后的新数据为11111 10011。
- 将左半部分记为Lk=11111,右半部分记为Rk=10011。Lk和Rk均向左循环平移一位(首尾相接),得到Lk'=11111,Rk'=00111。
- 将Lk'和Rk'组合起来得到新数据11111 00111。对新数据做P8置换以得到子密钥K1。引入P8置换表{6,3,7,4,8,5,10,9}。按照置换规则(如上所示),得到置换后的子密钥K1=0101 1111。
- 将Lk'和Rk'再次均向左循环平移两位(首尾相接),得到Lk''=11111,Rk''=11100。
- 将Lk''和Rk''组合起来得到新数据11111 11100。对新数据做P8置换以得到子密钥K2。引入P8置换表{6,3,7,4,8,5,10,9}。按照置换规则(如上所示),得到置换后的子密钥K2=1111 1100。
- 对明文进行IP置换。
- 对明文m=0001 0110做IP置换。引入IP置换表{2,6,3,1,4,8,5,7},得到m'=0100 1001。
- 第一次循环。将置换后的明文分为左半部分和右半部分。右半部分进行扩展后,与子密钥K1进行异或运算得到新数据。新数据再分为左半部分和右半部分,左半部分进入S0盒,右半部分进入S1盒,分别完成代换后组合。组合后的新数据做置换后和原左半部分进行异或运算,再与原右半部分组合,完成第一次循环。
- 记m'=0100 1001的左半部分Lm=0100,右半部分Rm=1001。
- 对Rm=1001做EP扩展。引入EP扩展表{4,1,2,3,2,3,4,1},置换后得到Rm'=1100 0011。
- Rm'=1100 0011与子密钥K1=0101 1111按位异或,得Rm''=1001 1100。
- Rm''=1001 1100的左半部分1001进入S0盒代换。根据代换的规则,将1001的四个位置视为ABCD,到S0表中找到第AD行、第BC列的数字并折合成二进制码。所以1001代换时,需要到S0盒中寻找11行、00列的数字,是3,折合成二进制码为11。
- Rm''=1001 1100的右半部分1100进入S1盒代换。根据代换的规则,1100的代换需要到S1盒中寻找10行、10列的数字,是1,折合成二进制码为01。
- 将左右两部分代换后的数字进行组合,得Rm'''=1101。
- 对Rm'''=1101做P4置换。引入P4置换表{2,4,3,1},置换后得到Rm''''=1101。
- Rm''''=1101与Lm=0100按位异或,得Lm'=1001。
- Lm'=1001与Rm=1001组合,得到n=1001 1001。至此完成第一次循环。
- 第二次循环。与第一次循环类似,但使用子密钥K2。
- 记n=1001 1001的左半部分Ln=1001,右半部分Rn=1001。
- 对Rn=1001做EP扩展。引入EP扩展表{4,1,2,3,2,3,4,1},置换后得到Rn'= 1100 0011。
- Rn'=1100 0011与子密钥K2=1111 1100按位异或,得Rn''=0011 1111。
- Rn''=0011 1111的左半部分0011进入S0盒代换。根据代换的规则,0011的代换需要到S0盒中寻找01行、01列的数字,是2,折合成二进制码为10。
- Rn''=0011 1111的右半部分1111进入S1盒代换。根据代换的规则,1111的代换需要到S1盒中寻找11行、11列的数字,是3,折合成二进制码为11。
- 将左右两部分代换后的数字进行组合,得Rn'''=1011。
- 对Rn'''=1011做P4置换。引入P4置换表{2,4,3,1},置换后得到Rn''''=0111。
- Rn''''=0111与Ln=1001按位异或,得Ln'=1110。
- Ln'=1110与Rn=1001组合,得到n=1110 1001。至此完成第二次循环。
- 对循环结束的输出进行IP-1逆置换。
- 对循环结束的输出n=1110 1001做IP-1逆置换。引入IP-1逆置换表{4,1,3,5,7,2,8,6},置换后得到m''=0100 1001。
- m''=0100 1001即为明文m=00010110加密后的密文。至此加密结束。
- 关于解密:从对密文进行IP置换步骤开始,进行同样的操作流程,只是先使用子密钥K2,后使用子密钥K1。
- 操作流程图如下所示:
- 输入。加密过程需要加密人提供8位的明文M和10位的密钥key。
- Asymmetric key encryption非对称密钥加密方法的加密过程(RSA):
- 选择两个非常大的素数p和q,并计算它们的乘积n。
- 计算乘积(p-1)(q-1)。
- 选择小于 (p-1)(q-1) 且不是其因数的素数 e(通常选择 65537)。
- 找到另一个数 d,它满足 d 乘以 e 除以 (p-1)(q-1) 后余数为 1 的条件。
- 公钥取数对 (n,e)。
- 私钥取数对 (n,d) 。
- 加密时,密文y=xe mod n。其中x是明文。
- 解密时,明文x=yd mod n。其中y是密文。
- 注意:RSA的加密原理在于,在合理的时间范围内,寻找一个足够大的数字的因子几乎是不可能的。给出数字n,去寻找其因子p和q是极其困难的事情。
- Quantum cryptography:量子密码学,指基于单个光子的应用和它们固有的量子属性开发的不可破解的密码系统。
- 量子密码学的目的:构建不可破解的密码系统。其主要理论依据是Heinsberg's Uncertainty Principle海森堡不确定性定理,即在一个量子力学系统中,一个粒子的位置和它的动量不可被同时确定。如果窃听者获取了二者之一,则不可能获取到另一部分。
- 量子密码学的操作:
- photon光子的振动有不同的方向,称为polarisation极化。简单起见,选择水平、垂直和对角的方向作为二进制码的对应,如下图所示(具体还会分上、下、左、右、左上、左下、右上、右下):
- 发送者使用随机的偏光镜将一段随机信息的polarisation basis极化基础发送给接收者,接收者也会随机选择偏光镜接受这些光子。发送者会将极化基础如何表现每个数值的情况告知接收者(仅告知是直线还是对角线,不会告知具体方向),接收者会回复发送者哪些数值被成功接收。由此,二者之间可以确定“shared secret” code“分享秘密”代码,用以建立二者之间通信传输的特定规则。
- 量子密码学的优点:保密性极强。
- 量子密码学的缺点:不能使用标准通信传输,发送者和接收者之间必须建立专属量子通道,成本太高。
17.1.2 Show awareness of the Secure Socket Layer (SSL)/Transport Layer Security (TLS) 展示对安全套接层 (SSL)/传输层安全 (TLS) 的认识
Purpose of SSL / TLS SSL / TLS的目的
Use of SSL/TLS in client-server communication 在客户端-服务器通信中使用 SSL/TLS
Situations where the use of SSL/TLS would be appropriate 适合使用 SSL/TLS 的情况
- Secure Socket Layer (SSL):安全套接层协议。该协议位于TCP协议(传输层)与应用层之间,为数据传输提供安全支持。目前其主要用于对HTTP的保护,SSL协议生效后,HTTP会变为HTTPS。
- 使用SSL的目的:保护数据传输安全。
- 对SSL的一些说明:
- SSL是一个protocol suite协议套件,包含Handshake protocol握手协议、Record protocol记录协议、Alert protocol警报协议三个协议。
- Handshake protocol:握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。该协议需要在应用程序的数据传输之前使用。
- 使用SSL时的运行过程:
- 浏览器会向服务器请求SSL证书以确认其身份,服务器发送SSL证书及其公钥,浏览器使用该公钥将密钥加密并传输给服务器,作为对称密钥以完成一次性的通信。
- 注意:用户在SSL运行时无需进行任何操作。
- Transport Layer Security (TLS):传输层安全协议。该协议是SSL协议的升级版,用于解决SSL中一些问题。但现在SSL仍普遍使用。
17.1.3 Show understanding of digital certification 展示对数字认证的理解
How a digital certificate is acquired 如何获取数字证书
How a digital certificate is used to produce digital signatures 如何使用数字证书产生数字签名
- Digest:摘要,指一段信息经由cryptographic one-way hash function加密单向哈希函数计算后得到的一串哈希值。
- 注意:即使信息中发生了非常小的一点变动,该哈希值也会发生变化,由此能够保证数据没有发生修改。
- Digital signature:数字签名,又称公钥数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串。对digest摘要进行私钥加密,形成数字签名。示意图如下所示:
- 对数字签名的验证:数字签名和信息明文会一并发送给接收方。接收方收到后,会将信息明文输入哈希函数计算出一段摘要。然后接收方使用发送方的公钥对数字签名进行解密,获得摘要。接收方将两份摘要进行比对,如果完全一致则说明发送方确实拥有着和公钥成对的私钥,发送方的身份得到验证。示意图如下所示:
- 注意:数字签名与普通加密过程的区别:
- 普通加密过程是发送方收到接收方的公钥后,使用对方公钥加密数据形成密文,然后将密文发送给接收方。接收方收到密文后,使用自己的私钥解密,获得明文。示意图如下所示:
- 注意:数字签名与普通加密过程的区别:
- 数字签名是发送方使用自己的私钥加密摘要形成密文,该密文即为数字签名。数字签名发送给接收方后,接收方需要进行数字签名验证。接收方使用预计发送方的公钥解密获得明文。如果能够成功解密,说明发送该密文的人手里拥有预计发送方的私钥(该私钥应该只有发送方才能够拥有),由此发送方的身份得到验证。示意图如下所示:
- 数字签名存在的问题:接收方仅能证明发送方确实拥有着与发送来的公钥成对的私钥,但发送方仍可能伪造身份。
- Digital certificate:数字证书,指由Certification Authority(CA)证书颁发机构数字签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及一些扩展信息的数字文件。由于有权威机构的背书,数字证书比数字签名更可信。目前的数字证书采用的是X.509技术。
- Certification Authority(CA):证书颁发机构,是Public Key Infrastructure(PKI)公钥基础设施的一个组成部分。
- 数字证书的操作过程:
- 接收方原本应该将公钥提供给发送方,但为了令发送方相信自己的身份(提供的公钥是准确的而非别人伪造的),接收方改将公钥提供给了Certification Authority(CA)证书颁发机构。
- CA对接收方身份进行仔细确认,认定无误后,CA将为接收方创建digital certificate数字证书,其中包含接收方的公钥等相关信息,并以CA的私钥进行加密,为其增加CA的digital signature数字签名。
- CA将制作好的数字证书发给接收方,接收方将其放在自己的网站或者专门存放数字证书的网站。任何想要向接收方传输信息的发送方都可以从这些渠道获取接收方的电子证书,并使用CA提供的公钥对其进行验证,获取到对方的传输公钥。此时获取到的公钥是经过CA信用背书的,比直接从接收方获得要更加可信和安全。
- 示意图如下所示: