CoderTools

GOST 加密套件

GOST 28147-89 / Magma 俄罗斯对称加密,支持多种模式和 S-Box 选项

⚠️ 仅供教育用途

GOST 28147-89 在密码学上已过时。新项目请使用 AES。此工具仅用于测试、学习和遗留系统维护。

GOST 28147-89 要求密钥长度为 32 字节(256 位)
格式选项

关于 GOST 28147-89 与 Magma

GOST 28147-89 是苏联于 1989 年以“苏联国家标准 28147-89”发布的对称加密标准。其 32 轮改进 Feistel 网络以 256 位密钥处理 64 位分组。每轮通过模加法(mod 2³²,非 XOR)应用轮密钥,对八个 4 位半字节 S 盒执行 32×8 位 S 盒替换,并将结果向左旋转 11 位。使用加法而非 XOR 进行密钥注入使 GOST 有别于同时代大多数西方 Feistel 密码。

GOST 28147-89 的原始 S 盒被列为国家机密,未公开发布——不同的苏联部委和工业部门使用不同的 S 盒参数,造成互操作障碍并引发潜在后门担忧。CryptoPro 公司在 RFC 4357(2006 年)中标准化了四个可互操作的 S 盒参数集(CryptoPro-A 至 D)。2011 年,Nicolas Courtois 发布了一种反射攻击,将 GOST 的安全性降低到约 2²²⁵ 次操作(而非暴力破解的 2²⁵⁶),尽管实际可利用性仍有争议。与所有 64 位分组密码一样,GOST 28147-89 在同一密钥下约 32 GB 的 CBC 模式数据后容易受到 Sweet32 生日攻击。

关于 Magma (GOST R 34.12-2015)

Magma 是 GOST 28147-89 变体的非正式名称,标准化为 GOST R 34.12-2015(俄罗斯国家标准)。2015 年发布,在 RFC 8891(2020 年)中规定,Magma 使用与 GOST 28147-89 相同的 64 位分组、256 位密钥、32 轮 Feistel 结构,但有一个强制性公开发布的 S 盒参数集(“id-tc26-gost-28147-param-Z”)。公开的 S 盒解决了原始 GOST 标准的互操作性和隐藏参数问题。

Magma 旨在与 GOST 28147-89 系统保持向后兼容,同时消除 S 盒保密问题。对于需要分组密码的新俄罗斯信息安全应用,GOST R 34.12-2015 还定义了 Grasshopper(Kuznyechik)——128 位分组、256 位密钥、10 轮 SP 网络密码。Magma(64 位分组)与 GOST 28147-89 承担相同的 Sweet32 风险;在同一密钥下 32 GB CBC 数据前必须强制轮换密钥。

GOST 28147-89 历史

GOST 28147-89 由 KGB 第 8 总局(负责密码学)在 1970 至 1980 年代开发,于 1989 年正式发布。直到 1994 年才解密,作为民用标准提供。即使在解密版本中,S 盒参数也被保留,不同参数集在保密协议下分发给不同工业部门。CryptoPro S 盒(RFC 4357,2006 年)和后来的 Magma 标准(RFC 8891,2020 年)代表了从机密到公开密码参数的逐步过渡。GOST 28147-89 和 Magma 在 GOST R 34.12-2015 合规要求下仍是俄罗斯政府、银行和法律应用的要求。

算法对比

算法 类型 密钥长度 分组大小 安全性 轮数
GOST 28147-89 分组密码 256 位(32 字节) 64 位(8 字节) 中等 32 轮
Magma (GOST R 34.12-2015) 分组密码 256 位(32 字节) 64 位(8 字节) 中等 32 轮
AES 分组密码 128、192、256 位 128 位(16 字节) 优秀 10-14 轮

关键特性

  • 64 位分组大小 - 适合较小的数据块
  • 256 位密钥长度 - 密钥空间大于 DES
  • 32 轮 - 强扩散和混淆特性
  • 多种模式 - 支持 ECB、CBC、CFB、OFB、CTR

安全考虑

  • 2011 年,Nicolas Courtois 发布了针对 GOST 28147-89 的反射攻击,将其声称的安全性从 2²⁵⁶ 降低到约 2²²⁵ 次操作。攻击需要 2³² 个选择明文。随后的分析对攻击是否可以实际利用真实实现提出了质疑(它假设特定密钥属性),但 GOST 28147-89 现在被认为不适合新的俄罗斯联邦应用,应采用 Grasshopper。
  • Sweet32(CVE-2016-2183,2016 年):GOST 28147-89 和 Magma 与 Triple-DES 和 Blowfish 共享相同的 64 位分组大小弱点。在同一密钥下约 32 GB CBC 模式流量后,生日界块碰撞在统计上可被利用以恢复明文。相同限制适用于 CFB 和 CTR 模式。
  • 对于所有需要俄罗斯 GOST 系列分组密码的新应用,使用 Grasshopper(Kuznyechik,GOST R 34.12-2015,128 位分组,256 位密钥,10 轮)。GOST 28147-89 和 Magma 适用于:解密现有俄罗斯政府档案、遗留金融系统兼容性和理解苏联时代分组密码工程的设计权衡。

使用场景

  • 俄罗斯政府和银行遗留数据:GOST 28147-89 和 Magma 在俄联邦信息安全框架中具有法律授权;在这些标准下加密的遗留数据需要 GOST 兼容工具进行审计、迁移和存档解密
  • GOST TLS 兼容性:俄罗斯银行和政府 TLS 实现(使用 GOST 密码套件的 GOST TLS)需要 Magma-CBC 或 GOST 28147-89-CBC 进行遗留会话解密和协议分析
  • 乌克兰 DSTU 应用:DSTU 4145-2002 变体(使用 DSTU S 盒参数)用于乌克兰政府文件和证书链;解密 DSTU 加密材料需要 DSTU S 盒参数集
  • GOST 密码学研究:GOST 28147-89 的机密历史、S 盒多样性和 Courtois 反射攻击分析使其成为后苏联密码学标准化研究的重要主题

参考资料与文档

相关工具

快捷菜单

暂无访问记录