数字签名算法分析与Hash签名
序:这篇文章我用了近一周的时间完成,其中涉及到的RSA算法已经在上一篇《公钥密码体系》中详细的介绍过,目前数字签名中人们使用很多的还是512位与1024位的RSA算法。
摘要: 数字签字和认证机构是电子商务的核心技术。数字签名作为目前Internet中电子商务重要的技术,不断地进行改进,标准化。本文从数字签名的意义出发,详细介绍了数字签名中涉及到的内容与算法,并自行结合进行改进。
关键词:Internet 公钥加密 Hash函数 电子商务 加密 数字签名
数字签名简介
我们对加解密算法已经有了一定理解,可以进一步讨论"数字签名"(注意不要与数字认证混淆)的问题了,即如何给一个计算机文件进行签字。数字签字可以用对称算法实现,也可以用公钥算法实现。但前者除了文件签字者和文件接受者双方,还需要第三方认证,较麻烦;通过公钥加密算法的实现方法,由于用秘密密钥加密的文件,需要靠公开密钥来解密,因此这可以作为数字签名,签名者用秘密密钥加密一个签名(可以包括姓名、证件号码、短信息等信息),接收人可以用公开的、自己的公开密钥来解密,如果成功,就能确保信息来自该公开密钥的所有人。
公钥密码体制实现数字签名的基本原理很简单,假设A要发送一个电子文件给B,A、B双方只需经过下面三个步骤即可:
1. A用其私钥加密文件,这便是签字过程
2. A将加密的文件送到B
3. B用A的公钥解开A送来的文件
这样的签名方法是符合可靠性原则的。即:
签字是可以被确认的,
签字是无法被伪造的,
签字是无法重复使用的,
文件被签字以后是无法被篡改的,
签字具有无可否认性,
数字签名就是通过一个单向函数对要传送的报文进行处理得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。用这几个字符串来代替书写签名或印章,起到与书写签名或印章同样的法律效用。国际社会已开始制定相应的法律、法规,把数字签名作为执法的依据。
数字签名的实现方法
实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA Data Security公司的PKCS(Public Key Cryptography Standards)、DSA(Digital Signature Algorithm)、x.509、PGP(Pretty Good Privacy)。1994年美国标准与技术协会公布了数字签名标准(DSS)而使公钥加密技术广泛应用。同时应用散列算法(Hash)也是实现数字签名的一种方法。
非对称密钥密码算法进行数字签名
算法的含义:
非对称密钥密码算法使用两个密钥:公开密钥和私有密钥,分别用于对数据的加密和解密,即如果用公开密钥对数据进行加密,只有用对应的私有密钥才能进行解密;如果用私有密钥对数据进行加密,则只有用对应的公开密钥才能解密。
使用公钥密码算法进行数字签名通用的加密标准有: RSA,DSA,Diffie-Hellman等。
签名和验证过程:
发送方(甲)首先用公开的单向函数对报文进行一次变换,得到数字签名,然后利用私有密钥对数字签名进行加密后附在报文之后一同发出。
接收方(乙)用发送方的公开密钥对数字签名进行解密交换,得到一个数字签名的明文。发送方的公钥可以由一个可信赖的技术管理机构即认证中心(CA)发布的。
------------------------------------------------
数字信封
这是去年十月份完成的一个练习程序:
一.原理:
用快速的对称密钥加密大量数据,然后仅仅对对称密钥作RSA加密,将对称加密后的密文和RSA加密的对称密钥发给接收方。
有效解决了:
1. PKCS#1填充方案的长度限制问题
RSA密钥长度(bit)
加密上限(byte)
1024
117
2048
245
2. RSA加密大量数据的耗时问题
二.开发:
数字信封原理简单,而且综合应用了上面提到的对称加密、非对称加密算法。对于加密算法的学习,数字信封程序是个不错的入门题材。
(1)库文件概要:
clsAES.dll
DESCRIPTION:AES对称算法库文件
NAMESPACE:nsAES
CLASS:clsAES
MEMBERS: Methods: public byte[] AESdecrypt ( System.String encryptedtext )
public byte[] AESencrypt ( System.String plaintext )
public void GenKeyIV ( )
Constructors: public clsAES ( byte[] key , byte[] IV )
public clsAES ( )
Property variables: public byte[] key
public byte[] IV
AESdecrypt 和AESencrypt是实现对称加密解密的方法;
GenKeyIV方法生成对称密钥的密钥值和初始向量(IV:Initial Vector);
成员变量key和IV存放对称密钥的密钥值和初始向量
csRSA.dll
DESCRIPTION:RSA非对称算法库文件
NAMESPACE:nsRSA
CLASS:clsRSA
MEMBERS: Methods: public string strEnc(System.String strToEncrypt)
public string strDec(System.String strToDecrypt)
public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
Constructors: public clsRSA ( )
Variable: RSACryptoServiceProvider RSA
strEnc 和strDec是实现非对称加密和解密的方法,由RSA提供加密和解密的服务。
RSAEncrypt和RSADecrypt也是实现非对称加密解密的方法,必须通过RSAKeyInfo传入RSA密钥参数。
成员变量RSA保存RSA加密服务的一个实例。
clsRsaKeyMgr.dll( RSA Key Management)
DESCRIPTION:RSA非对称算法密钥管理库文件
NAMESPACE:nsRsaKeyMgr
CLASS:clsRsaKeyMgr
MEMBERS: Methods: public void CreatePublicKeyFile(System.String ContainerName, System.String OutputFileName)
public void CreatePrivateKeyFile(System.String ContainerName, System.String OutputFileName)
public RSAParameters GetPublicKeyFromFile(System.String InputFileName)
public RSAParameters GetPrivateKeyFromFile(System.String InputFileName)
public void GenKey_SaveInContainer(System.String ContainerName)
public string GetKeyFromContainer(System.String ContainerName,bool IsFullKey)
public void DeleteKeyFromContainer(System.String ContainerName)
Constructors: public clsRsaKeyMgr ( )
CreatePublicKeyFile和 CreatePrivateKeyFile分别从密钥容器中创建公钥和密钥并写入到指定的文件中。
GetPublicKeyFromFile和GetPrivateKeyFromFile分别从文件中获取公钥和密钥,返回RSAParameters类型的RSA参数结构体。
GenKey_SaveInContainer在指定名称的密钥容器中创建密钥。
GetKeyFromContainer从指定名称的密钥容器中获取XML格式的密钥信息。
DeleteKeyFromContainer删除指定的密钥容器。
--------------------------------------------------
双重签名
1996年2月1日MasterCard 与Visa两大国际信用卡组织与技术合作伙伴GTE、Netscape、IBM、Terisa Systems、Verisign、Microsoft、SAIC等一批跨国公司共同开发了安全电子交易规范(Secure Electronic Transaction,简称SET)。SET是一种应用于开放网络环境下,以信用卡为基础的安全电子支付系统的协议,它给出了一套电子交易的过程规范。通过SET这一套完备的安全电子交易协议可以实现电子商务交易中的加密、认证机制、密钥管理机制等,保证在开放网络上使用信用卡进行在线购物的安全。由于SET提供商家和收单银行的认证,确保了交易数据的安全、完整可靠和交易的不可抵赖性,特别是具有保护消费者信用卡号不暴露给商家等优点,因此它成为目前公认的信用卡/借记卡的网上交易的国际标准。
SET协议采用了对称密钥和非对称密钥体制,把对称密钥的快速、低成本和非对称密钥的有效性结合在一起,以保护在开放网络上传输的个人信息,保证交易信息的隐蔽性。其重点是如何确保商家和消费者的身份和行为的认证和不可抵赖性,其理论基础是著名的非否认协议 (Non-repudiation),其采用的核心技术包括X。509电子证书标准与数字签名技术(Digital Signature)、报文摘要、数字信封、双重签名等技术。如使用数字证书对交易各方的合法性进行验证;使用数字签名技术确保数据完整性和不可否认;使用双重签名技术对SET交易过程中消费者的支付信息和定单信息分别签名,使得商家看不到支付信息,只能对用户的订单信息解密,而金融机构只能对支付和账户信息解密,充分保证消费者的账户和定货信息的安全性。 SET通过制定标准和采用各种技术手段,解决了一直困扰电子商务发展的安全问题,包括购物与支付信息的保密性、交易支付完整性、身份认证和不可抵赖性,在电子交易环节上提供了更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。
-------------------------
这个问题找不到吧,我想你应该自己收集的,不一定百度全知道,如果没人回答,建议找找一个一个的原理。
-------------------------
这东西好象不应该在这里解决的啊
你到操作系统那里 有高手的