收稿日期:2003-06-07;修订日期:2003-08-29
  作者简介
:张文奇(1979-),男,湖南邵阳人,硕士研究生,主要研究方向:PK I 体系研究及CA 认证、教育政务信息化安全体系;段斌(1966-),男,湖南湘潭人,教授,主要研究方向:教育卡规范及教育政务信息化安全体系; 王键(1957-),男,山东莒南人,教授,博士生导师,主要研究方向:离散、信息安全; 肖衡(1978-),男,湖南衡阳人,硕士研究生,主要研究方向:Linux 嵌入式操作系统.
文章编号:1001-9081(2003)11-0103-03
Linux 平台上基于PK CS #11的PK CS #7Signed 2data 的实现
张文奇1,段 斌1,2,王 健2,肖 衡1
(1.湘潭大学信息工程学院,湖南湘潭411105;
2.教育部教育管理信息中心校园卡标准化研究所,湖南湘潭411105)
摘 要:文中介绍PK CS #7标准和PK CS #11标准,阐述了在Linux 平台上用PK CS #11的接口函数来实现PK CS #7signed 2data 信息封装的重要性和可行性,并通过实验的方法来封装了PK CS #7signed 2data 的信息包,最后在Windows 平台上用CryptoAPI 接口函数认证信息包的正确性。
关键词:PK CS #7;PK CS #11中图分类号:TP309.1  文献标识码:A
Implementation of PKCS #7Signed 2data on Linux B ased on PKCS #11
ZH ANG Wen 2qi 1,DUAN Bin 1,2,W ANGJian 2,XI AO Heng 1
(1.Institute o f Information Engineering ,Xiangtan Univer sity ,Xiangtan Hunan 411105,China ;
2.Institute o f Campus IC Card Standardization o f Educational Management Information Center ,
Ministry o f Education ,Xiangtan Hunan 411105,China )
Abstract :This paper introduces PK CS #7S tandard and PK CS #11S tandard ,then expatiates the importance and feasibility of using the interface of the PK CS #11S tandard to encapsule PK CS #7signed 2data.In the end the validity of the PK CS #7signed 2data is attested by using the CryptoAPI interface on the Windows System.
K ey w ords :PK CS #7;PK CS #11
1 引言
PK CS (Public 2K ey Cryptographic S tandard ,公钥密码标准)是
美国RS A 数据安全公司为公钥密码学提供的一个工业标准接口。它是PKI 体系中的重要组成部分,它包含一系列的标准,其中PK CS #7定义了加密信息标准,PK CS #11定义了加密设备接口标准。在PKI 体系中,证书的申请、证书的发放信息等都可以以PK CS #7格式封装。PK CS #7标准中定义了不同安全级别的信息封装格式,如加密信息,数字签名信息等,在开放式网络中,PK CS #7中定义的信息能够安全的传输。在Windows 平台上,微软已经提供了PK CS #7信息的相关函数;而在Linux 平台上,则没有相关函数能够实现,必须用PK CS #11的提供的函数接口提取有用信息,并封装成PK CS #7格式的信息,而且在Linux 平台上用C 语言或C ++语言编写源代码,同样可以在Windows 平台上运行,另外,Windows 平台也支持PK CS #11的标准接口,所以,用PK CS #11实现PK CS #7信息的封装,能实现平台无关性。另外,选择在Linux 平台上进行PKI 的理论研究,有着非常重要的经济价值和学习意义。
本文重点探讨了在Linux 平台上基于公钥智能卡,利用PK CS #11函数封装PK CS #7S igned Data 格式的信息。
2 PK CS #11
PK CS #11是加密设备接口标准,该标准详细规定了一个
称为Cryptoki 的底层的编程接口(API ),它可以用于各种可移
植的密码设备和信息共享。它的结构描述主要是围绕以下两点目标展开的:一个目的是屏蔽各种安全实现之间的差异,向用户提供统一编程接口,应用程序不需要因为不同的设备或不同的环境而改变其接口,使安全服务的具体实现方法对用
户透明化,从而实现了应用程序的可移植性;另一个目的是使用户可以在多个安全服务具体实现之间共享资源,使一个设备可以被多个应用程序同时访问,同时一个应用程序也可以访问多个设备
图1 PK CS #11结构模型
PK CS #11定义了一套由S lot 、T oken 、Object 、Session 组成的
体系结构,用于抽象对各种安全设备的使用过程。其中S lot 用于抽象读卡器或其它类似的物理接口等固定安全设备;
T oken 用于抽象智能卡等与个人身份相关的安全设备;Object
用于抽象在安全操作中使用和产生的各种数据和结构,
第23卷第11期
2003年11月
计算机应用C om puter Applications
Vol.23,No.11Nov.,2003
Cryptoki 定义了三种Object :数据对象、证书对象、密钥对象,数
据对象由应用程序定义,证书对象用于存储各种证书,密钥对象用于存储各种密钥,包括私钥、公钥、对称密钥;Session 用于抽象应用到设备的连接,它可以看成是应用程序和T oken 之间的逻辑连接,一般可分成只读的和可读写的两种。图1展示了PK CS #ll 的结构模型,该模型的最上层是需要执行各种加密操作的应用程序,而最下层则分别对应各种加密设备。
3 PK CS #7
PK CS #7标准定义了加密信息语法标准,比如:数字签名信息和数字信封信息,它支持递归嵌套。允许任意的属性(如
签名时间)一起和信息内容被认证以及一些与签名相关联的属性。该语法能够支持多种不同的信息内容,目前该标准定了六种:data 、signed data 、enveloped data 、signed 2and 2enveloped data 、digested data 和encrypted data 。它有两种典型的应用:一种就是发送包含对信息内容进行数字签名的信息,可用于一方向另一方提交需要担保的但不需要保密的信息;一种就是散布证书和证书吊销列表,如在申请证书过程中,C A 证书发放机构返回给申请人的信息
图3 signed 2data 信息包生成时序图
signed 2data 类型包含任意类型的内容和数字签名信息。它主要采用AS N.1的语法定义。其语法如下:
S ignedData ::=SE QUE NCE {version Version ,\版本号digestAlg orithms DigestAlg orithmIdentifiers ,
\摘要算法标识符的集合
contentIn fo C ontentIn fo ,\需签名的信息内容certificates \一串PK CS #6扩展证书和X.509证书,可无[0]IMP LICIT ExtendedCertificatesAndCertificates OPTIONA L ,crls \一串证书吊销列表,可无[1]IMP LICIT CertificateRev ocation Lists OPTIONA L ,signerIn fos S ignerIn fos }\签名者的信息集DigestAlg orithmIdentifiers ::=SET OF DigestAlg orithmIdentifier S ignerIn fos ::=SET OF S ignerIn fo
4 实验设计及其实现
实验采用了Schlumberger 公司Cryptoflex 8k 的PK
卡,Linux 平台下的Muscle T ools PKI 卡的初始化工具,以及G&D 公司的CHIPDRI VE micro v4.30读卡器及驱动程序,在卡中生成公开私有密钥,并写入相应X.509证书。根据图2Linux 系统PKI 应用的体系结构,按照实验的要求在Linux 平台上搭建了好环境。
图2 Linux 系统PK I 应用的体系结构
4.1 利用PK CS #11标准接口生成PK CS #7signed 2data 信息包
signed 2data 信息包的生成时序图如图3所示,其生成过程
大概可以分为以下几个步骤:
1)初始化过程,调用C -Initialize 初始化一个Cryptoki 的编程接口,然后通过函数C -G etS lotList ,C -G etS lotIn fo 到读卡器,接着函数C -OpenSession 可以建立一个与T oken (公钥智能卡)的会话,用C -Login 登录,输入智能卡的正确PI N 码后便顺利完成了登录过程。
2)信息摘要过程,就是给要签名的信息或和需认证的签
401    计算机应用2003年
名者属性计算摘要信息。每个签名者用其各自的信息摘要算法,对内容主体分别进行摘要(如果两个签名者用同一种摘要算法的话,则只需要作一次)。如果需要认证其它一些关于签名者的信息,则可以用摘要算法对这些签名者信息和主要内容一起进行信息摘要。主要通过函数C-DigestInit中的pMechanism来设定其摘要算法,C-Digest函数计算出摘要信息。本实验中,输入到信息摘要过程的值就是将被签发的信息。确定了信息摘要算法后,能够保证任何信息只能计算出唯一的摘要信息,且任何两段不同的信息不可能计算出同样的摘要信息。
3)摘要加密过程,其输入为摘要信息和摘要算法标识符。用每个签名者的私钥对摘要信息和相关信息进行加密。在PK CS#11中提供了函数C-S ignInit,C-S ign来实现签名,其中可以通过设置参数pMechanism的值来确定签名的算法。摘要加密过程的结果是用签名者的私钥对DigestIn fo类型的Digest值进行加密,也就是最后的数字签名。
DigestIn fo::=SE QUE NCE{
digestAlg orithm DigestAlg orithmIdentifier,
digest Digest}
Digest::=OCTET STRING
4)signerIn fo的封装,将数字签名和签名者特征信息组合成signerIn fo值。版本信息,摘要算法和签名算法,以及其它一些与签名者相关的信息都可以按顺序进行封装。signerIn fo 的语法如下:
S ignerIn fo::=SE QUE NCE{
version Version,\版本号
issuerAndSerialNumber IssuerAndSerialNumber,\签发者和序列号
digestAlg orithm DigestAlg orithmIdentifier,\信息摘要的算法
authenticatedAttributes\签名者认证的属性,可无
[0]IMP LICIT Attributes OPTIONA L,
digestEncryptionAlg orithm\摘要加密的算法
DigestEncryptionAlg orithmIdentifier,
encryptedDigest EncryptedDigest,\数字签名
unauthenticatedAttributes\签名者未认证的属性,可无
[1]IMP LICIT Attributes OPTIONA L}
EncryptedDigest::=OCTET STRING
5)signed2data的封装,签名者的信息摘要算法和其signerIn fo,以及信息主体一起按照signed2data的语法标准封装在signed2data中。为了便于验证,本实验通过函数C-FindObjects从卡中读出签名者的证书,并将其包装在signed2 data中,signed2data信息基本生成了。
4.2 PK CS#7signed2data信息的认证
由于以上实验是按照PK CS#7标准封装的信息,所以可以通过Windows平台的CryptoAPI中的函数对其进行认证。生成的PK CS#7signed2data信息中包含有签名者的证书,在认证过程中,先通过CryptMsgOpenT oDecode函数和CryptMsgUpdate 使生成的PK CS#7信息与一个消息句柄关联,CertOpenS tore 函数和CertFindCertificateInS tore函数便可到PK CS#7信息中的包装的证书,最后可以通过函数CryptMsgC ontrol来认证签名。实验证明,生成的信息包是符合PK CS#7signed2data格式的,则其数字签名结果是有效的。
5 总结
本文论证了在Linux平台上用PK CS#11的接口函数来实现PK CS#7signed2data信息封装的重要性和可
行性。在教育信息化过程中,基于Linux平台,开展一些关于信息安全的标准化研究,有助于开发具有自主知识产权的标准化产品,对于我国教育信息化产品的国产化具有非常重要的意义。
参考文献
[1] X.208CCITT.Recommendation X.208:S pecification of Abstract Syn2
tax N otation One(AS N.1)[S].1988.
[2] X.209CCITT.Recommendation X.209:S pecification of Basic Encod2
ing Rules for Abstract Syntax N otation One(AS N.1)[S].1988. [3] RS A Laboratories.PK CS#7:Cryptographic M essage Syntax S tandard.
Version1.6[S].M ay1997.
[4] RS A Laboratories.PK CS#11:Cryptographic T oken Interface S tandard.
Version2.0[S].April1997.
[5] Netw ork W orking G roup.RFC2459:Internet X.509Public K ey In fras2
tructure Certificate and CR L Profile January[S].1999.
(上接第65页)
4 结束语
在C BR中,虽然应用神经网络也能很好地解决复杂问题[10],但无法导出知识规则。因此,本文采用了决策树技术,根据训练样本产生并存储分类规则,并经过C BR的“检索2修正2测试2保留”机制,对心电图分类规则反复进行修正。因此,导出的心电图分类模型易于理解、预测准确度高,从而提高了心电图自动诊断的能力。
参考文献
[1] 玉星,等.基于数字信号处理技术的新型心电图自动分析系统
[J].航天医学与医学工程,2002,(3).
[2] 田蕴青,等.心电图自动诊断系统的研制[J].中国医学物理学杂
志,2000,(4).
[3] 董明.心电图自动分析的新趋势[J].国外医学・生物医学工程分
册,1998,(2).
[4] Tümer M B,et al.A Syntactic M ethodology for Automatic Diagnosis by
Analysis of C ontinuous T ime M easurements Using H ierarchical S ignal Representations[J].IEEE TRANS ACTIONS ON SY STE MS,M AN, AND CY BERNETICS-PART B:CY BERNETICS,APRI L2003,33
windows 7 产品密钥(2).
[5] Huang Z J,Pei M,G oodman E,et al.G enetic Alg orithm Optimized
Feature T rans formation-a C om paris on with Different Classifiers G enetic and Ev olutionary C om putation C on ference[A].Proceedings of the G e2 netic And Ev olutionary C om putation C on ference Chicag o[C].I L.US A, July2003.
[6] Han JW,K amber M.Data M ining:C oncepts and T echniques[M].A2
cademic Press,2000.
[7] AP de Vries,M am oulis N,Nes N,K ersten M L.E fficient k-NN
Search on Vertically Decom posed Data[A].Proceedings of the AC M SIG M OD International C on ference on M anagement of Data[C].M adi2 s on,WI,US A,June2002.
[8] W ats on I.Applying Case-Based Reas oning:T echniques for Enterprise
Systems[M].M organ K au fman Publishers,1997.
[9] W ats on I.C BR is a M ethodology not a T echnology[A].M iles R,M oul2
ton M,Bramer M,ed.Research&Development in Expert Systems X V
[C].S pringer-London,1998.213-223.
[10]Chen DQ.Phillip Burrell Case-Based Reas oning System and Artificial
Neural Netw orks:A Review[J].Neural C om puting&Applications, 2001,10(3):264-276.
501
第11期张文奇等:Linux平台上基于PK CS#11的PK CS#7Signed2data的实现