(一)加密

对称加密

基础概念

明文:未经加密的消息,一般用字母P表示。

密文:加密后的消息,一般用字母C表示。

加密函数:将明文转化为密文的函数。

解密函数:将密文转化为明文的函数。

密钥:加密或解密函数的输入,作为计算项参与加解密过程,一般用字母K表示。

下面的图左边代表加密过程,右边代表解密过程。

加密过程:C=E(K,P)。

解密过程:P=D(K,C)。

一次一密机制

理论上最安全的密码机制。

在一次一密加密过程中,用长度与明文P相同的密钥K对明文加密,得到密文C

操作为:C=P⊕K

解密操作为逆操作

操作为:P=P⊕K⊕K=C⊕K

注意:一次一密体制中的秘钥K只能被使用一次。

如果使用两次,那么有以下运算

C1=P1⊕K

C2=P2⊕K

C1⊕C2=(P1⊕K)⊕(P2⊕K)=P1⊕P2⊕K⊕K=P1⊕P2

攻击者可以通过两次密文的异或操作得到原始两个明文的异或结果,知道两个明文中任何一个都可以恢复另一个,这样就不能保证绝对安全了。

一次一密的实用性不强,因为它要求密钥必须和明文一样长,若要加密1GB的明文还要去找1GB的秘钥,不可取。仅作为了解加解密过程的示例使用。

密码学中的概率

 衡量攻击成功的概率

1.计算成功事件的数量,例如找到一个正确的密钥这个事件。

2.计算可能事件的总数,例如一个n比特的秘钥,可能的值有2^n个。

随机查找的前提下,成功找到正确的密钥的概率为 1/2^n≈0;

加密安全性

安全的密码体制应该是 给定了大量的明文-密文对,但是密码体制作用于其他明文或密文时仍然无法获得密码的任何行为,无法通过对比猜测获取信息。

攻击模型 

攻击模型是关于攻击者可能如何与密码算法交互,以及他们可以做什么和不能做什么的一系列假设。攻击模型的目标如下:

1.为设计密码算法的密码学家设定要求,使他们知道要防御的攻击者和攻击类型。

2.为了给用户提供指导,要说明密码算法在他们的环境中是否可以安全使用。

3.为试图破解密码的密码学家提供一些头绪,以便他们知道给定的攻击是否有效,攻击有效指在所考虑的模型中可行。

Kerckhoffs原则 

密码的安全性应仅取决于密钥的保密性,而不应取决于加密算法的保密性。 这就是说即便加密系统代码被别人偷走也没关系,整个加解密过程可以公开。

查询

查询是一种将输入值发送到某个函数并获取输出作为返回结果的操作,这个过程并不会暴露该函数本身的细节。例如,加密查询输入明文并返回相应的密文,但不泄露密钥。这些模型被称为黑盒模型,因为攻击者只能看到密码体制的输入和输出。

几种黑盒模型

唯密文攻击者(ciphertext-onlyattackers, COA) 仅能观察到密文,但不知道相关的明文,也不知道有哪些可选择的明文。COA模型中的攻击者是完全被动的,无法执行加密或解密查询。

已知明文攻击者(known-plaintext attackers, KPA) 能观察密文并知道相关的明文。因此,KPA模型中的攻击者可以获得一系列明文-密文对,其中假定明文是随机选择的。同样,KPA也是被动攻击者模型。

选择明文攻击者( chosen-plaintext attackers, CPA) 可以对其选择的明文执行加密查询,并观察生成的密文。该模型刻画了攻击者具备了部分加密手段的场景。与符合被动模型的COA或KPA不同,CPA是主动攻击者,因为他们可以介入加密过程,而不是被动地进行窃听。

选择密文攻击者( chosen-ciphertext attackers, CCA) 可以执行加密查询和解密查询。CCA模型乍看起来很荒谬(既然攻击者都可以直接解密了 ),但与CPA模型-样,它旨在表示攻击者可能会介入加密和访问明文的情况。而且,解密某些内容并不一定足以攻破系统。例如,某些视频保护设备允许攻击者使用该设备的芯片执行加密查询和解密查询,但在这种情况下,攻击者对密钥进行重新分配就很感兴趣。在这种情况下,这种解密并不足以攻破系统。

灰盒模型  

在灰盒模型中,攻击者可以访问密码的实现。对于智能卡、嵌入式系统和虚拟化系统等应用程序,这使灰盒模型比黑盒模型更为现实,攻击者经常拥有物理访问权限,从而可以篡改算法的内部结构。同样,灰盒模型比黑盒模型更难以定义,因为它们依赖于物理和模拟属性,而不仅仅是算法的输入和输出,并且密码学理论通常无法抽象出现实世界的复杂性。

边信道攻击(也称侧信道攻击)是灰盒模型中的一类攻击。边信道是依赖于密码实现的信息源,无论是在软件还是硬件里。边信道攻击者观察或测量密码实施时的模拟特征,但并不改变其完整性。它们是非侵入的。对于纯软件实现,典型的边信道是执行时间,或围绕密码的系统行为,例如,错误消息、返回值、分支等。例如,在智能卡上实施时,典型的边信道攻击者会测量功耗、电磁辐射或声音噪声。

侵入式攻击是对密码实施方案的一类攻击,它比边信道攻击更强大,而且成本昂贵,因为往往需要复杂的设备。可以使用标准PC和现成的示波器运行基本的边信道攻击,但是侵入式攻击需要诸如高分辨率显微镜和化学实验室之类的工具或设施。因此,侵入式攻击包括一整套技术和程序, 从使用硝酸去除芯片的封装到显微图像采集和逆向工程,甚至可能通过激光故障注入之类的方法来改变芯片的行为。

安全性目标

不可区分性(Indistinguishability, IND):密文应该与随机字符串没有区别。例如,如果攻击者选择了两个明文,然后接收到两者的密文之一(随机选择其一) ,那么即使可以执行加密查询,也无法分辨出它是哪个明文对应的密文。(如果模型是CCA而不是CPA,则为解密查询)。

不可塑性(Non-malleability, NM):给定密文C1=E(K,P1),应该不可能创建另一个密文C2,使其对应的明文P2以有意义的方式与P1相关(例如,对应的P2等于P1⊕1或等于P1⊕X,其中X是某个已知值)。但是,一次一密系统是可塑的——给定密文C1=P1⊕K, 可以定义C2=C1⊕1,则在同一密钥K下它们对应的明文满足P2=P1⊕1。

安全性概念 

安全目标仅在与攻击模型结合使用时才有效,将安全性概念写为 安全目标-攻击模型 的形式,例如IND-CPA代表针对选择明文攻击者的不可区分性,NM-CCA表示针对选择密文攻击者的不可塑性等等。

IND-CPA

最重要的安全概念是IND-CPA,也称为语义安全。从直觉上理解,只要密钥保密,从密文中就不会泄露任何有关明文的信息。IND-CPA安全性要求, 对同一明文分别加密两次,则加密系统必须返回不同的密文。否则,攻击者可能会从密文发现“明文重复”这一事实,这与密文不应泄露任何信息的定义不符。

实现IND-CPA安全性的一种方法是使用随机加密。顾名思义,当相同的明文被加密两次时,它将随机化加密过程并返回不同的密文。可以将加密表示为C=E(K,R,P),其中R是每次刷新的随机比特。而解密仍然是确定的,即无论R的值如何,解密E(K,R,P)都应始终获得P。

如果攻击者选择两个明文P1和P2并接收这两个明文之一对应的密文,但不知道该密文对应于哪个明文。也就是说,他们获得Ci= E(K1,Pi)并猜测i是1还是2。在CPA模型中,攻击者可以执行加密查询以确定C1=E(K,P1)和C2=E(K,P2)。如果加密不是随机的,则只需查询Ci是否等于C1或C2即可确定对哪个明文进行了加密。因此,随机化是IND -CPA概念的关键

使用随机加密时, 密文必须比明文略长,以便每个明文都可以包含多个可能的密文。例如,如果每个明文可以对应264个可能的密文,则密文必须比明文至少长64比特。

IND-CPA的一个实现——确定性随机比特发生器

算法:E(K, R, P)= (DRBG(K || R) ⊕ P, R)

R:每次加密随机选择的字符串

K:密钥

P:明文

DRBG:确定性随机比特发生器

如果我们假设DRBG产生的是真随机比特串(而非伪随机比特串) ,则该密码是IND-CPA安全的。

反证法简单证明:

如果可以区分密文与随机比特串,就可以区分DRBG(K||R)⊕P与随机比特串,那么这意味着也可以将DRBG(K||R)与随机比特串区分开。这个推断是因为CPA模型允许攻击者获取所选P值对应的密文,因此可以将P与DRBG(K,R)⊕P进行XOR运算,从而获得DRBG(K, R)。但是矛盾在于,我们的假设是无法区分DRBG(K, R)与随机比特串的,因而我们也无法将密文与随机字符串区分开,即密文是安全的。

非对称加密 

简单介绍

非对称加密中,有两个密钥:一个用于加密,一个用于解密,加密的称为公钥,解密的称为私钥,公钥可以公开,私钥必须保密。

这种加密方式的特点就是在一个方向计算容易,但是逆运算几乎不可能完成。

非对称加密的攻击模型和安全目标类似于对称加密,不过,由于公钥是公开的,所以默认攻击模型为CPA(选择明文攻击)。

其他加密 

认证加密

简称AE,也是对称加密,算法:AE(K,P)=(C,T)

T:只有通过密钥才能获得的认证标签,一般是一个字符串。

K:密钥

P:明文

C:密文

解密过程需要K、C、T才能获取明文P,且必须核实标签T对于明文-密文对的合法性,否则报错。

标签保证了消息的完整性,且合法的密钥拥有方将其作为接收的密文与发送的密文的同一性凭据。当K仅由通信双方共享时,标签用于核实消息的发送方身份,其隐性地表明发送方就是消息的生产者。

格式保持加密

简称FPE,适合明文和密文保持同样格式的加解密,例如IP地址加密为另一个IP地址,电话号码加密为另一个电话号码等。

全同态加密

简称FHE,它使用户可以在不知道明文的情况下将密文C=E(K,P)替换为另一个密文C’=E(K,F(P)),其中F(P)可以是P的任意函数。比如,P可以是一个文本文档,F可以是对这个文档的部分修改。也就是说如果有个秘密文件已经加过密,不用解密改完再加密回去,可以直接修改并生成对应的密文。

这类加密通常很慢

可搜索加密

简称SE,通过对搜索请求加密,在不泄露数据库内容的情况下对加密的数据库进行检索。

可调加密

简称TE,类似于基本的加密,但其增加了被称为tweak的可调参数,用于模拟各种不同密码。

算法:TE(P,K)=(C,T)

T:可调参数,具有“让用户自己来保证用户密码不被第三方复制”的独特价值,其主要应用于磁盘加密。

一般和其他加密方式配合使用。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值