论文部分内容阅读
[摘要]表单签名系统采用数字签名技术来保证Web表单数据的完整性和不可否认性。它适用对网上银行、电子交易的表单或网页画面等进行签名,从而保证了网上信息的真实性和交易各方的不可抵赖性,为网上交易提供安全保证。
[关键词]表单 数字签名 PKI 智能卡认证 CryptoAPI
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1120077-02
一、引言
目前,多数电子交易、网上银行等网站是通过Web表单的形式在Internet上采集用户输入的信息。虽然基于Web的表单数据提交和请求操作可通过浏览器完成,无需附加的软件支持,使得交易用户的操作简单易行,但由于HTTP协议无法支持数据的加密与签名,通过Web表单提交的信息会以非加密的形式在网络上传播,就有可能被非法监听或篡改;同时,未经签名的信息也有无法确认信息发送者的真实性,无法防止抵赖交易。为了解决这些问题,急需提供一种基于Web的信息安全服务,能够结合Web浏览器自身的功能,对表单中的敏感信息域进行数字签名。
本文将提出一种基于WEB的表单数字签名系统的解决方案。该系统在PKI基础上,借助微软CryptoAPI标准加密接口,及智能卡认证技术,实现对浏览器端表单数据的签名、验证过程,从而确保电子交易过程中数据的安全性、可靠性。
二、表单数字签名系统的理论基础及相关技术
(一)公钥基础设施(PKI)服务模型
公共密钥基础设施 PKI(Public Key Infrastructure)是一种遵循标准的密钥管理平台,能够对所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。
PKI模型在统一的安全认证标准和规范基础上进行公钥证书的分发和管理,通过在线身份认证,实现 CA 认证、数字证书、数字签名等服务,从而在其分布的环境中建立一个信任体系。
(二)表单数字签名算法
在表单数字签名的实现中,RSA加密算法是保护数据机密性的主要技术手段。此外,还需要使用Hash函数,验证表单数据,以确保表单信息的完整性。
1.RSA 加密算法
RSA 算法是非对称密钥体制中最为经典的一种算法。该算法中,用户具有不同的加密密钥和解密密钥,加密密钥完全公开称之为公钥,解密密钥不公开称之为私钥,这一对密钥不同但却存在联系,理论上可以从公钥推导出私钥,但这种推导过程将非常漫长,因此在计算复杂度方面是无法实现的。
非对称密钥体制解决了密钥体制中的密钥交换、密钥管理和数字签名以及身份认证等问题,实现了信息在传送过程中的保密性服务。然而接受方无法验证通过表单提交的数据信息在传输的过程中是否被非法获取并改动过。因而,信息完整性验证需结合散列函数生成数字摘要而得以实现。
2.散列函数
散列函数(hash函数),是消息验证码技术实现的重要手段。它接收一段数据,并将其压缩成最初数据的一个指纹(figerprint)或摘要(digest)。表单数据的发送方与接收方分别使用相同的Hash算法对原始数据以及接收到的数据进行计算生成信息摘要,并比较生成的两个信息摘要。散列函数具有一些特性:
(1)无法反向执行散列算法恢复最初的明文;
(2)得到的摘要不会显示任何关于最初明文的信息;
(3)创建或发现散列值为某个特定值的明文在计算上是不可行的。
由于散列函数的这些特性,即便表单数据在传输过程中被非法获取,攻击者也无法在修改文件的同时,确保散列值仍然匹配。
(三)数字签名
数字签名是一个具有特殊性质的数学运算的输出结果。它的安全性基于非对称加密。可以防止通信双方进行伪造和欺骗等行为的发生,实现消息完整性和不可抵赖性。数字签名的实现过程如下:
提交数据前,发送方先对表单消息用 Hash 函数进行散列运算,形成消息摘要;并使用个人的私钥对消息摘要加密,将生成的结果附加到原消息明文上,即得到数字签名。
接收方接收到数字签名后,将其分离成为消息明文和加密摘要两部分,用发送方的公钥对消息摘要解密,恢复出摘要明文,使用相同的 Hash 函数对消息进行散列计算,产生一个消息摘要;将新产生的消息摘要与接收到的经公钥解密得到的摘要明文进行比较,若两者相匹配,证明消息在传送过程中没有改变,通过验证,否则不能通过。
(四)USB Key智能卡技术
认证是在必要的担保级别上确认身份的过程。数字签名把实体身份捆绑到被签名的对象中,证书上的唯一识别名代表证书上公钥的拥有者。如果私钥很容易被复制和访问,那么一切都是不安全的。将私钥和数字证书存储在传统媒介中,很难保证数字证书不被窃取和复制,因而通常使用智能卡作为数字证书和私钥的存储设备。
USB 接口的智能卡通常称为 USBKey。它可以在具有 USB接口的任何计算机上使用。其内置的智能卡操作系统 COS 不仅能够安全存储私有密钥、口令等机密信息,而且可以内置加密算法程序,完成加密解密运算。同时,COS 的安全模块的可防止非法数据的侵入和数据的篡改, 防止非法软件对钥匙进行操作。每一个USB Key都具有硬件PIN码保护,PIN码和硬件构成了用户使用USB Key的两个必要因素,即所谓“双因子认证”。用户必须同时取得了USB Key和用户PIN码,才可以完成对表单的数字签名。
(五)CryptoAPI
微软的CryptoAPI是PKI推荐使用的加密 API。其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。
在Crypto API体系中,Crypto API之上是应用程序,之下是密码服务供应商CSP (Crypto graphic Service Provider)。CSP是真正执行加密功能的独立模块,它封装和隐藏了密码算法的具体实现,使用户可以不必关心密码算法的实现过程。
(六)ActiveX技术
ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端。其主要内容包括:
ActiveX控制:用于向WEB页面等支持ActiveX的容器中插入COM对象。 ActiveX文档:用于在WEB浏览器或者其它支持ActiveX的容器中浏览复合文档(非HTML文档)。
ActiveX脚本描述:用于从客户端或者服务器端操纵ActiveX控制和Java程序,传递数据,协调它们之间的操作。
ActiveX服务器框架;提供了一系列针对WEB服务器应用程序设计各个方面的函数及其封装类。
本系统中,将采用ActiveX技术,通过在浏览器端调用签名控件,实现对表单的数字签名和签名验证过程。
三、表单数字签名系统功能描述及应用模型
表单数字签名系统服务可分为两部分:签名生成服务和签名验证服务。签名系统在浏览器端对提交的信息进行签名,在服务器端对签名的信息进行验证。
(一)浏览器端数字签名生成模块功能描述
1.表单域明文获取
通过JS脚本从浏览器中获取用户填写的表单信息中需签名的表单域,将其转换为XML语法表示。
2.实现对表单域的数字签名
在浏览器端调用签名控件实现对表单域明文的数字签名。此控件的功能包括:调用CRYPtoAPI中封装的摘要算法生成表单明文摘要;以及使用签名者所持USBKey中的私钥对明文摘要进行签名。
3.编码转换
将表单的签名结果由二进制转为十六进制编码形式。
4.数据传输
将签名后的表单域数据摘要及表单域明文封装后,分别存放在两个表单隐藏域中,当用户提交表单时,以XML数据串的方式传输数据。
(二)服务器端签名验证模块功能描述
1.数据提取
服务器端接收到数据后,使用getParameter方法获取表单数据域,并分别从formdata和signature隐藏域中读取表单域的明文和签文。
2.证书验证
从服务器端证书库中查询用户证书是否由可信赖的CA颁发;查询CRL验证该证书有效性。验证失败返回错误信息。
3.数据验证
用摘要算法对接收到的表单域明文进行运算生成新的明文摘要,将其与经签名者公钥解密后的签文比较,验证表单明文在传输过程中是否被篡改。
4.表单数据存储
验证通过后,从XML数据串明文中提取表单域值,存储在数据库中以待后续审计。
四、总结
在电子交易过程中,交易数据的真实性和完整性是系统安全的核心要素。数字签名不仅可以有效验证用户通过表单提交的数据在传输过程中是否被篡改,同时证明了交易的发生。USBKey的双因子认证机制确保了只有用户本人可以使用自己的私钥和证书对表单信息进行签名,从而也使用户无法否认自己曾签名过的数据。
本系统提供的解决方案不仅降低了实现数字签名及验证的开发成本,同时弥补了浏览器安全性的不足;此外,与USBKey技术的整合进一步解决了传统数字签名中,证书存储过程中存在的问题。
越来越多的电子商务平台选择使用基于WEB浏览器的表单操作来简化电子交易的过程。表单数字签名系统将被应用到更多的在线业务当中,并期待得到进一步的优化。
参考文献:
[1]韩宝明,杜鹏,刘华编著,电子商务安全与支付.人民邮电出版社. 2003年7月.
[2][美]Andrew Nash,William Duane,Celia Joseph,Derek Brink 公钥基础设施(PKI)实现和管理电子安全清华大学出版社.2002年12月.
[3]龙邦贵、吴伟民、申剑、曹咏春,Web表单数据加密和签名组件的设计与实现.现代计算机.2003年第155期.
[关键词]表单 数字签名 PKI 智能卡认证 CryptoAPI
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1120077-02
一、引言
目前,多数电子交易、网上银行等网站是通过Web表单的形式在Internet上采集用户输入的信息。虽然基于Web的表单数据提交和请求操作可通过浏览器完成,无需附加的软件支持,使得交易用户的操作简单易行,但由于HTTP协议无法支持数据的加密与签名,通过Web表单提交的信息会以非加密的形式在网络上传播,就有可能被非法监听或篡改;同时,未经签名的信息也有无法确认信息发送者的真实性,无法防止抵赖交易。为了解决这些问题,急需提供一种基于Web的信息安全服务,能够结合Web浏览器自身的功能,对表单中的敏感信息域进行数字签名。
本文将提出一种基于WEB的表单数字签名系统的解决方案。该系统在PKI基础上,借助微软CryptoAPI标准加密接口,及智能卡认证技术,实现对浏览器端表单数据的签名、验证过程,从而确保电子交易过程中数据的安全性、可靠性。
二、表单数字签名系统的理论基础及相关技术
(一)公钥基础设施(PKI)服务模型
公共密钥基础设施 PKI(Public Key Infrastructure)是一种遵循标准的密钥管理平台,能够对所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。
PKI模型在统一的安全认证标准和规范基础上进行公钥证书的分发和管理,通过在线身份认证,实现 CA 认证、数字证书、数字签名等服务,从而在其分布的环境中建立一个信任体系。
(二)表单数字签名算法
在表单数字签名的实现中,RSA加密算法是保护数据机密性的主要技术手段。此外,还需要使用Hash函数,验证表单数据,以确保表单信息的完整性。
1.RSA 加密算法
RSA 算法是非对称密钥体制中最为经典的一种算法。该算法中,用户具有不同的加密密钥和解密密钥,加密密钥完全公开称之为公钥,解密密钥不公开称之为私钥,这一对密钥不同但却存在联系,理论上可以从公钥推导出私钥,但这种推导过程将非常漫长,因此在计算复杂度方面是无法实现的。
非对称密钥体制解决了密钥体制中的密钥交换、密钥管理和数字签名以及身份认证等问题,实现了信息在传送过程中的保密性服务。然而接受方无法验证通过表单提交的数据信息在传输的过程中是否被非法获取并改动过。因而,信息完整性验证需结合散列函数生成数字摘要而得以实现。
2.散列函数
散列函数(hash函数),是消息验证码技术实现的重要手段。它接收一段数据,并将其压缩成最初数据的一个指纹(figerprint)或摘要(digest)。表单数据的发送方与接收方分别使用相同的Hash算法对原始数据以及接收到的数据进行计算生成信息摘要,并比较生成的两个信息摘要。散列函数具有一些特性:
(1)无法反向执行散列算法恢复最初的明文;
(2)得到的摘要不会显示任何关于最初明文的信息;
(3)创建或发现散列值为某个特定值的明文在计算上是不可行的。
由于散列函数的这些特性,即便表单数据在传输过程中被非法获取,攻击者也无法在修改文件的同时,确保散列值仍然匹配。
(三)数字签名
数字签名是一个具有特殊性质的数学运算的输出结果。它的安全性基于非对称加密。可以防止通信双方进行伪造和欺骗等行为的发生,实现消息完整性和不可抵赖性。数字签名的实现过程如下:
提交数据前,发送方先对表单消息用 Hash 函数进行散列运算,形成消息摘要;并使用个人的私钥对消息摘要加密,将生成的结果附加到原消息明文上,即得到数字签名。
接收方接收到数字签名后,将其分离成为消息明文和加密摘要两部分,用发送方的公钥对消息摘要解密,恢复出摘要明文,使用相同的 Hash 函数对消息进行散列计算,产生一个消息摘要;将新产生的消息摘要与接收到的经公钥解密得到的摘要明文进行比较,若两者相匹配,证明消息在传送过程中没有改变,通过验证,否则不能通过。
(四)USB Key智能卡技术
认证是在必要的担保级别上确认身份的过程。数字签名把实体身份捆绑到被签名的对象中,证书上的唯一识别名代表证书上公钥的拥有者。如果私钥很容易被复制和访问,那么一切都是不安全的。将私钥和数字证书存储在传统媒介中,很难保证数字证书不被窃取和复制,因而通常使用智能卡作为数字证书和私钥的存储设备。
USB 接口的智能卡通常称为 USBKey。它可以在具有 USB接口的任何计算机上使用。其内置的智能卡操作系统 COS 不仅能够安全存储私有密钥、口令等机密信息,而且可以内置加密算法程序,完成加密解密运算。同时,COS 的安全模块的可防止非法数据的侵入和数据的篡改, 防止非法软件对钥匙进行操作。每一个USB Key都具有硬件PIN码保护,PIN码和硬件构成了用户使用USB Key的两个必要因素,即所谓“双因子认证”。用户必须同时取得了USB Key和用户PIN码,才可以完成对表单的数字签名。
(五)CryptoAPI
微软的CryptoAPI是PKI推荐使用的加密 API。其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。
在Crypto API体系中,Crypto API之上是应用程序,之下是密码服务供应商CSP (Crypto graphic Service Provider)。CSP是真正执行加密功能的独立模块,它封装和隐藏了密码算法的具体实现,使用户可以不必关心密码算法的实现过程。
(六)ActiveX技术
ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端。其主要内容包括:
ActiveX控制:用于向WEB页面等支持ActiveX的容器中插入COM对象。 ActiveX文档:用于在WEB浏览器或者其它支持ActiveX的容器中浏览复合文档(非HTML文档)。
ActiveX脚本描述:用于从客户端或者服务器端操纵ActiveX控制和Java程序,传递数据,协调它们之间的操作。
ActiveX服务器框架;提供了一系列针对WEB服务器应用程序设计各个方面的函数及其封装类。
本系统中,将采用ActiveX技术,通过在浏览器端调用签名控件,实现对表单的数字签名和签名验证过程。
三、表单数字签名系统功能描述及应用模型
表单数字签名系统服务可分为两部分:签名生成服务和签名验证服务。签名系统在浏览器端对提交的信息进行签名,在服务器端对签名的信息进行验证。
(一)浏览器端数字签名生成模块功能描述
1.表单域明文获取
通过JS脚本从浏览器中获取用户填写的表单信息中需签名的表单域,将其转换为XML语法表示。
2.实现对表单域的数字签名
在浏览器端调用签名控件实现对表单域明文的数字签名。此控件的功能包括:调用CRYPtoAPI中封装的摘要算法生成表单明文摘要;以及使用签名者所持USBKey中的私钥对明文摘要进行签名。
3.编码转换
将表单的签名结果由二进制转为十六进制编码形式。
4.数据传输
将签名后的表单域数据摘要及表单域明文封装后,分别存放在两个表单隐藏域中,当用户提交表单时,以XML数据串的方式传输数据。
(二)服务器端签名验证模块功能描述
1.数据提取
服务器端接收到数据后,使用getParameter方法获取表单数据域,并分别从formdata和signature隐藏域中读取表单域的明文和签文。
2.证书验证
从服务器端证书库中查询用户证书是否由可信赖的CA颁发;查询CRL验证该证书有效性。验证失败返回错误信息。
3.数据验证
用摘要算法对接收到的表单域明文进行运算生成新的明文摘要,将其与经签名者公钥解密后的签文比较,验证表单明文在传输过程中是否被篡改。
4.表单数据存储
验证通过后,从XML数据串明文中提取表单域值,存储在数据库中以待后续审计。
四、总结
在电子交易过程中,交易数据的真实性和完整性是系统安全的核心要素。数字签名不仅可以有效验证用户通过表单提交的数据在传输过程中是否被篡改,同时证明了交易的发生。USBKey的双因子认证机制确保了只有用户本人可以使用自己的私钥和证书对表单信息进行签名,从而也使用户无法否认自己曾签名过的数据。
本系统提供的解决方案不仅降低了实现数字签名及验证的开发成本,同时弥补了浏览器安全性的不足;此外,与USBKey技术的整合进一步解决了传统数字签名中,证书存储过程中存在的问题。
越来越多的电子商务平台选择使用基于WEB浏览器的表单操作来简化电子交易的过程。表单数字签名系统将被应用到更多的在线业务当中,并期待得到进一步的优化。
参考文献:
[1]韩宝明,杜鹏,刘华编著,电子商务安全与支付.人民邮电出版社. 2003年7月.
[2][美]Andrew Nash,William Duane,Celia Joseph,Derek Brink 公钥基础设施(PKI)实现和管理电子安全清华大学出版社.2002年12月.
[3]龙邦贵、吴伟民、申剑、曹咏春,Web表单数据加密和签名组件的设计与实现.现代计算机.2003年第155期.