You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确认Go应用是否使用boringcrypto及Go1.20.1是否需开启CGO?

Go应用FIPS合规(BoringCrypto替代原生加密库)验证问题

背景

我正在研究如何让Go应用符合FIPS合规(使用BoringCrypto替代Go原生加密库),查阅的资料给出了以下构建并验证的命令:

# 构建二进制并确认使用BoringCrypto而非Go原生加密库
RUN GOEXPERIMENT=boringcrypto go build . && \
    go tool nm fips-echo-server > tags.txt && \
    grep '_Cfunc__goboringcrypto_' tags.txt 1> /dev/null

资料说明:如果输出包含_goboringcrypto_,则表示应用使用BoringCrypto;无输出则使用Go原生加密库。

但我执行GOEXPERIMENT=boringcrypto CGO_ENABLED=0 go build -o ./bin/app后,通过go tool nm得到的结果中没有_goboringcrypto_,仅出现crypto/internal/boring相关内容:

➜  GOEXPERIMENT=boringcrypto CGO_ENABLED=0 go build -o ./bin/app
➜  go tool nm bin/dapp | grep -i boring | cat 
 11230a0 T crypto/internal/boring.(*PrivateKeyECDH).PublicKey
 1123060 T crypto/internal/boring.(*PublicKeyECDH).Bytes
 243fba0 D crypto/internal/boring..inittask
 243eda0 D crypto/internal/boring/bbig..inittask
 1060bc0 T crypto/internal/boring/bcache.registerCache
 24efe14 B crypto/internal/boring/fipstls.required
 1123040 T crypto/internal/boring/sig.StandardCrypto.abi0
 1219c00 T crypto/x509.boringAllowCert
 24bfae0 B runtime.boringCaches
➜  go version bin/app                                                      
bin/app: go1.20.1 X:boringcrypto

查阅crypto/internal/boring文档可知,该包是BoringCrypto实现的访问入口,可通过Enabled常量判断其是否可用。

问题

  • 我的输出虽无_goboringcrypto_但有crypto/internal/boring,是否能确认应用使用BoringCrypto而非Go原生加密库?
  • 部分资料提到需开启CGO_ENABLED=1,但我使用的是Go1.20.1且设置了CGO_ENABLED=0,该版本仍需开启CGO吗?

后续发现

  • Go1.19版本仍需开启CGO;
  • 可通过rsc.io/goversion -crypto命令查看应用使用的加密实现;
  • 相关PR显示_Cfunc__goboringcrypto_与crypto/internal/boring/sig.BoringCrypto等价,而我的输出中出现的是crypto/internal/boring/sig.StandardCrypto。

结论

若go tool nm输出包含_Cfunc__goboringcrypto_或crypto/internal/boring/sig.BoringCrypto,则表示应用使用BoringCrypto;若包含crypto/internal/boring/sig.StandardCrypto,则使用的是Go原生加密库。


内容的提问来源于stack exchange,提问作者Kostya Linou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:53:18