当前位置: 首页 > news >正文

密码杂凑算法七大神剑之青干剑QGS设计原理详解

密码杂凑算法七大神剑之青干剑QGS设计原理详解

QGS算法简介

七剑”通常指梁羽生武侠小说《七剑下天山》中的七把宝剑,其中青干剑:象征“防守”,主人杨云聪,游龙剑克星。青干剑QGS属于对称加密算法的分支之一中的密码杂凑算法,其整体结构采用了目前较为成熟的海绵结构(SHA3使用的就是海绵结构),这使得QGS算法的安全性和执行效率可以很好的得到保证。青干剑QGS的亮点是使用了安全和性能并驾齐驱的海绵结构和SBOX160系列大S盒,海绵结构的执行过程如下图所示:

以下是海绵结构的优缺点:

海绵结构是SHA-3(Keccak)的核心创新,它和传统哈希算法的Merkle-Damgård结构思路完全不同。下面来看它的优缺点。

海绵结构的优点

  • 极强的抗碰撞性
    这源于它内部状态非常大(例如SHA3-256的状态是1600位,远大于256位的输出)。攻击者无法通过输出直接推算内部状态,抵抗长度扩展攻击、原像攻击等的能力很强。
  • 可灵活调节安全等级
    同一套算法,通过调整“容量”和“输出长度”两个参数,就能平衡安全性和速度。容量越大安全性越高,输出长度可以任意定制,这叫作“全能哈希函数”,一套算法就能实现SHA3-224到SHA3-512的全部变体。
  • 天生免疫长度扩展攻击
    传统SHA-2等算法的核心弱点,在于可以从H(m)推算出H(m || padding || new_data)。而海绵结构的“吸收-挤出”两阶段设计,以及最后截断输出的方式,使其天然免疫此类攻击,所以SHA-3可以直接用作消息认证码(MAC)。
  • 结构简洁,便于安全分析
    海绵结构本身不定义具体的压缩函数,只定义工作模式。你可以把它和内部的置换函数(f)分开分析。这种模块化设计降低了设计和实现的复杂度,理论上也更健壮,甚至可以用在硬件资源极少的场景。

海绵结构的缺点

  • 软件性能相对较慢
    这是它最实际的短板。相比AES-NI等硬件指令集深度优化的SHA-2,纯软件实现的SHA-3通常要慢不少,因为它的内部置换操作更复杂。在一些没有硬件加速的老旧或低功耗设备上,这一点很明显。
  • 初始化时存在“空跑”开销
    吸收第一块数据前,需要先处理一大块全是0的状态,这在处理短消息时会造成冗余计算,导致短消息哈希速度不理想。
  • 并行计算不友好
    其内部置换是顺序执行的,无法像SHA-2或BLAKE2那样将多个数据块的计算并行化,单个数据流的哈希速度有先天瓶颈。
  • 大状态消耗更多资源
    1600位的内部状态意味着需要更多的寄存器、内存和功耗。在资源极度受限的硬件(如RFID芯片)上,这反而成了劣势。
  • 历史生态惯性
    SHA-2已有几十年的安全运行历史和广泛的软硬件基础设施,迁移到SHA-3的动力不足。在大多数场景下,SHA-2(尤其是带硬件加速的SHA-256)依然是更快的选择,这也是SHA-3普及不如预期的一个现实原因。

QGS算法参数

QGS算法的输入为相当长的一段消息M(长度不大于2^256比特),输出为固定长度的杂凑值Hash(128比特和256比特)。QGS算法的内部状态b大小为800比特,容量大小为c=2*l,分组大小r为800-c,杂凑值长度为l。QGS算法的置换函数为Perm(b,l,14)杂凑值为128比特和Perm(b,l,28)杂凑值为256比特,其中14和28为置换函数的轮数。

QGS算法消息填充和分块

(1)消息填充阶段

将输入的原始消息M按以下规则填充至分组大小r的最小整数倍。

当杂凑值l为128比特,c=256,r=800-c=544;填充规则如下图所示:

当杂凑值l为256比特,c=512,r=800-c=288;填充规则如下图所示:

(2)消息分块阶段

类似的,将填充后的消息MM以分组大小r为单位进行分组:

当r=544时,M0M1…Mn-2Mn-1=MM,其中|Mi|=544(i=0,1,…,n-2,n-1);

当r=288时,M0M1…Mn-2Mn-1=MM,其中|Mi|=288(i=0,1,…,n-2,n-1)。

QGS算法置换函数

根据杂凑值l长度的不同可以将QGS算法置换函数分为两个版本:Perm(800,128,14)和Perm(800,256,28)。

其中Perm(800,128,14)如下图所示:

其中Perm(800,256,28)如下图所示:

其中基于ARX结构的5个160比特大S盒分别如下图所示:

其中SBOX5为32个并行的5比特S盒,如下图所示:

其中25个常量C如下图所示:

QGS算法消息吸收阶段

内部状态初始值800比特全部为0

对于第i个消息分组ri,将ri与内部状态的前544或者288比特进行异或运算,内部状态的后256或者512比特保持不变,然后对整个内部状态执行Perm(800,128,14)或者Perm(800,256,28),若Perm执行完毕,然后处理第i+1个消息分组,以此类推,直至处理完成所有的消息分组。

QGS算法消息挤压阶段

当消息吸收阶段执行完毕(即所有的消息分组处理完毕),消息挤压阶段开始执行。对整个内部状态执行Perm(800,128,14)或者Perm(800,256,28),然后取输出内部状态的前128或者256比特作为该消息的杂凑值。

QGS128算法执行过程

QGS256算法执行过程

QGS算法总结

青干剑QGS算法的核心部分为800比特的置换函数:

(1)5个字间非线性扩散函数(基于ARX结构的160比特大S盒)SBOX160A,SBOX160B,SBOX160C,SBOX160D,SBOX160E的使用提供了密码算法必须的混淆性,扩散性和雪崩效应;

(2)5比特字间非线性扩散函数(5比特S盒)SBOX5提供了密码算法必须的混淆性,扩散性和雪崩效应;

(3)25个32位常量C的使用打破了算法的对称性的同时提高了算法的安全性;

(4)行变换使得行内的5个32位字相互依赖和影响,列变换使得列内的5个32位字相互依赖和影响,多轮之后25个32位字相互依赖和影响,牵一发而动全身(输入数据的细微变换会导致输出数据翻天覆地的变化)。

http://www.zskr.cn/news/1470429.html

相关文章:

  • PyAEDT:工程仿真智能化的革命性Python框架
  • Hive SQL避坑指南:处理嵌套数据时,struct和named_struct到底该怎么选?
  • 别再手动调了!SAP SmartForms二维码排版终极指南:固定大小、对齐与打印优化
  • 2026年汽车电线线选型评测:储能线线缆、充电桩线缆、新能源电缆、机器人拖链线缆、汽车电线线、逆变器线缆、风能线缆选择指南 - 优质品牌商家
  • STM32项目从Keil迁移到System Workbench全记录:工程配置、库管理与调试避坑指南
  • 从‘大泥球’到‘乐高积木’:聊聊我们团队踩过的架构坑与Service Mesh救赎之路
  • Linux 服务器性能优化基础(CPU/内存/磁盘/网络)
  • 从DAG到值编码:图解编译原理龙书第六章核心概念,手把手教你搞定表达式优化
  • 技术演进:BepInEx Unity插件框架架构转型与IL2CPP运行时稳定性突破
  • 实战指南:基于快马ai为django项目生成wsl2一体化开发环境配置脚本
  • 唐山广告宣传,哪家更靠谱?专业解析带你了解真相
  • Go 实验特性全解析:生命周期、状态及启用方法,开发者必看!
  • Sigil EPUB编辑器深度解析:从基础编辑到高级定制的完整实战手册
  • 通过世界模拟器进行具象化视觉空间推理 (Astra)
  • 别再只问压差了!面试官想听的LDO性能指标详解(附Bandgap基准原理)
  • Qt图形视图里弹窗错位?手把手教你用QGraphicsProxyWidget正确处理ComboBox下拉列表
  • 用一块51单片机,我复刻了学生时代的DDS信号发生器(附AD9850/9851完整代码)
  • 告别KD树搜索!用Voxelized GICP在CPU/GPU上实现120Hz的实时点云配准
  • 【字节跳动】GR3六轴协作机械臂·底层裸数据机密台账(工业原始未脱敏完整版·万字归档版)
  • OpenClaw从入门到应用——CLI:Gateway
  • AI辅助设计:让快马为你构思并生成Harness流水线最佳实践代码
  • Windows用户福音:3分钟免费获取iPhone USB网络共享驱动终极方案
  • 必应推广行业百科:核心逻辑与杭州专业服务商指南
  • 三步搞定抖音评论采集:零代码获取完整用户反馈数据 [特殊字符]
  • R 语言线性余弦调色板:简单方法在生成艺术中获超预期效果!
  • arduino新手必看,用快马平台生成带详解注释的第一个控制程序
  • AI搜索环境下东莞本地企业GEO优化全流程实战指南
  • Reorderable深度解析:Jetpack Compose拖拽排序的架构哲学与实践智慧
  • web应用技术-第4次课后作业
  • Riemannian优化与结构保持度量的原理与实践