1 引言 为了确保数据传输的安全性,不得不采取一系列的安全技术,如加密技术、数字签名、身份认证、密钥管理、防火墙、安全协议等。其中数字签名就是实现网上交易安全的核心技术之一,它可以保证信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性等。 2 数字签名的概念 数字签名在ISO7498—2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。 数字签名要实现的功能是我们平常的手写签名要实现功能的扩展。平常在书面文件上签名的主要作用有两点,一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。采用数字签名,也能完成这些功能: (1)确认信息是由签名者发送的; (2)确认信息自签名后到收到为止,未被修改过; (3)签名者无法否认信息是由自己发送的。 数字签名的技术基础是公钥密码技术,下面就先介绍公钥密码技术的基本思想和RSA公钥密码系统。 3 公钥密码技术 公钥密码技术又称为非对称/Jn密技术。与之相对的是对称加密技术。对称加密技术是发送方和接收方使用相同的密钥进行加密/解密,双方必须确保这个共同密钥的安全性。其基本过程可以用下图表示:
其中加密变换使用的密钥和解密变换使用的密钥是完全相同的,此密钥必须以某种安全的方式告诉解密方。大家熟悉的DES加密标准就是一种对称加密技术。1976年,Diffie和Hellman在一篇名叫“New Direction in Cryptog raphy(密码学的新方向)”一文中提出了一个新的思想,即:不仅加密算法本身可以公开,就是加密用的密钥本身也可以公开。这就是公钥密码体制。其中使用的密钥被分解为一对:一把公钥和一把私钥。只要私钥保密就可以了,公钥可以发到因特网(如网站的黄页)等公开地方供别人查询和下载。
4 数字签名的实现方法
建立在公钥密码技术上的数字签名方法有很多,有RSA签名、DSA签名和椭圆曲线数字签名算法(ECDSA)等等。下面对RSA签名进行详细分析。
RSA签名的整个过程可以用下图表示:
(1)发送方采用某种摘要算法从报文中生成一个128位的散列值(称为报文摘要);
(2)发送方用RSA算法和自己的私钥对这个散列值进行加密,产生一个摘要密文,这就是发送方的数字签名;
(3)将这个加密后的数字签名作为报文的附件和报文一起发送给接收方:
(4)接收方从接收到的原始报文中采用相同的摘要算法计算出128位的散列值;
(5)报文的接收方用RSA算法和发送方的公钥对报文附加的数字签名进行解密;
(6)如果两个散列值相同,那么接收方就能确认报文是由发送方签名的。
最常用的摘要算法叫做MD5(Message Digest 5),它的作者R.L.
Rivest正是提出RSA公钥密码系统中的R。MD5采用单向Hash函数将任意长度的“字节串”变换成一个128位的散列值,并且它是一个不可逆的字符串变换算法,换言之,即使看到MD5的算法描述和实现它的源代码,也无法将一个MD5的散列值变换回原始的字符串。这一个128位的散列值亦称为数字指纹,就像人的指纹一样,它就成为验证报文身份的“指纹”了。
数字签名是如何完成与手写签名类同的功能的呢?如果报文在网络传输过程中被修改,接收方收到此报文后,使用相同的摘要算法将计算出不同的报文摘要,这就保证了接收方可以判断报文自签名后到收到为止,是否被修改过。如果发送方A想让接收方误认为此报文是由发送方B签名发送的,由于发送方A不知道发送方B的私钥,所以接收方用发送方B的公钥对发送方A加密的报文摘要进行解密时,也将得出不同的报文摘要,这就保证了接收方可以判断报文是否是由指定的签名者发送。同时也可以看出,当两个散列值相同时,发送方B无法否认这个报文是他签名发送的。
在上述签名方案中,报文是以明文方式发生的。所以不具备保密功能。如果报文包含不能泄漏的信息,就需要先进行加密,然后再进行传送。具有保密机制的RSA签名的整个过程如下图所示:
(1)发送方选择一个对称加密算法(比如DES)和一个对称密钥对报文进行加密;
(2)发送方用接收方的公钥和RSA算法对第1步中的对称密钥进行加密,并且将加密后的对称密钥附加在密文中;
(3)发送方使用一个摘要算法从第2步的密文中得到报文摘要,然后用RSA算法和发送方的私钥对此报文摘要进行加密,这就是发送方的数字签名;
(4)将第3步得到的数字签名封装在第2步的密文后,并通过网络发送给接收方;
(5)接收方使用RSA算法和发送方的公钥对收到的数字签名进行解密,得到一个报文摘要;
(6)接收方使用相同的摘要算法,从接收到的报文密文中计算出一个报文摘要;
(7)如果第5步和第6步的报文摘要是相同的,就可以确认密文没有被篡改,并且是由指定的发送方签名发送的;
(8)接收方使用RSA算法和接收方的私钥解密出对称密钥;
(9)接收方使用对称加密算法(比如DES)和对称密钥对密文解密,得到原始报文。
5 数字签名在电子商务中的应用
下面用一个使用SET协议的例子来说明数字签名在电子商务中的作用。SET协议(Secure Electronic Transaction,安全电子交易)是由VISA和MasterCard两大信用卡公司于1997年联合推出的规范。
SET主要针对用户、商家和银行之间通过信用卡支付的电子交易类型而设计的,所以在下例中会出现三方:用户、网站和银行。对应的就有六把“钥匙”:用户公钥、用户私钥;网站公钥、网站私钥;银行公钥、银行私钥。
这个三方电子交易的流程如下:
(1)用户将购物清单和用户银行账号和密码进行数字签名提交给网站:
用户账号明文包括用户的银行账号和密码。
(2)网站签名认证收到的购物清单:
(3)网站将网站申请密文和用户账号密文进行数字签名提交给银行:
网站申请明文包括购物清单款项统计、网站账户和用户需付金额。
(4)银行签名认证收到的相应明文:
从上面的交易过程可知,这个电子商务具有以下几个特点:
(1)网站无法得知用户的银行账号和密码,只有银行可以看到用户的银行账号和密码;
(2)银行无法从其他地方得到用户的银行账号和密码的密文;
(3)由于数字签名技术的使用,从用户到网站到银行的数据,每一个发送端都无法否认;
(4)由于数字签名技术的使用,从用户到网站到银行的数据,均可保证未被篡改。
可见,这种方式已基本解决电子商务中三方进行安全交易的要求,即便有“四方”、“五方”等更多方交易,也可以按SET 议类推完成。
6 结语
数字签名还需要相关法律条文的支持,所以需要引起立法机构对数字签名技术的重视,加快立法脚步,制定相关法律,为数字签名技术提供法律上的支持。
相关推荐
《数字签名原理及技术》是一本深入探讨网络安全与加密技术的专业书籍,主要聚焦于数字签名这一核心概念。在数字化时代,信息安全变得至关重要,而数字签名作为保障数据完整性和身份认证的有效手段,扮演着不可替代的...
数字签名原理及技术 数字签名原理及技术 数字签名原理及技术 数字签名原理及技术 数字签名原理及技术
数字摘要(Digital Digest)又称消息摘要(Message Digest),将任意长度的输入信息经过hash函数运算得到固定长度的输出值,这个值...hash函数的应用主要包括:数据校验(检测数据修改)、口令存储(加salt)、数字签名。
数字签名的过程和原理是电子签名法中的一种重要技术,它能够确保电子文件的完整性和真实性。在数字签名的过程中,使用哈希算法和非对称加密算法来确保电子文件的安全性。同时,数字签名也能够防止电子文件被篡改和...
"数字签名"是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的...
本项目涉及的“数字签名技术代码”显然聚焦于实现这一技术的编程实践。 数字签名并非字面上的签名,而是一种利用公钥加密算法(如RSA)和散列函数(如DES)来确保信息的完整性和发送者身份验证的技术。它通过在数据...
数字签名技术是网络安全领域中的一种重要机制,它用于确保数据的完整性和发送者的身份认证。在本文中,我们将深入探讨数字签名的原理、用途以及如何使用`signtool`工具来为程序签名。 首先,数字签名并非实际的物理...
首先,我们来看数字签名的基本原理。数字签名的主要作用是提供信息的完整性、身份认证和不可否认性。这一过程通常包括四个步骤:1) 发送者使用哈希函数(如SHA-256)对原始信息计算摘要,以压缩信息并生成固定长度的...
数字签名克隆工具的工作原理通常涉及以下步骤: 1. **提取签名**:工具首先从已签名的可执行文件中提取数字签名信息。 2. **克隆签名**:然后,它将这些信息应用到另一个可执行文件上,即使这个文件可能是恶意的。 3...
本书系统介绍了当前各项有代表性的数字签名技术. 第一部分: 密码学, 数学基础和一些基础算法. 第二部分: RSA签名, DSS和ECDSA体制. 第三部分: 电子邮件和数字证书等数字签名的典型应用.
根据题目中的描述,《数字签名》这本书由[美] Mohan Atreya等人撰写,贺军等人翻译,是一本全面介绍数字签名技术的参考书籍。本书适合从事数字签名软件开发的专业人士作为参考文献。书中不仅涵盖了数字签名的基本...
数字签名技术是现代网络安全中的重要组成部分,特别是在保护数据完整性和认证消息来源方面起着关键作用。C#作为.NET框架下的主要编程语言,提供了强大的库来实现这种技术。本篇文章将详细探讨数字签名的概念,以及...
数字签名在IT行业中扮演着至关重要的角色,尤其是在软件开发、数据安全和电子交易等领域。...通过理解数字签名的工作原理和正确使用数字签名添加器,开发者和企业可以更好地保护他们的产品和客户免受潜在的安全威胁。
本文将详细介绍如何使用简单的工具为CAB文件(通常用于分发ActiveX控件)添加数字签名,以及这一过程的重要性和具体步骤。 #### 一、什么是CAB文件? CAB文件是一种压缩格式,常用于Windows操作系统中的安装包或...
在这个资源包中,包含的是使用Python纯算法实现RSA数字签名的代码、相关的PPT演示文稿以及文档,这些内容将帮助我们深入理解RSA数字签名的工作原理和实现过程。 1. **RSA算法基础** RSA算法基于大数因子分解的困难...