热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

密码分析之代数攻击简介

代数攻击简介密码分析是为了还原加密的密文而对密码或系统进行分析的研究.顾名思义,代数密码分析是密码分析方法的一种,主要利用代数技术,如方程求解算法.对于具有简单代数结构的密码,例如

代数攻击简介




密码分析是为了还原加密的密文而对密码或系统进行分析的研究.顾名思义,代数密码分析是密码分析方法的一种,主要利用代数技术,如方程求解算法.对于具有简单代数结构的密码,例如具有低代数度的轮函数的密码协议(例如DES的轮函数是一个对合变换),代数密码分析被证明是强大的.

在这里插入图片描述

动机(Motivation)

具有简单代数结构的对称加密算法(意即抗代数攻击)正从许多要求具备轻量级实现、高效隐秘对策和低乘法复杂性等特定需求的应用场景中涌现出来.

实现轻量级方案的方法之一是最小化算法circle的logic area(逻辑实现电路的复杂度).为了具有尽可能小的logic area,优先使用具有低代数次数和稀疏代数表示的轮函数.一个显著的例子是流密码Trivium.低阶稀疏基元的另一个优点是降低了侧信道密码攻击对抗的实现成本.例如,SHA-3 winner Keccak和认证加密方案ASCON旨在通过使用稀疏二次轮函数来降低隐秘对策(masking countermeasures)的成本.在多方计算(MPC)、全同态加密(FHE)和零知识证明(Zero-Knowledge proof)的背景下,提出了许多新的对称原语.这些原语的主要设计目标是最小化乘法复杂度,即最小化实现电路中的乘法次数/最小化电路的乘法深度.分组密码LowMC和MiMC是最早专门用于多方计算(MPC)和全同态加密(FHE)的设计之一.

分析上述密码的安全性是一个重大挑战.因此毫不奇怪,代数密码分析在分析中起着核心作用.

代数攻击(Algebraic Attacks)

代数攻击的主要思想是通过求解包含消息、密文和密钥bit的非线性方程组来反向推导密钥.这个想法最早可以追溯到香农的开创性工作(但是由于那会儿计算机算力的限制这个idea并未引起关注).典型的代数攻击有两个阶段:

  • 首先,攻击者建立足够多的低阶或结构化(多元)非线性方程;

  • 然后通过求解方程组恢复密钥bit;

请注意,对于密码分析,第一步只需要执行一次.最常用的代数方程组求解算法包括线性化算法(设新变元进行降次)和Gröbner基算法.线性化通过用新变量替换非线性高次项来求解所得到的非线性方程组.具体地说,每个非线性高次单项式都被一个新变量替换.然后得到的新方程组是纯线性的,可以用高斯消去法求解.另一类求解多元代数方程组的通用算法是基于Gröbner基的.在实践中,如果方程数量不太多,也可以转化问题并使用自动工具求解,包括SAT求解器.

通常很难从设计良好的密码协议中找到低代数度或结构化的方程组.考虑到求解一般非线性方程的困难性,大多数密码自然不受普通代数攻击的威胁.代数攻击的一个成功应用是对基于线性反馈移位寄存器的流密码的攻击.最近的一个相关研究工作是对Marvelous和MiMC的Gröbner基攻击 [1].

在这里插入图片描述

高阶差分和立方体攻击(Higher Order Differential and Cube Attacks)

高阶差分和立方体攻击将目标密码视为一个多变量多项式.然而,对于真实世界的密码,构造出的多项式可能极其复杂.该策略是通过对输入空间的一些子集或子空间的求和操作来考虑多项式的简化版本.因此,简化后的多项式比原来的复杂多项式更容易处理.

首先介绍布尔函数的一阶导数和高阶导数.令F(x)F(x)F(x){0,1}n\{0,1\}^{n}{0,1}n{0,1}m\{0,1\}^{m}{0,1}m上的函数.对于任意的v∈{0,1}nv \in\{0,1\}^{n}v{0,1}n,FFF关于vvv的差分即为函数:

DvF(x)=F(x)⊕F(x⊕v)D_{v} F(x)=F(x) \oplus F(x \oplus v)DvF(x)=F(x)F(xv)

对于任意的kkk-维子空间V⊂{0,1}nV \subset\{0,1\}^{n}V{0,1}n和对VVV中任意的基{v0,⋯,vk−1}\{v_{0}, \cdots, v_{k-1}\}{v0,,vk1},其关于VVV的对FFFkkk-阶差分是定义如下的函数:

DVF(x)=Dv0Dv1⋯Dvk−1F(x)=⨁u∈VF(x⊕u),∀x∈{0,1}nD_{V} F(x)=D_{v_{0}} D_{v_{1}} \cdots D_{v_{k-1}} F(x)=\bigoplus_{u \in V} F(x \oplus u), \forall x \in\{0,1\}^{n}DVF(x)=Dv0Dv1Dvk1F(x)=uVF(xu),x{0,1}n

给出一个实例:令f(x0,x1,x2,x3)=x0⊕x1⊕x1x2⊕x2x3f\left(x_{0}, x_{1}, x_{2}, x_{3}\right)=x_{0} \oplus x_{1} \oplus x_{1} x_{2} \oplus x_{2} x_{3}f(x0,x1,x2,x3)=x0x1x1x2x2x3.然后D(1,0,0,0)f(x)=1,D(0,0,1,0)f(x)=x1⊕x3D_{(1,0,0,0)} f(x)=1, D_{(0,0,1,0)} f(x)=x_{1} \oplus x_{3}D(1,0,0,0)f(x)=1,D(0,0,1,0)f(x)=x1x3,并且D(1,0,0,0)D(0,0,1,0)f(x)=0D_{(1,0,0,0)} D_{(0,0,1,0)} f(x)=0D(1,0,0,0)D(0,0,1,0)f(x)=0.在此例中,差分操作后的代数度必然比原函数低.这并不是巧合.实际上,可以证明,函数的任何一阶导数的阶数都严格小于函数的阶数.这意味着对任意的子空间VVV且其空间维度大于等于deg(F)\text{deg}(F)deg(F),我们有:

DVF(x)={constant, if dim⁡(V)=deg⁡(F)0,if dim⁡(V)>deg⁡(F)D_{V} F(x)= \begin{cases}\text { constant, } & \text { if } \operatorname{dim}(V)=\operatorname{deg}(F) \\ 0, & \text { if } \operatorname{dim}(V)>\operatorname{deg}(F)\end{cases}DVF(x)={ constant, 0, if dim(V)=deg(F) if dim(V)>deg(F)

对所有的x∈{0,1}nx \in\{0,1\}^{n}x{0,1}n成立.上述特性称为高阶差分特性(higher order differential property),可用于获取有关消息或密钥bit的信息.

立方体攻击(Cube Attacks) 利用了比高阶差分性质更微妙的性质.通过仔细选择求和空间,可以得到具有一些可检测性质的约化多项式:(非)恒常性、线性、平衡性和中性等.在上述例子中,差分D(0,0,1,0)f(x)=x1⊕x3D_{(0,0,1,0)} f(x)=x_{1} \oplus x_{3}D(0,0,1,0)f(x)=x1x3是线性化的.因此它可用于生成关于x1,x3x_{1}, x_{3}x1,x3的线性方程. 立方体攻击在分析流密码(包括Trivium和类似Trivium的设计)时非常强大.在[2]中可以找到这方面的一些进展.

插值攻击(Interpolation Attacks)

插值攻击还考虑了被分析原语的多项式表示.但在这里,我们试图恢复多项式的一些系数,以推断有关密文的信息.假设对称密钥原语具有未知密钥KKK,明文/密文对表示为(x,y)(x, y)(x,y),以及一个中间bit zzz.我们考虑如下多项式:

  • y=F(K,x)y=F(K, x)y=F(K,x)代表加密过程;

  • z=F1(K,x)z=F_{1}(K, x)z=F1(K,x)代表加密方向的代数关系;

  • z=F2(K,y)z=F_{2}(K, y)z=F2(K,y)代表解密方向的代数关系.

对于足够多的已知或选定的明文/密文对,可以通过多项式插值或求解线性方程组来重构目标多项式的某些未知系数.我们注意到这些系数与密钥相关.然后可以应用各种策略来恢复密钥 KKK(包括之前说的解多项式方程组的方法).最近的一个插值攻击的工作是针对分组密码MiMC的攻击 [3].

在这里插入图片描述

参考文献


  1. Martin R. Albrecht, Carlos Cid, Lorenzo Grassi, Dmitry Khovratovich, Reinhard Lüftenegger, Christian Rechberger, Markus Schofnegger: Algebraic Cryptanalysis of STARK-Friendly Designs: Application to MARVELlous and MiMC. IACR Cryptology ePrint Archive 2019: 419 (2019)
  2. Qingju Wang, Yonglin Hao, Yosuke Todo, Chaoyun Li, Takanori Isobe and Willi Meier: Improved Division Property Based Cube Attacks Exploiting Algebraic Properties of Superpoly. Advances in Cryptology-CRYPTO 2018 (I): 275-305, 2018
  3. Chaoyun Li and Bart Preneel: Improved Interpolation Attacks on Cryptographic Primitives of Low Algebraic Degree. Selected Areas in Cryptography 2019. Available on IACR Cryptology ePrint Archive 2019: 812 (2019)
  4. ALGEBRAIC CRYPTANALYSIS: A SHORT INTRODUCTION (https://www.esat.kuleuven.be/cosic/blog/algebraic-cryptanalysis/)

推荐阅读
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 在处理数据库中所有用户表的彻底清除时,目前尚未发现单一命令能够实现这一目标。因此,需要采用一种较为繁琐的方法来逐个删除相关表及其结构。具体操作可以通过编写PL/SQL脚本来实现,该脚本将动态生成并执行删除表的SQL语句。尽管这种方法相对复杂,但在缺乏更简便手段的情况下,仍是一种有效的解决方案。未来或许可以通过数据库管理工具或更高版本的数据库系统提供更简洁的处理方式。 ... [详细]
  • 在使用达梦数据库时,管理员可能会遇到连接频繁中断或特定SQL语句语法错误的问题。这些问题通常源于开发人员在创建对象时的不规范操作。为了解决这些问题,建议对数据库配置进行优化,并确保所有SQL语句符合达梦数据库的标准语法。此外,定期检查和维护数据库连接参数,以及对异常日志进行详细分析,也有助于及时发现并解决问题。 ... [详细]
  • 搜索引擎技术概论(上篇):核心原理与应用分析
    搜索引擎技术概论(上篇)探讨了搜索的基本概念及其核心原理。搜索的本质在于信息检索,即用户通过输入关键词,利用特定的算法从海量数据中快速定位并提供所需信息。本文详细分析了搜索引擎的工作机制及其在实际应用中的表现。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
author-avatar
蘑菇宝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有