你的数字证书有一对,一份在U盾里的私钥,一份在银行的公钥(其实两份银行都有)
U盾的原理很相似于双向认证的TLS(SSL)或者其它用到RSA的双向证书验证手段,如下步骤可能和U盾实际执行的有所区别,但本质相同:
--银行先给你一个"冲击",它包含了随机数,以及该随机数HASH,它们都由公钥加密,这样就能够保证只有你能解密这个"冲击"
--你计算该随机数的HASH,并和用私钥解出的HASH,二者相同后,即可确认银行的身份
--接下来,以一个只有你和银行知道的算法,利这个随机数和一些其它信息,生成"响应"和相应的HASH,再用私钥加密后发回银行。(此时银行也以相同的算法计算该"响应")
--银行用公钥解密,并验证HASH正确,接下来银行比较两个"相应"是否相同,相同的话客户的身份也确认了
至于私钥的保密性由U盾来完成。U盾的控制芯片被设计为只能写入证书,不能读取证书,而且全部利用证书进行的运算都在U盾中进行。因此,只能从U盾读出运算结果。
ps:
算法
和日常登陆HTTPS网站不同的是,通常HTTPS在TLS握手时,只要验证服务器身份成功即可完成握手。数据库
接下来之前面的"随机数"导出对称加密算法的密钥,开始加密连接浏览器
网络的发展,出现了电子商务,而且迅速地发展。电子商务有着无比的优越性:方便,高效,快速,经济等,被人们推崇。但涉及到钱的问题,因此对安全很明感,必需要有一整套的安全措施来保障交易的安全。
传统的安全保障措施就是用户名和密码,显而易见,这是很不安全的。IC卡:是一种内置集成电路的芯片,芯片中存有与用户身份相关的数据。IC卡由专门的设 备生产,是不可复制的硬件。IC卡由合法用户随身携带,登陆时必须将IC卡插入专用的读卡器读取其中的信息,以验证用户的身份。简单易行,但容易被留驻内 存的***或网络监听等***技术窃取。
如今的网络支付中存在着不少缺陷:(1) 网络数据流的:在用户和银行交易的过程当中,被第三方经过各类方法截获数据流,分析数据中的信息从而获得用户的信息。(2) ***的窃听:用户电脑中了病毒或者***以后,电脑被监听,用户和银行交易的信息被***记录,用户的信息就这样被盗了。(3) 穷举***:击者使用有意义的数字做为密码来不断尝试持卡人的密码。若是持卡人的密码是未通过改动的初始密码或一个特殊、容易被分析的数字,则密码很容易被 ***者穷举出来。(4) 网络钓鱼:第三方利用银行的身份给用户发信息,要求用户提供帐号和密码,若是用户提供了的话就泄露了本身的信息了。或者是第三方假冒银行或者交易的网站, 对没有认真辨别的状况下,用户很容易上当从而泄露本身的信息。网络的安全隐患不只仅是这些。
U盾的出现就是解决上面所说的安全问题。U盾,即工行2003年推出的客户证书USBkey,,是工商银行为客户提供的办理网上银行业务的高级别安全工 具。它是一个带智能芯片、形状相似于闪存的实物硬件,时刻保护着您的网上银行资金安全。从技术角度看,U盾是用于网上银行电子签名和数字认证的工具,它内 置微型智能卡处理器,基于PKI技术,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上交易的保密性、真实性、完整性和不能否 认性。它设备虽然小巧,但技术含量极高。该产品采用了目前国际领先的信息安全技术,核心硬件模块采用智能卡CPU芯片,内部结构由CPU及加密逻辑、 RAM、ROM、EEPROM和I/O五部分组成,是一个具备安全体系的小型计算机。除了硬件,安全实现彻底取决于技术含量极高的智能卡芯片操做系统 (COS),该操做系统就象DOS、WINDOWS等操做系统同样,管理着与信息安全密切相关的各类数据、密钥和文件,并控制各类安全服务。USBKey 具备硬件真随机数发生器,密钥彻底在硬件内生成,并存储在硬件中,可以保证密钥不出硬件,硬件提供的加解密算法彻底在加密硬件内运行。
U盾的安全措施
1.硬件PIN码保护
U盾采用了使用以物理介质为基础的我的客户证书,创建基于公钥PKI技术的我的证书认证体系(PIN码)。***须要同时取得用户的U盾硬件以及用户的 PIN码,才能够登陆系统。即便用户的PIN码泄露,U盾没有丢失,合法用户的身份就不会被仿冒,若是用户U盾丢失,其余人不知道用户的PIN码,这也是 没法假冒合法用户的身份。
2.安全的密钥存放
U盾的密钥存储于内部的智能芯片中,用户没法从外部直接读取,对密钥文件的读写和修改都必须由U盾内部的CPU调用相应的程序文件执行,从而U盾接口的外面,没有任何一条指令能对密钥区的内容进行读取、修改、更新和删除,这样能够保证***没法利用非法程序修改密钥。
3.双密钥密码体制
为了提升交易的安全,U盾采用了双钥密码体制保证安全性,在U盾初始化的时候,先将密码算法程序烧制在ROM中,而后经过产生公私密钥对的程序生成一对公 私密钥,公私密钥产生后,密钥能够导出到U盾外,而私钥则存储于密钥区,不容许外部访问。进行数字签名时以及非对称解密运算时,凡有私参与的密码运算只 在芯片内部便可完成,全程私钥能够不出U盾介质,从而来保证以U盾为存储介质的数字证书认证在安全上无懈可击。
4.硬件实现加密算法
U盾内置CPU或智能卡芯片,能够实现数据摘要、数据加解密和签名的各类算法,加解密运算在U盾内进行,保证了用户密钥不会出如今计算机内存中。
(二)U盾进行银行和客户身份的双向认证
一、基于冲击-响应认证模式
USB Key内置单向散列算法(RSA),预先在USB Key和服务器中存储一个证实用户身份的密钥,当须要在网络上验证用户身份时,先由客户端向服务器发出一个验证请求。服务器接到此请求后生成一个随机数回 传给客户端PC上插着的USB Key,此为“冲击”。USB Key使用该随机数与存储在USB Key中的密钥进行RSA运算获得一个运算结果做为认证证据传送给服务器,此为“响应”。与此同时,服务器使用该随机数与存储在服务器数据库中的该客户密 钥进行RSA运算,若是服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。
2.基于PKI的数字证书的认证模式
PKI(Public Key Infrastructure)即公共密钥体系,即利用一对互相匹配的密钥进行加密、解密。一个公共密钥(公钥,public key)和一个私有密钥(私钥,private key)。其基本原理是:由一个密钥进行加密的信息内容,只能由与之配对的另外一个密钥才能进行解密。公钥能够普遍地发给与本身有关的通讯者,私钥则须要十 分安全地存放起来。
每一个用户拥有一个仅为本人所掌握的私钥,用它进行解密和签名;同时拥有一个公钥用于文件发送时加密。当发送一份保密文件时,发送方使用接收方的公钥对数据 加密,而接收方则使用本身的私钥解密,这样,信息就能够安全无误地到达目的地了,即便被第三方截获,因为没有相应的私钥,也没法进行解密。
冲击响应模式能够保证用户身份不被仿冒,但没法保证认证过程当中数据在网络传输过程当中的安全。 而基于PKI的“数字证书认证方式”能够有效保证用户的身份安全和数据传输安全。数字证书是由可信任的第三方认证机构——数字证书认证中心 (Certficate Authority,CA)颁发的一组包含用户身份信息(密钥)的数据结构,PKI体系经过采用加密算法构建了一套完善的流程,保证数字证书持有人的身份 安全。而使用USB Key能够保障数字证书没法被复制,全部密钥运算在USB Key中实现,用户密钥不在计算机内存出现也不在网络中传播,只有USB Key的持有人才可以对数字证书进行操做,安全性有了保障。因为USB Key具备安全可靠,便于携带、使用方便、成本低廉的优势,加上PKI体系完善的数据保护机制,使用USB Key存储数字证书的认证方式已经成为目前主要的认证模式。
(三)U盾的交易过程
使用U盾前,通常都要安装驱动,使U盾能正常工做。另外安装数字证书认证身份。当用户须要交易向银行提交订单要支付的时候,这时要验证用户的身份,系统提 示用户插入U盾,并输入U盾的密码,系统会在后台验证,用户看不到过程,一经验证经过,用户就可使用继续输入网上支付密码和验证码,验证都正确后交易就 完成 。有了U盾,交易就是很安全的,能够说是无懈可击。
安全
随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤为是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活 动,公开密钥基础设施( PKI, Public Key Infrastructure )逐步在国内外获得普遍应用。咱们是否真的需 要 PKI , PKI 究竟有什么用?下面经过一个案例一步步地来剖析这个问题 : 甲想将一份合同文件经过 Internet 发给远在国外的乙,此 合同文件对双方很是重要,不能有丝毫差错,并且此文件绝对不能被其余人得知其内容。如何才能实现这个合同的安全发送?
问题 1: 最天然的想法是,甲必须对文件加密才能保证不被其余人查看其内容,那么 , 到底应该用什么加密技术,才能使合同传送既安全又快速呢 ?
能够采用一些成熟的对称加密算法 , 如 DES 、 3DES 、 RC5 等对文件加密。对称加密采用了对称密码编码技术,它的特色是文件加密和解密使用相同的密钥,即加密密钥也能够用作解密密钥,这种方法在密码学中叫作对称加密算法, 服务器
问题 2: 若是***截获此文件,是否用同一算法就能够解密此文件呢 ?
不能够 , 由于加密和解密均须要两个组件 : 加密算法和对称密钥 , 加密算法须要用一个对称密钥来解密 , ***并不知道此密钥。 网络
问题 3: 既然***不知密钥,那么乙怎样才能安全地获得其密钥呢?用电话通知,若电话被窃听,经过 Internet 发此密钥给乙,可能被***截获,怎么办 ?
方法是用非对称密钥算法加密对称密钥后进行传送。与对称加密算法不一样,非对称加密算法须要两个密钥:公开密钥( Public Key )和私有 密钥( Private Key )。公开密钥与私有密钥是一对,若是用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;若是用私有密钥对数据进 行加密,只有用对应的公开密钥才能解密。由于加密和解密使用的是两个不一样的密钥,因此这种算法叫作非对称加密算法 ( 公 / 私钥可由专门软件生 成 ) 。甲乙双方各有一对公 / 私钥,公钥可在 Internet 上传送,私钥本身保存。这样甲就能够用乙的公钥加密问题 1 中提到的对称加密算 法中的对称密钥。即便***截获到此密钥,也会由于***不知乙的私钥,而解不开对称密钥,所以也解不开密文,只有乙才能解开密文。 数据结构
问题 4 :既然甲能够用乙的公钥加密其对称密钥,为何不直接用乙的公钥加密其文件呢?这样不只简单,并且省去了用对称加密算法加密文件的步骤?
不能够这么作。由于非对称密码算法有两个缺点 : 加密速度慢 , 比对称加密算法慢 10 ~ 100 倍 , 所以只可用其加密小数 据 ( 如对称密钥 ) ,另外加密后会致使获得的密文变长。所以通常采用对称加密算法加密其文件 , 而后用非对称算法加密对称算法所用到的对称密 钥。 并发
问题 5 : 若是***截获到密文,一样也截获到用公钥加密的对称密钥,因为***无乙的私钥,所以他解不开对称密钥,但若是他用对称加密算法加密一份假文 件 , 并用乙的公钥加密一份假文件的对称密钥,并发给乙,乙会觉得收到的是甲发送的文件,会用其私钥解密假文件 , 并很高兴地阅读其内容,但殊不知已 经被替换。换句话说,乙并不知道这不是甲发给他的,怎么办 ?
答案是用数字签名证实其身份。数字签名是经过散列算法 , 如 MD5 、 SHA-1 等算法从大块的数据中提取一个摘要。而从这个摘要中不能 经过散列算法恢复出任何一点原文,即获得的摘要不会透露出任何最初明文的信息,但若是原信息受到任何改动,获得的摘要却确定会有所不一样。所以甲能够对文件 进行散列算法获得摘要,并用本身的私钥加密 ( 由于非对称算法可逆,即用私钥可解开公钥加密的文件,反之亦然 ) ,这样即便***截获也无用。由于*** 不会从摘要内得到任何信息,但乙却不同,他可用甲的公钥解密,获得其摘要 ( 若是用甲的公钥可以解开此摘要,说明此摘要确定是甲发的,由于只有甲的公 钥才能解开用甲的私钥加密的信息 , 而甲的私钥只有甲本身知道 ) ,并对收到的文件 ( 解密后的合同文件 ) 也进行一样的散列算法,经过比较其摘 要是否同样 , 就可得知此文件是否被篡改过 ( 由于若摘要相同,则确定信息未被改动,这是散列算法的特色 ) 。这样不只解决了证实发送人身份的问 题,同时还解决了文件是否被篡改问题。 ide
问题 6 : 经过对称加密算法加密其文件,再经过非对称算法加密其对称密钥 , 又经过散列算法证实其发送者身份和其信息的正确性,这样是否就万无一失了 ?
回答是否认的。问题在于乙并不能确定他所用的所谓甲的公钥必定是甲的 , 解决办法是用数字证书来绑定公钥和公钥所属人。
数字证书是一个经证书受权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件 , 是网络通讯中标识通讯各方身份信息的一系列数据,它提供 了一种在 Internet 上验证身份的方式,其做用相似于司机的驾驶执照或平常生活中的×××,人们能够在交往中用它来识别对方的身份。
最简单的证书包含一个公开密钥、名称以及证书受权中心的数字签名。通常状况下证书中还包括密钥的有效时间、发证机关 ( 证书受权中心 ) 名 称、该证书的序列号等信息。它是由一个权威机构—— CA 机构,又称为证书受权 (Certificate Authority) 中心发放 的。 CA 机构做为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。 CA 中心为每一个使用公开密钥的用户发放一个数字证书,数 字证书的做用是证实证书中列出的用户合法拥有证书中列出的公开密钥。 CA 机构的数字签名使得***者不能伪造和篡改证书, CA 是 PKI 的核心, 负责管理 PKI 结构下的全部用户(包括各类应用程序)的证书,把用户的公钥和用户的其余信息捆绑在一块儿,在网上验证用户的身份。
由于数字证书是公开的,就像公开的电话簿同样,在实践中,发送者(即甲)会将一份本身的数字证书的拷贝连同密文、摘要等放在一块儿发送给接收者(即 乙),而乙则经过验证证书上权威机构的签名来检查此证书的有效性(只需用那个可信的权威机构的公钥来验证该证书上的签名就能够了),若是证书检查一切正 常,那么就能够相信包含在该证书中的公钥的确属于列在证书中的那我的(即甲)。 工具
问题 7 : 至此彷佛很安全了。但仍存在安全漏洞,例如:甲虽将合同文件发给乙 , 但甲拒不认可在签名所显示的那一时刻签署过此文件 ( 数字签名就至关于书面合同的文字签名 ) ,并将此过错归咎于电脑,进而不履行合同,怎么办 ?
解决办法是采用可信的时钟服务 ( 由权威机构提供 ) ,即由可信的时间源和文件的签名者对文件进行联合签名。在书面合同中,文件签署的日期和 签名同样均是十分重要的防止文件被伪造和篡改的关键性内容 ( 例如合同中通常规定在文件签署之日起生效 ) 。在电子文件中,因为用户桌面时间很容易改 变 ( 不许确或可人为改变 ) ,由该时间产生的时间戳不可信赖,所以须要一个第三方来提供时间戳服务(数字时间戳服务( DTS )是网上安全服务项 目,由专门的机构提供)。此服务能提供电子文件发表时间的安全保护。
时间戳产生的过程为 : 用户首先将须要加时间戳的文件用哈希编码加密造成摘要,而后将该摘要发送到 DTS , DTS 在加入了收到文件摘要 的日期和时间信息后再对该文件加密(数字签名),而后送回用户。所以时间戳 (time-stamp) 是一个经加密后造成的凭证文档,它包括三个部分: 需加时间戳的文件的摘要, DTS 收到文件的日期和时间, DTS 的数字签名。因为可信的时间源和文件的签名者对文件进行了联合签名 , 进而阻止了 文档签名的那一方 ( 即甲方 ) 在时间上欺诈的可能性 , 所以具备不能否认性。
问题 8: 有了数字证书将公 / 私钥和身份绑定 , 又有权威机构提供时钟服务使其具备不能否认性 , 是否是就万无一失了 ? 不 , 仍然有问 题。乙仍是不能证实对方就是甲,由于彻底有多是别人盗用了甲的私钥 ( 如别人趁甲不在使用甲的电脑 ), 而后以甲的身份来和乙传送信息 , 这怎么 解决呢 ?
解决办法是使用强口令、认证令牌、智能卡和生物特征等技术对使用私钥的用户进行认证,以肯定其是私钥的合法使用者。
解决这个问题以前咱们先来看看目前实现的基于 PKI 的认证一般是如何工做的。以浏览器或者其余登记申请证书的应用程序为例说明,在第一次生成 密钥的时候会建立一个密钥存储,浏览器用户会被提示输入一个口令,该口令将被用于构造保护该密钥存储所需的加密密钥。若是密钥存储只有脆弱的口令保护或根 本没有口令保护,那么任何一个可以访问该电脑浏览器的用户均可以访问那些私钥和证书。在这种场景下 , 又怎么可能信任用 PKI 建立的身份呢 ? 正 由于如此,一个强有力的 PKI 系统必须创建在对私钥拥有者进行强认证的基础之上,如今主要的认证技术有:强口令、认证令牌、智能卡和生物特征(如指 纹,眼膜等认证)。
以认证令牌举例 : 假设用户的私钥被保存在后台服务器的加密容器里,要访问私钥,用户必须先使用认证令牌认证(如用户输入帐户名、令牌上显示的通行码和 PIN 等),若是认证成功,该用户的加密容器就下载到用户系统并解密。
经过以上问题的解决,就基本知足了安全发送文件的需求。下面总结一下这个过程 , 对甲而言整个发送过程以下 :
1. 建立对称密钥 ( 相应软件生成,而且是一次性的 ) ,用其加密合同,并用乙的公钥打包对称密钥。
2. 建立数字签名,对合同进行散列算法 ( 如 MD5 算法 ) 并产生原始摘要,甲用本身的私钥加密该摘要 ( 公 / 私钥既可本身建立也可由 CA 提供 ) 。
3. 最后 , 甲将加密后的合同、打包后的密钥、加密后的摘要 , 以及甲的数字证书 ( 由权威机构 CA 签发 ) 一块儿发给乙。
而乙接收加密文件后,须要完成如下动做 :
1. 接收后,用乙的私钥解密获得对称密钥 , 并用对称密钥解开加密的合同 , 获得合同明文。
2. 经过甲的数字证书得到属于甲的公钥 , 并用其解开摘要 ( 称作摘要 1) 。
3. 对解密后的合同使用和发送者一样的散列算法来建立摘要 ( 称作摘要 2) 。
4. 比较摘要 1 和摘要 2, 若相同 , 则表示信息未被篡改 , 且来自于甲。
甲乙传送信息过程看似并不复杂 , 但实际上它由许多基本成分组成 , 如 : 对称 / 非对称密钥密码技术、数字证书、数字签名、证书发放机构( CA )、公开密钥的安全策略
等 , 这其中最重要、最复杂的是证书发放机构( CA )的构建。
1、什么是U盾
U盾,即工行2003年推出并得到国家专利的客户证书USBkey,是工行为您提供的办理网上银行业务的高级别安全工具。它外形酷似U盘,像一面盾牌,时刻保护着您的网
上银行资金安全。
从技术角度看,U盾是用于网上银行电子签名和数字认证的工具,它内置微型智能卡处理器,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上
交易的保密性、真实性、完整性和不能否认性
]
【二。工做原理】
U盾又做移动数字证书,它存放着你我的的数字证书,并不可读取。一样,银行也记录着你的数字证书。
当你尝试进行网上交易时,银行会向你发送由时间字串,地址字串,交易信息字串,防重放***字串组合在一块儿进行加密后获得的字串A,你的U盾将跟据你的我的证书对字串A进行不可逆运算获得字串B,并将字串B发送给银行,银行端也同时进行该不可逆运算,若是银行运算结果和你的运算结果一致便认为你合法,交易即可以完成,若是不一致便认为你不合法,交易便会失败。
(理论上,不一样的字串A不会得出相同的字串B,即一个字串A对应一个惟一的字串B;可是字串B和字串A没法得出你的数字证书,并且U盾具备不可读取性,因此任何人都没法获行你的数字证书。而且银行每次都会发不一样的防重放字串(随机字串)和时间字串,因此当一次交易完成后,刚发出的B字串便再也不有效。综上所述,理论上U盾是绝对安全的****注意是理论上发生伪造几率大约为2的80次方分之一,可是若是有像变形金刚中的那种DNAbasecomputer的话。。)