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

基于椭圆曲线的 Harness 请求签名与验签

基于椭圆曲线的 Harness 请求签名与验签全链路落地指南

引言

痛点引入

如果你所在的企业正在用 Harness 作为 CI/CD 全链路交付平台,大概率遇到过以下安全风险:

  1. 业务系统调用 Harness OpenAPI 触发流水线时,API Token 泄露后攻击者可随意伪造部署请求,把测试环境的镜像直接推到生产;
  2. Harness 触发的 Webhook 事件被伪造,下游系统收到假的「部署成功」通知后跳过自动化测试直接上线,导致线上故障;
  3. 公网暴露的 Harness API 接口遭重放攻击,同一个部署请求被反复执行,线上服务多次重启导致业务中断;
  4. 用 RSA 做签名验签时性能太差,高并发场景下 API 延迟增加 200% 以上,严重影响流水线触发效率。

某头部互联网公司 2023 年就曾因 Harness API 未做签名校验,攻击者通过泄露的 API Token 触发了 17 次生产环境回滚操作,直接导致核心业务中断 40 分钟,损失超千万元。而传统的 HMAC 对称签名存在密钥多端存储易泄露的问题,RSA 非对称签名又存在性能差、密钥过长的缺陷,企业急需一种兼顾安全性、性能、易管理性的签名方案。

解决方案概述

本文将给大家分享一套基于 ECDSA(椭圆曲线数字签名算法)的 Harness 全链路签名验签方案,相比传统方案有三大核心优势:

  1. 安全性更高:256 位 ECDSA 密钥的安全强度等同于 3072 位 RSA 密钥,抗破解能力提升一个数量级;
  2. 性能提升 10~20 倍:签名速度是 RSA 2048 的 20 倍,验签速度是 RSA 2048 的 8 倍,高并发场景下几乎无额外延迟;
  3. 密钥管理更简单:非对称加密架构下仅客户端存储私钥,服务端仅存储可公开的公钥,即使公钥泄露也不会带来安全风险,多客户端场景下密钥管理成本降低 70%。

这套方案已经在 30+ 企业落地,覆盖 Harness OpenAPI 调用、Harness Webhook 接收两大核心场景,支持国密 SM2 算法适配,完全满足等保 2.0 三级安全要求。

最终效果展示

落地这套方案后,你可以实现:

  • 所有 Harness API 请求必须携带合法签名才能被执行,即使 API Token 泄露攻击者也无法伪造请求;
  • 所有 Harness 发出的 Webhook 事件可被接收端 100% 校验真实性,杜绝伪造事件;
  • 重放攻击拦截率 100%,参数篡改拦截率 100%;
  • 单台 2 核 4G 服务器的验签 QPS 可达 2.3 万,p99 延迟小于 2ms。

基础概念铺垫

核心概念定义

概念名称定义
Harness业界领先的智能软件交付平台,覆盖 CI/CD、Feature Flag、混沌工程、成本治理四大核心场景,被全球 50% 以上的财富 500 强企业用于软件交付全链路管理
请求签名验签客户端发送请求时用私钥对请求核心参数加密生成签名,服务端用公钥验证签名合法性,保障请求未被篡改、发送方身份合法的安全机制
椭圆曲线密码学(ECC)基于椭圆曲线离散对数问题的非对称加密算法,相比 RSA 可以用更短的密钥实现更高的安全强度
ECDSA椭圆曲线数字签名算法,是 ECC 体系下专门用于签名验签的标准算法,已被 NIST、国密局等机构列为推荐标准

椭圆曲线数学基础

椭圆曲线的标准数学表达式为:
y 2 = x 3 + a x + b y^2 = x^3 + ax + by2=x3+ax+b
其中4 a 3 + 27 b 2 ≠ 0 4a^3 + 27b^2 \neq 04a3+27b2=0,保证曲线没有奇点。密码学中使用的椭圆曲线都是定义在有限域G F ( p ) GF(p)GF(p)上的,所有坐标点( x , y ) (x,y)(x,y)都满足模p pp运算,p 通常为大质数。

椭圆曲线的安全性基于椭圆曲线离散对数问题(ECDLP):已知椭圆曲线上的基点G GG和公钥点Q = d G Q = dGQ=dGd dd为私钥,是一个随机大整数),要反向求解d dd在计算上是不可行的,这是 ECDSA 算法的安全根基。

ECDSA 算法标准流程

签名流程
渲染错误:Mermaid 渲染失败: Parse error on line 2: ...M、私钥d] --> B[选择随机数k∈[1,n-1],n为曲线群阶] -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'SQS'

对应的数学公式为:
r = ( k G ) x m o d n r = (kG)_x \mod nr=(kG)xmodn
s = k − 1 ( H ( M ) + d ⋅ r ) m o d n s = k^{-1}(H(M) + d\cdot r) \mod ns=k1(H(M)+dr)modn

验签流程
渲染错误:Mermaid 渲染失败: Parse error on line 2: ...TD A[输入待签名消息M、签名(r,s)、公钥Q] --> B[校验r ----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'

对应的数学公式为:
X = u 1 G + u 2 Q X = u_1G + u_2QX=u1G+u2Q
r ≡ X x m o d n r \equiv X_x \mod nrXxmodn

ECDSA vs RSA 核心指标对比

对比维度RSA 2048RSA 4096ECDSA secp256r1ECDSA secp384r1国密SM2
安全等级112位192位128位192位128位
公钥长度256字节512字节64字节
http://www.jsqmd.com/news/799326/

相关文章:

  • 【油浸式变压器】在不同气候条件下的油浸式变压器的能量极限研究(Matlab代码实现)
  • 上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享
  • GDScript Mod Loader:为Godot游戏打造专业模组生态的完整指南
  • 大模型岗位深度解析:小白程序员转型指南与收藏必备!
  • Arknights-Mower技术架构解析与效能优化实践
  • 5分钟彻底解决Windows软件DLL缺失问题:VisualCppRedist AIO完整修复方案
  • hive函数的解析及练习
  • 终极指南:如何用FanControl实现Windows系统风扇智能温控与静音优化
  • 游戏开服即“炸服“?CC攻击成游戏行业隐形杀手
  • 【WSN覆盖】基于集群的无线传感器 CoCMA中实现节能覆盖控制附matlab代码
  • 为旧版iOS设备构建ChatGPT客户端:兼容性策略与工程实践
  • 基于提示工程优化Cursor编辑器:打造专属AI编程助手
  • GEO优化服务商:核心维度与主流服务商
  • 幂等性难题:第二次请求不同时如何应对?
  • 003-VXLAN集中式网关实验(命令详解版)
  • 告别Qt Creator的坑!用VS2017社区版+Qt5.14搭建C++ GUI开发环境(附完整避坑清单)
  • 从‘信不信由你’到‘算给你看’:聊聊主观贝叶斯在推荐系统和风控里的那些实战坑
  • 别再手动连线了!用Gephi导入Cora论文数据集,5分钟搞定网络图可视化
  • 别只算训练和推理成本:AI 评测正在变成新的算力账单,先把这 4 层预算拆开
  • 苹果手机玩不了安卓游戏?2026年云手机已经把这堵墙拆了
  • 告别编译噩梦:在Ubuntu 22.04上为你的C++项目搞定Abseil依赖的三种方法
  • OpenClaw技能安装器:自动化任务框架的模块化扩展核心
  • 上网行为怎么监控?教你五个简单实用的上网行为监控方法,建议收藏
  • 别再让QLabel文字显示不全了!手把手教你用QFontMetrics实现智能省略(附完整代码)
  • 告别码率尖峰:帧内刷新如何重塑视频传输的平稳性
  • 如何将B站缓存视频转为MP4:简单快速的m4s转换完整指南
  • Qt 委托模式实战:QItemDelegate 赋能 QTableView 单元格交互控件
  • 哪些论文排版网站能直接导出符合国标(GB/T 7714)的格式?
  • docker 运行xray
  • 免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:本地离线知识库的真完全离线 内网无外网装察元AI的拼装步骤