什么是密码学?
密码学是一门旨在保护协议免受攻击者破坏的科学。什么是协议?协议是一个人或多个人为了完成某件事情而必须遵循的一系列步骤。
安全的通信(和存储)至关重要:
- 电子商务、电子银行、即时通讯、移动网络、无人机、航空...
但密码系统的用途远不止于此:
- 电子政府、电子参与、电子民主,
- 安全外包计算和存储,
- 隐私保护协议,
- 匿名凭证系统,
- 加密货币,
- 安全举报、反审查…
密码学不等于安全,但对它做出了重大贡献。
密码学自古以来就是“艺术”。
- 密码学家从经受住时间考验的设计中学习
- 通过提出新系统的循环过程进行设计,以承受已知的攻击,其他人发现新的攻击。
- 优点:倾向于产生更高效的系统
- 缺点:只涵盖已知的攻击,只包括试图破坏它的力量
自20世纪70年代以来,密码学被视为“科学”。
- 密码学家从一套定义明确的设计原则和模型中学习
- 通过定义对手目标和资源的模型进行设计,证明模型中的安全性,除非基本数学问题得到解决。
- 优点:系统的可重复使用技术,涵盖任何策略
- 缺点:只有和模型一样好,证明可能很复杂
在古代,当统治者和将军们互相背叛并各自策划秘密行动时,他们面临最大的问题就是如何与他们信任的人分享机密信息。在此背景下,密码学的相关概念和技术应运而生。
在理解加密之前需要先理解一些概念:
- 明文:明文指的是未被加密过的原始数据。
- 密文:明文被某种加密算法加密之后,会变成密文。密文也可以被解密,得到原始的明文。
- 密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。
现代加密方法:
- 定义伪随机排列(PRP):如果具有能力X的识别器D实现目标Y的概率可以忽略不计,则F是PRP
- 定义一个安全的加密方案:在选择的明文攻击下不可区分(IND-CPA):如果具有能力X的对手a实现目标Y的概率可以忽略不计,则加密为IND-CPA
对称加密
对称加密(Symmetric Encryption) 是密码学的重要概念之一。对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密。
Alice和Bob生成并共享密钥K
•Alice使用K加密明文M,获得密文C,并将其发送给Bob
•Bob使用K解密密文C并得到M
加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下:密文 + 解密算法 + 私钥 => 明文
对称加密方案是3种算法的集合:
•密钥生成算法(随机):
•输入:安全参数𝑛, 输出:𝑛-位键𝐾
•加密算法(可能是随机的):
•输入:键𝐾, 消息/明文𝑀, 输出:密文𝐶
•解密算法(确定性):
•输入:键𝐾, 密文𝐶, 输出:明文𝑀
Kerckhoff原则:只有密钥保密
Kerckhoff原则(1883):“The cipher method must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.”
按照柯克霍夫原则,一个保密系统中最重要的是密匙。只要保护好密匙,其他环节都不怕泄密,例如,算法可以公开,系统设计原理可以公开,但系统的密匙需要严格保密,这样就能实现加密的功能。然而,攻破一个密码算法的方式有很多种。对于加密算法,我们可以通过以下方式来攻击这个算法:将密钥泄露给攻击者、在没有密钥的情况下解密消息、仅仅通过观察加密的消息就可以知道消息本身等。任何对算法假设的削弱也可以认为算法被攻破。我们以高级加密标准AES (Advanced Encryption Standard) 加密算法为例。AES算法是一个由美国国家标准与技术研究院NIST (National Institute of Standards and Technology) 组织的国际竞赛的产物。 历经数年的公开分析,人们对候选算法产生了足够的信心、最终将一个最具有竞争力的算法提名为AES算法。如今,人们普遍认为AES算法是一个可靠、应用光辉反对加密算法。例如,我们每天浏览网页就会用到这个算法加密。
以公开方式构造密码算法标准的思路与Kerckhoff原则有关,该原则可以理解为:依靠保密算法来实现安全是不明智的,因为敌手很容易知道我们所使用的密码算法。因此,我们会选择公开密码算法。
如果Alice和Bob的敌手知道他们加密信息的算法,那么他们的加密算法还怎么保证安全呢?答案是密钥。协议的安全依赖密钥,而与算法本身是否保密无关。无论是我们将要学习的密码算法还是现实世界中使用的密码算法,我们通常都可以自由地进行研究和使用。
来源:
《深入浅出密码学》