基于USB_Key的PKI身份认证技术的分析与改进_pki身份认证系统
基于USB_Key的PKI身份认证技术的分析与改进由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“pki身份认证系统”。
基于USB Key的PKI身份认证技术的分析与改进
摘要:在当今数字世界中,身份认证技术是各种安全技术的基础。USB Key技术是现在比较流行的基于PKI的强身份认证技术,特别是在网上银行等金融领域。研究了USB Key的典型使用流程,分析了这些流程中的安全威胁,最后着重提出了针对这些风险的安全解决方案,这些方案都是在具体项目得以实施应用,对目前的USB Key使用和开发具有很好的实用和借鉴意义。
关键词:USB智能密码钥匙;公钥密码基础设施;身份认证;数字签名;网上银行
中图分类号:TP393.08 文献标识码:A
Analysis and improvement of PKI identity authentication technology based on USB Key Abstract: Now in digital world, all of security technologies are based on digital identity authentication technology.And the USB Key technology is one of the most popular technologies, which is a strong authentication technology and based on PKI, especially in Internet banking filed.The typical usage flows are researched, the security threats are analyzed.At the last, the solutions are proposed corresponding to these threats, which is applied in practical projects and have great practical and economic value.Key words: USB Key;PKI;Identity authentication;Digital signature;Internet banking 1引言
随着互联网和电子商务的发展,USB Key作为网络用户身份识别和数据保护的“电子钥匙”,正在被越来越多的用户所认识和使用。
USB Key[1,2,3]这个概念最早是由加密锁厂家提出来的,加密锁是用来防止软件盗版的硬件产品,用于识别用户身份。与此同时,随着PKI[45,6]应用的兴起,数字证书[45,6]作为确认用户身份和保护用户数据有效手段越来越被人们所接受。然而数字证书实质上表现为带有用户信息和密钥的一个数据文件,如何保护数字证书本身又成为PKI体系中最薄弱的环节,专门用于存储秘密信息的USB Key就很自然的成为数字证书的最佳载体。利用USB Key来保存数字证书和用户私钥。
每一个USB Key都带有PIN码保护,这样USB Key的硬件和PIN码构成了可以使用证书的两个必要因子,也就是所谓的双因素认证[7]。
随着智能卡[8]技术的发展,智能卡运算能力不断提高,带有智能卡芯片的USB Key可以通过内置的智能卡芯片在Key内部硬件实现DES/3DES、RSA加解密运算,并支持Key内生成RSA密钥对,杜绝了密钥在客户端内存中出现的可能性,大大提高了安全性。
这样,基于智能卡技术和PKI技术的发展形成了目前广泛使用的USB Key身份认证产品。USB Key 基本功能包括:高质量随机数生成,公/私密钥对产生,数字证书下载存储,哈希运算,数字签名/验证,对称加/解密,非对称加/解密等功能。
USB Key是目前所有身份认证技术中认证强度最高的技术,但是使用过程中的漏洞会大大削弱这种优势,其安全形势也不用乐观。USB Key的使用流程
网银[9](Internet Banking,网上银行)等金融领域是目前USB Key应用最广泛最成熟的领域,下面主要以网银案例来介绍USB Key的使用流程,以时序图形式说明。2.1 首次登录流程
用户1.0 插入USB KeyUSB Key客户端网银服务器1.1 虚拟光盘自动运行1.2 客户端启动并进入登录界面1.3 与服务器建立单向SSL安全通道1.4 与客户端建立单向SSL安全通道1.5 提示用户输入相关信息进行用户绑定1.6 用户输入身份证号和授权码1.7 提取相关序号1.8 设备序号和数字证书序号1.9 发送用户信息到服务器1.10 验证用户信息如果成功,则绑定用户身份证号、USB Key序号及数字证书序号1.11 返回绑定结果1.12 提示用户登录成功或失败
图1 首次登录流程图
2.2 普通登录流程
用户2.0 插入USB KeyUSB Key客户端网银服务器2.1 虚拟光盘自动运行2.2 客户端启动并进入登录界面2.3 与服务器建立单向SSL安全通道2.4 与客户端建立单向SSL安全通道2.5 提示用户输入口令2.6 用户输入口令2.7 验证用户口令指令2.8 返回验证结果2.10 提取相关序号2.11 设备序号和数字证书序号2.9 验证失败则提示用户,否则继续2.12 发送用户信息到服务器2.13 验证用户信息2.14 返回验证结果2.15 提示用户登录成功或失败
图2 普通登录流程图 2.3 客户端认证和转账流程
用户USB Key3.0 用户登录成功后,转账客户端网银服务器3.1 与服务器建立双向SSL安全通道3.2 SSL签名请求3.3 SSL签名3.4 与客户端建立双向SSL安全通道3.5 建立失败则提示用户,否则继续3.6 提示用户输入转账信息3.7 输入转入账号和金额3.8 提交转账请求3.10 返回请求结果3.11 提示用户输入USB Key口令3.12 输入用户口令3.13 签名请求3.14 签名值3.15 提交交易签名3.9 验证表单3.16 验证签名3.17 返回验证结果3.18 返回交易结果
图3 客户端认证和转账流程图USB Key安全性分析及改进方案
3.1 安全风险[10][11]
目前USB Key安全风险有:
USB Key 口令(密码)明文传输,可能被USB监听工具截获;
有的网银系统USB Key只做身份认证,不进行交易签名;或者USB Key签名请求没有校验和客户确认机制,客户在使用网银进行资金操作时,其用户私钥存在被他人远程非法调用并进行交易的可能;
USB Key主控密钥管理不善,存在泄露风险,不法分子可远程调用USB Key进行非法交易签名,进而盗取用户资金。3.2 安全需求:
加强用户交易授权认证。在使用USB Key进行交易授权认证时,应增加客户交易确认手段,如增加向客户发送含有待确认交易信息的短信等第二渠道认证方式,或使用带有确认按键或显示屏的USB Key。
严格USB Key密钥安全管理。要采用加密手段保存和传输USB Key的口令(密码),严格USB Key主控密钥、传输密钥等安全管理,防止不法分子获取USB Key访问控制权,非法调用或修改用户私钥。
加强网上银行客户端的安全保护。在保护键盘输入、防通信明文窃取、防黑客程序跟踪、防内存数据截获、防截取屏幕信息、防“钓鱼”欺骗、防交易数据篡改等多方面对网上银行系统及客户端采取技术加固措施。
3.3 安全改进措施 3.3.1 用户口令安全
用户口令的输入主要有两种:PC端输入和USB Key端输入。
PC端输入包括使用PC键盘和虚拟软键盘,PC键盘输入相对比较容易拦截监听到,而软键盘布局随机排列且不易被拦截到。PC端输入方式口令验证过程的安全性主要靠动态密钥加密用户口令数据。
另外,USB Key配备数字全键盘或可以输入数字的按键,用户口令(包括修改)的输入全部在设备上完成,用户口令不会出现在USB通信中,所以从根本上防止口令被拦截或破解。同时,由于用户口令在设备上输入,外界无法直接向设备发送校验口令指令,有效防止通过远程恶意发送校验口令指令导致设备锁死。
3.3.2 密钥对安全
用户密钥对是在申请证书时在设备内部随机产生的,而不是事先存在或导入的。
用户私钥存放于芯片特殊保护区域,外面无法对其直接操作,并且通过各种手段都无法读出或替换,防止用户私钥被导出、读出或替换,保证用户私钥数据的安全。
所有用户私钥的操作都由用户口令来控制,需用户口令验证通过后才能进行数字签名操作,在操作完成后重置验证口令标志,防止私钥操作被远程劫持。同时,加密私钥操作指令的会话密钥都是一次一密,有效防止签名指令重发攻击。3.3.3 数据通信安全
设备和主机的通信数据很容易被USB监控软件(如:Bushound)获取,保护通信数据的安全,防止敏感信息泄露就显得至关重要。
基本思路:数据通信安全就是要保护主机和设备通信数据,防止数据被截取或篡改。保护通信数据的密钥是动态会话密钥,而不是单纯的静态密钥,这样即使某一段数据被拦截并破解,只要及时协商一个新的会话密钥,即可防止后面的通信被破解。并且,比如签名等比较敏感的指令数据的会话密钥都会用一次协商一次(一次一密)。协商基本流程,如图4所示。
主机设备
1、在设备初始化/格式化时随机产生一个专门用于协商会话密钥RSA密钥对(K)2.“发起协商”会话密钥,并携带主机产生的8字节随机数(Rh)3.返回设备随机数(Rd)和RSA密钥对公钥(Kpub)4.组装会话密钥,并用公钥(Kpub)加密会话密钥5.“协商”会话密钥指令,携带加密的会话密钥6.用私钥(Kpri)解密出会话密钥7.返回协商结果8.加密通信数据
图 4 安全通信的基本流程
1、会话密钥对生成。专门用于协商会话密钥的RSA密钥对(以下简称会话密钥对)在设备初始化/格式化时生成,这个密钥对与用户的密钥对毫无关系,仅用于会话密钥的协商,即使这个密钥对被破解也不会影响到用户的密钥对。会话密钥对随机产生,每个设备都不相同,并且同一个设备每一次格式化的密钥对也不相同。这些措施的目的就是要保障即使一个设备通信被破解也不会影响到别的设备,并且可以防止通信重放攻击。
2、发起协商。协商会话密钥的过程由主机(应用)发起。主机发送“发起协商” 指令,该指令同时携带主机随机产生的8字节随机数(Rh).指令形式如:发起协商指令头+主机产生的8字节随机数(Rh)。
3、返回设备随机数和会话密钥对公钥。当设备收到发起协商指令后,设备首先保存主机产生的8字节随机数(Rh),同时设备也产生8字节的随机数(Rd)。最后设备返回随机数(Rd)和会话密钥对公钥。指令响应形式:设备产生的8字节随机数(Rd)+会话密钥对公钥(Kpub)。
4、组装会话密钥。当主机收到发起协商指令返回后,主机保存设备产生的8字节随机数(Rd)和会话密钥公钥(Kpub)。接着,主机开始组装会话密钥,组装完成后用会话密钥公钥(Kpub)加密会话密钥。组装过程,如图 5 所示:
设备 8字节随机数(Rd)主机 8 字节随机数(Rh)设备右半 4 字节随机数主机左半 4 字节随机数设备左半4字节随机数主机右半4字节随机数RSA 公钥加密会话密钥公钥(Kpub)会话密钥密文
图 5 组装会话密钥
5、协商。主机组装完会话密钥并加密后,通过“协商”指令发送到设备,指令形式如:协商指令头+会话密钥密文。
6、设备解密会话密钥。当设备收到“协商指令” 发送过来的会话密钥密文后,设备使用会话密钥对的私钥(Kpri)解密出会话密钥(SK)。由于在“发起协商” 指令中设备已经获得了主机产生的随机数,所以设备也会自己组装会话密钥(SK’),然后设备比较(SK)和(SK’)是否一致。最后返回协商结果给主机,如图6所示。会话密钥密文8字节设备随机数(Rd)8字节主机随机数(Rh)会话密钥对私钥(Kpri)RSA私钥解密会话密钥(SK)设备右半4字节随机数主机左半4字节随机数设备左半4字节随机数(Rd)主机右半4字节随机数(Rd)比较返回失败相同?更新当前会话密钥返回成功图 6 解密会话密钥
7、返回协商结果,返回协商结果成功或失败。
8、加密通信。会话密钥协商成功后,主机和设备就可以使用刚刚协商的会话密钥来加密通信。一些敏感指令(比如:签名,验证用户口令)需要会话密钥动态变化,一次一密。3.3.4 交易签名安全
交易签名是对敏感交易数据进行签名。在签名运算之前,交易数据(TLV格式)先送到USB Key设备上显示,用户确认后在设备内部进行签名,防止非法程序对所签数据进行篡改。同时,由于内部数据签名之前进行数据填充,有效防止利用非交易签名来伪造交易签名。
签名数据数据检查USB Key内部符合交易数据格式(预定义TLV格式)是交易数据确认(设备LCD显示)数据填充否对填充后数据做哈希运算从设备上验证用户口令对数据哈希值做签名运算签名值
图 7 数据签名流程
从图 7 可以看到,明文数据进入设备后,设备首先检查数据是否是预定义格式的签名数据,如果不是的话,将不在设备上显示,验证用户口令后直接签名,返回签名值;如果符合交易数据格式化的话,首先在设备上显示交易内容,待用户确认后,对交易数据进行特别的内部填充,接着对填充后的数据进行哈希运算获取哈希值,待在设备上验证用户口令后,对数据进行签名并返回签名值。整个流程数据从进入设备到签名,从未出过设备。
由于交易签名数据会在设备内部填充,而非交易签名数据(比如:SSL安全通道签名)不会被填充,外界也无法模拟这个填充过程,所以利用非交易签名来伪造交易签名就无法实现。
同时可以发现,图中的除了数据填充外,其他过程都是标准处理流程,所以下面主要介绍一下数据填充。
数据填充的目的是防止交易签名的伪造,交易数据的填充过程,在设备外面无法完成,因为填充的数据是保密的。数据的填充方式如:填充值+交易签名数据。
填充的关键是填充的数据值。填充数据是在设备初始化/格式化时写入设备的,根据设备序号来派生的,因而每个设备的填充值都不一样;并且派生密钥存在控制卡中,由银行管理员来设置别人无法获取,因而无法得到填充值。
填充值写入设备安全机制,如图8所示:
签名填充值写入及授权使用>设置填充值派生主密钥银行管理员>>控制卡>写入签名填充值>操作员设备
图 8 填充值写入设备机制
填充值是在设备格式化时写入的,此时设备和控制卡之间经过双向认证(遵循 GP 2.1.1 SCP01规范)已建立安全通道,所以填充值明文不会出现在主机内存中,格式化程序也无法获取。结论
我们生活的现实世界是一个真实的物理世界,每个人都拥有独一无二的物理身份。而今我们也生活在数字世界中,一切信息都是由一组特定的数据表示,当然也包括用户的身份信息。而计算机只能识别用户的数字身份,所以计算机给用户的授权也是针对用户数字身份进行的。保证访问者的数字身份与物理身份相对应,就是身份认证管理系统所需要解决的问题。为了保护信息安全,现在有身份认证、授权管理控制、日志审计、防火墙等安全技术。其中身份认证是其他技术的基础。如果用户身份被非法冒用,那么用户的权限也被非法使用,安全审计等就失去意义。本文通过研究当前最流行的基于PKI的USB Key身份认证技术,总结出目前USB Key使用或部署中的一些安全威胁;最后针对这些安全威胁,对每个具体的安全点都提出了实用的安全解决方案,这些方案都在项目或产品中得到应用和检验,具体很好的使用价值和经济价值。
参考文献:
[1]苏正荣.简析USB Key的工作原理及应用[J].中国金融电脑, 2009,(05)[2]杨帆.USB KEY体系研究与技术实现[D]武汉大学, 2004 [3]刘红明.基于SSX45安全芯片的USB Key设计与实现[D]上海交通大学, 2009.[4]Carlisle Adams, Steve Lloyd, Understanding PKI: Concepts, Standards, and Deployment Considerations[M], Addison-Wesley Profeional, 2 edition ,November 16, 2002 [5]Jianying Zhou, Meng-Chow Kang,Feng Bao, Hwee-Hwa Pang, Applied Public Key Infrastructure[M], 2005 [6]关振胜,公钥基础设施PKI与认证机构CA[M], 2002 [7]吴永英,邓路,肖道举,陈晓苏.一种基于USB Key的双因子身份认证与密钥交换协议[J]计算机工程与科学, 2007,(05)[8]张鑫,李方伟,潘春兰.一种增强的基于智能卡的远程身份鉴别方案[J]计算机应用, 2009,(04)[9]程宇贤.网上银行身份认证系统的安全性研究[D]上海交通大学, 2010 [10]张轶辉,王昭顺,USB密码钥匙漏洞分析及防御策略的研究 [J],航空计算技术,2007 [11]张锟,颜学龙.USB KEY的体系结构分析及安全策略研究[J]安防科技, 2009,(02)