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

news2024/11/14 12:00:29

目录

    • 一、简介
      • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一步一步从asp.net core mvc中访问asp.net core WebApi

"从asp.net core mvc中访问asp.net core WebApi"看到这个标题是不是觉得很绕口啊,但的确就是要讲一讲这样的访问。前面我们介绍了微信小程序访问asp.net core webapi(感兴趣的童鞋可以看看前面的博文有关WEBAPI的搭建),这里我们重点不关心如何…

信捷 XD PLC C语言 FB和FC 不同

信捷 XD PLC 的C语言下 FB和FC 的使用,如果你有困惑,本文可能会帮到你! 调用FB要带后缀_Body的,这个地方很容易忽视和出错。 不同之处FBFC可以在全局变量表中建立此类型对象可以1个,也可以多个不可以参数类型及数量有…

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用,用户可以通过滑动条选择不同的数值,并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…

共享汽车管理:SpringBoot框架的高效实现

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足,创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

艾体宝产品丨加速开发!Redis Copilot智能助手上线

我们最近发布了 Redis Copilot,旨在帮助开发者更加高效地使用 Redis 构建应用。提升应用性能,简化构建过程是我们不懈的追求。Redis Copilot 正是为此而生的人工智能助手,助力开发者迅速掌握 Redis 的使用技巧。现在您可以在 Redis Insight 中…

阿里云centos7.9服务器磁盘挂载,切换服务路径

项目背景 1、项目使用的服务器为阿里云centos7.9,默认的磁盘为vda,文件系统挂载在这个磁盘上,项目上使用的文件夹为/home/hnst/uploadPath 2、vda使用率已达到91% 3、现购置一块新的磁盘为vdb,大小为2T 目的 切换服务所使用的…

Electron + Vue3 开发桌面应用+附源码

什么是 Electron? Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架。它由 GitHub 开发并维护,允许开发者使用现代 Web 技术创建原生应用程序。Electron 结合了 Chromium 渲染引擎和 Node.js 运行时环境,使得开发…

【Leecode】Leecode刷题之路第44天之通配符匹配

题目出处 44-通配符匹配-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 44-通配符匹配-官方解法 前言 本题与10. 正则表达式匹配非常类似,但相比较而言,本题稍…

单元/集成测试解决方案

在项目开发的前期针对软件单元/模块功能开展单元/集成测试,可以尽早地发现软件Bug,避免将Bug带入系统测试阶段,有效地降低HIL测试的测试周期,也能有效降低开发成本。单元/集成测试旨在证明被测软件实现其单元/架构设计规范、证明被…

Linux案例:DNS服务器配置

Linux案例:DNS服务器配置 实验一:正向解析 服务端配置: [rootserver ~]# setenforce 0 [rootserver ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.70.131/24 ipv4.gateway 192.168.70.2 ipv4.dns 114.114.114.11…

Linux常用的100个命令

掌握常用的Linux常用命令是作为码农的基本素养,无论你从事软件开发或者运维的的哪个细分领域。本文言简意赅,可作为指导书收藏。 Linux常用命令的分类: 基本文件操作权限与用户管理文件搜索与系统状态网络管理压缩与打包系统管理与维护磁盘与…

数据挖掘全景:从基础理论到经典算法的深度探索

1 绪论--1.1 数据挖掘的概念和任务 1. (单选题)目前数据分析与挖掘领域的现实情况描述不正确的是() A. 信息爆炸 B. 数据爆炸 C. 信息贫瘠 D.数据收集能力远远超过人们的分析和理解能力 2. (单选题)你认为下面哪种数据对于数据挖掘算法来说最简单最…

Qt Udp的组播(多播)、广播和单播

UDP通讯的基本概念和特点‌ UDP(User Datagram Protocol,用户数据报协议)是‌TCP/IP协议族中的一种无连接协议,主要用于那些对实时性要求较高而可靠性要求较低的应用场景。UDP的主要特点包括: ‌无连接‌:…

CSS3中动画的使用animation

1.基本使用 2.其他属性 3.复合属性

前端实现json动画(附带示例)

前端实现json动画(附带示例) 使用lottie制作动画。1.json动画2.实现效果3.git仓库4.运行5.json动画天堂6.代码7. 经常使用的方法 使用lottie制作动画。 1.json动画 废话不多说,直接看效果图2.实现效果 3.git仓库 https://gitee.com/chaiach…

Ubuntu实现双击图标运行自己的应用软件

我们知道在Ubuntu上编写程序,最后编译得到的是一个可执行文件,大致如下 然后要运行的时候在终端里输入./hello即可 但是这样的话感觉很丑很不方便,下边描述一种可以类似Windows上那种双击运行的实现方式。 我们知道Ubuntu是有一些自带的程序…

【GPTs】Email Responder Pro:高效生成专业回复邮件

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 💯GPTs指令💯前言💯Email Responder Pro主要功能适用场景优点缺点 💯小结 💯GPTs指令 Email Craft is a specialized assistant for cra…

阿里云ECS服务器使用限制及不允许做的事情

阿里云ECS(Elastic Compute Service)是一种高性能的弹性计算服务,允许用户在云端创建和管理虚拟服务器。尽管ECS提供了强大的功能,但在使用过程中,阿里云有一些限制和不允许的行为。以下是一些主要的使用限制和禁止行为…

《Atomic Picnic》进不去游戏解决方法

Atomic Picnic有时候会遇到进不去游戏的情况,这可能是由多种原因造成的,玩家可以采取很多解决方法,比如检查电脑配置、更新系统和驱动或验证游戏文件。 Atomic Picnic进不去游戏怎么办 检查电脑配置 查看自己的电脑配置是否达到了游戏的要求…

Fastify Swagger:自动化API文档生成与展示

在现代软件开发中,API文档的生成和维护是一个不可或缺的环节。Fastify Swagger 是一个专为 Fastify 框架设计的插件,它能够自动生成符合 Swagger(OpenAPI v2 或 v3)规范的文档,从而帮助开发者轻松创建和维护API文档。本…