当前位置: 首页 > 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.jsqmd.com/news/958753/

相关文章:

  • 手把手搭建 OpenClaw 智能助手,实现电脑自动化办公操作
  • 2026年GEO服务商选型必看!十大靠谱GEO源头工厂全维度评测推荐 + 科学避坑指南 - 玖叁鹿
  • 别再死记硬背Node2Vec公式了!用Python+PyTorch手搓一个随机游走节点嵌入(附完整代码)
  • PyAEDT:工程仿真智能化的革命性Python框架
  • 如何打造极致便携的Windows C/C++开发环境:w64devkit深度解析
  • HICO-Det数据集深度解析:从‘人骑自行车’到‘人喂斑马’,600种交互背后的标注逻辑与常见坑点
  • 2026年上海增量式直线位移传感器市场深度解析:如何选择优质供应商 - 2026年企业资讯
  • STM32CubeIDE实战:手把手教你配置CAN中断接收,告别轮询死等
  • Gemini会话留存率低于行业均值37%?5步动态权重调优法,72小时内拉升至81.4%(含Prometheus监控模板)
  • 单智能体(Single Agent)落地实践全指南:从 ReAct 到 Tool Use,构建真正可靠的 AI Agent
  • 免疫组织化学技术实验流程与操作规范详解
  • 海伯森3D线光谱共焦精密测量技术及产业化应用
  • 从手工到自动,不同行业的跨越难点有何异同?2026企业级AI Agent落地全指南
  • 别再手动调了!SAP SmartForms二维码排版终极指南:固定大小、对齐与打印优化
  • 用Python复现通达信Winner函数:手把手教你估算A股筹码分布与获利盘比例
  • 法律文书智能生成系统上线实录(从试点到全所推广仅47天)
  • 从‘过零点’到‘比特流’:手把手教你用Python仿真复现FSK软件解调全过程(含信号可视化)
  • PyTorch版DnCNN盲去噪完整工程:含训练脚本、测试流程、预训练权重与逐行中文注释
  • 【企业AI工具选型生死线】:从需求映射、数据兼容性到LLM微调支持度——一份被19家 Fortune 500 保密采用的评估矩阵
  • 手把手教你用STM32F103和ESP8266做一个桌面天气时钟(附完整代码和接线图)
  • 成都危险品物流仓储核心技术规范与合规实操指南:成都危险品物流仓储/成都危险品贮存/成都危险货物危险品仓库/危险化学品储存/选择指南 - 优质品牌商家
  • RAID磁盘阵列原理、各级别对比、实战搭建详解
  • 鸿蒙ArkUI实战:步骤表单与进度指示器
  • 免费解锁Wand专业版:终极完整指南与远程控制教程
  • GBase 8s数据库的四种武器之一,图形化管理平台GEM解析
  • 数据预处理实战:分层防御架构与缺失/异常值决策树
  • 如何挑选真正实力派的GEO公司?指南分享
  • 别再手动画图了!用VSCode+PlantUML插件5分钟搞定UML类图(附完整语法速查表)
  • 非参数核聚类与老虎机反馈:理论与应用解析
  • STM32项目从Keil迁移到System Workbench全记录:工程配置、库管理与调试避坑指南