第二十七个知识点:什么是对称密码加密的AEAD安全定义?

AEAD

在之前的博客里,Luke描述了一种被广泛使用的操作模式(ECB,CBC和CTR)对块密码。我们也可能会想我们加密方案的完整性,完整性意味着接收到的消息就是发送的消息,在信道中没有意外修改或者恶意修改,真实性意味着接收者确实是收到了发送者的消息。为了使用这些特性,我们通常使用消息认证码(MAC),那些基于hash的消息认证码叫做HMAC。把这两个密码原语放在一起不是平凡的:为了获得IND-CCA安全方案,我们需要遵循加密然后MAC的范式,使用安全的加密方案和一个强不可伪造的MAC,这意味着在密文上进行MAC。(这里这里给出了更多的信息关于“加密和MAC”,“MAC后加密”,关注为了我们要避免它们。“AD”指的是可变长度的相关数据(Associated Data),如包头,我们通常期望真实性和完整性,但不希望这个可选组件具有保密性。更多的阅读和例子,看Adam Langley's 博客关于这个话题的。

实际上传统的EtM,MtE,MaE都是有一些问题的,设计时要用真正的AEAD算法。

  • AES-128-GCM
  • AES-192-GCM
  • AES-256-GCM
  • ChaCha20-IETF-Poly1305
  • XChaCha20-IETF-Poly1305

在具备 AES 加速的 CPU(桌面,服务器)上,建议使用 AES-XXX-GCM 系列,移动设备建议使用 ChaCha20-IETF-Poly1305 系列。

IND-CCA

下周的博客将会深入研究IND-CCA2安全在一个公钥加密的上下文。在真随机数下的IND-CCA2(和IND-CCA1)安全定义是给攻击者一个加密oracle的权利,加密oracle的密钥是固定的。输入消息m,返回一个加密过的\(E_k(m)\)或者返回一个\(E_k(\$^{|x|})\),同时也给一个解密oracle给出密文\(c\),然后返回\(D_k(c)\)。然后攻击者进行区分。在2004年,Shrimpton展示了一种新的被称为IND-CCA3的概念,解密oracle对一个无法解密的oracle会返回一个不合法的符号,与之前考虑过的AE概念相同,其中隐私和真实性/完整性的概念分别进行研究。这一观察结果被纳入罗格威和希姆普顿的论文中,研究密钥包装问题和确定性认证加密。有关关联数据影响的更多信息,请参见此处此处

CCM和GCM

实际上,大量组织使用CCM模式和GCM模式。CCM模式是一种计数模式和CBC-MAC使用MAC-then-Encrypt方法构造的。GCM是块密码的计数模式和基于多项式的哈希函数GHASH使用Encrypt-then-MAC构造的。CCM相对没有效率,每次需要两个块密码的调用,同时CCM也不是在线的(每次在处理消息之前需要知道消息的长度)。GCM在这篇文章里也有一些缺点:http://eprint.iacr.org/2011/202

CAESAR competition

凯撒密码竞赛目前正在进行中,目的是在经过彻底的学术公众审查的基础上,选择一组经过认证的密码进行推荐。主要目标之一是让更多的研究人员思考这样一个重要的主题,而第一轮提交的大量论文(性质各异)表明,这一目标已经实现。第二轮的候选名单预计将于下周公布,提交的名单可以在AE Zoo(https://aezoo.compute.dtu.dk/doku.php)找到,由DTU的一些研究人员管理。

竞赛已经结束。(2020年)

第二十七个知识点:什么是对称密码加密的AEAD安全定义?的更多相关文章

  1. centos samba/squid 配置 samba配置 smbclient mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squid配置 3128 DNSPOD 第二十七节课

    centos  samba/squid 配置  samba配置 smbclient  mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squ ...

  2. 第十七个知识点:描述和比较DES和AES的轮结构

    第十七个知识点:描述和比较DES和AES的轮结构 这是密码学52件事中的第17篇.本周我们描述和比较DES和AES的结构. DES和AES都是迭代分组密码的例子.分组密码通过重复使用一个简单的轮函数来 ...

  3. NeHe OpenGL教程 第二十七课:影子

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. javaSE第二十七天

    第二十七天    447 1:反射(理解)    447 (1)类的加载及类加载器    447 (2)反射:    448 A:定义    448 B:获取字节码对象的三种方式    449 (3) ...

  5. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记

    第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...

  6. Gradle 1.12用户指南翻译——第二十七章. Ear 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  7. SQL注入之Sqli-labs系列第二十七关(过滤空格、注释符、union select)和第二十七A

    开始挑战第二十七关(Trick with SELECT & UNION) 第二十七A关(Trick with SELECT & UNION) 0x1看看源代码 (1)与26关一样,这次 ...

  8. “全栈2019”Java多线程第二十七章:Lock获取lock/释放unlock锁

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java第二十七章:流程控制语句中循环语句for

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 学习java 7.14

    学习内容: 标准输入输出流 输出语言的本质:是一个标准的输出流 字节打印流 字符打印流 对象序列化流 明天内容: 进程和线程 遇到问题: 用对象序列化流序列化一个对象后,假如我们修改了对象所属的类文件 ...

  2. .Net 下高性能分表分库组件-连接模式原理

    ShardingCore ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵. Github Source Code 助 ...

  3. A Child's History of England.21

    There was one tall Norman Knight who rode before the Norman army on a prancing horse, throwing up hi ...

  4. Spark On Yarn的各种Bug

    今天将代码以Spark On Yarn Cluster的方式提交,遇到了很多很多问题.特地记录一下. 代码通过--master yarn-client提交是没有问题的,但是通过--master yar ...

  5. R语言学习记录(二)

    4.对象改值 4.1.就地改值 比如: vec <- c(0,0,0,0,0,0,0) vec[1]<-100 #vec向量的第一个值就变为100 ####对于数据框的改值的方法,如下面的 ...

  6. ES6必知,箭头函数与普通函数的区别。

    1. 箭头函数没有prototype(原型),所以箭头函数本身没有this let a = () =>{}; console.log(a.prototype); // undefined 2. ...

  7. Linux基础命令---mget获取ftp文件

    mget 使用lftp登录mftp服务器之后,可以使用mget指令从服务器获取文件.mget指令可以使用通配符,而get指令则不可以.   1.语法       mget [-E]  [-a]  [- ...

  8. Apifox(2)快速上手apifox

    快速上手 使用场景 Apifox 是接口管理.开发.测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发.后端开发和测试人员. 前端开发 接口文档管理 接口数据 Mock 接口调试 前 ...

  9. Redis慢查询配置和优化

    目录 一.介绍 二.参数配置 sql动态配置 配置文件设置 三.sql操作 四.优化 一.介绍 慢查询只记录redis执行时间,并不记录redis服务到客户端之间的网络问题. 超过多少毫秒的才被记录 ...

  10. Linux中的正则

    目录 一.匹配规则 二.举例 一.匹配规则 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [^list] 匹配 除list 中的任意单一字符以外的字符 ...