本申请要求享有2012年5月8日提交的发明名称为“Device,System,and Methodfor Secure Entry of Personal Identification Numbers”的美国临时申请61/643,977的优先权和权益,在此通过引用将其全文并入。
本申请要求享有2012年11月29日提交的发明名称为“Device,System,and Methodfor Secure Interface Binding”的美国临时申请61/730,996的优先权和权益,在此通过引用将其全文并入。
发明内容
本发明例如可以包括安全输入和处理口令和个人识别号码(PIN)的设备、系统和方法,还用于安全的本地存储、安全的用户认证以及经由移动设备和经由支付终端的安全支付。
根据本发明,例如,一种移动电子设备可以包括:安全执行环境(SEE),用于安全地执行代码;安全视频路径(SVP),用于在所述移动电子设备的所述SEE与触摸屏之间安全地交换信息;其中所述SEE包括安全口令输入模块,所述安全口令输入模块用于产生加扰的屏幕上接口,并通过所述SVP向所述触摸屏发送所述加扰的屏幕上接口。
根据本发明,例如,所述安全口令输入模块包括:触摸事件识别器,用于在所述SEE之内安全地识别字符,所述字符对应于用户经由所述加扰的屏幕上接口上的所述触摸屏选择的虚拟按键。
根据本发明,例如,所述移动电子设备可以包括:安全内容信道,用于相对于拦截安全地从所述SEE向所述触摸屏传输所述加扰的屏幕上接口。
根据本发明,例如,所述移动电子设备可以包括:安全内容信道,用于从所述SEE向所述触摸屏传输所述加扰的屏幕上接口来作为编码的数字版权管理(DRM)保护的视频。
根据本发明,例如,所述移动电子设备可以包括:启用DRM的回放模块,用于回放代表所述加扰的屏幕上接口的所述编码的DRM保护的视频。
根据本发明,例如,所述加扰的屏幕上接口可以包括如下至少一项:屏幕上加扰的虚拟键盘;屏幕上加扰的虚拟小键盘;数字轮盘的屏幕上表达,其中每个轮盘能够响应于所述触摸屏上的用户手势而旋转。
根据本发明,例如,所述加扰的屏幕上接口可以包括用户特定的真实性再保证图像。
根据本发明,例如,所述用户特定的真实性再保证图像可以包括由所述用户通过所述移动电子设备的摄像机捕获的用户上载的图像。
根据本发明,例如,所述SEE可以包括在上载所述图像之前基于用户命令安全地修改所述图像的一个或多个可见性质的代码。
根据本发明,例如,所述SEE可以包括在从若干图像中选择所述用户特定的真实性再保证图像之后,基于用户命令安全地修改所述用户特定的真实性再保证图像的一个或多个可见性质的代码。
根据本发明,例如,所述用户特定的真实性再保证图像可以包括如下至少一种:作为水印覆盖在所述加扰的屏幕上接口的顶部上的图像;作为水印覆盖在所述加扰的屏幕上接口下的图像;在所述加扰的屏幕上接口附近显示的图像。
根据本发明,例如,所述SVP可以包括单向SVP,用于仅在从所述移动电子设备的所述SEE到所述触摸屏的方向上安全地发送信息。
根据本发明,例如,所述移动电子设备可以包括从由膝上型计算机、平板计算机、智能电话、便携式计算设备、便携式游戏设备、便携式多媒体播放机和便携式支付终端构成的组中选择的设备。
根据本发明,例如,所述移动电子设备可以包括:安全存储单元,用于安全地存储密码密钥,其中所述密码密钥对于要由所述移动电子设备执行的特定任务而言是唯一的;以及密码操作模块,密码操作模块,用于基于用户手势从所述安全存储单元释放所述密码密钥,并且用于利用所述密码密钥执行与所述特定任务相关联的密码操作,其中所述用户手势表示确认且通过所述触摸屏接收。
根据本发明,例如,所述密码密钥对于所述移动电子设备的用户而言也可以是唯一的。
根据本发明,例如,所述密码操作可以包括如下至少一项:利用所述密码密钥进行加密;利用所述密码密钥进行解密。
根据本发明,例如,所述密码操作可以包括对所述移动电子设备上的所述特定任务而言透明的密码操作。
根据本发明,例如,所述特定任务可以包括对所述移动电子设备的存储单元的整体的访问进行解锁的任务,其中所述密码密钥对于所述特定任务而言是唯一的。
根据本发明,例如,所述移动电子设备可以包括:支付卡读取器,用于读取通过其刷过的支付卡;以及可视指示器,用于向用户指明所述安全口令输入模块被激活且所述用户能够通过所述支付卡读取器刷所述支付卡。
根据本发明,例如,在激活所述安全口令输入模块时,所述支付卡读取器是工作的,且其中在未激活所述安全口令输入模块时,所述支付卡读取器是不工作的。
根据本发明,例如,所述移动电子设备可以包括:安全工作模块,用于从所述安全口令输入模块安全地接收用户经由所述触摸屏输入的口令;用于对所述口令加密;并用于发送所加密的口令以在所述移动电子设备外部的验证模块处进行验证;其中,所述移动电子设备外部的所述验证模块用于发送表示所述口令是否通过验证的验证响应;其中,所述验证模块包括如下至少一种:所述移动电子设备外部的智能卡和远程服务器。
根据本发明,例如,响应于用户经由所述触摸屏上的所述加扰的屏幕上接口输入口令,所述移动电子设备用于向远程服务器发送表示触摸坐标的报文,以使所述远程服务器能够确定所述口令并启动验证所述口令的过程;其中,所述移动电子设备不知道由所述用户输入的所述口令。
根据本发明,例如,服务器或计算机可以包括:安全执行环境(SEE)系统,用于安全地执行代码;其中,所述SEE系统可以包括安全口令输入模块,所述安全口令输入模块(a)用于产生加扰的屏幕上接口,并且(b)用于向远程移动设备发送所述加扰的屏幕上接口来作为编码的数字版权管理(DRM)保护的视频。
根据本发明,例如,在由所述远程移动设备的启用DRM的回放模块播放所述编码的DRM保护的视频时,所述编码的DRM保护的视频令所述远程移动设备的触摸屏安全地显示由所述服务器的所述SEE系统产生的所述加扰的屏幕上接口。
根据本发明,例如,所述加扰屏幕接口可以包括如下至少一项:屏幕上加扰的虚拟键盘;屏幕上加扰的虚拟小键盘;数字轮盘的屏幕上表达,其中每个轮盘能够响应于触摸屏上的用户手势而旋转。
根据本发明,例如,所述加扰屏幕接口可以包括用户特定的真实性再保证图像。
根据本发明,例如,所述服务器可以包括:验证模块,用于验证经由所述远程移动设备的触摸屏在所述加扰的屏幕上接口上输入的用户输入的口令,其中,所述验证模块用于从所述远程移动设备接收表示与用户在所述触摸屏上的触摸手势相对应的触摸坐标的报文,其中,所述验证模块通过所述触摸坐标确定所述用户输入的口令,而所述用户输入的口令对于所述远程移动设备而言保持为未知。
根据本发明,例如,一种计算设备可以包括:安全存储单元,用于安全地存储机密数据项;不安全执行环境,用于执行程序代码,所述程序代码向远程服务器传输报文;安全执行环境(SEE),用于安全地执行代码,所述SEE包括:重写器模块,用于安全地从安全存储器获得机密数据项,并用于在其加密传输到所述远程服务器之前向所述报文中的一个或多个字段中安全地写入所述机密数据项。
根据本发明,例如,所述机密数据项可以包括如下至少一项:口令、个人识别号码(PIN)、用户名、表示用户凭证的字符串、用于认证的数据项;其中所述SEE包括在所述报文被传输到所述远程服务器之前对其安全地进行加密操作的代码。
根据本发明,例如,所述程序代码可以包括经由传输安全协议向所述远程服务器传输所述报文的应用。
根据本发明,例如,所述报文可以与表示要由重写器模块在其中插入机密数据项的特定字段的数据对象相关联。
根据本发明,例如,所述重写器模块可以包括:推理模块,基于语境分析来推断要由重写器模块在其中插入机密数据项的所述报文的特定字段。
根据本发明,例如,所述重写器模块可以包括:字段确定模块,用于基于从远程服务器接收的服务证书来确定要由所述重写器模块在其中插入机密数据项的报文的特定字段。
根据本发明,例如,所述程序代码可以包括网络浏览器,所述报文可以包括通过安全超文本传输协议(HTTPS)传输的数据。
根据本发明,例如,所述报文可以至少包括用户名字段和口令字段。
根据本发明,例如,所述报文可以包括用于向远程服务器认证用户的一个或多个数据项。
根据本发明,例如,所述重写器可以独立于远程服务器利用的特定类型的认证方案工作,其中所述重写器的操作使远程服务器保持不知道在所述计算设备上进行重写。
根据本发明,例如,所述计算设备包括从由智能电话和平板计算机构成的组选择的设备。
根据本发明,例如,一种可以在计算设备上实施的方法可以包括:在所述计算设备的安全存储单元中安全地存储机密数据项;在所述计算设备的不安全执行环境中执行程序代码,其中所述程序代码包括向远程服务器传输报文的程序代码;在所述计算设备的安全执行环境(SEE)中安全地执行代码,其中在所述SEE中安全地执行代码可以包括:安全地从安全存储器获得机密数据项,并在所述报文加密传输到远程服务器之前向所述报文中的一个或多个字段中安全地写入机密数据项。
根据本发明,例如,所述机密数据项可以包括如下至少一项:口令、个人识别号码(PIN)、用户名、表示用户凭证的字符串、用于认证的数据项;其中所述SEE可以包括在所述报文被传输到远程服务器之前对其安全地进行加密操作的代码。
根据本发明,例如,所述程序代码可以包括经由传输安全协议向远程服务器传输报文的应用。
根据本发明,例如,所述报文与表示要由重写器模块在其中插入机密数据项的特定字段的数据对象相关联。
根据本发明,例如,服务器或计算机可以包括:认证模块,用于向远程客户端设备发送服务器认证证书;验证证书,存储于服务器上的预定义位置中,其中预定义位置可由远程客户端设备访问;其中验证证书指明服务器认证证书需要满足的条件,以便使所述服务器认证证书被远程客户端设备的认证所接受。
根据本发明,例如,可以访问验证证书,以供远程客户端设备基于假设验证证书要存储的预定义存储位置进行自动探询。
根据本发明,例如,所述条件可以包括对服务器认证证书的公共密钥的参考。
根据本发明,例如,所述条件可以包括对服务器认证证书的发行者的参考。
根据本发明,例如,所述条件可以包括对服务器认证证书而言唯一的数据项的参考。
根据本发明,例如,所述验证证书受到数字签名的保护。
根据本发明,例如,所述验证证书由第一实体进行数字签名,服务器认证证书由第二不同实体进行数字签名。
根据本发明,例如,所述验证证书具有定时限制的有效性或到期时间/日期戳。
根据本发明,例如,一种移动电子设备可以包括:认证模块,用于从远程服务器接收服务器认证证书;验证证书获取器,用于获取验证证书;其中所述验证证书指明服务器认证证书需要满足的条件,以便使所述服务器认证证书被所述移动电子设备的所述认证模块的认证所接受。
根据本发明,例如,所述验证证书获取器用于从所述移动电子设备能够访问的所述远程服务器上的预定义位置获取验证证书。
根据本发明,例如,所述验证证书具有定时限制的有效性。
根据本发明,例如,所述验证证书获取器用于从所述移动电子设备之内的本地存储器获取验证证书。
根据本发明,例如,所述验证证书在运行于所述移动电子设备上的应用之内被硬编码。
根据本发明,例如,所述移动电子设备可以包括从由智能电话和平板计算机构成的组选择的设备。
本发明可以提供其它和/或额外的益处和/或优点。
具体实施方式
在以下详细描述中,阐述了众多具体细节以提供对一些实施例的透彻理解。不过,本领域的普通技术人员将要理解,可以无需这些具体细节来实践一些实施例。在其它情况下,未详细描述公知的方法、流程、部件、单元和/或电路以免使论述混淆不清。
申请人意识到,在常规系统中,基于密钥的认证可能对于提供和管理而言过于复杂,使其在实践中很少使用,这又导致受到有限且支离破碎的支持。此外,由于用户界面的限制,以及由于用户不能选择或记忆长的加密口令,所以可能无法在移动设备上适当部署基于口令的认证。尽管有“口令管理器”程序,但它们常常需要长而麻烦的主口令,或者它们常常不安全地利用明文口令。
申请人还意识到,即使经过部署,利用运行于移动设备的高级操作系统(HLOS)上的逻辑执行认证仍然有显著的安全性缺陷,在该移动设备上可以由恶意软件模块捕获密钥和口令。此外,尽管本地数据保护可以辅助保护存储的应用数据,但很少使用这种机制,也是因为不能给出运行于HLOS上的合理安全的解决方案。
申请人还意识到,可以为一些移动设备装备安全执行环境(SEE),例如,通过TrustZone技术(可以从英国剑桥的ARM Holdings PLC获得)促成。不过,可以调节SEE以保护SEE之内运行的安全应用,而不是辅助HLOS应用(例如,移动设备上的大多数应用)保护自身及其数据。此外,常规SEE可能不提供对安全认证而言很重要的安全输入机制。申请人进一步意识到远程服务器可以作为SEE而工作。
本发明可以包括用于安全输入、发送、接收和/或处理口令的方法、设备和系统。具体而言,本发明可以为移动设备的用户提供具有用于代表用户进行认证和授权的安全统一部件的计算设备和/或便携式设备。本发明的安全口令输入和处理可以基于代理模块,该代理模块可以运行于安全执行环境(例如,由TrustZone技术或由作为SEE工作的远程服务器促成)中,可以利用安全存储的口令和密钥资料来执行认证和授权密码计算。可以仅在利用安全口令输入例程肯定地识别人类用户之后代表用户进行认证和授权。例如,通过利用移动设备的安全视频路径能力,可以保护口令输入例程自身不受基于恶意软件的口令拦截和/或输入的影响。
本发明可以安全地处理口令并可以以鲁棒且用户友好的方式促进用户认证和授权。例如,本发明可以提供用于安全存储口令和客户证书的设施,并实现基于认证令牌的能力。此外,本发明可以利用针对口令和密钥的安全存储器、安全口令输入模块(SPEM)、和能够使用口令和密钥来代表用户安全认证移动设备的用户的模块。仅在安全输入正确的用户口令时,安全存储模块(SSM)才可以允许其它系统部件使用属于该用户的凭证。
例如,本发明可以利用移动设备的安全内容路径或安全视频路径进行安全的口令输入。在安全用户认证和授权之后,本发明可以使HLOS应用能够保护其自身的认证过程以及其自身的本地存储的数据。
这里使用的术语“口令”可以包括,例如代表口令的一串字符组合、短语口令、个人识别号码(PIN)、用于认证用户身份和/或授权用户使用服务的一串字符或用户和系统之间共享并对系统认证用户时有用的其它秘密数据项或信号。任选地,术语“口令”可以包括其它类型的机密或半机密或非机密数据项,例如用户名、用户昵称、用户ID字符串、用户标识符、令牌和/或其它数据项,特别是可以用于用户认证过程中的数据项。
参考图1A,图1A是展示根据本发明的移动设备100的架构的示意方框图。设备100可以是,例如蜂窝电话、智能电话、平板计算机、膝上型计算机、便携式电子设备、便携式计算设备或其它适当的计算设备。
设备100可以包括一个或多个运行于安全执行环境(SEE)140(例如,TrustZone技术环境,任选地与安全操作系统(安全OS)107相关联,诸如,可以从德国慕尼黑的GieseckeDevrient GmbH获得的MobiCore)中的模块,以及一个或多个运行于不安全执行环境(UEE)120(例如,Android环境)中的模块。
UEE120可以包括,例如触摸屏152、启用了安全DRM的媒体播放机153(可以与安全口令(SP)DRM插件154相关联)、安全口令(SP)活动159、TLS/SSL集成库193以及TLS/SSL授权活动191。
SEE140可以包括安全工作模块(SOM)130,其能够安全地存储、发送、接收和处理用户口令和/或PIN、以及其它密钥和资产,而不会向UEE120或UEE120之内的任何模块或应用或向设备100内部或外部的其它攻击者暴露这样的口令或PIN。SOM130可以能够产生和发送将由安全CODEC155呈现的用户界面(UI)元件。
还参考图1B,这是根据本发明的SOM130及其部件的示意方框图。SOM130可以包括,例如,与安全存储器149相关联的安全存储器模块(SSM)141;安全口令输入模块(SPEM)142;安全TLS/SSL支持模块151;本地加密/解密服务模块146;以及任选的密码-令牌模块147。
安全TLS/SSL支持模块151可以包括,例如TLS/SSL支持库131;cookie处理器192;重写器132;应用支持API133;以及登记模块137,其可以与登记数据库138和登记高速缓存139相关联。为了说明的目的,登记数据库138被示为安全TLS/SSL支持模块151的一部分,但在一些实施方式中,登记数据库138可以存储于安全存储器149之内。
本地加密/解密服务模块146可以包括,例如加密模块143、解密模块144、密钥发生器145;以及加密划分管理器197。
安全存储器149可以是其中可存储机密数据的存储单元(或存储单元或存储区的专用部分或区段)。SSM141可以是安全软件模块,其可以控制向安全存储器149中写入(以及从其读取)。例如,SSM141可以是SEE140中运行的应用,可以便于在安全存储器149中存储口令、客户证书、私用密钥、在密码系统中可以使用的其它类型的密码凭证或需要保持安全的其它数据。
例如,SSM141中的每个密码凭证都可以与用户ID(将密码凭证与用户标识相关联)以及与服务ID(将密码凭证与用户利用该密码凭证认证的服务标识符相关联)相关联。服务ID可以是从服务证书获得的身份,可以向登记使用本发明机制的每个服务提供商(或应用)发出服务证书。这种新型数字证书(不要与X.509证书、传输层安全(TLS)证书或安全套接层(SSL)证书混淆)可以在使用不同TLS证书时允许服务提供商有充分的灵活性,同时为最终用户提供对钓鱼企图的保护。
可以存储于SSM141中的口令可以是数字口令、字母数字口令、字母数字和/或非字母数字字符串等。可以存储于SSM141中的数字证书可以是客户证书,例如,根据ITU-T标准X.509和/或私钥的证书。此外,SSM141可以存储分配给每个用户ID的口令以及安全恢复个人用户选择的图像所需的信息,所述图像可以与每个用户ID相关联并可以用于本文所述的认证过程。
安全口令输入模块(SPEM)142可以运行于SEE140中,并且可以在使用任何代表该用户认证的安全存储器凭证之前负责轮询用户其口令。SPEM142可以利用设备100的安全视频路径(SVP)特征向用户显示不能被可能运行于设备100上的恶意软件模块截获的屏幕键盘或屏幕小键盘。于是,对于安全传输屏幕虚拟小键盘/键盘的不同目的,本发明可以利用最初意在安全显示受保护的媒体内容(例如,数字版权管理(DRM)保护的内容)的设备100的安全内容路径或SVP特征。
例如,在需要询问用户其口令时,SPEM142可以利用SVP在设备100的屏幕上安全地表达和呈现:(a)背景图像,其包括用户事先选择的个人图像或基于用户事先选择的个人图像而构造;(b)经改组或加扰的屏幕小键盘或键盘,使得表示数字和/或字母的屏幕按键在每次调用时都在随机或伪随机位置,以随机或伪随机的杂乱次序,或以与其在常规物理键盘或小键盘中的规则次序随机或伪随机地不同的次序出现;从服务证书安全地获得或以其它方式由服务证书指出的服务提供商身份。用户可以通过敲击、触摸、点击或以其它方式选择加扰屏幕键盘或小键盘上的按键来输入其口令。可以从设备100的触摸屏的驱动程序(例如运行于UEE120中,例如,不安全高级操作系统(HLOS)中,诸如Android)向运行于SEE140中的SPEM142传输用户击键的坐标。在用户输入其口令时,SPEM142可以基于在当前调用的随机加扰屏幕键盘或小键盘中哪里显示每个字母或数字的概念,将坐标转换成按下的字母或数字。要指出的是,显示用户选择的个人图像可以允许用户判明用户正在向真实的界面中而不是向钓鱼网页或伪造网站中输入其口令。类似地,描述服务提供商可以确保用户能够正在认证到正确的服务提供商。
安全TLS/SSL支持模块151可以利用SSM141中存储的用户的密码凭证,以便在用户正确输入其口令之后代表用户认证。如上所述,SSM141中存储的用户密码凭证可以是,例如用户指定的口令或TLS客户证书(连同私钥)。如果用户凭证是具有私钥的客户证书,那么可以向TLS握手中安全地并入私钥。如本文所述,如果用户凭证是口令,那么可以通过重写器132或通过应用支持API133在TLS中使用该口令。要指出的是,可以在SEE140中执行TLS/SSL实施的至少部分(或全部),以消除通过HLOS或在设备100的UEE120中对处理用户凭证的任何需要。
安全TLS/SSL支持模块151可以在握手阶段中根据TLS协议利用客户证书。根据本发明,TLS实施的一部分可以运行于SEE140中,由此允许安全地存储属于要并入握手过程中的客户证书的私钥,而不会将其暴露于HLOS或UEE120。
安全TLS/SSL支持模块151可以任选地包括重写器132,例如,超文本传输协议(HTTP)重写器。在与TLS/SSL一起使用口令而非客户端证书进行认证时,可以不将这样的口令作为TLS/SSL握手的一部分加以传递。相反,可以在可以完成握手过程之后传输这样的口令作为会话数据(例如,根据RESTful认证方法)。例如,可以通过作为与网站的HTTP交互的一部分的HTTP POST命令来向远程网络服务器传输用户输入的口令。在常规系统中,TLS/SSL协议实现可能会遗忘这个口令,并可能不知道网络浏览器(或其它应用)发送到或接收自网络服务器的任何数据:常规TLS/SSL实施仅对会话数据进行加密和解密,不会关注其内容。相反,重写器132可以是安全TLS/SSL支持模块151的部件,其终止TLS/SSL对被加密和/或解密的数据的遗忘。重写器132可以运行于SEE140中,并可以提供要加密的记录(例如网页上提供的输入)中包含口令的部分。这可以允许由SSM141安全地存储口令,而永远不会在该TLS调用期间向HLOS或UEE120以明文传输。例如,重写器132可以利用在SEE140之内从SSM141安全获得的条目来替换所提交HTML页中表单字段中的内容。重写器132可以能够利用SEE140之内从SSM141安全检索的条目替换表单页中用户字段的全部(或一些);或者,重写器132可以利用SEE140之内从SSM141安全获得的相关口令仅替换所提交HTML页中的口令字段。可以基于其唯一的字段类型识别所提交HTML页中的口令字段。
要指出的是,这里以“重写”描述重写器模块132,但在一些实施方式中,它可以作为“写入”模块工作,其可以向适当的(一个或多个)子段中写入原始数据而非重写或替换数据(或伪造数据)。在其它实施方式中,如上所述,重写器模块132可以作为替换器模块或置换执行模型工作。
进一步要指出,重写器模块132可以从一个或多个源(例如从服务证书;从口令字段;从浏览器)接收到写入或重写或替换哪个(些)字段的指示;和/或可以自动推断或推论哪个(些)字段或位置需要重写或内容替换。
安全TLS/SSL支持模块151可以任选地包括应用支持API133。例如,可以不通过网络浏览器,而通过运行于设备100上的本地应用从设备100向远程服务器发送口令(例如,如果用户与远程服务器之间的交互作用不通过网络浏览器发生,而是由运行专门下载的或预先安装的应用的用户进行)。本地应用可以生成通往远程服务器的其自有连接。外出指向远程服务器的流量例如可以被包装成XML,作为HTTP流量而被沿途传递。在一些情况下,可能没有由用户填写的HTML表格,而可能是由本地应用在设备100上显示的本地表格,在将它们发送到远程服务器之前由本地应用预处理表格内容。由于口令不是以典型HTML形式输入的,所以重写器132可能无法替换HTML字段内容。发送机密流量的常规本地应用可以利用TLS/SSL协议的预提供的OS实现,于是可以仍然使用由安全TLS/SSL支持模块151提供的安全TLS/SSL实现。不过,由于重写器132不能判断在哪里以及如何粘贴安全存储的用户凭证,所以本地应用可能会间接要求重写器132提供这样的信息。应用支持API133可以向应用提供者和应用开发者提供接口,可以由本地应用利用应用支持API133,以便令安全TLS/SSL支持模块151向本地应用与远程服务器维持的TLS/SSL连接中插入安全存储的凭证。
加密模块143和解密模块144可以允许以鲁棒方式通过利用数据加密来支持本地数据保护。可以为试图保持其受保护数据的每个应用提供对“虚拟分区”的访问,例如,以在该应用的规则数据目录下挂载Linux的形式。该应用可以以与其处理任何其它目录相同的方式来处理这个目录,例如,通过在这样的虚拟分区目录中创建、写入、读取、删除和/或修改(一个或多个)文件。不过,显然可以由SOM130对虚拟分区目录的内容进行加密(以及在需要时进行解密)。因此,可以不要求应用提供者或开发者对加密如何工作有任何理解,或以在该虚拟分区子目录中而非本地应用的父目录中存储文件之外的任何方式来解释这样的加密。可以由加密模块143和解密模块144分别利用例如高级加密标准(AES)来执行加密与解密操作。
在例示性实施方式中,例如,可以由SEE140之内的密钥发生器145根据用户ID和服务ID来在内部产生加密/解密密钥。可以由SSM141安全地存储密钥,密钥可以对于每个设备、对于每个用户ID以及对于每个应用而言是唯一的。或者,可以在任何时候需要时安全地导出该密钥。这种架构限制了泄露密钥的损害范围,防止加密数据在其它设备上可使用,并防止第一本地应用读取与第二本地应用相关联的数据。类似于SOM130提供的其它安全特征,可以仅在用户利用SPEM142提供其同意之后才授权应用使用密钥。例如,SPEM142可以向用户询问其口令,同时安全地显示寻求利用其密钥加密/解密的应用的人可读服务ID。如果用户批准使用(属于特定应用的)特定密钥,那么可以加载适当的密钥,并且可以显现隐藏的挂载(虚拟分区目录),并可以由该特定应用使用。
要指出的是,例如,通过确保对密钥的请求仅由未修改的为其产生密钥的应用发出,可以在HLOS层次上部署其它模块以形成额外的安全层。在寻求用户批准使用加密密钥时,除了显示应用身份之外,还可以提供这个特征。
要指出的是,在一些替代实施方式中,本地应用可以不访问透明加密的挂载的容量或虚拟分区,而是可以定期存储其应用数据,同时通过利用可以作为SOM130的一部分而被提供的修改的功能来访问数据。这样的修改的功能可以关注文件和/或数据的透明加密与解密而不会影响文件位置。
SSM141可以为口令、客户端证书和需要仅以加密形式和/或完整性受保护的形式存储的其它信息提供安全存储服务。SSM141可以在安全存储设施顶部构建原语数据库抽象,该设施可以由SEE140的Secure OS提供。SSM141可以保持每个数据项与相应的用户ID和服务ID相关联,例如,利用加密的XML文件(或其它适当的表达格式)表示,保存由上层提供的数据。为了实现与许多类型的Secure OS的兼容性,SSM141可以排他地依赖于Secure OS的平台服务,以访问设备唯一的密钥并存储用于每个加密文件的初始化矢量(IV)的副本。
安全口令输入模块(SPEM)142以及关联的安全代码可以由运行于设备100上需要访问安全资产的应用(例如,如果设备100运行Android OS,则为Android应用)调用。可以在设备100的触摸屏显示单元,例如口令(或PIN)输入屏幕上显示SPEM142。SPEM142然后可以接收用户的输入(口令),如果口令正确,SPEM142可以启用对相关安全资产的访问。
在一些实施方式中,安全口令输入可以跨越SEE140和UEE120,并可以调用例如图1A的所有或一些部件。
SP活动159可以是Android活动(例如Java活动),响应于从其它应用发出的意图而被调用。例如,需要访问口令保护的资产的本地Android应用可以使用安全部件的实例产生请求并利用请求密钥(仅可以由安全部件访问)来对其签名。该应用然后可以发出startActivityForResult()以调用SP活动159并发送从安全部件实例接收的已签名的请求。然后,SP活动159可以发送其由仅对安全部件可用的另一设备唯一的密钥加密的响应,请求的应用将其提供给相关的安全部件实例。请求和响应还可以包括由请求的应用产生的加密新鲜值(nonce),以防止重复使用旧的或先前的(一个或多个)响应。请求的应用例如可以是:需要口令认证服务的安全应用;需要口令认证以例如利用本文所述的安全部件保护其本地存储器的HLOS应用;或如本文所述,充当利用TLS连接的应用的TLS活动。
安全视频路径可以确保进入的受保护视频(或图像、多媒体文件等)被设备100之内用于保护它的方案安全地解密,并以绕过HLOS的方式在触摸屏152上安全地显示,于是防止视频/图像被捕获。于是,本发明可以利用安全视频路径的能力,例如,通过创建加扰PIN键盘(或其它适当类型的屏幕输入界面)的图像作为安全图像/视频,像视频那样对其进行编码,并在SOM130中以特定保护方案来封装它。可以将受保护的视频输送到SP活动159。SP活动159可以向设备100可用的启用安全DRM的媒体播放机153传输受保护的视频。启用安全DRM的媒体播放机153可以识别出该视频是基于特定DRM方案加密的视频,并且可以将加密的视频传递到适当的DRM插件154,DRM插件154接着可以利用SOM130中的SPEM142的服务对加密的视频进行解密。可以将加密的视频传输到安全的编解码器155,编解码器155将其安全地呈现可以向触摸屏152上。
可以使用适当的机制将用户在触摸屏152上执行的触摸事件转化成对应于那些触摸事件的密钥在SOM130之内的安全标识。SOM130可以产生加扰的PIN键盘或其它加扰的口令输入界面;从检测到它们的活动将触摸事件传输到SOM130,SOM接着可以将它们转换成输入的PIN。由于SOM130产生加扰的口令输入界面,并可以通过杠杆安全视频路径的能力来安全地显示加扰的口令输入界面,那么SP活动或HLOS120的其它部件可能不能判断用户按压的触摸屏152上绘示了什么。因此,SP活动159可以仅识别用户的(一个或多个)手指的坐标,例如,该坐标表示用户轻敲触摸屏152的左上区域,但不知道在触摸屏152的该区域显示哪个键作为由SOM130安全产生并经由安全视频路径150安全显示的加扰口令输入界面(例如加扰PIN键盘)的一部分。于是,SP活动可以“盲目地”向SOM130传递触摸事件坐标,其接着能够安全地判定在用户触摸的每个点下方显示哪个字符(例如数字、符号或字母),SOM130于是可以安全地将触摸事件坐标转换回PIN数字或口令字符。
口令输入活动159的Android或Java层次的大多数逻辑可能关注所需的与OS的交互,例如,获取对触摸屏152的访问或驱动平台的硬件CODEC以显示由安全部件产生的用户界面(UI)。活动逻辑可以通过将UI显示为全屏视频表面,采用安全视频路径防止对UI的“窥探”并将触摸屏152上的触摸事件定向到SOM130来驱动用户交互作用。
参考图1C,这是根据本发明的安全口令安全模块(SP-SM)168的示意方框图。SP-SM168可以是SPEM142的说明性实施方式。
SP-SM168例如可以包括链路保护加密模块182、SP服务证书验证器183、UI控制逻辑184、安全文本绘制器185、图像合成模块186、安全帧缓冲器187和视频编码器188(例如,利用H.264或其它适当的CODEC)。
SP-SM168可以运行于SEE140中,并可以产生UI,用于安全口令输入,例如,作为用户选择的个人图像和覆盖图的背景PNG图片。SP-SM168可以对从SP活动159到达的触摸时间做出反应;可以更新显示以反映UI进度;可以将UI编码成视频(例如,通过利用H.264或其它适当的视频编解码);可以利用定制的保护方案(诸如DRM保护方案)来保护编码的视频。
UI控制逻辑184可以实施图形库。UI控制逻辑184可以基于PNG解码器和TrueType字体绘制器,并可以绘制随机或伪随机或加扰数字(或字符)。安全文本绘制器185可以绘制语境的文本(例如服务ID),而图像合成模块186可以合成数字和文本以及个人再保证图像的图像。视频编码器188可以将显示输出编码成H.264视频流(或利用其它适当的标准或协议编码的其它适当的视频流或视频剪辑或视频文件),可以利用随机产生的每次会话的密钥对其加密(例如,使用AES-CTR)。这可以允许利用平台定义的安全内容路径或安全视频路径,其针对使用DRM保护的视频的安全显示而设计。
UI控制逻辑184可以负责绘制加扰的PIN键盘布局、加扰的口令输入界面、一组具有随机初始值的可旋转拨号盘等。UI控制逻辑184可以创建这样的PIN键盘或口令输入界面的图像。SP服务证书验证器183可以接收和检查“验证证书”(或“服务证书”),如果有效的话,可以从其获得服务提供商的名称。安全文本绘制器185可以从服务证书验证器183所处理的证书获得服务提供商的ID或名称,还可以获得其它所需的关于授权语境的文本细节(例如,在商务语境中支付的量;或TLS语境中的服务提供商细节)。UI控制逻辑184和安全文本绘制器185可以用于利用其安全字体的自有版本在图像上绘制文本(例如,服务提供商的文本细节和名称),以避免利用(一种或多种)不安全的HLOS字体。图像合成模块186可以获取为PIN键盘(或口令输入界面)创建的所有图形,以及服务细节和个人保证图像,并且可以从它们合成出组合图像,然后可以将该组合图像传递到安全帧缓存187,其包括图像缓存。安全帧缓存187向视频编码器188传递一个或多个缓存的图像或帧,视频编码器188从其产生视频(例如,利用H.264编码的视频文件)。将编码的视频从视频编码器188传递到链路保护加密模块182,链路保护加密模块182产生随机或伪随机密钥,利用密钥对视频进行加密,并将视频包装或封装成受保护的视频(例如Widevine视频,PlayReady视频),然后可以将其传递回SP活动159。任选地,SP-SM168可以进一步实施CryptoPlugin::decrypt功能,以对定制的DRM状保护方案进行解密。这可以允许在支持CryptoPlugin的任何平台(例如用于PlayReady和Widevine)上将口令输入显示集成到现有的安全内容路径(或安全视频路径)中。
再次参考图1A和1B,安全TLS/SSL支持模块151可以包括运行于安全执行环境中的TLS/SSL支持库131,并与运行于UEE120中的TLS/SSL集成库193通信。TLS/SSL集成库193还可以包括用户空间中的完整的TLS/SSL实现。例如,TLS/SSL集成库193可以包括增强的TLS/SSL库(例如TLS库),其利用基于SEE的安全对话建立来加强TLS/SSL在HLOS中的实现,并且可以提供任选的支持来由SEE保护用户凭证(例如口令和客户端证书),诸如通过与运行于SEE中的TLS/SSL支持库131交互。在启用基于SEE的操作时,TLS/SSL集成库193可以利用运行于SEE中(或服务器上)的TLS/SSL支持库131处理TLS握手协议。安全TLS/SSL集成库193可以工作于两种模式之一中:它可以仅针对握手阶段使用运行于SEE中的安全部件,或者可以针对握手阶段以及记录的加密与解密都使用安全部件。
可以通过触发状态或事件(例如,识别出网站具有服务证书),来触发TLS/SSL支持库131的操作。TLS/SSL集成库193可以在初始化期间从网站上的公知URL获取服务证书。如果网站仍不为设备100所知,那么可以由登记模块137(例如,网站登记模块和/或应用登记模块,其可以是TLS/SSL支持库131的一部分,可以包括先前登记的网站和/或应用的登记数据库138以及未登记网站的非持久性登记高速缓存139)启动“登记模式”(例如,“首次向导”),允许用户输入其用户名、其口令以及任选的其它识别细节。应用或浏览器然后可以导致在安全存储器中存储机密的识别细节(例如,使用由TLS/SSL支持库131提供的扩展API),供接下来连接到服务时使用。
一旦完成握手,如果不需要用户凭证保护,那么安全部件(或在图2所示的远程服务器实施方式中为服务器)可以向HLOS库层返回赞成会话密钥,由此使对分裂架构的性能的影响最小化。如上所述,在利用客户端证书对用户进行认证时,可以部署这种模式。
安全凭证处理可以请求TLS/SSL集成库193以不同的方式工作:在启用这种模式时,可以使用新的API使重写器132向加密的流中发送指定的凭证(例如口令),重写器132可以是安全TLS/SSL支持模块151的一部分。为了防止运行于HLOS上的恶意软件从加密流捕获凭证,可以不从安全环境(或者在图2所示的远程服务器实施方式中是从服务器)输出会话密钥;相反,可以将每个加密(或解密)操作定向到安全部件。
该应用仍然可以请求在发送凭证之后切换到基于HLOS的有效载荷处理模式。模式切换可以使TLS/SSL集成库193执行缩短的TLS再协商,产生新的密钥供继续会话使用。服务证书可以包括与后退(fall-back)到基于HLOS的有效载荷处理的授权相关的信息。
如本文参考图2所示,TLS/SSL支持库131(或能够执行类似功能的TLS/SSL握手支持模块103)可以运行于远程安全代理服务器上。在这种情况下,可以利用用于向安全代理服务器安全地进行通信的数据保护模块来保护从移动设备100到安全代理服务器的流量,安全代理服务器代表设备100维护着与实际服务服务器的TLS连接。如果完成了再协商,可以重新开始TLS会话,遵循从移动设备100到服务服务器(TLS服务器)的再协商,不再经过安全代理服务器。
本地加密服务模块146可以包括允许本地HLOS应用利用安全存储的密钥触发加密和/或解密过程以保护本地数据的库。本地加密服务模块146可以向需要安全本地存储的应用提供服务。本地加密服务模块146例如可以包括:用于与客户端应用通信的Android活动;用于管理安全挂载点的系统守护进程;以及用于所存储的数据的实际加密与解密的安全部件。
在服务器实施方式(例如,如图2中所示)中,密钥发生器145可以运行于服务器上,而加密模块143和解密模块144可以存在并运行于移动设备100上,但是在其HLOS中。在服务器利用其安全口令输入模块142认证用户之后,设备100的加密模块143和解密模块144可以与远程服务器安全地交互,以便获得相关密钥。一旦服务器认证了用户,服务器就可以产生设备100的加密模块143和解密模块144可用的正确密钥。
如本文所述,密码-令牌模块147可以允许应用触发将要利用安全存储的密钥执行的认证和数字签名例程。
如本文所述,可以在HLOS(例如Android)层次和安全OS层次上将SOM130的部件集成到移动设备100中。也可以在远程服务器(例如,如图2中所示)中集成SOM130的部件。
要指出的是,可以在SEE140或远程服务器中实现SOM130的部件。在一些实施方式中,利用密码-令牌模块147可能需要UEE120中的“令牌管道”;令牌管道可以是一种活动,其能够与SOM130的密码-令牌模块147交互,使密码-令牌模块147能够利用SSM141在安全存储器149中存储的凭证执行密码操作。
在HLOS层次上,可以使用TLS/SSL授权活动191。为了启用TLS/SSL支持库131的安全操作,应用可能需要请求用户授权使用用户的凭证(例如,口令或与客户端证书相关联的私钥)。可以通过发出具有例如网站的URL或任何其它服务标识符以及任选用户ID的Android意图来完成授权请求。这可以调用TLS/SSL授权活动191,其可以向网站发出HTTPHEAD请求,以便检索网站的TLS服务器证书。TLS/SSL授权活动191然后可以调用安全口令请求,以便显示一些可用信息,诸如:网站的URL、来自服务证书的网站的通用名称、和/或用户ID。用户提供的口令然后可以解锁或授权访问用户的数字证书和/或口令。
一旦用户授权使用其凭证,TLS/SSL授权活动191就可以向应用返回安全的“cookie”值。然后可以由cookie处理程序192使用(例如检验)安全的“cookie”值以实现TLS/SSL支持库131的安全工作。可以由安全的TLS/SSL支持模块151产生安全的“cookie”。可以由安全TLS/SSL支持模块151的cookie处理程序192检验安全的“cookie”,安全TLS/SSL支持模块151可以执行cookie创建和/或cookie检验;无效或失效的“cookie”不会有泄漏任何意外的能力。为了说明的目的,cookie处理程序192被示为安全TLS/SSL支持模块151的一部分;但cookie处理程序192可以被实现为一个或多个其它模块的一部分或可以与该一个或多个其它模块相关联,该一个或多个其它模块例如是TLS/SSL支持库131、SPEM142、本地加密/解密服务模块146和/或密码-令牌模块147。
TLS/SSL支持库131可以增大TLS/SSL库的常规能力。TLS/SSL支持库131可以包括用于授权安全工作的额外模块;这个模块可以与可以是Java功能的API相关联,其可以调用TLS/SSL授权活动(经由Android意图)并可以根据结果更新内部状态。例如,TLS/SSL支持库131还可以包括新功能,该新功能可以增加将SSL session object设定成高机密模式的能力(在SEE140中执行加密/解密),使得能够利用秘密的用户凭证。在已经活动的会话上(例如,其中已经交换了数据)改变模式可能导致TLS/SSL支持库131触发TLS连接的缩写再协商,导致其后使用变化的密钥。TLS/SSL支持库131还可以包括新功能,其可以接受(先前启用的)用户凭证的名称,并且可以指示重写器132向输出流中写入这个用户凭证的值;在使用这个功能时,SSL_session_object应当处于高机密模式。
TLS/SSL支持库131还可以进一步与设备100的HLOS中的对应TLS/SSL集成库193交互。TLS/SSL集成库193例如可以包括:会话机密模块194,能够设定和/或修改会话机密标志或参数(例如,在“高”或“低”之间转换,或反之亦然);重写器触发器195,能够识别需要被调用的重写器132;以及发送/接收模块196,能够与TLS/SSL支持库131交互并能够向TLS/SSL支持库131发送(以及从其接收)数据以加密或解密。
在内部,TLS/SSL集成库193可以向基于HLOS的TLS/SSL实现的副本或TLS/SSL支持库131分发功能。只要会话不处于高机密模式,代码的HLOS版本就可用于SSL_write/SSL_read。如果未授权访问安全凭证,也可以将代码的HLOS版本用于会话建立(例如SSL_connect)。
也可以将SOM130的部件集成到安全OS层次上。例如,SOM130可以包括在SEE140控制下运行于SEE140中的模块。可以将这些模块实现为“安全应用”:它们可以使用安全OS服务,并可以像其它安全服务(例如用于DRM)那样被加载。安全模块例如可以包括安全口令输入模块(SPEM)142、安全TLS/SSL模块(例如安全TLS/SSL支持模块151)、安全存储模块(SSM141)和加密分区管理器197。
SPEM142可以实施用户界面以安全输入口令。由142接收的输入可以是“口令请求”,例如,全都以秘密密钥签名的、用于登录到网站中的网站细节(来自服务证书的字段和名称)和用户ID。如果输入的口令正确,SPEM142产生的输出可以是用户特异性且服务特异性的安全存储密钥,其经过加密以供请求认证的安全部件唯一使用。可以利用决定性密钥推导功能(KDF)来从设备私有的主密钥导出安全存储密钥,该功能可以利用用户ID和服务ID以及额外数据来作为参数。
安全TLS/SSL支持模块151可以实施最小TLS,例如TLS v1.2堆栈,并且可以支持基于DHE_RSA的握手和密钥交换、基于AES的记录有效载荷保护、以及其它模式。可以通过访问服务参数封装,包含服务器的服务证书和用户凭证来启动安全TLS/SSL支持模块151。服务参数封装可以存储于SSM141中,对服务参数封装的访问可能需要利用SPEM142提供的口令。TLS/SSL支持模块151还可以实现用户登记,这可以生成服务参数封装并可以在安全存储器中存储这样的封装(通过SSM141)。
SSM141可以处理服务参数和用户参数的机密性和完整性。可以从其它安全模块(例如从SSL/TLS支持模块151)直接调用SSM141,SSM141可以利用SEE内部密钥来管理对所提供数据的加密和签名。
加密分区管理器197可以是本地加密服务模块146的一部分,或与本地加密服务模块146分离。例如,如上所述,加密分区管理器197可以利用本地数据保护特征来处理本地应用的文件存取操作中所涉及的数据加密与解密。在一些实施例中,该应用可以直接利用本地加密服务模块146的加密和/或解密功能;而在其它实施例中,加密分区管理器197可以生成加密分区,然后该应用可以透明地使用该加密分区。
本地加密服务模块146可以提供本地加密和解密功能。可以在本地将每个本地应用的敏感数据存储为加密的子容量;可以由应用的数据目录内部或在任何其它位置存储的文件备份该子容量。可以利用不同的密钥加密每个这样的子容量,该不同的密钥是利用由用户ID和应用标识符(封装名)参数化的安全KDF从设备主密钥导出的。或者,可以随机或伪随机地产生密钥。加密可以针对数据扇区利用AES-XTS,并可以利用AES驱动的Thorp置乱来对扇区地址加扰。可以使用其它适当的密码和/或模式。
一开始(例如,在系统启动时),可以关闭敏感数据容器。在应用需要访问其敏感数据时,该应用可以调用Android连接器(Binder)进程间通信(IPC)机制以请求从(例如,在系统引导时启动的)“安全存储器管理器”守护进程的访问,可以将该守护进程实现为加密分区管理器197。加密分区管理器197可以发出安全口令请求,以便访问用户的主密钥。加密分区管理器197可以利用Linux网络块设备(NBD)机制来管理受保护容量的挂载和卸载,并可以针对这些容量实施服务器侧的逻辑,访问备份文件并利用安全部件执行加密/解密,使得用于加密与解密的密钥可以永远不离开安全部件。加密分区管理器197也可以利用Android连接器机制来检测本地应用何时关闭或“杀死”,并代表该本地应用卸载任何已挂载的受保护容量。
图2是根据本发明的系统200的示意性方框图。系统200可以包括移动设备100,移动设备100可以能够通过一个或多个通信网络、无线链路和/或有线链路与远程服务器101通信。
服务器101可以包括安全代理198,例如,通常可以类似于SEE140的安全部件或安全环境。在系统200的一些实施方式中,设备100可以不包括SEE;或者,设备100可以包括SEE,但设备100的这样的本地SEE可能无法由本发明使用或不必由本发明使用。因此,可以在服务器101的安全代理198之内实现SOM130(而不是在设备100内的SEE之内实现)。服务器101的安全代理198还可以包括安全视频生成器102,其可以负责图1C的一些或所有部件的功能,尤其是与链路保护加密模块182和视频编码器188相关联的功能。安全视频生成器102可以产生代表屏幕加扰PIN键盘(或其它适当的加扰口令输入界面)的DRM加密的视频。安全视频生成器102可以向设备100的启用安全DRM的媒体播放机153发送DRM加密的视频,媒体播放机接着可以在触摸屏152上显示它。可以在设备100的SP活动与运行于服务器101的安全代理198中的远程SOM130之间交换视频反馈,该视频反馈包括触摸屏152上的用户触摸事件。
可以在服务器101的安全代理198之内实施SOM130。在这样的实施方式中,SOM130不必包括加密模块143和/或解密模块144,因为加密/解密服务可以由设备100的HLOS提供。服务器101在其安全代理198的SOM130之内可以包括TLS/SSL握手支持模块103,其可以利用用户的客户端证书或口令。此外,应用支持API133可以类似地实现于服务器101之内,而不是设备100之内。在基于服务器的架构中,移动设备100不必一定包括TLS/SSL支持模块151和/或加强的TLS/SSL库131。相反,并非利用其自己的加强TLS/SSL库131,而是可以由服务器101的TLS/SSL握手支持模块103来辅助移动设备100,其可以提供大致类似于加强的TLS/SSL库131的服务。
在系统200中,设备100的HLOS还可以包括用于与服务器101交互的服务器交互模块104。服务器交互模块104可以运行于HLOS120(因为设备100可以不包括可用的SEE)中,并可以利用数据和控制流混淆以保护其逻辑和数据。服务器交互模块104可以利用可以与服务器101共享的设备内部密钥105,以保护在设备100的服务器交互模块104与远程服务器101之间交换的通信。可以类似地使用其它密钥方案,诸如公钥密码学等。可以安全地提供设备内部密钥105,或者可以由设备100以预定义的安全方式来产生设备内部密钥。
在系统200中,SPEM142可以包括在服务器101的安全代理198之内的SOM130中,并可以通过连接到设备100的安全回放部件199(例如通过通信网络)而工作。重写器132可以存在于服务器101上,而不是设备100之内;设备100的HLOS120可以利用服务器交互模块104来与可以执行所需的重写的服务器101交互。
在系统200中,加密模块143和解密模块144可以是设备100的HLOS120的一部分,其可以通过逻辑混淆的形式和/或利用数据混淆来实现。这些模块可以与服务器101中的适当的模块安全地通信,该适当的模块向加密模块143和解密模块144发送加密/解密密钥或可以导出密钥资料的数据以供它们操作。
因此,服务器101可以导致用户的认证(因为SPEM142运行于服务器101的安全代理198之内),然后可以以受保护的方式向设备100发送正确的密钥,使得加密模块143和/或解密模块144和/或加密分区管理器197可以利用设备100之内的密钥。
在系统200中,可以由服务器101上的密钥产生器145来进行密钥产生,密钥产生器145也可以处理安全存储。系统200不需要包括和/或不需要利用移动设备100上的任何SEE。例如,为了安全的口令输入,设备100之内的本地HLOS应用可以调用服务器101上的SPEM应用142,SPEM应用142接着可以产生表示与HLOS通信的加扰PIN键盘的DRM加密的视频或图像,HLOS使用安全的回放部件以向触摸屏152上绘制视频,捕获击键(作为触摸事件坐标)并将其发回到服务器101,以与加扰PIN键盘中表示的加扰密钥安全地相关。在一些实施例中,可以不对PIN键盘加扰,而是可以以适当的方法传输该PIN键盘,这防止了能够捕获触摸事件的实体或模块确定所输入的PIN或口令。
服务器101可以从设备100接收服务证书(以由服务器101之内的SP服务证书验证器183进行验证)以及其它语境数据。
本发明可以包括利用安全口令认证的网站登记过程。该过程可以允许移动设备的用户在利用口令(而非利用客户端证书)进行认证时,利用本发明的安全操作模块(SOM)登记新网站来进行安全认证。
移动设备的用户可以利用运行于移动设备上的浏览器应用来导航到新网站(例如,https:∥www.Bank.com)。浏览器可以检测到URL包含表示安全连接的“https”前缀;于是浏览器可以对安全TLS/SSL支持模块151的TLS/SSL集成库193进行初始化。
TLS/SSL集成库193可以查询其登记的站点数据库,并可以检测到这个特定网站尚未登记。TLS/SSL集成库193可以查询其未登记网站的(非持久性)高速缓存;并可以检测到这个特别的网站未被列出。未登记站点的高速缓存可以防止对未参与的网站反复进行登记测试。
TLS/SSL集成库193可以从与网站相联系的URL(例如,从http://www.Bank.com/SecureMobileCertificate)获取网站的服务证书,并可以传递证书以验证由TLS/SSL支持库131获取的服务证书的有效性。例如,可以参照可以在SEE140或远程服务器101中硬编码的参考公共密钥检查证书签名,并且仅在那之后,才可以检验格式和截止期。或者,可以使用在线证书状态协议(OCSP)或其它适当协议来获得撤销状态。
网站登记模块137可以要求用户提供用户的确认或许可来登记网站;用户可以通过轻敲、点击、选择或以与设备100上显示的适当UI元件接合的其它方式来指示用户的批准。
TLS/SSL支持库131可以向安全登记网站数据库138增加这个网站,并可以为这个设备100上的这个网站启用安全的TLS。例如,对于每个登记的服务,在安全存储器149中都可以有记录,安全存储器149包含来自登记时用户输入的证书(例如钉扎(pinning)信息)和用户凭证(例如,与重写器132一起使用的客户端证书或凭证)的数据。在用户利用服务证书登记网站时,可以将这些数据项填充到安全存储器149之内的该记录中;接下来,在用户再次利用给出的这种数据登录到网站或服务时,可以从该记录获得该数据并可以自动使用该数据。
浏览器可以获取网站的登录页,并可以在设备100上将其显示给用户。用户可以在登录表格上输入他的登录细节(例如,用户访问该网站所使用的用户名和口令),并可以命令浏览器向网站提交登录细节。
如果服务证书这样指出,那么可以请求或提示用户在支持字母数字的小键盘的安全UI上(例如在屏幕小键盘或屏幕键盘上)输入登录细节。用户可以安全地输入其登录细节,从而防止登录细节被运行于HLOS上的代码拦截。
浏览器可以要求TLS/SSL支持库131保存用于这个网站的机密凭证信息以及用户选择的用户ID。可以经由SSM141在安全存储器149中存储机密凭证信息,并且机密凭证信息例如可以包括具有“口令”类型的(一个或多个)表单字段(或,任选地,网站的登录页的所有表单字段)。浏览器可以在其本地表单数据历史数据库中(例如,不安全地)保存非机密字段。要指出的是,所提到的用户ID不是用户可能与网站相关联的“用户名”,而是可以由用户从呈现给用户的列表中选择用户ID(例如,如果移动设备由多个用户共享,则可以使用这个选项)。
TLS/SSL支持库131可以向SPEM142发出安全口令输入请求,列出网站域(“Bank.com”)和证书通用名(CN)以及首次登记指示。响应于登记请求,用户可以输入其口令。然后,可以由SSM141在安全存储器中永久地保存机密数据。要指出的是,在一些实施例中,首先,用户可以输入其“真实”口令(用户为了登录该网站而定义的口令,未必经由移动设备),以在移动设备100之内记录该口令;而在当前步骤中,用户可以输入二次口令或PIN(利用安全的PIN输入接口)以确认和发起登录。
浏览器可以通过TLS/SSL连接向网站提交表单数据。浏览器可以将TLS连接切换到更低的机密性模式,从而导致密钥再协商。然后可以继续会话,而无需来自TLS支持模块151的TLS/SSL支持库131的额外操作,这是因为可以在SEE中执行所有的TLS密钥交换操作,同时可以在HLOS库中由TLS/SSL集成库193执行记录有效载荷保护。例如,呈现与登记版本不同的证书参数的攻击可能导致错误。
要指出的是,可以利用UI实施登记取消,UI向用户示出他已经登记的服务和/或网站的列表,并允许用户在该列表上选择项目并请求去除或删除,由此可以从安全存储器149删除适当的记录。在一些实施例中,用户可以通过专用UI部件或过程,或通过取消登记网站(或服务)并随后利用新口令或PIN再次登记,从而针对先前登记的网站或服务来修改其移动PIN或口令。进一步要指出,如果用户改变其用于登录到网站(或服务)中的口令(未必与移动设备相关),那么通过设备100的SOM130的自动登录可能失败,用户可能需要取消登录,然后通过其移动设备100重新登记网站,以便向安全存储器149中提交新口令。
本发明还可以包括用户利用根据本发明的安全口令认证登录到先前登记的网站中的过程。
移动设备的用户可以利用运行于移动设备上的浏览器应用来导航到先前登记的网站(例如,https:∥www.Bank.com)。浏览器可以检测到URL包含表示安全连接的“https”前缀;于是浏览器可以对TLS/SSL集成库193进行初始化。
TLS/SSL集成库193可以查询其登记的站点数据库,并可以检测到这个特定网站已经被登记。TLS/SSL集成库193可以从与网站相关联的URL(例如,从http://www.Bank.com/SecureMobileCertificate)获取网站的服务证书,并可以触发对所获取的服务证书的有效性的验证。可以从任何其它位置取得或获得服务证书,或者可以通过其它方式为设备所用。
TLS/SSL集成库193可以向SPEM142发出安全口令输入请求,列出网站域名(“Bank.com”)和证书通用名(CN)。响应于登记请求,用户可以输入其口令。
TLS/SSL集成库193可以实现高安全性。在一些实施例中,例如,本发明可以在HLOS中提供加强的TLS实施,这样可以知道如何为运行于SEE140中的TLS使用辅助库,例如TLS/SSL支持库131。在不安全模式(或低机密性模式)中,除了利用SEE140的TLS/SSL支持库131进行握手以外,HLOS的TLS库可以类似于常规TLS库那样工作。在安全模式(或高机密性模式)中,HLOS的TLS库也可以利用TLS/SSL支持库131来进行会话流量的加密与解密。可以由利用TLS的应用(或浏览器)来设定或修改表示机密性模式的标志或其它参数;服务证书可以指明(或可以强制)该值应当是什么,使得应用可能不能改变它。例如,该应用可以决定请求TLS工作在不安全模式(低机密性模式)中,除非服务证书指定该应用应当保持在安全模式(高机密性模式)中。
浏览器可以获取网站的登录页,并可以在设备100上将其显示给用户。任选地,浏览器例如可以从浏览器的本地表单数据数据库获取一个或多个非机密字段的缺省值。
例如,如果服务证书中的数据指明了这样的操作,浏览器可以向机密字段中插入伪造的值。
用户可以命令浏览器向网站提交登录细节。浏览器可以通过TLS/SSL连接向网站发送登录表单。在发送过程期间,在浏览器到达机密字段时,并非写入其自己的(伪造)值,浏览器可以请求TLS/SSL支持库131使用已经记录在其安全存储器数据库中的值。要指出的是,在一些实施方式中,浏览器可以是网络浏览器或其它客户端侧的应用,经修改或调整以利用TLS/SSL支持库131的服务。
重写器132可以重写提交的HTML页,使其包含来自TLS/SSL支持库131的数据库的真实凭证而非伪造值。TLS/SSL支持库131可以对提交的网页加密,类似于其通过TLS/SSL加密其它记录的方式。
要指出的是,浏览器可以与HLOS中的TLS/SSL集成库193通信,其接着又利用来自SEE140中的TLS/SSL支持库131的服务。例如,HLOS中的TLS/SSL集成库193可以请求SEE140中的TLS/SSL支持库131以插入凭证;SEE140中的TLS/SSL支持库131利用通过TLS集成库193发送和接收的数据来与远程服务器执行握手。进一步要指出,在高机密性模式中,SEE140中的TLS/SSL支持库131执行会话加密;而在低机密性模式中,TLS集成库193可以执行会话加密。
浏览器可以将TLS连接切换到更低的机密性模式,从而导致密钥再协商。然后可以继续会话,而无需来自TLS支持模块151的TLS/SSL支持库131的额外操作,这是因为可以在SEE中执行所有的TLS密钥交换(即握手)操作,同时可以在HLOS库中执行记录有效载荷保护。例如,呈现与登记版本不同的证书参数的攻击可能导致错误。
本发明还可以包括登记应用以利用根据本发明的安全口令认证的过程。该过程可以允许移动设备的用户在利用口令(而非利用客户端证书)进行认证时,利用本发明的安全操作模块(SOM)登记应用(或可以通过浏览器访问或运行的其它应用)以进行安全认证。要指出的是,术语“应用”例如可以包括可以至少部分地本地安装于(或可以通过其它方式本地存在于)移动设备上、和/或可以至少部分地运行于移动设备、和/或可以需要移动设备与网络浏览器外部的远程服务器通信的软件应用。
移动设备的用户可以启动该应用。该应用可以对TLS/SSL集成库193以及安全TLS/SSL支持模块151的TLS/SSL支持库131进行初始化;并可以通知TLS/SSL支持库131其云服务器的地址(例如,http:∥www.Bank.com)。在一些实施方式中,本地应用可以与HLOS的TLS集成库193通信,其接着可以检查服务是否被登记(例如,可以直接检查,或可以请求SEE140中的TLS/SSL支持库131检查)。
例如,如果该服务未被登记,则HLOS的TLS集成库193可以尝试获取服务证书。或者,TLS/SSL支持库131可以查询其登记的应用数据库,并可以检测到这个特定应用尚未被登记。TLS/SSL支持库131可以通过TLS/SSL集成库193从与服务相关联的URL(例如,从http://www.Bank.com/SecureMobileCertificate)或从(一个或多个)服务证书的另一适当位置或仓库获取服务的服务证书,并可以验证所获取的服务证书的有效性。
TLS/SSL支持库131可以向安全登记的应用数据库增加这个应用,并可以为该设备100上的这个应用启用有SEE功能的TLS。
该应用可以通过应用所呈现的屏幕上的UI或通过与TLS/SSL支持库131相关联的安全UI来从用户获得其登录细节(例如用户名和口令)。
如果服务证书这样指出,那么可以请求或提示用户在支持字母数字小键盘的安全UI上(例如在屏幕小键盘或屏幕键盘上)输入登录细节。用户可以安全地输入其登录细节,以便防止登录细节被运行于HLOS上的代码拦截。
该应用可以要求TLS/SSL支持库131保存用于这个应用的机密凭证信息以及用户选择的用户ID。该应用可以向TLS/SSL支持库131指明哪个(哪些)字段或数据项需要安全存储(例如,仅用户口令,或其它数据项也需要);以及可以存储(一个或多个)所需字段的内容。
TLS/SSL支持库131可以通过TLS/SSL集成库193向SPEM142发出安全口令输入请求,列出应用名(例如“Bank.com”)和证书通用名(CN)以及首次登记指示。响应于登记请求,用户可以输入其口令。该应用可以通过TLS/SSL连接(例如,利用简单对象存取协议(SOAP),利用开放符号(JSON)标准等)向应用的服务器提交登录请求。
要认识到,TLS/SSL集成库193可以运行,以便令系统的安全模块执行一个或多个任务。作为论证性示例,加强的TLS/SSL库131可以是SEE140之内的安全库,但加强的TLS/SSL库131也可以不运行,除非或直到其被触发,例如被TLS/SSL集成库193触发,该TLS/SSL集成库193可以向加强的TLS/SSL库131提供输入并可以从加强的TLS/SSL库131接收输出。例如,SEE140之内的两个安全模块可以不在它们之间直接通信,而是可以需要TLS/SSL集成库193的间接运行,这可以促成所需的过程(例如,验证证书,使得TLS/SSL集成库193可以打开网络套接字,获得证书并将其作为参数传递到加强的TLS/SSL库131;或者,在加强的TLS/SSL库131请求SPEM142触发PIN输入时,加强的TLS/SSL库131可以报告这样的请求,作为对TLS/SSL集成库193的响应,该集成库193接着可以触发SPEM142工作)。
任选地,该应用可以将TLS连接切换到更低的机密性模式,从而导致密钥再协商。然后可以继续会话,而无需来自TLS/SSL支持库131的额外操作,这是因为可以在SEE中执行所有的TLS密钥交换操作,同时可以由HLOS库执行记录有效载荷的保护。例如,呈现与登记版本不同的证书参数的攻击可能导致错误。
本发明还可以包括用户利用根据本发明的安全口令认证调用先前登记的应用的过程。
移动设备的用户可以启动该应用。该应用可以对TLS/SSL集成库193进行初始化;并可以通知TLS/SSL集成库193其云服务器的地址(例如,https:∥www.Bank.com)。
TLS/SSL支持库131可以查询其登记的应用数据库,并可以检测到这个特定应用已被登记。
TLS/SSL支持库131可以与TLS/SSL集成库193结合,从与应用相关联的URL(例如,从http://www.Bank.com/SecureMobileCertificate)获取应用的服务证书,并可以验证所获取的服务证书的有效性。
TLS/SSL支持库131可以向SPEM142发出安全口令输入请求,列出应用名(例如“Bank.com”)和证书通用名(CN)。响应于登记请求,用户可以输入其口令。
TLS/SSL支持库131可以启用高安全操作(例如启用SEE功能的TLS)。
该应用可以通过TLS/SSL连接(例如,利用简单对象存取协议(SOAP),利用JavaScript开放符号(JSON)标准等)向该应用的服务器提交登录请求。在提交过程期间,在应用到达机密字段(例如,口令字段)时,该应用可以请求TLS/SSL支持库131插入安全地本地存储在应用数据库中的凭证值。重写器132可以在向远程服务器发送提交的请求之前重写该提交的请求,使得该提交的请求包括(在由应用指明的字段或位置中,或在服务器证书中指明的)从本地应用数据库获得的真实凭证值。TLS/SSL支持库131可以对该提交的请求进行加密,类似于其通过TLS/SSL加密其它记录的方式。
该应用可以通过TLS连接从远程服务器接收响应,并可以保存会话信息(例如,利用“cookie”或其它机制)。
任选地,该应用可以将TLS连接切换到更低的机密性模式,从而导致密钥再协商。然后可以继续会话,而无需来自TLS/SSL支持库131的额外操作,这是因为可以在SEE中执行所有的TLS密钥交换操作,同时可以由HLOS库执行记录有效载荷的保护。例如,呈现与登记版本不同的证书参数的攻击可能导致错误。
例如,本发明的一些实施例可以任选地包括通用密钥安全存储器。例如,还可以将可用于存储客户端证书、口令和对称密钥的SSM141用于存储通用密钥资料,例如作为对称密钥和/或非对称密钥。例如,本发明的一些实施例可以任选地包括密钥提供。例如,这样可以允许直接从服务提供商向SSM141通过空中传输安全提供密钥资料。例如,本发明的一些实施例可以任选地包括密码-令牌能力。这种能力可以允许利用上述密钥资料进行认证和数字签名计算操作。本发明的一些实施例的上述特征可以将安全工作模块的功能扩展到通用远程提供的密码模块,其可以为大范围的服务提供商的所有认证和授权需求服务,但未必使用TLS/SSL连接。
在一些实施方式中,可以通过网站进行登记,然后该网站可以向设备100发送登记信息,并可以向安全存储器中直接插入数据。类似于服务提供商可以利用提供协议以向安全存储器中插入密钥的方式,服务提供商可以通过上述用户登记过程,利用类似机制向安全存储器中存储插入其中的值。因此,用户可以不需要执行服务登记,这是因为可以无需他的动作来执行登记。
参考图3,图3是根据本发明在贸易商或出售商的销售点(PoS)终端处认证用户的方法的示意流程图。例如,PoS终端可以包括具有触摸屏的终端,其可以操作地与支付卡读取器相关联。
PoS终端可以在触摸屏上显示加扰的PIN界面(方框310)。用户可以通过读卡机刷支付卡(或者,可以向读卡机中插入支付卡)(方框320)。用户可以通过加扰的PIN界面输入其PIN(方框330)。例如,可以参照支付卡或参照支付卡发行者的服务器(例如根据EMV标准或其它适当标准)检查输入的PIN(方框340)。本文使用的术语“刷”例如可以包括滑动支付卡通过读卡机的动作;向读卡机中插入支付卡和/或从读卡机中取出支付卡;在支付卡和读卡机之间产生接触;或以其它方式执行使读卡机(例如从磁条或芯片)读取支付卡的数据的动作。
在本发明的替代实施例中,用户可以如上在读卡机中刷支付卡;但另一方面,用户可以在他自己的移动设备上(而非在贸易商的终端上)输入其PIN,并可以利用他自己的移动设备上的加扰PIN界面输入PIN;然后用户的移动设备可以以加密的形式如上向卡发行者发送PIN,可以接收响应,并可以向贸易商的支付终端发送确认代码(例如加密的)。还可以使用其它适当的操作或方法。
在本发明的其它实施例中,可以不由卡发行者验证输入的PIN,而是由支付卡自身,例如基于EMV卡检验标准或方法来验证。在这种情况下,PIN可以被加密,并可以被传递到支付卡,该支付卡接着可以进行检查并可以发回检验响应。在本发明的一些实施例中,移动设备100甚至可以不能“知道”正确的PIN;相反,仅在接收用户的输入,对其加密并向移动设备100之外的另一模块传输其以供验证时,才可以信任移动设备100。
可以利用包括诸如PIN、口令、客户端证书(客户端-Cert)、应用密钥(App-key)、服务验证数据和内部可信根(ROT)的资产的安全模型来实施本发明的安全口令。可以使用该安全模型来实现一种系统,该系统旨在安全地认证人类用户以及其执行涉及其安全存储的凭证之一的认证动作的意图,并执行这种认证动作。
PIN可以允许具有给定用户ID的用户认证其自己及其认证的意图。口令可以是用于向具有给定提供商ID的服务提供商认证具有给定用户ID的用户的一个或多个文本凭证;口令资产通常可以是用户标识符和/或用户指定的口令。
客户端证书可以是用于通过TLS/SSL协议(如果受到服务支持的话)向与给定服务ID相关联的服务器认证具有给定用户ID的用户的客户端X.509证书。应用密钥可以是针对给定用户ID的用户和与给定服务ID相关联的应用而本地产生的对称密钥;由应用使用以保护本地存储的数据。
服务验证数据可以是包含指明验证服务提供商使用给定服务ID的值、TLS中使用的服务证书性质以及相关参数的结构。内部ROT可以是SEE140中存储的内部对称密钥,可以充当安全存储器的ROT。
本发明可以要求平台包括安全执行环境(SEE)。SEE例如可以是由可能与SecureOS结合的ARM TrustZone提供的环境。可以保护SEE中运行的代码不被修改(在运行时以及存储时);可以保护该代码以免其控制流被篡改;并可以保护该代码以免其运行时间状态(包括数据)被攻击者发现或改变。
本发明可以要求平台包括安全可信根(ROT)。例如,可能需要可用于安全口令方案的安全代码的熵足够大的秘密对称密钥,使得其不能被移动设备上或移动设备外部的另一实体或另一应用所发现(或修改)。ROT密钥可用于促成安全口令方案可利用的安全存储。
本发明还可以要求移动平台包括安全视频路径,该安全视频路径可以允许运行于SEE之内的代码产生并发送可以在设备屏幕上全屏绘制的媒体内容(图像和/或视频),而不会被运行于HLOS上的代码(例如另一本地应用或恶意软件模块)暴露和/或篡改媒体。
本发明能够保护移动设备、通信系统和/或移动设备的用户不受一种或多种适当类型的攻击者或攻击实体的影响,例如:移动设备的持久非法持有人(例如,偷窃移动设备的小偷;捡到丢失的移动设备但未将其返还给其法定所有人的人);获得移动设备的暂时合法保管权的短暂合法持有人(例如,如果移动设备无人看管几分钟);可能骚扰移动设备的一般恶意软件模块(例如,针对攻击特定应用但未针对特定用户的调节);靶向性恶意软件模块(例如,为了攻击特定用户而调节);和/或其它适当类型的攻击者或攻击(例如,中间人攻击者、“钓鱼”攻击、侧信道攻击等)。
本发明能够防止各种类型的攻击,例如离线攻击、运行时间攻击和/或API攻击。离线攻击可以涉及不通过设备的执行环境(例如,不通过移动设备、其CPU等为了执行代码而提供的服务)而是利用绕过手段来读取或改变值。离线攻击例如可以包括在设备断电时利用物理连接的控制器直接读取闪速存储器。运行时间攻击可以涉及通过移动设备的执行环境,然而在安全口令的期望API外部访问资产;例如,运行调试器以揭示存储器(RAM)或CPU寄存器的内容;修改执行环境执行的代码,诸如通过替换一部分代码(应用和/或OS)、重新刷新设备等。API攻击可以涉及通过由安全口令实施的期望界面来访问资产,但其意图与系统设计所假定的不同;可以安装一些API攻击而不改变运行于移动设备上的任何代码。
可以保护PIN资产免受离线攻击。例如,可以保护PIN使其不被利用安全存储器而不通过运行于移动设备上的代码的访问。SSM141可以利用内部ROT密钥以保证数据的安全,可以由平台提供该内部ROT密钥并保证安全。可以保护安全数据以免泄露以及被非法变更。SSM141可以运行于由TrustZone促成的SEE140中。安全存储器可以不存储除RAM中之外的解密数据,其仅可以由运行于SEE140中的代码访问。因此,在设备断电时,可以没有可获得的解密的安全存储器数据的任何线索。
可以保护PIN资产不受运行时间攻击。PIN值可以仅在SEE140内部获得,这样保护了其逻辑和中间数据。可以利用SPEM142向SEE140中输入PIN值;此外,除了以解密形式之外,还可以永远不产生PIN值作为输出。如果未使用控制PIN(例如,可以被安全地发送到移动设备的合法拥有者的初始PIN,例如,在购买时移动设备的封装上,或在购买时随移动设备提供的纸质文件中),可以首先由人类攻击者(例如,“持久非法持有人”攻击者或“暂时非法持有人”攻击者)将PIN值初始化为他选择的值。在登记新服务时请求正确的PIN可以是为了警示用户这样的情况,并防止如果移动设备处于PIN设定不是用户所知的一项的状态中时其它资产被收集。
可以保护PIN资产不受API攻击。PIN值可以仅通过设定该PIN值、重置该PIN值、参照输入值检查该PIN值以提供匹配或不匹配的响应的API访问,或以加密形式输出。可以仅在利用现有PIN安全地认证用户时才进行PIN的重置;由运行于SEE140中的代码执行,使得不会不可能通过公共可用接口重置PIN而无需正确输入当前设定的PIN。如上所述,可以利用控制PIN来设定初始PIN。要指出的是,PIN值通常可能容易受到蛮力猜测攻击;不过,根据本发明,PIN输入可以仅通过利用安全视频路径的SPEM142发生。因此,仅可以由通过移动设备100的触摸屏单元与移动设备100交互的人来手动进行PIN猜测。这样可以严格限制可以输入猜测的PIN的比例。一些实施方式还可以利用节流功能限制每个时间单位(例如每分钟、每小时、每天)提交的PIN尝试的数量。
可以保护口令资产免受离线攻击。例如,可以通过在SSM141促成的安全存储器中存储来保护文本凭证不受离线攻击。可以进一步保护口令资产免受运行时间攻击。例如,一旦文本凭证被输入,该文本凭证可以仅存在于SEE140内部。SEE140可以保护处理这些凭证的任何代码的逻辑和中间数据。
在一些实施方式中,除非服务证书另有陈述,可以利用本机的设备接口功能(例如屏幕键盘)输入由用户第一次输入的文本凭证,其中该文本凭证可能被可以定位成捕获这种输入的恶意软件所捕获。为了减轻这种风险,服务证书可以指出应当通过利用更安全的散布(或加扰)屏幕字母数字键盘来输入这样的细节(例如,文本或字母数字口令),其中,相对于典型的(QWERTY)键盘,字符出现在散布的或随机的位置或好象是次序混乱的。
可以保护口令资产免受API攻击。例如,可以从不从安全工作模块的逻辑来输出口令和其它用户文本凭证;仅可以向安全工作模块中输入该口令和其它用户文本凭证并在其内部使用该口令和其它用户文本凭证。
使用文本凭证可以仅受通过操作将该文本凭证并入现有TLS/SSL会话的支持,该操作可以不导致该文本凭证以明文形式退出SEE140。于是,没有从加密TLS/SSL流恢复那些凭证的明文的觉察的方式。
从理论上讲,可以令利用服务器公共密钥执行TLS握手来捕获文本凭证,服务器公共密钥的私密对应物对攻击者是已知。不过,可以通过服务器密钥所经的验证过程来阻止这种攻击;仅可以针对使用与第一次登记的口令相同的服务器的公共密钥并被批准使用安全口令服务的服务器来加密凭证,由此阻止针对移动设备用户的“钓鱼”攻击。
可以保护客户端证书资产(例如与TLS客户端证书相关联的用户私密密钥)不受离线攻击。例如,可以在SSM141促成的安全存储器中存储用户私密密钥。也可以保护客户端证书资产免受运行时间攻击,这是因为仅可以在TLS/SSL握手过程中使用用户私密密钥,该握手过程是由运行于SEE140中的TLS/SSL支持库131执行的。因此,在客户端证书数据受到保护的SEE140外部可能永不会有该客户端证书数据(例如用户的私密密钥)。
可以保护客户端证书资产免受API攻击,这是因为用户私密密钥可以不被安全代码公布的任何API功能服务。可以仅提供服务以针对TLS/SSL握手计算使用加载的私密密钥,这样不会揭露可以推论、猜测、或进行反向工程处理获得私密密钥的信息。
可以通过存储于由SSM141促成的安全存储器中,保护应用密钥(例如用于安全本地存储器的应用对称密钥)不受离线攻击。可以进一步保护应用密钥不受运行时间攻击。例如,通过利用仅可以在SEE140之内实施的加密和解密功能(这可能不适于基于服务器的实施方式),应用密钥可以用于应用数据的加密与解密。因此,SEE140外部可能从不会有应用密钥。此外,与其它安全资产相比,可以在SEE140之内本地产生应用密钥,于是,该应用密钥甚至在其初始提供期间不容易受到拦截。
可以保护应用密钥不受API攻击。提供加密与解密服务的安全口令模块可以是能够访问应用对称密钥的唯一模块。其唯一的接口可以用于利用应用密钥的加密与解密,并且它可以不支持用于以明文或加密形式输入或输出应用密钥的接口。可以与应用密钥一起使用的密码和模式可以抵抗已知的和选择的明文攻击,使得不能从接口可以发出的结果推论应用密钥。
可以通过存储在由SSM141促成的安全存储器中存储,保护与验证服务和应用相关的服务验证数据不受离线攻击。可以进一步保护服务验证数据不受运行时间攻击。例如,服务验证数据可以控制与服务ID相关联的服务提供商的授权。授权可以包括将服务ID与可以是服务ID的TLS/SSL证书的一部分的特定公共密钥以及与其本地应用相关的信息、其身份及其使用本地数据加密的权力的相关性。
服务验证数据例如可以包含:(a)服务的身份,或表示这个身份是从TLS证书获得的指示;(b)关于服务使用移动设备上的技术的权力的信息,例如,表示要支持利用特定应用密钥进行本地数据加密的指示;以及(c)类似查询的规格,或(一个或多个)状态的指示,其可以确定允许接受服务器的哪些TLS证书。例如,加强的TLS库仅可以在TLS证书是由特定发行者发行,或仅可以在TLS证书包含特定公共密钥或(一个或多个)其它适当条件下才使用TLS证书。
服务验证数据可能在完整性和真实性方面是敏感的,但在机密性方面不敏感;于是可能仅需要保护服务验证数据不受非法变更。服务验证数据可以几乎都存储在SEE140外部,并且可以通过网络(例如作为服务证书的一部分)获得或传输一些服务验证数据。不过,服务验证数据的所有消费者可以都是运行于SEE140内部的模块,这些模块可以利用硬编码的公共密钥,在使用服务验证数据之前验证该服务验证数据的真实性。可以将用于验证的公共密钥钉扎到安全工作模块的实施代码,可以通过SEE140来保护该安全工作模块。结果,可以由可能受到SEE140保护的逻辑和参考密钥资料,在使用“服务验证数据”之前检验被称为“服务验证数据”的要素组的每个要素。没有系统部件依赖于不运行于SEE140之内的服务验证数据。
可以保护服务验证数据免受API攻击。由于其不秘密,对服务验证数据的唯一威胁可能是非法变更。所有的服务验证数据仅可以被安全口令模块的部件读取;因此,可以不提供支持合法(由用户)或非法(由攻击者)变更服务验证数据的接口。
作为设备100的平台的要求,可以保护用于安全存储器的内部ROT资产不受离线攻击。可以保护内部ROT免受运行时间攻击,这是因为内部ROT仅可以由SSM141使用,其自身可以仅运行于SEE140之内。于是,内部ROT可以从不暴露于SEE140外部。
可以保护内部ROT免受API攻击,这是因为没有通往内部ROT密钥的直接接口。内部ROT密钥可以仅由SEE140之内的平台提供,安全口令模块可以不支持对内部ROT密钥的访问功能。内部ROT密钥可以仅由SSM141在SEE140内部使用。
参考图4,图4是示出了根据本发明能够安全输入PIN的终端400的示意方框图。终端400可以大致类似于图1A的移动设备100,或者可以是其它适当的设备,例如,移动手机、蜂窝电话、智能电话、PDA、平板计算机、具有触摸屏的设备、便携式或手持设备、具有触摸屏的膝上型计算机、具有触摸屏的桌面计算机或平板计算机等。终端400例如可以包括SEE140和触摸屏402。SEE140能够安全地执行代码,这可以导致触摸屏402绘制和显示加扰的PIN布局403,加扰的PIN布局403表示(例如作为图像或图像序列或视频)加扰的屏幕小键盘(或加扰的虚拟小键盘);触摸屏402例如能够从可以触摸、点击、轻敲或以其它方式从显示为触摸屏402上的加扰PIN布局403的加扰屏幕小键盘选择(一个或多个)按键的用户接收用户输入。SEE140可以进一步能够安全地执行代码,这可以导致触摸屏402显示用户选择的真实性确保图像406。出于说明的目的,并出于清晰的目的,真实性保证图像406示出为显示在加扰的PIN布局403附近或紧邻该加扰的PIN布局403的触摸屏402上。不过,在一些实施方式中,真实性保证图像406可以被显示为低于或高于加扰的PIN布局403的背景图像、带灰晕或“洗涤”图像或覆盖图像或覆盖层,或作为部分或完全与加扰的PIN布局重叠的图像。
出于说明的目的,将加扰的PIN布局403示出为10个数字的小键盘,该10个数字不是其数字次序,且不是常规小键盘中使用的次序。在一些实施方式中,可以利用其它适当的表达来示出加扰的PIN布局403,例如,示为四个(或其它数量的)彩票轮盘或赌博机轮盘,每个轮盘都能够绕其中心旋转,并在数字“0”到“9”之间旋转,由此表示四个数字的组合;每次调用加扰PIN布局403时,初始组合都被设置成随机或伪随机的值。可以使用其它适当类型的表达或选择机构。
SEE140可以包括用于安全PIN输入(RSPE)404的例程,其能够随机或伪随机地产生显示于触摸屏402上的PIN布局403,并能够识别由用户经由触摸屏402选择的屏幕上按键。
终端400可以允许用户利用屏幕小键盘(或类似的加扰屏幕键盘)安全输入数据,尤其是安全输入PIN或口令。此外,终端400可以允许利用加扰的虚拟小键盘(或加扰的虚拟键盘)结合安全视频路径(SVP)405安全输入和安全通信口令和PIN。因此,组合SVP405与显示加扰屏幕小键盘的触摸屏402可以允许安全地输入PIN,这可能对一些类型的攻击更有抵抗力。要指出的是,SVP405可用于传输加扰的PIN布局和/或真实性保证图像(或其中至少一个)。
SEE140可以允许执行代码,作为其工作的一部分,需要用户输入PIN。SEE140中运行的代码可以包括RSPE404,其可以通过由SEE140安全地执行来保护其不受特定类型的干扰。RSPE404可以产生加扰的PIN布局403,作为图像或视频,其至少包括代表可用于输入PIN的字符(例如,数字、字母数字字符、出现于标准QWERTY键盘中的字符或符号等)的图标。
PIN布局403可以包括按键图像的加扰或伪随机集合,其布局不同于标准QWERTY布局或标准小键盘布局。可以在要求用户输入并由RSPE404处理PIN的任何时候,产生加扰的PIN布局403或不同的加扰PIN布局403。
任选地,RSPE404可以包括产生真实性保证图像406的模块,可以在用户输入PIN之前向用户提供真实性保证图像406。真实性保证图像406可以包括图像、视频或文本,并且可以被用户识别(例如,可以匹配先前由用户定义为真实性保证图像的预指定图像)。
RSPE404可以产生加扰的PIN布局403和/或真实性保证图像406,使得(一个或多个)图像包括要由输入PIN的用户接受的值的表达。在用户输入PIN之前,RSPE404可以通过安全视频路径405向用户显示真实性保证图像406。用户可以从识别真实性保证图像406中的表达来推论显示的真实性,接着用户可以推论RSPE404的真实性(例如,不是怀疑该PIN布局403是由“钓鱼”攻击者或伪造网站提供的)。
RSPE可以与真实性保证图像406一起显示要由用户接受的值。
根据本发明的一些说明性实施例,RSPE404可以令触摸屏402同时显示加扰的PIN布局403和真实性保证图像406。RSPE404可以与PIN布局403和真实性保证图像406同时显示要由用户接受的值。任选地,可以为用户提供在直到用户完整输入和/或提交PIN之前的任何点放弃操作(例如PIN输入过程)的选项。
用户可以通过选择触摸屏402上通过次序打乱的方式的加扰方式显示的适当图标或按键来输入PIN,这是因为从加扰的PIN布局403的显示,用户可以看到这种图标或屏幕上的按键。选择过程导致在终端400上触发触摸事件,触摸事件传达用户在触摸屏402上触摸的位置。可以由运行于终端400上的适当代码向RSPE404提供由触摸事件传达的被触摸位置的(一个或多个)位置。因此,RSPE404可以使用其本地存储的描述加扰的PIN布局403的数据来将触摸位置映射到所选的对应图标或按键,并可以进一步将它们映射到所选的匹配符号。RSPE404可以按照用户经由加扰的屏幕小键盘选择它们的次序来输出所选符号的序列。然后,运行于终端400上的应用,尤其是运行于SEE140之内的应用,可以基于用户安全输入的PIN来执行操作(例如,登录过程;认证过程)。
本发明的一些实施例可以包括或可以利用其它适当的架构,或可以利用可能位于其它设备中的模块,其它设备例如是远程服务器和/或在移动设备外部或支付终端。在说明性实施方式中,例如,SEE140和RSPE404可以存在于远程服务器上,而不是包括在终端400内。可以使用其它适当的架构。
本发明还可以包括用于选择和/或修改真实性保证图像的方法和系统,真实性保证图像也可以称为个人安全图像(PSI)。在一些实施方式中,移动设备的用户可以从HLOS(例如,从本地仓库或“图像画廊”)选择图像,或者可以利用移动设备的摄像机捕获图像;然后可以利用安全运行于SEE之内的安全接口安全地执行一个或多个图像修改操作,由此产生真正唯一的PSI,仅有用户可以识别该PSI并且在用户产生该PSI时不能被拦截或捕获。图像修改操作例如可以包括:修改(一种或多种)颜色、亮度、暗度、对比度、饱和度、色调、光照水平;颜色替换(例如,用绿色替换蓝色);图像失真;向图像应用滤色器;或以其它方式修改图像或从其原始形式变换图像,或以其它方式修改图像的一个或多个可见性质。根据本发明,即使PSI一开始是由用户通过未必安全的GUI选择(或由用户捕获)的,用户也可以在移动设备的安全子系统(SEE)中修改PSI。
在其它实施方式中,用户可以从图像的预定义集合中选择PSI,该集合可用于在远程网站或服务器上进行选择,然后可以在本地安全地修改所选的PSI,然后可以安全地将其上载回远程网站或服务器。这样可以允许用户选择由第三方生成的预定义PSI,但也为这样的PSI带来了仅有用户知道的唯一修改。可以运行于移动设备上并可能从预定义PSI项的集合捕获PSI选择的恶意软件模块可能无法捕获由用户在SEE之内执行的(一个或多个)图像修改操作,并可能无法捕获可以从SEE向远程服务器安全传输的修改图像。
参考图5,图5是根据本发明的系统555的示意方框图,系统555包括交易服务器533和支付终端500。根据本发明,系统555可以示范安全接口接合,并且可以用于由客户利用支付卡(例如信用卡、借记卡、磁条卡、支票卡、ATM卡、芯片PIN卡、EMV卡等)向贸易商或出售商付款。
支付终端500例如可以是或可以包括移动设备、移动手机、蜂窝电话、智能电话、PDA、平板计算机、膝上型计算机、计算机、电子消费设备、具有触摸屏的设备、便携式或手持设备、非便携式或固定支付终端、销售点(PoS)终端、与收银机或与PoS终端相关联的支付终端等。
支付终端500例如可以包括触摸屏501;支付卡读取器502,能够读取通过其刷过或插入其中的支付卡;一个或多个接合指示器511;以及SEE504或其它可信的执行环境,其可以包括安全PIN输入模块(SPEM)505。出于说明的目的,支付卡读取器502被示为连接到支付终端500;但支付卡读取器可以是支付终端500的一部分,可以在支付终端500内部或嵌入其中,可以与支付终端500集成,可以在支付终端500外部(并与之关联),或可以是支付终端500的可移除(或不可移除)外加模块。进一步要指出的是,模块可以分布于多个设备之间;例如,在基于服务器的架构中,可以在远程服务器上实现SEE504。
本发明可以允许在支付终端500的触摸屏501上进行安全的PIN输入过程,这可以提供保护PIN不被攻击者捕获的安全UI544。安全UI544例如可以包括加扰的PIN键盘布局和/或认证保证图像。在支付终端500提供对(a)触摸屏501上显示的输出数据,或(b)用户(经由触摸、手势、点击、手指运动、手指滑过、手指选择等)向触摸屏501上手动输入的输入数据的保护时,安全UI544可以被视为“激活的”或“工作的”。此外或替代地,当且仅当安全UI544能够(a)安全地从SEE504接收数据以通过触摸屏501显示,或(b)从触摸屏501向SEE504中安全地传输数据时,安全UI544才可以被视为“激活的”或“工作的”。此外或替代地,当且仅当在运行于SEE504上的逻辑或代码与运行于支付卡读取器502上的逻辑或代码之间建立起双向安全通信路径,以使得安全路径受到保护不受支付终端500之内和/或支付终端500外部的任何未被授权的逻辑或实体危害其内容完整性和/或机密性时,安全UI544才可以被视为“激活的”或“工作的”。
接合指示器511例如可以包括能够以特定颜色(例如绿色或黄色)发光的发光二极管(LED)或其它照明单元。接合指示器可以位于支付卡读取器502上或系统555的其它部件上。任选地,可以将两个或更多接合指示器511结合到支付系统555中,例如,接合指示器511在支付卡读取器502上,另一接合指示器在触摸屏501上或附近。
根据本发明的一些实施例,接合指示器511可以仅在安全UI544被激活或工作时才发光;接合指示器511可以在安全UI544未激活或未工作时不发光。
根据本发明的一些实施例,接合指示器511可以在安全UI544被激活或工作时以第一颜色(例如绿色)发光;接合指示器511可以在安全UI544未激活或未工作时以第二颜色(例如红色)发光。
一旦激活了安全UI544,SPEM505就可以发送信号或命令,其令接合指示器511发光(或以第一颜色发光)。一旦安全UI544未被激活,SPEM505就可以发送信号或命令,其令接合指示器511关闭且不发光(或以第二颜色发光)。
要指出的是,可以由支付卡读取器502外部的模块或部件、和/或由SPEM505、和/或由运行于SEE之内的其它模块或逻辑来控制(或触发,或修改)接合指示器511的模式(例如发光或不发光;或以第一颜色发光或以第二颜色发光)。
接合指示器511例如可以是或可以包括LED、有机LED(OLED)、照明单元、可视信号、可听信号或声音或音频剪辑、视频剪辑或动画剪辑、图形或文本项、或其它适当指示符或信号,该指示符或信号向用户表示安全UI544被激活,从而现在用户可以安全地在支付终端500的触摸屏501上输入其PIN(或口令)。
在输入PIN时,支付终端500可以通过(一个或多个)有线和/或无线链路与交易服务器533安全地通信以验证输入的PIN或提供交易细节。在一些实施例中,任选地,可以在支付卡读取器502之内的支付卡上而非在交易服务器533处测试或验证输入的PIN。
只要安全UI544被激活,SPEM505或支付终端500之内的其它适当逻辑可以进一步工作以防止其它逻辑修改和/或捕获触摸屏501上显示的任何数据。
在安全UI544被激活时,SPEM505可以令支付卡读取器502工作或完全工作并读取支付卡。相反,在安全UI544未被激活时,SPEM505可以令支付卡读取器502不工作或避免读取通过其刷过的或插入其中的支付卡。
在安全UI544被激活时,SPEM505可以令支付终端500对接下来从支付卡读取器502到达的数据运行一个或多个功能。
一旦安全UI544不再被激活,和/或一旦触摸屏501不再显示安全界面(例如,加扰的PIN键盘),SPEM505可以令支付卡读取器502暂停工作,例如,禁止支付卡读取器502读取支付卡的能力。
一旦安全UI544不再被激活,和/或一旦触摸屏501不再显示安全界面(例如,加扰的PIN键盘),SPEM505可以令支付终端500停止在从支付卡读取器502接下来到达的数据上运行一个或多个功能。
SPEM505可以导致在例如激活安全UI544之前在支付终端500和交易服务器533之间建立安全的数据连接。如果建立了安全的数据连接,则该安全的数据连接可以从交易服务器533向SPEM505传输数据,并且该数据可以允许SPEM505在触摸屏501上绘制真实性保证图像(例如,由用户预先指定的用户可识别图像)。
在本发明的一些实施例中,可以使用支付终端500与交易服务器533之间的安全数据连接来从交易服务器533向支付终端500传输验证数据或验证证书。
SPEM505可以实施根据验证证书中包含的信息控制SPEM505功能的逻辑。例如,验证证书可以包含信息,在由SPEM505处理该信息时,例如,如果在支付终端500与支付卡读取器502之间的连接上传输的数据表示支付卡读取器502的特定身份(或特定类型),则该信息可以令SPEM505不执行PIN键盘功能的至少一部分。
要理解的是,系统支付终端500不仅仅是计算机化系统,其中LED指示器表示“安全模式”可工作,或支付卡读取器502准备好通过其刷支付卡。相反,支付终端500展示了位于安全(例如封闭)器具(例如支付卡读取器502)上的LED指示器或其它适当指示器,只要由于通过其不安全部分暂时接管其安全部分,使得可以暂时信任通常不信任的开放设备,就向易上当的用户发出指示。LED指示器不仅可以指示准备好刷支付卡,而且这种通常不安全的设备已暂时足够安全使用户可以在其上输入其PIN或口令。LED指示器可以至少在PIN输入或口令输入的语境中指示通用设备的UI的安全子系统的接管。要指出的是,LED指示器可以真实地指出支付卡读取器502与支付终端500之间的安全接合;使得即使支付终端500的HLOS受到影响,攻击者也不可能令LED指示器发光。
本文使用的术语“密码操作”例如可以包括编码、解码、签名、认证、散列和/或执行与密码学和/或数据安全相关的其它适当操作。例如,“密码操作模块”或“密码-令牌模块”可以包括编码模块和/或解码模块和/或其它适当的模块或单元。
可以利用硬件部件和/或软件模块的适当组合来实现本发明的一些实施例,硬件部件和/或软件模块例如可以包括:处理器、中央处理单元(CPU)、数字信号处理器(DSP)、单核或多核处理器、处理内核、集成电路(IC)、逻辑单元、控制器、缓存、累积器、寄存器、记忆单元、存储单元、输入单元(例如键盘、小键盘、触摸屏、指示笔、物理按钮、麦克风、屏幕接口)、输出单元(例如屏幕、触摸屏、显示单元、扬声器、耳机)、有线和/或无线收发器、有线和/或无线通信链路或网络(例如,根据IEEE802.11和/或IEEE802.16和/或其它通信标准或协议)、网元(例如网络接口卡(NIC)、网络适配器、调制调解器、路由器、集线器、交换机)、电源、操作系统(OS)、驱动器、应用和/或其它适当部件。
可以将本发明的一些实施例实现为物品或存储物品(例如CD或DVD或基于“云”的远程存储器),其可以存储代码或指令或程序,在由计算机或计算设备或其它机器执行时,令这样的机器执行根据本发明的方法。
通过利用软件应用或“应用”可以实现本发明的一些实施例,可以从网站或从应用商店(或“应用商店”或在线市场)下载或购买或获得该软件应用。
本文参考本发明的一个或多个实施例所描述的功能、操作、部件和/或特征可以与本文参考本发明的一个或多个其它实施例所描述的一个或多个其它功能、操作、部件和/或特征组合,或可以结合它们使用。
尽管本文已经例示和描述了本发明的特定特征,但本领域技术人员可以想到许多修改、替换、变化和等同形式。因此,权利要求意在覆盖所有的这样的修改、替换、变化和等同形式。