dss数字签名技术java_DSS数字签名标准
DSS数字签名标准
签名过程:
graph TD;
id2 -.Signature.-> id12
subgraph Signature Generation;
id0(Message/Data)-.-> id1(Hash Function)
id1 -.Message Digest.-> id2(Sinature Generation)
id3(Private Key) -.-> id2
end
subgraph Signature Verification;
id10(Message/Data)-.-> id11(Hash Function)
id11 -.Message Digest.-> id12(Sinature Verification)
id13(Public Key) -.-> id12
id12 -.-> id14(Valid/Invalid)
end初始化设置:
Obtain Domain Parameter;
Obtain Assurance of Domain Parameter Validity;
Obtain DS Key Pair;
Obtain Assurance of Public Key Validity;
Obtain Assurance of Possession of the DS Private Key;
Register the Public Key and Identify with a TTP(Optional);
数字签名生成:
Generate a Message Digest;
Obtain Additional Information for the Digital Signature Process;
Generate a Digital Signature;
Verify the Digital Signature(Optional);
数字签名的验证和确认:
graph LR;
subgraph Actions;
id1(Get the Claimed Signatory's Identifiers) -.-> id2(Obtain the Domain Parameters and Public Key)
id2 -.-> id3(Generate a Message Digest)
id3 -.-> id4(Verify the Digital Signature)
end
subgraph Assurance;
aid1(Obtain assurance of the Claimed Signatory's Identity)
aid2(Obtain Assurance of Domain Parameter Validity) -.-> aid3(Obtain Assurance of the Validity of the Owner's Public Key)
aid2 -.-> aid4(Obtain Assurance that the Owner Possesses the Private Key)
end
subgraph ValidationComplete;
vid1(Digital Signature Validation Complete)
end
aid1 -.-> vid1
aid3 -.-> vid1
aid4 -.-> vid1
id4 -.-> vid1公钥\(y=g^x\mod p\);
私钥\(x\in [1,q-1]\);
素数\(p\), 位长度为\(L\), \(p\in (2^{L-1}, 2^L)\);
和\(p-1\)互质的素数\(q\), 位长度记为\(N\), \(q\in (2^{N-1}, 2^N)\);
乘法群\(GF(p)\)中阶为\(q\)的子群的生成子\(g\), \(g \in (1,p)\);
伪随机整数\(k\), \(k\in [1,q-1]\);
\(p, q, g\);
可选的domain_parameter_seed/counter, 用于\(p,q\)的生成;
规范指定的(L,N)长度选择:
L = 1024, N = 160;
L = 2048, N = 224;
L = 2048, N = 256;
L = 3072, N = 256;
哈希函数的选择要满足其安全强度大于\(min(L,N)\);
记Hash函数的输出位字符串的位长度为\(outlen\);
记truncate_l(bit_str, len)表示取位字符串bit_str的最左边的len位;
\(k^{-1}\)表示关于随机数\(k\)的模\(q\)的逆, 即\((k^{-1}\cdot k)\mod q = 1\);
签名\((r,s)\)的计算如下:
\[\begin{aligned}
& r = (g^k \mod p) \mod q \\
& z = truncate_l(Hash(M), min(N, outlen)) \\
& s = (k^{-1}(z+x\cdot r))\mod q;
\end{aligned}
\]
假设认证者已经确认了域参数和公钥;
记接受者收到了消息\(M'\), 和签名\((r', s')\), 则签名验证如下;
签名需满足\(0\lt r' \lt q\), \(0 \lt s' \lt q\);
\(r'\)需满足\(r'=v\):
\(w = (s')^{-1}\mod q\);
\(z = truncate_l(Hash(M'), min(N, outlen))\);
\(u1 = (z\cdot w)\mod q\);
\(u2 = (r' \cdot w)\mod q\);
\(v = ((g^{u1}\cdot y^{u2})\mod p) \mod q\);
公钥\((n, e)\);
私钥\((n, d)\);
相关的标准有:
ANS X9.31;
相关标准:
其它内容待补充;
FIPS 186-4;
FIPS 186-5-draft;
dss数字签名技术java_DSS数字签名标准相关推荐
- 密钥加密技术和数字签名
一.密钥加密技术 密钥加密技术是为了保证在开放式环境中网络传输的安全而提供的加密服务.通常大量使用的两种密钥加密技术是:私用密钥(对称加密)和公共密钥(非对称加密). a.对称加密 对称加密:简单来说 ...
- 盲签名——典型的数字签名技术
盲签名允许消息者先将消息盲化,而后让签名者对盲化的消息进行签名,最后消息拥有者将签名除去盲因子,得到签名者关于原消息的签名.这是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签 ...
- 区块链技术之数字签名简介
区块链技术之数字签名简介 区块链比特币中利用数字签名来保证数据在整个系统中不可篡改,并保证交易双方的身份真实可靠.数字签名使用了非对称加密技术和数字摘要技术,保证了数据在传输过程中的完整性.发送者身份 ...
- 数字签名技术以及RSA算法的原理实现
数字签名技术 1)对称加密与非对称加密 对称加密:对文件的加密和解密采用的都是同一个密钥,有IDEA和DES两种加密算法 非对称加密:有一对公钥和私钥 如果我们使用公钥加密,必须得用私钥解密:如果使用 ...
- 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
本文讲解对称加密.非对称加密.消息摘要.MAC.数字签名.公钥证书的用途.不足和解决的问题. 0.概述 当发送方A向接收方B发送数据时,需要考虑的问题有: 1.数据的安全性. 2.数据的完整性,即数据 ...
- 【网络技术】(5)身份认证技术与访问控制------数字签名技术
概念及功能 数字签名是指用户用私钥对原始数据进行加密得到的特殊字符串,用于保证数据来源的真实性.数据传输的完整性和防抵赖性. 法律上签名的两个功能: 1)标识签名人 2)表示签名人对文件内容的任可 我 ...
- 基于java的数字签名技术在电子政务中的应用
肖蕾 杨世平 摘要 本文介绍了数字签名技术在电子政务中的应用,传统的数字签名技术都是基于非对称的密码算法,原文以明文的方式传送,在这种方式下,原文的安全性受到了极大的威胁,因此,本文 ...
- 网络安全加密与数字签名技术
网络安全加密与数字签名技术 当今网络什么问题最重要?安全问题. 那么为了解决安全问题,我们都有哪些相应措施呢 当然要对传输数据加密,加密又分为两种相对应的加密技术,对称加密和非对称加密. 对称加密指加 ...
- RSA密码算法和数字签名技术
目录 密钥生成过程 加密和解密 举例 数字签名技术 举例 中国剩余定理 密钥生成过程 1.选取两个不同的大素数p和q,为了安全程度最大,p和q长度一致,计算模n=pq: 2.计算模n的欧拉函数:φ(n ...
最新文章
- [git]git相关
- linux下基于jrtplib库的实时传送实现
- Java使用easyexcel读大文件
- 使用旧版本tensorflow出现了negative等报错的问题,AttributeError: 'module' object has no attribute 'xxx'
- Thread-start()-,它是怎么让线程启动的呢,Java面试问项目
- JavaSE——Java8之函数式接口、函数式编程、Lambda表达式
- 以太坊的POS共识机制(一)友善的小精灵 Casper
- CentOS 7下限制ip访问
- mysql 默认是什么锁_Mysql中的锁机制
- cuda中pinned memory(page-locked memory)
- 做个什么网站可以赚钱,这6种网站最好赚钱!
- 严昊:25岁接手世界500强企业,公司一年净赚80亿
- Java程序员月薪达到三万,需要技术水平达到什么程度?(转)
- 【Hive】left semi join(exists、in)和 left join 区别
- 服务器上搭建git仓库
- CSS3 rgb and rgba(透明色)的使用
- 纳豆红曲的功效与作用是什么?
- Delphi - 2010下安装IOComp
- 关于HTML表单用户信息进行MD5加密
- openCV任意几何形状感兴趣区域(ROI)提取