数字签名技术
信息摘要算法、对称加密、非对称加密的着眼点都在于信息本身的编解码,将信息转换为一种不易被识别的序列,通过对此序列的反向鉴别来鉴定信息的完整性并解密真实的信息。
- 信息摘要技术:解决了信息完整性的鉴定问题;
- 对称加密:解决了大数据加密的问题;
- 非对称加密:解决了密码交换的问题。
在实际使用中,我们需要一种更加实用的身份识别技术,这种技术类似签字画押,一旦我们签出的信息发布后,任何人都可以鉴别这条信息是经我们签发的。数字签名技术就是解决此类问题产生的技术,数字签名技术产生的信息:具有不可抵赖性的。
数字签名技术是现代网络中常用的认证技术,这是一种带有密钥的信息摘要算法,主要用途是抗否认。数字签名技术包对信息摘要使用私钥加密,任何人拿到公钥都可以解密并验证信息。因此可以把数据签名技术看成是非对称加密技术和信息摘要技术的合体技术。
特点
数字签名算法是公钥基础设施
(Public Key Infrastructure , PKI)的基础,算法要求:可以验证数据的完整性、有消息,认证数据的来源,起到抗否认的作用。
- 密钥对:数字签名技术融合了非对称加密技术,包含一对密钥,私钥签名,公钥验证;
- 核心算法:数字签名技术的核心算法是消息摘要算法;
- 辅助:非对称加密技术是辅助手段;
- 结果表示:签名值常用十六进制表示;
和信息摘要技术的不同
数字签名技术本质上还是信息摘要算法,信息摘要算法只是计算出了信息的唯一串,也就是摘要相同的数据,明文数据肯定相同。信息摘要只能做到信息的完整性,但是无法强有力的保证信息的抗抵赖性。信息摘要的痛点:
- 窃听方:拦截传输数据,利用社工学等手段探听,摘要算法和salt。
- 窃听方:修改数据并用同样算法和salt来产生签名串,将新数据发送到信息需求方;
- 需求方:仅能确定数据在传输过程中没有被篡改,无法确定是否被替换;
数据签名技术在摘要只是对摘要数据做加密,保证只有信息产生方才产生此签名串,具体做法如下:
- 产生方:使用信息摘要技术对信息计算摘要;
- 产生方:使用自己的私钥对摘要数据加密;
- 产生方:公布自己的公钥,并传输数据和签名到需求方;
- 需求方:使用公钥对签名串解密,并计算信息的摘要,比较摘要是否相同;
- 窃听方:仅能了解双方传递了什么数据,但是无法篡改、替换相关数据;
数字签名技术的本质是:利用私钥加密、公钥解密的特性对信息的摘要做加密产生不可抵赖的签名串。
算法家族
美国NIST
公布过DSS( digital signa )
美国国家标准技术局(NIST)在1991年提出过 DSS
(数字签名标准,全称:Digital Signature Standard)作为FIPS
(美国联邦信息处理标准)。其中DSS
仅仅只是一个标准,里面指定采用DSA
作为签名算法。
前面提到数字签名
的核心是信息摘要算法
、辅助是非对称加密算法
,因此一般我们提到数字签名都需要表明采用了哪些算法,如:MD5WithRSA
、SHA1withDSA
等。
在数字签名中,其安全性是依赖非对称加密算法
的。所以通常情况下,我们不是很关注使用的摘要算法,所以,会有如下划分:
-
RSA
算法:使用RSA
作为加密算法; -
DSA
算法:美国国家安全局开发的专门用在数字签名技术中的算法; -
ECDSA
算法:使用椭圆曲线密码(ECC
)对数字签名算法(DSA
)的模拟。ECDSA
于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准.
ECDSA签名算法,JDK1.7之后才有实现。
算法比较
RSA
、DSA
、ECDSA
没有哪一方有决定优势可以将其他竞争对手击败:
- 创建签名串儿时:DSA比RSA快;
- 在验证签名时:RAS比DSA快;
- DSA解密速度快,加密速度慢一些,RSA正好相反;
一般在数字签名中优先推荐使用DSA,如果有其他标准应该先遵循
国际标准 -> 国家标准 -> 行业标准 -> 内部标准