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

证书学习(六)TSA 时间戳服务器原理 + 7 个免费时间戳服务器地址

目录

    • 一、简介
      • 1.1 什么是时间戳服务器
      • 1.2 名词扩展
      • 1.3 用时间戳标记顺序
      • 1.4 7 个免费TSA时间戳服务器地址(亲测可用)
      • 1.5 RFC 3161 标准
    • 二、时间戳原理
      • 2.1 时间戳服务工作流程
      • 2.2 验证工作流程
      • 2.3 举个例子
      • 2.4 时间戳原理总结
    • 三、代码实现
      • 3.1 curl 命令请求时间戳
      • 3.2 java 代码请求、校验时间戳

在这里插入图片描述

  • 时间戳在线工具: https://www.freetsa.org/index_zh.php#tcp

背景:

当我们在浏览器上进行数字签名的时候,时间戳服务(TSA)可以帮我们解决了如何证明签署时间的有效性问题,签名时间不可篡改。那么它的实现原理是什么呢?让我们一起来看下。

一、简介

1.1 什么是时间戳服务器

  • 时间戳服务器,即 Time-Stamp Authority(TSA),是一种 用于为数字签名或其他数据提供时间戳的服务。时间戳服务器的主要作用是 确保数据在特定时间点的存在性和完整性,从而增加数字签名的法律效力和不可否认性。时间戳服务器 使用 RFC 3161 标准 生成的时间戳令牌,确保了时间信息的可信度。

1.2 名词扩展

  • Time-Stamp Service时间戳服务
  • Time-Stamp Token时间戳标记
  • Trusted Third Part(TTP)可信第三方
  • Time-Stamp Authority(TSA)时间戳服务机构

1.3 用时间戳标记顺序

众所周知,对数据做数字签名可以保证其完整性,进行数据源鉴别,提供抵赖性,但这些还不够。

例如下面的场景:

  • 假设 A 和 B 因为发表了内容完全相同的两篇小说作品,从而产生了著作权归属的争议。在这种情况下,两人都能够出示 “自己” 小说的签名,但对解决争端毫无作用,这是因为 缺少了判断著作权归属的重要依据——时间先后顺序

再例如下面这个场景:

  • 假设 C 丢失了自己的私钥,于是向 CA 申请撤销了自己的证书。此后,D 声称 C 与自己签订了一项合同却未依约进行,且经验证,合同的数字签名是用 C 的私钥签署的,C 却标识该签名是自己的私钥丢失后有人冒充所为。已知 CA 签发的 CRL 中有证书撤销的时间,在这种情况下,如果能通过合理可靠渠道证明合同所签订时间,从而判定合同签订和证书撤销(私钥失效)的时间,那么问题就迎刃而解了

在数字业务中,标记一份文档出现的时间或一件事的发生顺序是很有必要的,这就像对原始数据加盖了一枚包含权威时间信息的印章,故被称为 时间戳。在 PKI 中,时间戳服务可由第三方提供,并不失去公正性和权威性。

时间戳服务提供的结果称为 时间戳标记,它将当前的时间(可以是一个代表顺序的数字)和原始数据绑定在一起,需要验证的时候可作为证据证明原始数据在时间戳标明的时间之前已经存在,根据时间的不可重复性,时间戳就可用来判断原始数据出现(或其代表的时间发生的)的顺序。

什么是PKI?

  • PKI(Public Key Infrastructure,公钥基础设施)是一种用于创建、管理、分发、使用、存储和撤销数字证书及公钥的技术体系。PKI 的 主要目的是确保数字证书和公钥的安全性和可信度,广泛应用于网络安全、身份验证、数据加密和数字签名等领域。

PKI 的基本组成:

  • 证书颁发机构(CA, Certificate Authority)
  • 注册机构(RA, Registration Authority)
  • 证书库(Certificate Repository)
  • 证书吊销列表(CRL, Certificate Revocation List)
  • 在线证书状态协议(OCSP, Online Certificate Status Protocol)
  • 证书政策(CP, Certificate Policy)
  • 证书实践声明(CPS, Certification Practice Statement)

PKI 的工作流程:

  • 证书申请、证书签发、证书使用、证书吊销、证书更新。

1.4 7 个免费TSA时间戳服务器地址(亲测可用)

  1. http://timestamp.digicert.com
  2. http://aatl-timestamp.globalsign.com/tsa/aohfewat2389535fnasgnlg5m23
  3. https://timestamp.sectigo.com
  4. http://timestamp.entrust.net/TSS/RFC3161sha2TS
  5. http://tsa.swisssign.net
  6. http://tsa.quovadisglobal.com/TSS/HttpTspServer
  7. http://timestamp.apple.com/ts01

时间戳地址的 使用方法 参考下面的 “三、代码实现”。

1.5 RFC 3161 标准

  • RFC 3161 标准,定义了一种用于获取和验证时间戳的协议,旨在为数字签名和其他数据提供可信的时间戳服务。

RFC 3161 的主要内容:

  1. 协议概述

    • RFC 3161 描述了一种时间戳协议(TSP),用于向时间戳服务器(TSA, Time Stamping Authority)请求时间戳,并验证时间戳的有效性。
    • 该协议基于 X.509 公钥基础设施(PKI),确保时间戳的完整性和不可否认性。
  2. 时间戳请求

    • 生成请求:客户端生成时间戳请求(TimeStampRequest),其中包含待时间戳的数据的哈希值(如 SHA-256)。
    • 请求格式:时间戳请求使用 ASN.1 编码格式,符合《RFC 3161》中定义的结构。
  3. 时间戳响应

    • 生成响应:时间戳服务器接收到请求后,生成时间戳令牌(TimeStampToken),包含哈希值、时间戳和服务器的数字签名。
    • 响应格式:时间戳响应(TimeStampResponse)也使用 ASN.1 编码格式,包含时间戳令牌和状态信息。
  4. 时间戳令牌

    • 时间戳令牌包含以下信息:

      • 哈希值:请求中的数据哈希值。
      • 时间戳:服务器生成时间戳的时间。
      • 签名:使用时间戳服务器的私钥对哈希值和时间戳进行签名,确保时间戳的完整性和不可否认性。
    • 格式:时间戳令牌通常是一个 CMS(Cryptographic Message Syntax)格式的消息。

时间戳与 RFC 3161 的关系:

  1. 确保时间信息的可信度
    • 时间戳服务器使用 RFC 3161 标准生成的时间戳令牌,确保了时间信息的可信度。时间戳令牌中的签名由时间戳服务器的私钥生成,客户端可以通过服务器的公钥验证签名的正确性。
  2. 防止篡改
    • 时间戳令牌中的哈希值和时间戳通过数字签名绑定在一起,确保了数据的完整性和时间信息的不可篡改性。即使数据被篡改,签名验证也会失败。
  3. 法律效力
    • 在许多国家和地区,符合 RFC 3161 标准的时间戳被视为具有法律效力的电子证据。时间戳可以用于证明数据在特定时间点的存在性和完整性,常用于数字签名、电子合同、版权保护等领域。

二、时间戳原理

2.1 时间戳服务工作流程

时间戳服务工作流程,如下图所示:

在这里插入图片描述

  1. 用户对文件数据进行 Hash 摘要处理;
  2. 用户提出时间戳的请求,Hash 值被传递给时间戳服务器;
  3. 时间戳服务器对哈希值和一个日期/时间进行签名,生成时间戳;
  4. 时间戳数据和文件信息绑定后返还,用户进行下一步电子交易操作。

2.2 验证工作流程

验证工作流程,如下图所示:

在这里插入图片描述

  1. 用户对文件数据进行 Hash 摘要处理;
  2. 用户将具有时间戳的 Hash 发送给时间戳服务器;
  3. 时间戳服务器验证具有时间戳的 Hash;
  4. 验证成功,获得带有时间戳消息摘要的 Hash,进行比较;验证失败,返回结果。

2.3 举个例子

结合例子来说明,假设 A 准备向网站运营者 B 提交作品,这时 A 需要向 B 证明作品完成的时间,这就需要一个满足以下条件的时间戳服务提供者 C:

  1. 时间戳标记中提供的时间信息是 “权威” 的。这里包含两层意思:

    • C 提供的日期和时间是准确的;
    • C 只会用当时的真实时间标记,而不会故意标记虚假的信息。

    简单来说,就是 C 必须是 “可信第三方”。基于 X.509 PKI,这点可以用 C 的证书来保证,即相信了签署其证书的 CA,也就相信了 C。

  2. 时间戳标记可提供数据来源鉴别以及完整性保护,即B可确信时间戳标记来自C且传输过程中未被篡改,这可依靠数字签名来实现。一般情况下,使用非对称密码技术进行数字签名。

  3. 时间信息与原文内容绑定在一起,以证明该时间正是C收到A此篇原文的时间。即,时间戳标记中要充分地包含原文的信息,加盖时间戳之后原文不应再有改动,不论是自己做的改动还是别人篡改的。

为了即不透露原文又能抵抗篡改,可以使用杂凑算法。A自己计算原文件的杂凑值并交给C加盖时间戳,在出示时间戳标记的时候,验证者B根据收到的文件计算杂凑值并与时间戳标记中的比较,如果相同则证明与时间戳标记中的时间信息绑定的正是原文件。这样,如果修改原文,哪怕只有一个比特,杂凑值也会有显著的变化,而且其 碰撞自由(collision-free,或称“抗碰撞”,collision-resistant)的性质可避免他人或A自己在加盖时间戳之后对原始数据的伪造或篡改。

2.4 时间戳原理总结

根据以上原理,基于X.509 PKI的时间戳服务过程如下:

  1. 用户对原始数据做杂凑运算。
  2. 用户将杂凑值发给TSA
  3. TSA将接收时间列在杂凑结果之后,并对整体进行数字签名。
  4. TSA将带有数字签名的杂凑值和时间信息发回给用户。

三、代码实现

3.1 curl 命令请求时间戳

使用 curl 命令请求时间戳时,入参和出参均为 ASN.1 的二进制格式。其中入参文件的生成方式可以参考 java 代码实现中的逻辑,也可以直接使用下面的地址下载 tsareq.bin,是已经生成好的时间戳请求文件。

  • 时间戳请求文件: https://share.weiyun.com/KvM6psTd
curl

相关文章:

证书学习(六)TSA 时间戳服务器原理 + 7 个免费时间戳服务器地址

目录 一、简介1.1 什么是时间戳服务器1.2 名词扩展1.3 用时间戳标记顺序1.4 7 个免费TSA时间戳服务器地址(亲测可用)1.5 RFC 3161 标准二、时间戳原理2.1 时间戳服务工作流程2.2 验证工作流程2.3 举个例子2.4 时间戳原理总结三、代码实现3.1 curl 命令请求时间戳3.2 java 代码…...

NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL

在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、…...

c中柔性数组

c99中,结构中最后一个元素允许是未知大小的数组,这就叫柔性数组成员。 柔性数组的特点 1.结构中柔性数组前必须至少有一个其他成员 2.sizeof返回的这种结构大小不包括柔性数组的内存 3.包含柔性数组成员的结构用malloc函数进行动态分配,并…...

图像信号处理器(ISP,Image Signal Processor)详解

简介:个人学习分享,如有错误,欢迎批评指正。 图像信号处理器(ISP,Image Signal Processor) 是专门用于处理图像信号的硬件或处理单元,广泛应用于图像传感器(如 CMOS 或 CCD 传感器&a…...

越权访问漏洞

V2Board Admin.php 越权访问漏洞 ## 漏洞描述 V2board面板 Admin.php 存在越权访问漏洞,由于部分鉴权代码于v1.6.1版本进行了修改,鉴权方式变为从Redis中获取缓存判定是否存在可以调用… V2Board Admin.php 越权访问漏洞 漏洞描述 V2board面板 Admin.ph…...

【Ant.designpro】上传图片

文章目录 一、前端二、后端 一、前端 fieldProps:可以监听并且获取到组件输入的内容 action{“/api/upload_image”} 直接调用后端接口 <ProFormUploadButtonlabel{"上传手续图片"}name{"imgs"}action{"/api/upload_image"}max{5} fieldPro…...

为何选择Spring AI Alibaba开发智能客服平台?

0 前言 本文来看如何使用Spring AI Alibaba构建Agent应用。 1 需求 智能客服平台&#xff0c;可帮助用户完成机票预定、问题解答、机票改签、取消等动作&#xff0c;具体要求&#xff1a; 基于 AI 大模型与用户对话&#xff0c;理解用户自然语言表达的需求支持多轮连续对话…...

HiveSQL 中判断字段是否包含某个值的方法

HiveSQL 中判断字段是否包含某个值的方法 在 HiveSQL 中&#xff0c;有时我们需要判断一个字段是否包含某个特定的值。下面将介绍几种常用的方法来实现这个功能。 一、创建示例表并插入数据 首先&#xff0c;我们创建一个名为employee的表&#xff0c;并插入一些示例数据&am…...

Nginx简易配置将内网网站ssh转发到外网

声明&#xff1a;本内容仅供交流学习使用&#xff0c;部署网站上线还需要根据有关规定申请域名以及备案。 背景 在内网的服务器有一个运行的网页&#xff0c;现使用ssh反向代理&#xff0c;将它转发到外网的服务器。 但是外网的访问ip会被ssh反向代理拦截 所以使用Nginx进行…...

【go从零单排】error错误处理及封装

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;error 是一个内置的接口类型&#xff0c;用于表示错误情…...

全平台设置jetbrains mono字体

相信大家都用过IDEA&#xff0c;推荐使用开发字体&#xff1a;jetbrains mono 本地下载的位置&#xff08;记一下&#xff09;后续需要打开安装 本地下载的&#xff1a;E:\download\font\jetbrainsmono\JetBrainsMono-2.304\fonts\ttf 官网上下载&#xff1a;https://www.jetbr…...

高校体育场管理系统+ssm

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;高校体育场管理系统被用户普遍使用&#xff0c;为方便用户…...

Python学习从0到1 day27 第三阶段 Spark ② 数据计算Ⅰ

人总是会执着于失去的&#xff0c;而又不珍惜现在所拥有的 —— 24.11.9 一、map方法 PySpark的数据计算&#xff0c;都是基于RDD对象来进行的&#xff0c;采用依赖进行&#xff0c;RDD对象内置丰富的成员方法&#xff08;算子&#xff09; map算子 功能&#xff1a;map算子…...

Python学习从0到1 day27 第三阶段 Spark ③ 数据计算 Ⅱ

目录 一、Filter方法 功能 语法 代码 总结 filter算子 二、distinct方法 功能 语法 代码 总结 distinct算子 三、SortBy方法 功能 语法 代码 总结 sortBy算子 四、数据计算练习 需求&#xff1a; 解答 总结 去重函数&#xff1a; 过滤函数&#xff1a; 转换函数&#xff1a; 排…...

腾讯混元3D模型Hunyuan3D-1.0部署与推理优化指南

腾讯混元3D模型Hunyuan3D-1.0部署与推理优化指南 摘要&#xff1a; 本文将详细介绍如何部署腾讯混元3D模型Hunyuan3D-1.0&#xff0c;并针对不同硬件配置提供优化的推理方案。我们将探讨如何在有限的GPU内存下&#xff0c;通过调整配置来优化模型的推理性能。 1. 项目概览 腾…...

基于 PyTorch 从零手搓一个GPT Transformer 对话大模型

一、从零手实现 GPT Transformer 模型架构 近年来&#xff0c;大模型的发展势头迅猛&#xff0c;成为了人工智能领域的研究热点。大模型以其强大的语言理解和生成能力&#xff0c;在自然语言处理、机器翻译、文本生成等多个领域取得了显著的成果。但这些都离不开其背后的核心架…...

IDEA构建JavaWeb项目,并通过Tomcat成功运行

目录 一、Tomcat简介 二、Tomcat安装步骤 1.选择分支下载 2.点击下载zip安装包 3.解压到没有中文、空格和特殊字符的目录下 4.双击bin目录下的startup.bat脚本启动Tomcat 5.浏览器访问Tomcat 6.关闭Tomcat服务器 三、Tomcat目录介绍 四、WEB项目的标准结构 五、WEB…...

Mac解决 zsh: command not found: ll

Mac解决 zsh: command not found: ll 文章目录 Mac解决 zsh: command not found: ll解决方法 解决方法 1.打开bash_profile 配置文件vim ~/.bash_profile2.在文件中添加配置&#xff1a;alias llls -alF键盘按下 I 键进入编辑模式3. alias llls -alF添加完配置后&#xff0c;按…...

库打包工具 rollup

库打包工具 rollup 摘要 **概念&#xff1a;**rollup是一个模块化的打包工具 注&#xff1a;实际应用中&#xff0c;rollup更多是一个库打包工具 与Webpack的区别&#xff1a; 文件处理&#xff1a; rollup 更多专注于 JS 代码&#xff0c;并针对 ES Module 进行打包webpa…...

unplugin-vue-components 库作用

一、基本概念与用途 1. 自动导入 Vue 组件 unplugin - vue - components是一个用于 Vue 项目的插件&#xff0c;主要功能是自动导入组件&#xff0c;从而减少在 Vue 组件中手动导入其他组件的繁琐过程。 在大型 Vue 项目中&#xff0c;往往会有许多自定义组件或者第三方组件…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...