密码学理论06:CCA安全;认证加密

选择密文攻击

选择密文 (CCA) 攻击的定义类似于选择明文攻击 (CPA),但攻击者不仅可以访问加密 oracle Enck(·),还可以访问解密 oracle
Deck(·)。

填充预言机攻击 Padding-oracle attacks

讨论攻击者发起一种非常弱(且现实)的选择密文攻击形式的攻击:他只需要知道所选择的密文是否有效(合法)。

—— PKCS#5填充

CBC 只能加密长度是底层 PRP 块大小(通常为 16 字节)的倍数的消息。如果消息不具有此属性,则需要将其“ 填充 ”到正确的长度。

假设 m 的长度为 L 字节,令 b := 16 − L mod 16(所以 L + b 是 16 的倍数)。要填充 m,只需将 b 乘以值 b
附加到末尾(除非 b = 0 然后将其添加 16 次):

Hello → Hello||BBBBBBBBBBB
HelloWorld → HelloWorld||666666
abcdefghijklmnop → abcdefghijklmnop||0000000000000000

去除填充,(解密)读取最后一个字节0xb,然后检查最后b个字节是否全部为0xb,如果是,则去除最后b个字节并输出剩余的字符串,否则输出填充错误。

解密检查明文是否有正确的填充。如果没有返回错误。如果可以 访问解密 oracle 来判断密文是否有效,则可以恢复整个消息!

如果我们将 c1 更改为 a c ′ = c1 ⊕ △,最后一个块将被解码为 m ′ 2 = F −1 k (c2) ⊕ c ′ 1 = m2 ⊕
△。对手可以访问解密 oracle,它只告诉解密是否失败。

可以学习到 b :更改 c1 的第一个字节,如果解密失败则 b = 16,否则更改 c1 的第二个字节,如果解密失败 b = 15,等等:

Hello||BBBBBBBBBBB → Xello||BBBBBBBBBBB padding ok
Hello||BBBBBBBBBBB → XXXXX||XBBBBBBBBBB not ok

一旦 A 学习到了 b,他就知道 m2 以 M b · · · b(共b个b)结尾。定义 △i = 0…0i(b + 1)…(b +
1)【b个b+1】⊕0…0 b…b【b个b】。用 c1 ⊕ △i 替换 c1 将返回填充错误,除非 m2 ⊕ △i 的最后 b + 1 个字节都是
(b + 1),当且仅当 M的最后一个字节 ⊕ i = (b + 1)。最多可以在 2^8 个查询中学习到M的最后一个字节:

Helloworld||666666 → Helloworl||7777777

CCA安全

【CCA安全的experiment】

Π =(Gen,Enc,Dec) 在选择密文攻击下具有无法区分的加密,或者对于每个 PPT 对手来说都是 CCA安全的,若experient满足:

Pr[Privk_{A,\Pi }^{cca}(n)=1]\leq
1/2+negl(n)

CCA 安全意味着/需要不可展性。

不可展的加密方案具有这样的性质:对手修改给定的密文,结果解密为 与原始明文无关 的明文。

认证加密 Authenticated encryption

我们已经了解了如何使用(对称)加密实现机密性,以及使用 MAC 进行身份验证。

“认证加密”同时实现了这两者,其中机密性意味着 CCA 安全,但由于 MAC
在语义上与加密不同,我们需要定义加密方案的认证性的含义。——敌手无法伪造一个合法的密文

【experiment:敌手无法伪造合法的密文】

Π 的不可伪造性定义:如果对于所有 PPT 对手 A,有一个可忽略的函数 negl 使得:

![Pr[Enc-Forge_{A,\Pi }(n)=1]\leq
negl(n)](https://latex.csdn.net/eq?Pr%5BEnc-
Forge_%7BA%2C%5CPi%20%7D%28n%29%3D1%5D%5Cleq%20negl%28n%29)

(1)如果对称加密方案是 CCA 安全且不可伪造的,则它是认证加密 (AE) 方案。

【experiment:类UC】

(2)如果对于所有 PPT 对手 A 都有一个可忽略的函数 negl 使得下式满足,那么对称加密方案是认证加密 (AE) 方案:

Pr[Privk_{A,\Pi }^{ae}(n)=1]\leq
1/2+negl(n)

(1)、(2)两种定义等价

认证加密方案

多个独立的安全的密码工具组合 ≠ 安全的密码系统

  1. 加密-and-认证:t可能显示整个 m(例:t’=m||t)——不满足通用的机密性;(若是确定性MAC)对相同的m,t也相同——无法保证CPA安全。
  2. 认证-then-加密:若Enc不是CCA安全的,则Enc’也不是CCA安全的(例:padding oracle attack)——SSL方案,但无法抵御计时攻击。
  3. 加密-then-认证:如果 ΠM 是强 MAC 而 ΠE 是 CPA 安全的,则 ΠAE 是认证加密方案。
标准方案

GCM、CCM、ChaCha20-Poly1305

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值