数字签名主要经过以下几个过程: 信息发送者使用一单向散列函数(hash函数)对信息生成信息摘要; 信息发送者使用自己的私钥签名信息摘要; 信息发送者把信息本身和已签名的信息摘要一起发送出去; 信息接收者通过使用与信息发送者使用的同一个单向散列函数(hash函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身 份和信息是否被修改过。
数字加密主要经过以下几个过程: 当信息发送者需要发送信息时,首先生成一个对称密钥,用该对称密钥加密要发送的报文; 信息发送者用信息接收者的公钥加密上述对称密钥; 信息发送者将第一步和第二步的结果结合在一起传给信息接收者,称为数字信封; 信息接收者使用自己的私钥解密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,得到真正的原文。 数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。 数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。
签字:
1、安装驱动程序
2、在已下载的安装程序上点击右键,选择“属性”
3、选择“数字签名”标签,可看到该文件由目的公司签名。
验证:
1、在已下载的安装程序上点击右键,选择“属性”
2、点击“详细信息”,如软件未被改动,则证书的状态为“该数字签名正常”;
3、点击“查看证书”,可看到证书相关信息。
4、如果文件被非法篡改,在文件属性里,“数字签名”一栏仍显示该文件有签名,但详细信息里会提示“该数字签名无效”,查看证书里会提示“没有验证对象的数字签名”,这时请立即删除安装程序并重新下载,然后重复以上的验证步骤。
常用api java。
security。keypairgenerator 密钥生成器类public static keypairgenerator getinstance(string algorithm) throws 以指定的算法返回一个keypairgenerator 对象参数: algorithm 算法名。
如:"dsa","rsa"public void initialize(int keysize)以指定的长度初始化keypairgenerator对象,如果没有初始化系统以1024长度默认设置参数:keysize 算法位长。其范围必须在 512 到 1024 之间,且必须为 64 的倍数public void initialize(int keysize, securerandom random)以指定的长度初始化和随机发生器初始化keypairgenerator对象参数:keysize 算法位长。
其范围必须在 512 到 1024 之间,且必须为 64 的倍数random 一个随机位的来源(对于initialize(int keysize)使用了默认随机器public abstract keypair generatekeypair()产生新密钥对java。 security。
keypair 密钥对类public privatekey getprivate()返回私钥public publickey getpublic()返回公钥java。security。
signature 签名类public static signature getinstance(string algorithm) throws 返回一个指定算法的signature对象参数 algorithm 如:"dsa"public final void initsign(privatekey privatekey)throws invalidkeyexception用指定的私钥初始化参数:privatekey 所进行签名时用的私钥public final void update(byte data)throws final void update(byte[] data)throws final void update(byte[] data, int off, int len)throws signatureexception添加要签名的信息public final byte[] sign()throws signatureexception返回签名的数组,前提是initsign和updatepublic final void initverify(publickey publickey)throws invalidkeyexception用指定的公钥初始化参数:publickey 验证时用的公钥public final boolean verify(byte[] signature)throws signatureexception验证签名是否有效,前提是已经initverify初始化参数: signature 签名数组 。
公钥密码技术核心思想是使用公钥密码算法的用户有一对密钥,其中一个称谓私钥,用于解密消息或对消息进行数字签名,由用户自己使用,需妥善保存,防止泄密;另一称为公钥,公布在公开位置,由其他人使用,其作用是进行加密或验证数字签名。
假设用户a要使用公钥密码技术将消息m加密传给用户b,用户a首先从公开位置查询到用户b的公钥pubkeyb,并用该公钥加密消息m得到密文pubkeyb(m),然后,用户a将密文pubkeyb(m)发送给用户b。当用户b收到密文pubkeyb(m)后,利用自己的私钥prikeyb解密密文pubkey(m)就可以得到消息m。
对于以上过程,因为消息m是以密文形式传输的,公钥密码算法保证了只有拥有私钥prikeyb才能解密密文,所以,任何别有用心的人都无法通过网络窃听获取明文消息m。从上述过程可以看出,利用公钥密码技术传递消息之前用户a与用户b不必通过秘密渠道协商加密密钥,用户a只需在公开位置查询到用户b的公钥就可以了。
公钥密码技术的这一优势是传统对称密码技术无法比拟的,它不要求通信双方在进行通信之前通过秘密渠道协商加密密钥。但采用公钥密码技术加密信息的速度远远低于采用传统对称密码技术加密信息速度。
因而,在应用中经常首先利用公钥密码技术传递传统对称密码技术所需要的加密密钥,然后再使用传统对称密码技术加密所需传递的信息。 公钥密码技术的另一个优势就是消息发送者可以利用自己的私钥对发送消息进行数字签名,而消息接收者使用发送者的公钥可以验证发送者所作的数字签名。
通过验证数字签名可以保证消息来源的真实性,也可以防止发生纠纷时消息发送者对发送过的消息进行抵赖。 另外,数字签名还可以保证数据的完整性,因为消息篡改者无法为篡改后的消息消息伪造原始发送者所要做的数字签名。
在实际应用中,每一个用户通常有两对密钥:一对专门用来进行加解密,另一对专门用户进行数字签名与验证数字签名。对应的公钥分别称为加密公钥,验证签名公钥,对应的私钥分别称为解密私钥,数字签名私钥。
根据公钥技术的特点,用户的公钥是存放在公开位置的,需要使用时可以到公开位置查询,这样可以大大简化对密钥的管理。然而利用公钥密码技术实现数据传输安全并不意味着不存在密钥管理问题。
如果用户b存放在公开位置的公钥被不法用户d替换为自己的公钥,用户a使用用户b的公钥加密信息,不法信息使用自己的私钥就可以解密通过网络传输的密文。 因此在利用公钥密码技术实现数据的安全传输时,必须采取措施让用户确信自己使用的公钥确实是它所期望的用户的公钥。
利用公钥基础设施pki可以使用用户能够判断自己所使用的公钥正是所期望的公钥。 二、认证机构ca与公钥证书 根据公钥密码技术原理,要想在internet上进行安全的数据传输,必须保证其中一方拥有另一方的公钥。
如何在广域网上安全得到对方的公钥,以防止假日攻击,止前主要依赖认证机构ca来实现。认证机构ca是可信的权威机构,其权威性首先体现在它的所有用户都知道其验证签名公钥及加密公钥。
ca的用户u首先在ca注册,并提交自己的公钥。当注册成功,也就是ca验证了用户u身份的真实性后,ca就将用户名u,用户的公钥及另外一些用户属性放在一个文本中,对所形成的文本进行数字签名处理。
文本及ca对文本的签名信息,就形成用户a的公钥证书。认证机构ca作为可信权威机构其可信性体现在ca能保证书中的用户名与公钥是致的,也就是说ca能保证基所签署的标识为用户a的证书中的公钥一定是用户a的,而且证书中的有关属性是正确的。
有了ca,用户拥有了公钥证书,广域网上方便快捷的安全的通信便成为了可能。 三、公钥基础设施的结构 公钥基础设施系统通常包括认证机构ca、证书与cpl数据存储区和用户三部分,其中用户包括证书申请者与证书使用者,如图1所示。
公钥证书申请者首先要生成自己的公私钥对,并将公钥与自己的身份证明材料提交给认证机构ca。 认证机构ca通过用户提供的身份证明材料,验证用户的身份。
如果用户提供的身份证明材料真实可信,认证机构ca为用户登记注册,并使用自己的私钥为用户签发公钥证书。公钥证书的结构如图2所示,从中可以看出公钥证书通常包括三部分内容:需要签名部分、签名算法部分和签名值部分。
需要签名部分包括证书版本号,序列号,持有者(证书主体)的公钥,有效期及其他相关信息。 签名算法部分的内容标识ca对证书进行数字签名所使用的公钥签名算法。
签名值部分包含的是ca使用签名算法部分所标识的签名算法,使用自己的签名私钥对需要签名部分进行数字签名的签名结果。 认证机构ca将其签发的用户公钥证书公布在公开位置,如图1中的数据存储区。
从图1中可以看出,数据存储区中除了存放用户公钥证书之外,还存放证书吊销列表crl(certificate revocation list),它列出了由于种种原因而吊销了的证书。 当用户a要使用用户b的公钥进行安全数据传输时,用户a首先在公钥基础设施的存储区查询用户b的公钥证书,然后使用认证机构ca的验证签名公钥验证证书中ca的数字签名。
首先应该知道,什么是数字签名.简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。
这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。
基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。
普通数字签名算法有rsa、elgamal、fiat-shamir、guillou- quisquarter、schnorr、ong-schnorr-shamir数字签名算法、des/dsa,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。
显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(dss)。一些国家如法国和德国已经制定了数字签名法。
实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于rsa date security 公司的pkcs(public key cryptography standards)、digital signature algorithm、x.509、pgp(pretty good privacy)。1994年美国标准与技术协会公布了数字签名标准而使公钥加密技术广泛应用。
公钥加密系统采用的是非对称加密算法。 目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。
它的主要方式是,报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。
然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。
如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。
在书面文件上签名是确认文件的一种手段,其作用有两点:第一,因为自己的签名难以否认,从而确认了文件已签署这一事实;第二,因为签名不易仿冒,从而确定了文件是真的这一事实。 数字签名与书面文件签名有相同之处,采用数字签名,也能确认以下两点:第一,信息是由签名者发送的;第二,信息自签发后到收到为止未曾作过任何修改。
这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。或发出(收到)信件后又加以否认等情况发生。
应用广泛的数字签名方法主要有三种,即:rsa签名、dss签名和hash签名。这三种算法可单独使用,也可综合在一起使用。
数字签名是通过密码算法对数据进行加、解密变换实现的,用des算去、rsa算法都可实现数字签名。但三种技术或多或少都有缺陷,或者没有成熟的标准。
用rsa或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。
公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。
rsa算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。
不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。
哈希函数对发送数据的双方都是公开的只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下: 发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面; 发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方; 发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方; 接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文; 接收方用秘密密钥对文件进行解密,得到经过加密的数字签名; 接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文; 接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。
如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。 如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。
这就提供了一个安全的确认发送方身份的方法。 安全的数字签名使接收方可以得到保证:文件确实来自声称的发送方。
鉴于签。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
ag8亚洲国际集团 copyright © 2016 ag8亚洲国际集团. 页面生成时间:2.768秒