PKI体系简易JAVA实现(一):时间戳服务器TSA
1.时间戳服务器TSA的概念:
作为一个权威的、可信赖的、公正的第三方数字证书颁发机构,其时间戳服务就是将经过时间戳服务器签名的一个可信赖的日期和时间与特定电子数据绑定在一起,为服务器端和客户端应用提供可信的时间证明。
2.网上能看到的泛滥的时间戳工作示意图:
我之前找到的资料里都有这个图。这个图从概念上讲述了时间戳服务的流程。但是如果我们要从代码上模拟一个TSA出来,这个图并没有本质上的帮助。
3.网上能找到的另一个泛滥的"时间戳服务工作流程":
1.用户对文件数据进行Hash摘要处理
2.用户提出时间戳的请求,Hash值被传递给时间戳服务器
3.时间戳服务器对哈希值和一个日期/时间记录进行签名,生成时间戳
4.时间戳数据和文件信息绑定后返还,用户进行下一步电子交易操作
那么我们都知道了TSA就是把时间绑定到文件的摘要中,可是怎么绑定?过程如何?
wikipedia为我们解密了这个流程,下面2幅图可以很清晰的看出具体的操作:
第一幅是加时间戳的过程:
第二幅是时间戳验证的过程
4.从图中可以总结出的TSA详细流程:
盖时间戳:
(1) 对欲发送的文件做Hash得到消息摘要
(2) 将消息摘要发送给TSA
(3) TSA把 (消息摘要+当前时间)—》Hash = 带有时间戳的消息摘要的hash值
(4) 将带有时间戳的消息摘要hash值 用TSA的私钥加密
(5) 将 私钥加密后的数据 + 明文时间 (就是第3步的那个“当前时间”) 返回给用户A
(6) 用户A爱怎么玩怎么玩。。。
时间戳验证:
(1) 用户B收到了用户A加入了TSA私钥加密的消息时间摘要的消息,把这个TSA时间戳拿出来(涉及其他解密,这里略去)
(2) 接下来这步在我们个人的简易实现里是没有的: 将TSA私钥加密的消息时间摘要重新发回TSA验证此摘要真实性
(3) 验证真的是那个TSA发布的,然后就拿TSA的公钥对 "TSA私钥加密的消息时间摘要"中的 私钥加密后的数据 进行解密,明文时间留着备用
(4) 解密完得到 带有时间戳的消息摘要的hash值 (标准值)
(5) 使用收到的文件解密完再次hash得到消息摘要
(6) (消息摘要+当前时间)—》Hash = 带有时间戳的消息摘要的hash值 (验证值)
(7) 标准值 ?= 验证值 可以验证消息是否受到重放攻击等
这样,有了详细的流程,用JAVA模拟TSA加盖时间戳的代码就很容易实现了。代码之后附上。
5.相关资料:
Trusted timestamping:http://en.wikipedia.org/wiki/Trusted_timestamping
PKI体系简易JAVA实现(一):时间戳服务器TSA相关推荐
- java 时间戳验证_关于Java:在时间戳服务器上使用时间戳和身份验证对jar进行签名...
我想使用Java jarsigner工具的时间戳选项-tsa.我想到的时间戳服务需要身份验证.为此,您将获得个性化的软令牌,以在时间戳服务器上标识自己. 我的问题:jarsigner工具支持此身份验证 ...
- SSL协议安全系列:PKI体系中的证书吊销
GoSSIP_SJTU · 2016/03/03 10:06 0x00 前言 在前面的章节我们讨论了部分SSL/TLS握手协议.记录协议中存在的安全问题,针对它们的攻击以及相应的加固方案.在SSL/T ...
- 密码学 / PKI 体系概述
CA中心--CA系统--数字证书 CA 中心管理并运营 CA 系统,CA 系统负责颁发数字证书. 专门负责颁发数字证书的系统称为 CA 系统,负责管理并运营 CA 系统的机构称为 CA 中心.所有与数 ...
- 数字签名时间戳服务器的原理
时间戳服务工作流程: ◆ 用户对文件数据进行Hash摘要处理: ◆ 用户提出时间戳的请求,Hash值被传递给时间戳服务器: ◆ 时间戳服务器对哈希值和一个日期/时间记录进行签名,生成时间戳: ◆ 时间 ...
- java filter加时间戳_java filter加时间戳
java filter加时间戳 [2021-01-31 18:31:52] 简介: java时间戳转php时间戳的方法:首先将java时间戳转成字符串,代码为[$utStr = $javaUt . ...
- 时间戳服务器作用,时间戳服务器
签发时间戳功能 用户将需要加盖时间戳的数据,经过消息摘要后发送至时间戳服务器,由时间戳服务器返回的包含可信时间元素的信息包给客户端,完成时间戳的签发. 验证时间戳及信息提取功能 根据文件.二进制数据. ...
- 时间戳服务器作用,使用时间戳给医院带来的好处
时间戳到底有什么作用,如果一个医院使用时间戳会给企业带来什么好处吗?这是很多用户最常问的的一问题.今天山东确信就来个详细的解析. 首先从电子病历说,电子病历缺乏法律的支撑:同原始书面病历相比,电子病历 ...
- Java与Unix时间戳的相互转换
Java将Unix时间戳转换成指定格式日期 当从服务器获取数据的时候,有时候获取的数据中的时间在很多的情况下是时间戳类似于这样1473048265,当然,我们不可能将这些数据以时间戳的形式展示给用户, ...
- java 转换unix时间戳,Java与Unix时间戳的相互转换详解
Java将Unix时间戳转换成指定格式日期,供大家参考,具体内容如下 当从服务器获取数据的时候,有时候获取的数据中的时间在很多的情况下是时间戳类似于这样1473048265,当然,我们不可能将这些数据 ...
最新文章
- opencv线结构光三维重建
- asp.net发布网站(转)
- 探索 OSGi 框架的组件运行机制
- java中数据库连接池_Java中的数据库连接池
- 想满分的看这里:1015 德才论 (25分)
- MATLAB2016下载地址,包含安装教程
- python第六篇:Python复制超大文件、复制二进制文件
- Iterative learning control for linear discrete delay systems via discrete matrix delayed exponential
- 核心Element对象
- python一元线性回归算法_Python机器学习(二):线性回归算法
- matlab如何创建callback函数_MATLAB作图实例:46:显示复杂的三维对象
- java 数组排序 Arrays.sort()用法
- 提示java不是内部命令_Win7命令窗口提示“javac不是内部或外部命令”怎么解决?...
- python抽奖教程_python实现抽奖小程序
- 干货!面向多源数据融合的睡眠时序分类方法研究
- Excel中28个基本图
- 7714天,王小川正式卸任搜狗CEO!网友:别了。。。
- atoi和itoa(头文件stdilb.h)的C实现
- MongoDb查询语句($ne $in )
- 安卓开发———打开相机拍照或者打开相册选择照片并显示出来