[密码学实战]GM/T 0136-2024《密码应用HTTP接口规范》解析

国家密码管理局于2025年7月1日正式实施GM/T 0136-2024标准,该规范首次统一了密码服务的HTTP接口设计,为国产密码技术的规模化应用铺平道路。本文结合标准原文,深入剖析其技术细节并给出实战示例。

一、核心设计原则

1. RESTful架构规范
  • URL前缀强制要求:所有接口路径必须以/shf/v1/开头(shf表示密码HTTP接口,v1为版本号)
  • HTTP方法映射
    • GET:查询操作(如获取算法列表)
    • POST:写操作(如加密、签名)
  • 无状态设计:服务端不保存客户端上下文,每次请求需携带完整信息
2. NTV数据结构

为解决二进制数据传输问题,规范独创名称-类型-值(NTV) 结构:

{"Data": [{"Name": "PlainText",  // 参数名"Type": "Base64",     // 数据类型(Raw/Base64/Hex/DateTime)"Value": "SGVsbG8gV29ybGQ="  // 编码后的值}]
}
3. 安全传输强制要求
  • 必须使用TLCP协议(GB/T 38636)或等效安全传输层
  • 错误响应禁止返回堆栈信息(防信息泄露)
  • 支持证书双向认证

二、关键接口详解

1. 密码运算类接口

在这里插入图片描述
在这里插入图片描述

接口功能请求路径方法核心参数示例
内部私钥签名/shf/v1/SignPOSTKeyId, PlainText
外部公钥加密/shf/v1/EncryptByExternalPublicKeyPOSTPublicKey, PlainText
对称密钥解密/shf/v1/DecryptPOSTKeyId, CipherText, IV

文件操作特殊处理

  • 使用FileUri代替直接上传文件(如"FileUri": "file:///data/test.txt"
  • 响应返回CallbackUri获取处理结果文件
2. 证书解析接口
POST /shf/v1/ParseCertificate HTTP/1.1
Content-Type: application/json{"Data": [{"Name": "Certificate","Type": "Raw","Value": "-----BEGIN CERTIFICATE-----..."},{"Name": "Tags","Type": "Raw","Value": ["SGD_CERT_ISSUER", "SGD_CERT_SUBJECT"]}]
}

响应返回指定证书字段,符合GM/T 0006标签规范。

三、安全设计精要

1. 状态码双重机制
层级示例说明
HTTP状态码401身份认证失败
业务状态码0x0E000005请求参数错误(十六进制)

完整错误码见标准附录B,如:

  • 0x0E00000F:签名验证失败
  • 0x0E000015:证书解析失败
2. 算法标识规范
算法类型标准标识示例
SM2签名1.2.156.10197.1.501
SM4-CBCSGD_SM4_CBC
SM3哈希SGD_SM3

四、实战示例:内部私钥签名

请求
POST /shf/v1/Sign HTTP/1.1
Content-Type: application/json{"Data": [{"Name": "KeyId", "Type": "Raw", "Value": "9bcf0c91-f9f1-406d-ab69-d7bbc157cc06"},{"Name": "PlainText", "Type": "Raw", "Value": "Hello World"}]
}
响应
{"Status": {"Code": "0", "Msg": "success"},"Data": [{"Name": "Signature","Type": "Base64","Value": "MEQCID0G9Qh91XfhqOfv4kXuIZvm45U+Y7BFbufFZDNJvJHZAiBgkdtAxzrB3J5nJD3wmiFOyVzudEt6cYl6ZLXE//4dSQ=="}]
}

五、开发注意事项

  1. 版本控制:自定义扩展接口需使用/shf/ext/前缀
  2. 编码规范
    • 默认UTF-8编码
    • 二进制数据必须使用Base64/Hex编码

结语

GM/T 0136-2024通过标准化HTTP接口,解决了三大核心问题:

  1. 互操作性:不同厂商密码服务无缝对接
  2. 开发效率:减少70%以上的集成成本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913099.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913099.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913099.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 国内镜像列表(免费长期)

Docker 可用镜像源列表(7月1日更新-长期维护)_dockerhub国内镜像源列表-CSDN博客

BlenderFBXExporter 导出fbx被修改问题

1) 解决增加A节点的问题 https://github.com/A-Ribeiro/CustomBlenderFBXExporter 2)找出blendshape 不一致,生成blendshape key name映射map 文件compare.txt C:\Users\49938\Documents\DazToUnreal\zhang01\UpdatedFBX\zhang01_fix7.fbx…

AI时代下的IT服务管理转型:趋势、挑战与破局之道

近年来,人工智能(AI)与自动化技术的迅猛发展,正以前所未有的速度重塑企业运营的各个层面。特别是在IT服务管理(ITSM)领域,AI的介入不仅提高了问题响应效率,也推动了组织从“被动响应…

三体融合实战:Django+讯飞星火+Colossal-AI的企业级AI系统架构

目录 技术栈关键词:Django 5.0 讯飞星火4.0Ultra Colossal-AI 1.2 WebSocket 联邦学习 ⚡ 核心架构设计 🛠️ 一、Django深度集成讯飞星火API(免费版) 1. 获取API凭证 2. 流式通信改造(解决高并发阻塞&#xff09…

多模态数据融合预警:从IoT传感器到卫星监测的可视化方案升级

你有没有想过,为什么有些城市在暴雨来临时能提前数小时发布内涝预警,而有些地方却只能“等水来了才反应”? 背后的关键,就是多模态数据融合预警系统——它把来自IoT传感器、无人机、地面雷达、气象站、甚至卫星的数据整合在一起&a…

面试八股---css

2、css 2.1 说说你对盒子模型的理解 是什么 当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型(CSS basic box model),将所有元素表示为一个个矩形的盒子&#xf…

day52-硬件学习之RTC及ADC

一、RTCRTC(实时时钟):非易失性在IMX6ULL内部SNVS(安全的非易失性存储器)提供RTC功能;原理图:二、ADC 2.1 基本概念ADC(模拟数字转换器):用于将连续变化的模拟信号转换为离散的数字信…

Web 项目如何自动化测试?

Web 项目的自动化测试可以通过 UI自动化 和 接口自动化 结合实现,提高测试效率和覆盖率。以下是关键方法和工具: 【自动化测试】从基础到实战基于Pytest自动化/python自动化的详细教程!1. UI自动化测试(前端交互) 适用…

Java连接阿里云MaxCompute例

要使用Java连接阿里云MaxCompute(原名ODPS)数据库,您可以遵循以下步骤进行配置和编程: 1. 添加依赖 确保您的项目中包含了MaxCompute JDBC驱动的依赖。如果您使用Maven,可以在pom.xml中添加如下依赖: &l…

【网络与系统安全】强制访问控制——BLP模型

一、模型背景与定义 BLP(Bell-LaPadula)模型是由David Bell和Len Adula在1973年提出的强制访问控制(MAC)模型,是最早的计算机安全模型之一,主要用于解决多用户系统中的信息机密性保护问题,尤其…

HTTPS详解:原理 + 加解密过程 + 面试问答

一、HTTP 与 HTTPS 的区别 项目HTTPHTTPS全称HyperText Transfer ProtocolHyperText Transfer Protocol Secure端口80443协议层应用层应用层 TLS(安全层)加密方式明文传输加密传输(TLS)安全性易被劫持、中间人攻击可加密、防篡改…

Python-GUI-wxPython-控件

1 需求 2 接口 3.* 控件:wx.StaticText import wxclass MainFrame(wx.Frame):def __init__(self, *args, **kwargs):super(MainFrame, self).__init__(*args, **kwargs)self.init_ui()self.Center()self.Maximize()def init_ui(self):static_text wx.StaticText(pa…

3-1 PID算法改进(积分部分)

目录 1、积分限幅 2、积分分离 3、变速积分 在位置式PID的基础上进行改进 定速用PI控制,定位置用PD控制 1、积分限幅 在定速控制上体现 第一种方法确定上下限方法:Out最大时,除以Ki,得到一个值,上限不能超过这个…

Linux探秘坊-------13.进程间通信

1.进程间通信⽬的 2.管道 2.1 匿名管道 -----通常用来实现 父子通信 创建子进程时,需要把父进程的进程内容全部拷贝一份,但文件管理是不需要拷贝的 但是我们把父进程的文件描述符表给拷贝下来了,文件描述符表里是一堆指针,他们仍…

深入理解Vapnik-Chervonenkis(VC)维度:机器学习泛化能力的理论基础

引言 通过本篇阅读,从理论上去理解为什么: 要选择复杂度低的模型 过拟合的时候,增加样本量有用 以及如何根据样本量选择特征个数 PAC机器学习框架, VC 维是机器学习最重要的基础理论之一 在机器学习领域,模型泛化能力是衡量算法性能的核心指标…

redis持久化-纯缓存模式

redis持久化-纯缓存模式 文档 redis单机安装redis常用的五种数据类型redis数据类型-位图bitmapredis数据类型-基数统计HyperLogLogredis数据类型-地理空间GEOredis数据类型-流Streamredis数据类型-位域bitfieldredis持久化-RDBredis持久化-AOFredis持久化-RDBAOF混合模式 官…

HTML DOM 访问

HTML DOM 访问 引言 HTML DOM(文档对象模型)是现代Web开发中不可或缺的一部分。它允许开发者通过JavaScript操作HTML文档中的元素,从而实现丰富的交互效果。本文将详细介绍HTML DOM的访问方法,包括如何获取元素、如何修改元素属…

双系统如何做接口认证-V1

现有A系统,B系统,A系统启动的时候调用B系统的注册接口API1(把A系统配置信息注册到B系统),A系统定时向B系统接口AP2发送心跳信息,B系统根据业务情况,调用A系统的业务接口AP3,请设计两…

Wireshark TS | 诡异的光猫网络问题

前言 来自于朋友分享的一个案例,最后定位的原因是光猫问题,而类似这类的设备所产生的网络问题,也曾碰到过两三次,但这一次的数据包现象挺特别,分析思路和过程也有所不同,故记录分享一下。 问题背景 用户所反…

mac mini m4安装node.js@16以下版本方法

设备:mac mini m4 目的:使用nvm 安装 node.js14.x 版本 结果:安装不上 原因:Node.js 14 发布时,Apple Silicon(M1/M2)尚未普及,因此 没有官方预编译的 macOS ARM64 版本 处理方案&am…