现在的位置: 首页 > 综合 > 正文

PKI数字证书在WEB系统中的安全应用

2012年08月19日 ⁄ 综合 ⁄ 共 5314字 ⁄ 字号 评论关闭

1 前 言

目前,政府机构正在积极大力开展电子政务工程,通过建立对外信息发布网站和各类信息服务系统,形成一个统一和权威的信息服务窗口,这不仅加强了与社会公众的交流和沟通,而且为政府和相关部门的管理与决策提供了信息参考和支持,提高了政务公开和社会化服务程度。

目前大部分应用系统建立在TCP/IP协议基础之上,而最初基于数据流设计的TCP/IP协议并非专门为安全通讯所设计,所以在用户验证授权、传输加密等许多安全机制方面存在着大量安全漏洞,恶意第三方可以通过侦听破译、截获或篡改报文等非法手段,对业务应用系统实施破坏。因此,政府办公信息的敏感性、网络的虚拟性和开放性决定了包括WEB应用系统性内的安全需要有强有力的身份认证手段和数据加密手段来保证。

2 技术分析

2.1公钥密码体制

确保信息安全传输的最基本手段就是采用数据加密机制。传统的对称加密手段虽然加密速度很快,但由于通信双方在加、解密时共享同一个密钥,如何在开放网络环境下安全交换共享密钥就成了一个棘手问题,而且在大用户量通信时,用户密钥产生、分配、存储、销毁等管理工作也变得极为复杂和困难,根本无法满足广域网环境下信息加密的需要。公钥密码体制则基本克服了上述缺点。每个用户拥有一对密钥,一个是公钥,可对外公开;一个是私钥,用户自己安全保存。用公钥加密的数据只能用相应的私钥解开。而私钥加密的数据地只能用相应的公钥解开。所以说,即使恶意第一方截获了加密数据,由于没有与加密公钥相对应的私钥,也就无法对数据进行解密操作,这样也就解决了数据传输的保密性问题。

公钥加密算法的安全性主要是基于复杂的数学难题。目前比较流行的系统主要有两类:一类是基于大整数因子分解系统,以RSA为典型代表,它是目前被研究和应用得最为广泛的公钥算法。虽然在理论上无法证明破译RSA的难度与大数分解难度等价,即无法从理论上把握它的保密性能,但是经过长年的攻击考验,该算法已被普遍认为是目前最优秀的公钥方案之一。国际上公开的算法尽管已经可以分解512和768位的数,但都是基于特定的数。目前,1024模长的RSA还是比较安全的。由于RSA运算速度较慢,所以在实际应用中,基于效率的考虑,经常是与对称加密算法相结合,两者取长补短,即采用对称密钥加密数据,利用公钥算法进行密钥管理。

另一类是基于离散对数的系统,其中,椭圆曲线密码系统ECC影响较大。ECC的最大优势在于它的困难仍与其它公钥密码系统的困难性原理不一样,难度也不同,这使得ECC在保证相同的安全性的同时可以采用更短的密钥长度,获得更好的密码运算性能。就目前的计算机水平(主要是指芯片处理能力和运算速度),160位规模的ECC密钥保证的安全性相当于RSA加密系统的1024位规模的密钥保证的安全性。但是 由与ECC没有大规模地使用,密码学界和数学界对ECC的研究也不是很充分,所以可能会存在潜在的安全漏响和威胁。

2.2数字签名

数字证书是公钥密码体制的基础,它是公钥加密技术的一种应用。所谓数字签名就是根据单向散列算法,对原文产生一个能体现原文特征和文件签署人特征的128 位信息摘要。这种哈希算法的主要特点是输入数据的任何变化都会引起输出数据的不可预测的极大变化。发送方用自己的私钥对信息摘要进行加密,形成数字签名,附加在原文之上,再用接收方的公钥对整个文件进行加密。接收方收到密文后,用自己的私钥对密文进行解密,得到对方的原文和数字签名,再根据同样的哈希算法从原文中计算出信息摘要,然后与用对方公钥解密所得到的签名进行比较。如果数据在传输和处理过程中被篡改,接收方就不会收到正确的数字签名;如果完全一致,就表明数据未遭篡改,信息是完整的。任何人都可以通过使用他人的公钥来确认签名的正确性。由于数字签名只能由私钥的真正拥有者来生成,所以,发送方无法对信息发送行为进行抵赖,同时,密钥分发和密钥管理的安全性也得到了极大提高。

2.3数字证书

数字证书是一个包含用户身份信息和公钥信息,并由可信的第三方权威机构进行数字签名的文件或数据结构。由于数字证书中包含证书持有者的公钥信息,而目每张证书都有一个相对应的用户私钥,因此数字证书体系继承了公钥密码体系的数据加密、密钥交换和数字签名的特性,同时又由于数字证书中包含证书持有者的个人身份信息,而且身份信息和公钥的正确性由可信的公正第三方来保证,因此在进行身份鉴别、数字签名时更直观,可以提供更多信息、更具可信性。

在实际应用中,应用程序使用的证书可能来自不同的厂商或组织,所以,为了实现可交互性,证书需要符合一定的格式,并标准化。IETT把PKIX工作组提供的 Internet草案 Part I的 X.509和 CRL的方法和规范作为标准,并对各标准项和扩展做了说明。X.509目前有三个版本,其中V3是在V2的基础上加上扩展项后的版本。

数字证书一般包含版本号、序列号、签发机构、有效期、签名算法标识、用户名称、用户公钥信息(包括废除的证书序列号和证书废除时间)。证书签发机构的签名值等基本内容。

2.4 身份认证技术

当前主要的网络身份认证技术包括:静态口令认证、双因素认证、CHAP认证、生物识别认证、证书认证等多种方式。其中,“用户名+口令”的静态认证方式最为普遍。但是,这种登录认证方式存在着诸多安全隐患:用户名和口令多采用明文方式进行网络传输,易遭截取或窜改,太长不易记住,大姐又容易受到穷举尝试攻击,且只能实现简单的单向身份认证功能等;基于时间同步技术的双因素认证在保留了传统的口令认证机制的简单易用的优点基础之上,又增加了动态密码机制(动态口令令牌)的安全性。由于每次登录时的口令是随机变化的,每个口令又使用一次,使得窃听、重放、假冒、猜测等恶意攻击变得极为困难,提高了认证安全性,但它无法实现会话密钥交换,而且时间同步要求极为严格,稍有错误就有可能造成整个系统的混乱;基于响应/应答方式的CHAp认证虽然采用单向散列函数算法保证由已知的响应和应答不可能计算出会话密钥,并且通过周期性提问防止通信双方在长期会话过程中被攻击,具有很好的安全性,但是密钥是以明文形式存放和使用,且是通信双方共享,不适合大规模网络环境下密钥分发和密钥管理的需要;生物识别认证则需要客户端额外添置指纹、声音等生物识别硬件,在具体使用推广中,存在初始化工作量大、技术难以把握。实际应用效果不佳等诸多问题。

相比之下,证书认证技术则以公钥密码体制为基础,通过数字证书将用户的公钥信息和用户个人身份进行紧密绑定,同时结合对称加密和数字签名技术,不仅可以解决通信双方身份真实性问题,还能确保数据在传输过程中不被窃取或篡改,并且使发送方对于自己的发送行为无法抵赖。用户密钥对由硬件加密设备或软件在其内部产生,公钥对外公开,私钥和证书安全存储在USB KEY或智能IC卡等多种存储介质中,私钥对外不可读、不可复制、存储介质本身采用PIN口令保护。由于公钥信息可以公开,所以容易实现管理信息的交换和传递,而用户证书上的根CA签名可以保证证书的合法性,同时,用户私钥的高度安全性保证了用户私钥签名的可靠性,实现了抗抵赖功能,确保证书持有者的唯一性。证书的签发由一个大家共同信任的独立第三方权威机构实现。这个独立的第三方机构就是CA认证中心、它是PKI安全基础设施的核心部份。PKI通过CA对证书和密钥的自动管理,为用户建立起一个安全可信的网络运行环境,同时透明地为应用系统提供数据保密性、完整性、不可否认性和统一权限管理等安全服务。

2.5 SSL安全传输协议

在认证协议方面,SSL协议目前已经成为INTERNFT上使用最广泛的安全协议。SSL协议通过使用X.509标准的数字证书,可以在客户端浏览器和WEB服务器之间建立一条安全传输通道,实现身份认证和数据加密,保证只有经过授权的合法用户才能使用网络资源,同时确保网站是真实可信的。

SSL(Secure Sockets Layers,安全套接层)是由Netscape公司开发的网络安全传输协议,目前已被工业界广泛认可成为事实上的Internet工业标准。

SSL协议的优势在于它与应用层协议独立无关,HTTP,FTP,TELNET等高层应用层协议能透明地建立在SSL协议之上。SSL协议在应用层协议通信之前就已经完成了加密、密钥协商和服务器认证等工作,在此之后应用层协议所传送的所有数据,包括用户正在请求的URL、表单提交内容,HTTP访问身份验证信息、服务器响应信息等都是完全保密的。

SSL协议由记录协议和握手协议两部分组成。记录协议用于交换应用层数据,握手协议用于实际数据传输前的身份认证、算法协商和密钥交换等。SSL握手时选用一种对称算法对数据进行加密(SSL支持DES、IDEA、RSA、DSS、3DES、SHA等多种加密算法,如果某种算法被攻破,它可以选择其它的算法),并通过在数据包后面附加MAC信息验证码,防止数据在传输过程中被篡改;同时,在整个SSL握手中,都有一个惟一的随机数(序列号)来标记,保护通信方免受报文重放攻击;最为重要的是,SSL支持基于数字证书的身份认证功能。但是在建立安全通道过程中,SSL默认只采用服务器端认证,客户证书是可选项,而使用客户证书认证不仅可以加强身份认证的安全强度,并且可以提供抗抵赖服务,否则,SSL协议只能保证信息在传输过程中的保密性和完整性。

1997年,IETF在 SSL V3标准规范基础之上发布了(transport layer securtity)1.0传输层安全协议草案,1999年,正式发布了TRC2246。但是,由于TLS要求特殊的加密算法支持,所以,TLS1.0和SSL3.0之间相互不兼容,不能进行互操作。

3 安全应用

SSL安全协议虽然支持多种加密算法,但为了提高系统安全性,需要对SSL加密算法库进行扩充,加入国内具有自主产权的高强度专用加密算法(公开密钥不低了1024位,对称密钥不低于128位),同时,将用户证书和私钥安全存放在USB KEY或IC卡等客户端证书存储介质中。

对于WINDOWS环境,微软本身提供了CryptOAPI函数,为应用程序开发者提供了在WIN3.2环境下的标准加密接口,来执行生成和交换密钥、加密和解密数据、编码和解码证书、管理和保证证书安全性、创建和验证数字签名并计算散列等安全操作。而CryptOAPI中的加密算法是由CSP (cryptotraphic service provider)来实现的,即CSP是底层真正执行加解密操作的部份,它以一个DLL动态链接库形式存在。所谓扩充专用算法就是自行开发或编写高强度CSF(如果加密算祛用硬件实现 ,CSP还要包括硬件装置),替代WINDDOWS系统自带的底层CSP,配合相应的用户界面程序完成加密、数字签名、验证等安全服务。同时要想成为微软的合法CSP,还必须获得微软授予的一个签名文件,以确保微软CTyptOAPI能够正确识别该CSP。

在实际构建SSL安全通道过程中,除了需要进行算法扩充以外,还需进行WEB应用系统改造,一般采取三种方式;第一种是在源程序中修改身份认证和访问控制代码,在应用程序内部对用户访问请求进行直接控制和处理;第二种是针对不同的WEB服务器建立不同的服务器代理或插件,在服务器上对请求进行安全处理,代理可以在相同的应用服务平台上重复使用;第三种方式是在用户和服务器之间建立认证和访问控制网关服务器,对访问请求进行处理后,允许的访问被转发到应用服务器。这种方式对代理的性能要求较高。在这三种应用改造方式中,以第二种服务器代理方式最为普遍。代理主要完成证书调用和解析、签名与验证。检查用户所访问的资源信息、与CA眼务器和授权服务器的交互等功能。

在基于B/S结构的应用系统中,客户端基本上都是通过 Microsoft Internot Explorer测览器来访问WEB服务器和后台数据库。IE 浏览器本身支持SSL管理功能。CA中心签发的用户证书和服务器证书除了可以存放在证书存储介质中,还可以下载到浏览器内,并通过相应的API接口供安全服务调用。

在IIS服务器上启用SSL安全服务时,配置比较简单,只需将web应用系统配置成支持HTTPS协议的方式,并关闭HTTP协议访问模式即可。

通过基于数字证书的身份认证后,WEB应用系统还可以调用相应的API接口,利用证书的唯一标识DN与应用系统的ACL访问控制列表进行关联,获取用户的权限信息,或通过构建基于角色和规则的统一授权平台,提供与实际应用处理模式相对应的、与具体应用系统开发和管理无关的授权和访问控制机制,实现“单点登陆”功能,从而解决用户使用不同应用系统时必须重复输入不同用户名和密码的问题,便于企业和政府统一管理和规划各个应用系统,实现统一的用户管理、认证管理和权限管理。需要注意的是,SSL是用来保护信息的传输安全,不能保护应用程序、操作系统或者主机,黑客或恶意者可能通过病毒传播、木马、远程控制等非法手段,攻陷服务器或客户机。因此,使用SSL协议建立安全传输通道时,必须配合其它网络安全技术,加强设备和系统本身的安全。

抱歉!评论已关闭.