通用安全支撑平台.doc
云南省信息技术开发专项计划 通用安全支撑平台及其关键技术研究(2004IT06) 项 目 研 究 报 告 项目负责人 李彤 云南大学 昆明华软信息工程有限公司 2007年3月 目 录 一.项目简介2 1.1 项目的主要研究开发内容................................................................................................2 1.2 项目创新点....3 二.软件环境5 2.1.软件运行环境5 2.2.开发工具及开发平台5 2.3.主要技术指标5 三.USSP系统体系结构图6 四.所涉及的关键技术8 4.1.混合密码技术8 4.2.椭圆曲线数字签名14 4.3 机密共享技术..16 4.4 数字证书..........16 4.5. 授权管理基础设施PMI............................................................................................. 20 4.6. 交叉认证................................................................................................................ .22 4.7. 认证管理.......................................................................................................... 22 五.服务器端的USSP_CA认证中心系统24 5.1.体系结构24 5.2.功能规约26 5.3.USSP_CA 涉及的主要算法27 5.4.数据模块及规约28 5.5.数据规约29 5.6.接口规约31 5.7.用户界面34 六.客户端数据保密系统USSP_UA36 6.1.体系结构36 6.2.主要功能36 6.3.USSP_UA的功能模块37 6.4.程序框架38 6.5.用户界面42 七.结束语44 一. 项目简介 随着互联网络的发展,整个世界经济正在迅速地融为一体,整个国家犹如一部巨大的网络机器,计算机网络已经成为国家的经济基础和命脉。计算机网络在经济和生活的各个领域正在迅速普及,整个社会对网络的依赖程度越来越大。因此,计算机网络的安全,已经成了社会乃至人民的安全所在。为保障网络信息安全,研究者们已经提出了诸如身份认证服务、不可否认服务、数据完整性服务等许多技术,但采取什么样的技术,采用谁的技术是个非常复杂的问题。安全技术必须建立在我们自己的技术平台上,提出自己的通用安全解决方案,才能从根本上保证网络信息的安全。为此,针对网络应用,以保障信息安全为总体目标,本项目组设计了一个通用安全支撑平台软件系统USSP(Universal Security Support Plat),并对其中涉及的关键技术进行了研究。以便为各类企事业单位和应用提供“通用”的信息安全技术支撑。其“通用”性表现在USSP是在Linux和Windows操作系统平台上开发的一套跨平台的通用安全支撑平台软件系统,它能为需要安全服务的信息系统提供安全的基础支撑,可被政府、企业或个人等需要安全的对象和应用使用,为电子政务、电子商务等关键网络电子服务系统的安全应用和顺利发展提供一个有效的安全技术解决方案和通用的支撑保障。USSP通用安全支撑平台具备普适性,也就是说,只要遵循必要统一的原则,不同的实体就可以方便地使用支撑平台提供的安全服务,不仅能够增强数据与资源的安全,而且能够增强数据和资源交换中的安全。 本项目的实施对保障国家和社会信息安全,推动国产软件创新和民族软件产业发展,保障信息安全,具有重要意义和广阔应用前景。 本项目的主要研究和开发内容是在 Linux以及Windows操作系统的平台之上,研究并开发一系列完整、安全以及高效的关键技术,并以这些关键技术为基础开发一套支持网络应用的通用安全支撑平台产品软件USSP(Universal Security Support Plat)。 1.1 研究开发的主要内容 1. 在Linux和Windows操作系统平台上开发了一套跨平台通用安全支撑平台系统USSP。 (1) 开发了服务器端的CA认证中心系统USSP_CA( USSP/ Certification Authority),其功能主要包括 l 使用数字证书实现用户的电子身份证明; l 使用认证管理技术实现统一门户访问的认证与授权管理; l 使用交叉认证技术实现多个CA认证中心之间的交互。 (2) 开发了组件USSP/PMIServer,主要完成属性证书颁发管理,角色、权限及资源信息管理等功能。 (3) 开发了组件USSP/RA,提供注册机构RA。用于登记和管理用户帐号,提供主要的用户管理特性,包含密钥、密钥更新恢复。 (4) 开发客户端的数据保密系统USSP_UAUSSP/User Agent,提供客户端诸如加密、解密、签名、认证等安全应用,并且算法可由用户自己选择。 2. 对实现中的关键技术进行了研究改进,包括 (1) 两种混合加密算法,一种是椭圆曲线加密算法(ECC)和高级数据加密标准算法(AES)结合的混合加密算法,另一种是椭圆曲线加密算法(ECC)和国际数据加密算法(IDEA)结合的混合加密算法; (2) 椭圆曲线数字签名算法(ECDSA); (3) 机密共享技术。 3. 在应用示范单位昆明华软信息工程有限公司的Netcase应用系统中,以普通软件系统嵌入安全机制的方式进行应用示范。 1.2 项目创新点 2001年国家一级科技查新咨询单位“云南省科技情报研究所”的查新报告中指出“还未见到基于国产Linux操作系统平台,综合应用公用密钥、信息加密解密、数字签名及证书机制等安全技术手段,构建一个以认证机构(CA)为核心的公开密钥基础设施(PKI)软件系统的文献报道。” 2004年的查新报告指出“我国PKI技术的研究开发才刚刚起步,还没有一套完整的、成熟的、具有自主知识产权的PKI应用体系。椭圆曲线加密解密算法的研究已有报道,基于UNIX平台的椭圆曲线密钥管理已有文献报道,但检索范围内,未见基于Linux操作系统的椭圆曲线公钥密码机制的文献报道。浙江大学计算机科学与技术系发表的“Linux平台下公钥基础设施(PKI)的研究”,上海交通大学通信与信息系统硕士论文互联网安全的关键技术研究基于Linux的PKI系统的开发与应用等文献都介绍了基于Linux平台的PKI系统研究开发方案,但检索范围内未见基于国产红旗Linux操作系统的PKI软件系统的研究开发的报道。” 2007年的查新报告又指出“国内已有一些关于ECC、AES、IDEA、ECDSA等加密技术的文献报道,如一种基于IDEA和ECC算法的数字防伪认证新方案的研究与实现、基于AES和ECC的混合密码系统研究、基于ECC和AES相结合的加密系统的实现、一种ECC和AES的混合密钥机制的研究与实现、支持ECDH、ECIES、ECDSA三项功能的加密系统等加密技术,及具有跨平台等特点的介绍。但本课题中的1、ECC/AES和ECC/IDEA两种变长密钥混合加密技术,ECDSA数字签名技术。安全椭圆曲线加密算法的研究;2、软件系统跨平台;3、机密共享技术,在国内未见具有上述特征的通用安全支持平台的文献报道。” 综合本项目的研究内容与查新报告,本项目的创新点如下 (1) 通用性为一般网络应用(包括电子政务、电子商务和电子服务)系统提供通用的支撑保障; (2) 跨平台设计支持Linux和Windows操作系统平台; (3) 高效的ECC椭圆曲线密码技术以自主改进的椭圆曲线加密算法作为核心,提高和促进公钥密码的应用和实现; (4) 提高速度同时保障安全采用两种混合加密算法ECC/AES和 ECC/IDEA; (5) 支持多重安全级别提供多种不同密钥长度的算法。 (6) 可信的技术基础以项目组自己研究编写的核心算法有效地保证了网络应用系统的中长期信息安全; (7) 授权管理的灵活性基于PMI技术的授权管理模式可以通过属性证书的有效期以及委托授权机制来灵活地进行授权管理,从而实现了传统的访问控制技术领域中的强制访问控制模式与自主访问控制模式的有机结合 二. 软件环境 2.1. 软件运行环境 l 服务器端运行环境 操作系统中文Linux操作系统,中文Windows操作系统; 数据库MySQL-3.23.0及其以上版本 Web服务器Tomcat5.0及其以上版本 l 客户端运行环境 操作系统中文Linux操作系统,中文Windows操作系统。 2.2. 开发工具及开发平台 l 开发工具XML、J2EE、J2ME、Java、C l 数据库系统MySQL-3.23.0及其以上版本 l 操作系统中文Windows操作系统,中文Linux操作系统 2.3. 主要技术指标 l 支持X.509协议标准。 l 支持B/S、C/S应用模式。 l 以高效椭圆曲线离散对数算法为核心提供可变长度公钥信息加密算法。 l 结合椭圆曲线离散对数算法和高级加密标准算法实现混合加密算法ECC/AES。 l 结合椭圆曲线离散对数算法和国际数据加密算法实现混合加密算法ECC/IDEA。 l 支持Linux平台和Windows平台,并实现跨平台。 l CA认证中心的核心技术能支持网络应用的中长期信息安全 三. USSP系统体系结构图 整个通用安全支撑平台通过部署和定制需要提供的安全服务,达到安全支撑的目的,USSP包括6个重要的模块管理器,其分层体系结构如下图所示 密码服务子系统提供对加密、解密、签名、认证等底层函数的管理 l 采用ECC/AES和ECC/IDEA混合密钥技术实现加/解密。 l 采用基于椭圆曲线的DSA数字签名算法ECDSA、MD5报文摘要算法和SHA-1安全散列算法实现签名、认证。 l 采用采用机密共享技术,实现最高机密密钥由多人共同保管。 信任服务子系统提供服务器端的信任服务模式定制。 l 提供连接到PKI的XML接口,使客户端和应用服务器之间可以共享XKMS服务。 l 提供交叉认证服务。 l 提供信任模式定制功能。 授权服务子系统实现权限管理基础设施(PMI)的功能,根据提交的一套信任凭证来确定是否允许特定对象执行某操作的通用授权服务。 l 通过属性证书达到用户角色控制的目的。不依赖某个具体应用,实现权限的安全分布式应用。 l 使用认证管理技术实现统一门户登录管理。用户登录一次,系统就安排好相应的认证和授权。 证书库子系统 存储、管理、操作证书和证书撤销列表。 l 签发符合X.509标准的数字证书证明用户的身份。 数据库子系统 为安全对象的各种信息提供安全、持久的存储和检索服务(加密存放)。 USSP系统提供C/S和B/S两种工作模式,对加密后的密文文件,提供不同的传输手段,包括HTTP、HTTPS、FTP、SMTP等,供用户选择。支持Microsoft Internet Explorer 、Netscape Navigator和Mozilla 等Web浏览器,开发提供证书认证、签名验证和数字签名等安全服务的应用插件,方便客户端操作。同时,在安全支撑平台系统的基础上,研究并开发普通的应用程序、能够满足不同底层平台的客户端中间件、能够方便携带的便携式客户端和可以嵌入到其他系统的客户端插件,提供系统应用的灵活性。 下面以电子政务为例说明通用安全平台的使用,通用安全支撑平台在电子政务中的地位见下图 部分关键技术在电子政务中的支撑见下图 四. 项目所涉及的关键技术 4.1 混合密码技术 本项目采用结合公钥密码加密技术(ECC椭圆曲线加密技术)与对称密码技术(分组密码技术中的AES数据加密标准和IDEA国际数据加密算法)实现混合密码技术。 4.1.1 ECC(EllipticCurvesCryptography,椭圆曲线密码编码学) ECC(EllipticCurvesCryptography,椭圆曲线密码编码学)属于公开密钥算法。椭圆曲线密码体制(Elliptic Curve Cryptography)的研究和应用,是近年来信息安全领域的一大突破。而混合密钥体制是目前广泛使用,效率、性能优异的信息安全系统解决方案。 椭圆曲线相关定义 1 椭圆曲线 定义 在任何一个域K上,椭圆曲线方程为 y2axybyx3cx2dxe ① 特别地,当域K的特征值cK2时,椭圆曲线方程为 y2ayx3bxc ② 或者 y2xyx3ax2b ③ 2 椭圆曲线的倍乘 定义 设P为椭圆曲线上一点,我们称n个P相加为椭圆曲线上点的倍乘,用nP表示,也就是nPPPP(n个P相加)。 3 无穷远点O 定义 P为曲线上一点,满足POOPP的点O; 4 椭圆曲线的阶 定义椭圆曲线在有限域上的点的个数称为椭圆曲线的阶。 5 曲线的基点 定义 在椭圆曲线上,我们称某一个子域的生成元为曲线的基点。 椭圆曲线离散对数问题 椭圆曲线公钥密码体制是基于椭圆曲线离散对数问题。 乘法中的离散对数问题是对于整数p和r,我们要计算pr是很容易的。但是,如果知道某个数mpr,反过来要计算r,也就是计算rlogpm,便要困难得多。这是一个世界性的难题,至今没有有效的解决方法。 与此类似的是,在椭圆曲线上,已知某个点P和整数n,根据2.3.2中算法2,我们计算nP的时间复杂度是Om3,在m为几百时,这是一个可解的问题。然而,当知道QnP,n为未知数时,我们不得不作PPP这样的运算,即使m只有100,这个运算显然不能在有效时间内得出结果。 上面所说的求n的问题,我们称之为椭圆曲线离散对数问题。 定义椭圆曲线离散对数问题是在域GFq上,设有椭圆曲线E,已知E上的点P和P的阶n,还知道另外一点Q;求整数m,使得QmP。(0≤m≤n)。 椭圆曲线公钥密码 与其它的数学难解问题一样,我们同样可以把椭圆曲线离散对数作为一种保密手段,也就是把椭圆曲线离散对数组合到某种公钥加密体制。ElGamal体制在有限域上具有良好的通用性,所以,在这里我们选择ElGamal体制为基础。 相关主要算法 算法1 椭圆曲线公钥生成算法 输入GF2m, 椭圆曲线方程的系数a, b , 基点G。 输出用户的公钥Kp和私钥Ks。 1. 产生一个随机数 r; 2. 计算P← rG; 3. if PO then goto step 1; 4. return 公钥Kp←a,b,G,P 和 私钥Ks← r 。 算法2 椭圆曲线公钥加密算法------ELGamal机制 输入要加密的数据Pm(曲线上一点),接收者的公钥Kp a,b,G,P。 输出加密后的密文(P1, P2)。 1. 产生一个随机数k; 2. P1← kG ; 3. P2← Pm kP ; 4. return P1,P2 。 算法3 椭圆曲线公钥解密算法------ELGamal机制 输入接收到的密文(P1, P2),私钥Ks、基点G。 输出明文点Pm。 1. P0 ← KsP1; 2. Pm ← P2-P0; 3. return Pm 。 正确性设解密后的明文为Pm’, Pm’ P2-P0 P2-KsP1 PmkP-KskG PmkKsG-KskG Pm 。 由此可知,算法3能够正确解密。 4.1.2 AES(Advanced Encryption Standard) 和IDE(International Data Encryption Algorithm) 高级加密标准AES AES的全称是Advanced Encryption Standard,即高级加密标准。由美国国家标准技术研究所NIST于1997年开始启动并征集算法,在2000年确定采用Rijndael作为其最终算法,并于2001年被美国商务部部长批准为新的联邦信息加密标准FIPS PUB 197。AES采用的Rijndael算法的设计者是Joan DaemenProton World Int.l和Vincent RijmenKatholieke Universiteit Leuven, ESAT-COSIC,算法的名字来自两人名字中字母的组合。Rijndael是一个对称的分组加密算法,分组长度和密钥长度都可变,可分别单独指定为128比特,192比特和256比特。但AES中的数据分组长度只采用了Rijndael中的128比特,而不使用192和256比特,密钥长度和Rijndael的一致,也分别为128比特,192比特和256比特,并分别被称为AES-128,AES-192,AES-256。 AES的加密与解密流程如图1所示。 由以上算法的流程中可看出,AES算法中程序耗时最多的是圈变化部分,因此可以针对此部分对算法进行优化,即对列变化进行优化,其详细算法请参考其他资料。 AES高级数据加密算法不管是从安全性、效率,还是密钥的灵活性等方面都优于DES数据加密算法,在今后将逐步代替DES而被广泛应用。 国际数据加密算法IDEA IDEA是International Data Encryption Algorithm 的缩写,是1990年由瑞士联邦技术学院来学嘉X.J.Lai 和Massey提出的建议标准算法称作PES Proposed Encryption Standard 。Lai 和Massey 在1992 年进行了改进强化了抗差分分析的能力改称为IDEA 它也是对64bit大小的数据块加密的分组加密算法密钥长度为128位它基于“相异代数群上的混合运算”设计思想算法用硬件和软件实现都很容易且比DES在实现上快的多。IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用。 这种算法是在DES算法的基础上发展出来的,类似于三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点,已经过时。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。 类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。 IDEA算法的密钥长度为128位。设计者尽最大努力使该算法不受差分密码分析的影响,数学家已证明IDEA算法在其8圈迭代的第4圈之后便不受差分密码分析的影响了。假定穷举法攻击有效的话,那么即使设计一种每秒种可以试验10亿个密钥的专用芯片,并将10亿片这样的芯片用于此项工作,仍需1013年才能解决问题;另一方面,若用1024片这样的芯片,有可能在一天内找到密钥,不过人们还无法找到足够的硅原子来制造这样一台机器。目前,尚无一片公开发表的试图对IDEA进行密码分析的文章。因此,就现在来看应当说IDEA是非常安全的。 4.1.3 ECC/AES、ECC/IDEA混合密钥的实现 本项目中采用ECC椭圆曲线密码技术与分组密码技术中的AES数据加密标准和IDEA国际数据加密算法的混合密码技术ECC/AES和ECC/IDEA。结合对称密码技术和公钥密码技术来提供数据安全使用对成密码技术进行数据的加解密,而使用公钥密码技术来实现对称密钥的安全传递。要解开密文,就必须有对称密钥,而对称密钥只有用接受方的私钥才能打开,在公钥密码技术中私钥是用户秘密持有的,从而,我们能保证数据的安全,见下图其实现原理示意图可表示如下 系统中混合加密系统的系统结构图可简单表示如下 密钥对生成算法 数字签名与认证算法 密钥交换算法 消息摘要算法 AES或IDEA加、解密算法 密码消息认证码 椭圆曲线密码基本算法 ECC与AES或AES与IDEA混合加、解密算法 系统中椭圆曲线及其参数的选取 椭圆曲线选择的是NIST推荐的5个基于素数域Fp的椭圆曲线,曲线的方程为y2x3axb,当方程的参数不同是可以得到不同的曲线,曲线的参数q,a,b,P,n,h说明如下[24] 1 椭圆曲线的素数域q; 2 椭圆曲线y2x3ax b的参数a、b,其中a,b∈Fq; 3 椭圆曲线的基点P,Px,y,其中x和y是有限域Fq中的元素,P∈EFq,并且P有一个素数阶n; 4 n是P的素数阶; 5 h EFq /n是椭圆曲线的一个余数因子。 对于这5个椭圆曲线分别对应了5种不同长度的密钥,分别是192位、224位、256位、384位和521位。 4.2 椭圆曲线数字签名算法 数字签名技术也属于公钥技术,即,在签名和验证时有两个密钥,其中的私钥用于签名,而公钥用于验证。由于数字签名的速度非常慢,所以在用私钥签名之前首先用哈希函数(MD5报文摘要算法、SHA-1安全散列算法)将文件统一为一个相对于原文要小的一个固定长度的数据,我们称之为摘要,然后,再对摘要进行签名。这样做有两个好处一是加快签名的速度;二是用哈希算法保证数据的完整性,即,保证数据没有被篡改过。 签名使用的密钥是文件发送者所唯一秘密持有的私钥,因此,其他人不可能伪造其签名;同时,可以证明签名只能是私钥持有者发出的,这样就可以为解决网络应用中的争议提供法律证据。 在本项目中,数字签名是运用基于椭圆曲线的DSA机制ECDSA.。 其实现可简单表示如下 基于椭圆曲线的数字签名和确认算法可以简单描述如下 假设用户A要对信息(为简单起见,假定m0mq)作数字签名,S随机选取,计算,令kZ∈kPrxkP(的kPx坐标),计算s,它适合 ,其中是私钥,则就是签名后发出的报文。modAskmren≡Ae,,mrs 任一个用户收到A发出的,,查得A的公钥,计算,检验是否成立,若成立,则签名得到验证,否则,不能通过验证。 ,mrsAP1mods−1ArxsmPrP− 正确性证明 由于,故AAAkP,再根据,故得 rxkP1ArxsmPrP− 只有A才知道他的私钥,对于任何第三者要假冒A的签名,或更改经A签名后的消息,都是难于通过验证的,A对消息签名后,也是不能否认的。 项目中所涉及ECDSA的算法有 算法1 ECDSA签名算法。 输入椭圆曲线系数a、b,明文Pm的哈希值h,用户私钥Ks、基点G和它的阶n。 输出签名(R , S)。 1. 产生一个随机数k, 1≤k≤n-1; 2. x1,y1 ←P1← k G; 3. if R←x10 goto step 1; 4. f ← k -1 mod n ; 5. S ← f hRKs mod n; 6. if S0 goto step 1; 7. return R, S 。 算法2ECDSA签名验证算法 输入明文Pm的哈希值h,发送者公钥Kpa,b,G,P,基点G和它的阶n, 签名(R , S)。 输出True or False。//True为接受签名,False为拒绝签名。 1. if 1≤R≤n-1 and 1≤R≤n-1 then return “False”; 2. w ← S-1 mod n ; 3. t1← hw mod n , t2← Rw mod n ; 4. x0, y0 ← t1Gt2P , v ←x0 mod n ; 5. if vR return “True” else return “False”; 4.3 机密共享技术 凡涉及最高机密性的事务可以利用机密共享技术实现多个管理人员共同保管机密密钥(每个人掌握密钥的不同部分);机密共享技术采用A.Shamir的(k, n)阀值方案将机密密钥D分成n块D1,Dn,并满足下面的要求 (1) 知道任意k个或更多的Dj,就能够有效地计算出D; (2) 知道任意k-1个或更少的Dj,由于信息不够不可能有效地计算出D。 在(k,n)阀值方案中,令n=2k-1,则在n个小块中即使有n/2=k-1个小块被破坏了,我们仍然可以有效地恢复原来的密钥;相反,即使能够获得k个小块中的n/2=k-1块,也无法有效的推导出原有的密钥。 4.4 数字证书技术 签发符合X.509标准的数字证书证明用户的身份,证书的存储载体可以是智能卡或者U盘等,系统也支持漫游证书,使用漫游证书,只需在任何系统中正确地配置,该软件(或者插件)就可以允许用户访问自己的公钥/私钥对。实现方案是将用户的证书和私钥放在一个安全的中央服务器上,当用户登录到一个本地系统时,从服务器安全地检索出公钥/私钥对,并将其放在本地系统的内存中以备后用,当用户完成工作并从本地系统注销后,该软件自动删除存放在本地系统中的用户证书和私钥。 4.4.1 X.509证书 X.509是国际电信联盟电信ITU-T部分标准和国际标准化组织ISO的证书格式。作为ITU-ISO目录服务的系列标准的一部分,X.509定义了公钥证书的基本标准。于1988年首次发布,1993年和1996年两次修订。本项目使用的版本是X.509v3,它加入了扩展字段支持,并且X.509v3证书还包括一组按预定义顺序排列的强制字段,还有可扩展字段。 X.509证书描述可以通过ASN.1Abstract Syntax Notation one描述X.509证书格式。 1ASN.1语法概述 ASN.1Abstract Syntax Notation one语法是OSIOpen System Interconnect Reference Model描述抽象对象的方法。在ASN.1语法定义中,一种类型TYPE是一组值的集合,其中值的数目可以是确定,也可以是不确定。在ASN.1语法中,所有类型可以分为4类 1) 基本类型这是最基本的不可再分的原子类型。 2) 结构类型具有可再细分的成分的类型。 3) 标记类型在继承其它类型的基础上生成的新类型。 4) 其它类型目前包括CHOICE和ANY两种。 每种类型和每个值都可以用ASN.1的赋值符指定一个名字(names),这个名字可在定义其它类型和值时使用。除了ANY和CHOICE,每个类型都有一个标记符(tag)。两种类型只有标记符相同时才是指同一种类型。也就是说,每种类型的名字对它的抽象含义没有任何影响。按照类型的标记符作用域的不同,可把标记符划分为4个等级 1) 通用级(Universal)属于这个等级的标记符,它们的含义在所有的应用程序都相同,它们只在ITU-T X.208协议中定义。具体例子可参看下表。 2) 应用级(Application)属于这个等级的标记符只是在某一类型的应用项目中定义,它们的含义只有在同一种类别的应用项目中才是有效且唯一。比如,在ITU-T X.500目录服务协议中就定义了自有的标记符,这些标记符只有在ITU-T X.500目录服务中才具有该含义。 3) 私有级(Private)这是由一个企业或类似的机构自己定义的标记符,它的作用域只限于该企业或机构的应用程序。 4)上下文相关级(context-specific)这个等级的标记符的含义和它所在的结构类型有关。根据本节上文对结构类型的定义,知道结构类型中的组成成分是一些成分类型,它们有对应标记符。不同的结构类型中成分类型的标记符有可能相同,但是它们的含义完全不同,这属于上下文相关级。 一些类型和它们通用级的标记符 类型 标记符(十进制) 标记符(十六进制) INTEGER 2 02 BIT STRING 3 03 OCTET STRING 4 04 NULL 5 05 OBJECT IDENTIFIER 6 06 SEQUENCE and SEQUECE OF 16 10 SET and SET OF 17 11 PrintableString 19 13 T61String 20 14 IA5String 22 16 UTCTime 23 17 2类型详细说明 ①基本类型 基本类型是ASN.1语法中不可再细分的类型。下述的类型只是在 ITU-T X.509和IETF RFC2459用到的几种,而不是全部的ASN.1类型。基本类型可以划分为两个范畴串类型和非串类型。 1) BIT STRING任意的二进制位串。 2) IA5String任意的ASCII码字符串 3) INTEGER任意的整数。 4) NULL空值。 5) OBJECT IDENTIFIER对象标识符,是以整数作为构成成分的整数序列。可用来区分各种对象。如,算法,属性等。 6) PrintableString任意的可打印字符构成的字符串。 7) OCTET STRING任意的字节串。 8) T61String任意的T.61字符(8比特)的字符串。 9) UTCTime通用协同时间(Coordinated Universal Time),或者是格林威治时间(Greenwich Mean Time)。 ②结构类型 是由一些成分类型组成的复合类型。ASN.1语法中总共定义了4种类型 1) SEQUENCE一种或多种成分类型的有序集合。 2) SEQUENCE OF零种或多种成分类型的有序集合。 3) SET一种或多种成分类型的无序集合。 4) SET OF零种或多种成分类型的无序集合。 ③显式和隐式标记类型 标记符不仅在区分一个应用中不同类型时很有用,而且它也能用来区分结构类型中的成分类型。如,在SEQUENCE或SET中的可选成分类型通常被赋与和上下文有关的不相同的标记符,以免混淆。ASN.1语法中有2种标记结构类型中成分类型方法 1) 显式标记的类型通过给基础类型添加一个外部标记符的方式从其它类型派生。 2) 隐式标记的类型通过改变基础类型的标记符的方式从其它类型派生。 ④其它类型 目前ASN.1语法中定义了2种 1) CHOICE表示一种或多种可选类型的联合(Union)。 2) ANY表示任意类型的任意值。 4.4.2 X.509公钥证书(PKC) X.509是一种公钥证书标准,是由ITU-T推荐的一个国际标准。X.509定义了一个已经被广泛接受的的PKI基础,它包括数据格式和通过由证书机构签发的数字证书来进行分发公钥的相关过程。X.509最初是为支持X.500目录设计的在 1988年ITU-T制定X.500时,其中有一个部分定义了证书的标准格式,这种格式称为版本1(Version 1,V1)。X.500在1993年修订时在证书中添加了2个字段,这种格式称为版本2(Version 2,V2)。在实际使用中,发现这两个版本有许多不足。于是各个相关的标准化组织ISO/IEC/ITU和ANSI X9于1996年共同制定了证书的新格式,称为证书版本3(Version 3,V3)。V3证书通过为扩展预留位置的方式对V2版进行了扩充。这些扩展可以传递附加的主体信息,密钥属性信息,策略信息和认证路径约束等,大大提高了证书的适用性。 X.509标准定义了证书中的信息以及信息的格式。X.509证书包含以下数据 版本号定义了用于证书的版本号,这将最终影响证书中包含的信息的类型和格式; 序列号序列号是赋予证书的唯一整数值。它用于将本证书与同一CA颁发的其它证书区分开来; 签名算法标识符该域中含有CA签发证书所使用的数字签名算法的算法标识符; 颁发者该域包含有签发证书实体的唯一名DN。通常为某CA。 有效期证书仅仅在一个有限的时间段内有效。证书的有效期就是该证书的有效时间段。该域表示两个日期的序列证书有效期开始日期notBefore,以及证书有效期结束的日期notAfter; 主体该域中包含与存储在证书中的主体公钥信息域的公钥相关联的实体的DN。 主体公钥信息该域中含有与主体相关联的公钥以及该公钥用于何种密码算法的算法标识符; 颁发者唯一标识为可选域。含有颁发者的唯一标识符。目的是为了处理一个颁发者名字随时间的流逝而重用的可能; 主体唯一标识符可选域。含有主体唯一标识符。目的是处理一个主体的名字随随时间的流逝而重用的可能; 签名值含有颁发证书的CA的数字签名。 4.5 授权管理基础设施PMI 授权管理基础设施PMI是一个属性证书、属性权威、属性证书库等部件构成的综合系统,用来实现权限和证书的产生、管理、存储、分发和撤销等功能。PMI使用属性证书表示和容纳权限信息,通过管理证书的生命周期实现对权限生命周期的管理。属性证书的申请,签发,注销,验证流程对应着权限的申请,发放,撤消,使用和验证的过程。而且,使用属性证书进行权限管理方式使得权限的管理不必依赖某个具体的应用,而且利于权限的安全分布式应用。授权管理基础设施PMI以资源管理为核心,对资源的访问控制权统一交由授权机构统一处理,即由资源的所有者来进行访问控制。同公钥基础设施PKI相比,两者主要区别在于PKI证明用户是谁,而PMI证明这个用户有什么权限,能干什么,而且授权管理基础设施PMI需要公钥基础设施PKI为其提供身份认证。PMI与PKI在结构上是非常相似的。信任的基础都是有关权威机构,由他们决定建立身份认证系统和属性特权机构。在PKI中,由有关部门建立并管理根CA,下设各级CA、RA和其它机构;在PMI中,由有关部门建立授权源SOA,下设分布式的AA和其它机构。PMI提出了一个新的信息保护基础设施,能够与PKI和目录服务紧密地集成,并系统地建立起对认可用户的特定授权,对权限管理进行了系统的定义和描述,完整地提供了授权服务所需过程。授权服务体系主要是为网络空间提供用户操作授权的管理,即在虚拟网络空间中的用户角色与最终应用系统中用户的操作权限之间建立一种映射关系。授权服务体系一般需要与信任服务体系协同工作,才能完成从特定用户的现实空间身份到特定应用系统中的具体操作权限之间的转换。目前建立授权服务体系的