转载:公钥、私钥、USBKey、CSP、数字证书和CryptoAPI的简介
扫描二维码
随时随地手机看文章
数字证书:英文digital certificate,在因特网上,用来标志和证明网络通信双方身份的数字信息文件。包含一个公开密钥、名称以及证书授权中心的数字签名。
公开密钥:对外公开,私钥则有自己保存,用其中一把密钥加密,另一把密钥用于解密。(非对称密钥,典型的算法代表是RSA)
私钥用来进行解密和签名,而公钥则由本人公开,为一组用户所共享,用于加密和验证签名。
在网上查阅了一些例证和示意图,感觉对上述概念的概括比较形象具体。
有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
(1)Bob将他的公开密钥传送给Alice。
(2)Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
(3)Bob用他的私人密钥解密Alice的消息。
上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
图1 公钥私钥工作流程示意图
总结:公钥和私钥是成对的,他们相互解密。公钥加密,私钥解密;私钥数字签名,公钥验证签名。
USB Key是一种USB接口的硬件设备。它内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。USB Key就是指可插拔钥匙,就是用来存放你的数字证书的。(硬件数字证书载体)
我在网上找到了一段话,他对数字证书和USB Key的关系和工作结合流程总结的比较形象,拿来分享一下:
数字证书是怎样保障网银交易的安全呢?
第一步,您要先获得数字证书。您需要先开通网上银行并申请数字证书,获得下载数字证书的密码信封后,就可以下载证书了。数字证书可以存放到USB key中,也可以存放在电脑的浏览器中。这时,就意味着您已经拥有了属于您自己独一无二的数字证书了。您也许会问,它到底是什么东西,为什么要用USB key呢?USB key是一种既安全,又方便的存储介质。USB key的模样跟普通的U盘差不多,不同的是它里面存放了智能芯片。用户的信息下载到USB key内,就是独一无二不可复制的,谁要在网上转移账户里的资金都必须事先通过USB key客户证书进行唯一认证,您只要把USB key带在身边,即使账号、密码泄露,但拿不到USB key,别人也不能冒充你。
第二步,您可以安全登录网上银行。在使用网上银行时,您需要将USB key插入电脑,并且输入USB key的密码。这时,在电脑后面的网络中,银行和您的数字证书会相互确认对方的身份。也就是说检查一下银行的网站是不是真的,而不会是不法分子搞的假网站,同时您的身份是否正确,不会是黑客冒充您。在双方身份验证真实后,您和银行之间会建立一个安全的加密通道,这时您就可以放心地进行个人网上银行的登陆了。整个过程都是自动的,只需要几秒种就可以完成。
第三步,您可以进行安全的网银交易了。经过了您和银行双方身份的验证,您对账户进行的操作指令都将在一个加密的安全通道中传输,任何人在网络上不能对这个信息进行篡改,也不能从中破获您的账户信息。特别是在您资金划转交易结束,系统提示您是否确认此操作时,您可能不知道,在您点击"确定"这个按键的同时,这项交易的操作时间、操作种类、操作金额等已经被您的数字证书系统作了电子签名并保存下来。这个被保存的不可改变的签名,可以在未来拿出来核实当时是否存在这样一笔交易,为网上交易可能出现的争议提供了事实证据。
最后还要特别提醒您,要保管好您的数字证书,否则就如同房间的主人丢了防盗门的钥匙,或者如同在现实生活中丢失了身份证一般。假如您不小心丢了数字证书或USB Key,请您及时通知银行为您重新发放数字证书。总之,只要您正确地使用网上银行,你就可以随时随地在虚拟的网络世界中,放心自如地管理资金、进行交易。
数字证书应该由谁来发放?
数字证书应该由独立于用户和银行以外的权威的第三方安全认证机构(简称CA)来发放。第三方CA为客户和银行承担了网上信息安全的部分责任,为客户和银行规避了一定的风险。
比如在出现网上银行纠纷时,第三方CA可以为使用数字证书进行网银交易的客户、银行提供证明,以明确双方的责任。若银行越位当CA给用户发放数字证书,就意味着银行既当裁判员又当运动员,在发生纠纷时,就很难保证提供的证明资料的公正性。
目前在网上银行中使用最多,权威性最高的认证机构是"中国金融认证中心(英文简称CFCA)"发放的数字证书。这是一个权威的、可信赖的、公正的第三方安全认证机构,也是金融行业唯一的第三方安全认证机构,绝大部分银行使用的都是这里发放的数字证书。当您在银行网点申请办理网上银行时,可以直接向网点申请CFCA的数字证书,银行网点还会提供给您一份《CFCA数字证书责任书》和《CFCA数字证书服务承诺书》,上面还明确承诺了因数字证书给您造成损失的赔付金额。
CryptoAPI是什么?
它是Microsoft Windows提供的应用程序编程接口。微软的CryptoAPI是Win32平台下为应用程序开发者提供的数据加密和安全的编码接口。CryptoAPI函数集包含了基本的ASN.1的编码、解码,散列,数据加密和解密,数字证书管理等重要的密码学应用功能。数据的加密、解密支持对称和非对称两类算法。CryptoAPI是所有微软的Win32的应用程序以及第三方厂商应有程序使用的数据加密接口。
CryptoAPI 提供了一组函数,这些函数允许应用程序在对用户的敏感私钥数据提供保护时以灵活的方式对数据进行加密或数字签名。实际的加密操作是由称为加密服务提供程序 (CSP) 的独立模块执行。CryptoAPI体系主要由以下几部分组成:基本加密函数、证书编码与解码函数、证书存储函数、简化信息处理函数、底层信息处理函数。下午对这些函数,主要是基本加密函数做了大致的了解。
CSP是什么?
加密服务提供者 (Cryptographic Service Provider) 是执行身份验证、编码和加密服务的程序,基于 Windows 的应用程序通过 Microsoft 加密应用程序编程接口 (CryptoAPI) 访问该程序。每个 CSP 提供不同的 CryptoAPI 实现。某些提供更强大的加密算法,而另外一些则使用硬件组件(如智能卡)。生成新证书的申请时,该申请中的信息先从申请程序发送到 CryptoAPI。CryptoAPI 向安装在计算机上或计算机可以访问的设备上的 CSP 提供正确的数据。如果 CSP 是基于软件的,则它在计算机上生成一个公钥和一个私钥,这两个密钥通常称为密钥对。如果 CSP 是基于硬件(如智能卡 CSP)的,则它指导一个硬件生成密钥对。密钥生成后,基于软件的 CSP 将对私钥进行加密,从而保护私钥的安全。
CSP和CryptoAPI有什么关系?
CSP由23个函数组成,划分为四类:连接、密钥产生与交换、数据加密以及哈希和数字签名。每个类型函数相对比较独立,各自实现不同的功能。
CSP连接:该模块负责与KEY容器的连接与断开,同时还处理CSP相关属性设置与读取。
密钥产生和交换:该模块负责密钥的产生、密钥属性的设置与读取,以及密钥的导入和导出。
数据加密:该模块主要完成:数据加密和解密,包括对称加密和非对称加密算法。
哈希和数字签名:该模块主要完成:签名验证,哈希的创建、设置和释放。
下图描述了PS CSP的结构以及其在CryptoAPI接口中的位置。
图2 CSP结构图
一个CSP 是实现所有加密操作的独立模块。在每一个应用程序中至少需要提供一个CSP来完成所需的加密操作。如果使用多于一个以上的CSP,在加密函数调用中就要指定所需的CSP。CryptoAPI函数使用CSP完成数据加密、解密以及密钥的存储管理、所有的CSP都是相互独立的模块。理论上,CSP应该独立于特定的应用程序,也就是说所有的应用程序可以使用任何一个CSP。但是,实际上有些应用程序只能与特定的CSP协作,CSP与应用程序之间的关系类似于Windows GDI模型。