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

golang 1.24在密码相关领域的改动

最近把Tape的golang版本升级到1.24了,golang 1.24里自带后量子相关的密码学TLS实践,大家感兴趣的可以自己试一下。

以下是 Go 1.24 在密码学和数学相关领域的主要改动总结:


密码学相关改动

新增包
  1. crypto/mlkem

    • 新增对 ML-KEM-768 和 ML-KEM-1024(原 Kyber 算法)的支持,这是后量子密钥交换机制,符合 FIPS 203 标准。
  2. crypto/hkdf

    • 实现 RFC 5869 定义的 HMAC 基于提取和扩展的密钥派生函数(HKDF)。
  3. crypto/pbkdf2

    • 实现 RFC 8018 定义的基于密码的密钥派生函数(PBKDF2)。
  4. crypto/sha3

    • 新增对 SHA-3 哈希函数、SHAKE 和 cSHAKE 可扩展输出函数的支持(基于 FIPS 202 标准)。
  5. weak

    • 提供弱指针(weak pointers)支持,用于构建内存高效的数据结构(如弱映射、规范化缓存等)。

FIPS 140-3 合规性
  • 新增 GOFIPS140 环境变量fips140 GODEBUG 设置,支持在构建和运行时启用 FIPS 140-3 模式。
  • 标准库内部透明使用符合 FIPS 的算法实现(无需代码改动)。

现有包改进
  1. crypto/aes

    • NewCipher 返回的值不再实现 NewCTRNewGCM 等方法(这些方法已废弃)。应直接使用 crypto/cipher 包中的函数。
  2. crypto/cipher

    • 新增 NewGCMWithRandomNonce,生成随机 Nonce 并预置到密文中。
    • 弃用 NewOFBNewCFBEncrypterNewCFBDecrypter(推荐使用 AEAD 模式或 NewCTR)。
    • AES-CTR 模式在 amd64/arm64 上性能提升数倍。
  3. crypto/ecdsa

    • 当随机源为 nil 时,PrivateKey.Sign 现在生成确定性签名(RFC 6979)。
  4. crypto/rand

    • Read 函数现在保证不返回错误(遇到错误时程序直接崩溃)。
    • Linux 6.11+ 通过 vDSO 调用 getrandom,性能显著提升。
    • 新增 Text 函数,生成加密安全的随机文本字符串。
  5. crypto/rsa

    • 禁止生成或使用小于 1024 位的密钥(可通过 //go:debug rsa1024min=0 临时禁用)。
    • 支持 SHA-512/224、SHA-512/256 和 SHA-3 签名。
    • 密钥操作在 WebAssembly 上性能提升 2 倍。
  6. crypto/subtle

    • 新增 WithDataIndependentTiming 函数,确保代码在恒定时间内执行(当前仅 arm64 支持 PSTATE.DIT 位)。
    • XORBytes 现在要求输出与输入完全不重叠或完全重叠(否则 panic)。
  7. crypto/tls

    • 支持加密客户端问候(ECH),通过 Config.EncryptedClientHelloKeys 启用。
    • 新增后量子密钥交换机制 X25519MLKEM768(默认启用)。
    • 移除实验性 X25519Kyber768Draft00 支持。
  8. crypto/x509

    • 移除 x509sha1 GODEBUG 设置,不再支持 SHA-1 签名验证。
    • 改进 RSA 密钥解析和验证逻辑(拒绝更多无效密钥)。
    • 支持 RFC 5280 和 RFC 9618 的策略验证。

数学相关改动

math/big
  • FloatIntRat 类型新增实现 encoding.TextAppender 接口。
math/rand
  • 废弃的全局 Seed 函数现在无效(需通过 GODEBUG=randseednop=0 恢复旧行为)。
math/rand/v2
  • ChaCha8PCG 生成器新增实现 encoding.BinaryAppender 接口。
hash 相关包
  • 多个哈希函数(md5sha1sha256sha512adler32crc32crc64fnv)的实现现在支持 encoding.BinaryAppender 接口。
hash/maphash
  • 新增 ComparableWriteComparable 函数,支持对任意可比较值(如 map 键)计算哈希。

其他相关改动

  • runtime.AddCleanup:新增更灵活的资源清理机制(优于 SetFinalizer)。
  • weak:与 runtime.AddCleanupmaphash.Comparable 结合,支持高效缓存和规范化数据结构。

这些改动显著提升了密码学安全性、性能和后量子计算支持,同时简化了相关 API 的使用。

ref https://go.dev/doc/go1.24

http://www.dtcms.com/a/296018.html

相关文章:

  • linux 应用层直接操作GPIO的方法
  • Java 异常处理:从理解到实践的全面指南
  • 项目部署卡脖子?EasyCVR视频汇聚平台5种部署方案适配百变监控需求
  • 线段树学习笔记 - 练习题(2)
  • 教程:如何通过代理服务在国内高效使用 Claude API 并集成到 VSCode
  • LeetCode 23:合并 K 个升序链表
  • QT框架,关于WebEngine打包
  • DPU 是什么?
  • 达梦数据库报错“回滚记录版本太旧,无法获取用户记录”问题根源原理和解决方法
  • JVM原理及其机制(二)
  • Python图像数据处理
  • 浅谈程序运行之编译和链接 - 翻译环境和运行环境
  • go语言基础教程:1. Go 下载安装和设置
  • JVM Java虚拟机
  • JVM 垃圾收集器CMS和G1
  • 单片机的硬件结构
  • 人形机器人加快先进AI机器人开发
  • Spring Boot 全方位指南:从项目初始化到分层架构搭建
  • 设置后轻松将 iPhone 转移到 iPhone
  • 管网监测是指什么?管网监测的内容与应用场景
  • 小程序生命周期及页面操作执行过程详解
  • jupyter lab使用(linux环境)
  • 在 Windows 上安装设置 MongoDB及常见问题
  • MySQL--day13--视图存储过程与函数
  • Spring-狂神说
  • 2025年6月GESP(C++六级):最大因数
  • 传染病监测(七):为什么接触模式能颠覆防控效果预测?
  • 力扣刷题844——比较含退格的字符串
  • 【C语言进阶】柔性数组
  • 电商项目_秒杀_架构升级