用于白盒装置绑定的系统和方法
1.相关申请交叉引用
2.本技术是于2020年5月19日提交的第63/027,208号美国临时申请的pct申请并且要求其优先权,所述美国临时申请出于所有目的而以全文引用的方式并入本文中。
背景技术:3.在数字版权管理(drm)应用程序的背景下引入白盒密码术[4][5]。在情境中,提供商提供使用户访问特定内容的软件程序。内容可以由提供商以加密形式发出,并且用户的软件配置有对应解密密钥,使得具有软件程序的每一用户能够对内容进行解密。在此背景下,解密密钥对应于用户已付费的内容(例如,用户购买的流媒体包)。应注意,许多用户通常具有配置有相同解密密钥的软件,因为他们为相同内容(例如,相同程序包)付费。
[0004]
然而,已获得包括解密密钥的软件的恶意用户可以与其他用户共享drm应用程序。此外,恶意用户可能试图制作大量软件副本并在黑市上出售它们。为了实现这一点,恶意用户可能试图从其程序中提取解密密钥,然后与其他用户共享该密钥。恶意用户还可能试图简单地复制其上嵌入有密钥的完整软件,从而执行代码提升攻击。为了实现这些目标,恶意用户可以检验软件代码并收集输入/输出对。应注意,恶意用户可以完全控制执行环境,因为软件在他们自身的装置上运行。
[0005]
当前存在使恶意用户难以通过网络发送其程序的方法(例如,不可压缩特性[6])。另外,当前方法试图使白盒程序可跟踪。例如,通过对程序加水印,使得如果找到程序的副本(例如,在黑市上),则可以标识程序的原始所有者及其盗版企图。泄漏者跟踪方案的实例如下给出:[3][6]。
[0006]
然而,此类方法并不阻止恶意用户使用代码提升攻击来复制代码和/或密钥。
[0007]
本公开的实施例单独地以及共同地解决此问题和其它问题。
技术实现要素:[0008]
实施例涉及用于白盒装置绑定的方法和系统。
[0009]
本发明的一个实施例可涉及一种方法,包括:由用户装置从后端服务器计算机接收已加密消息,已加密消息是由后端服务器计算机利用主秘密密钥或从主秘密密钥导出的密钥进行加密的消息;由用户装置使用安全元件利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息;由用户装置使用白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,已认证密钥是由后端服务器计算机且至少基于安全元件公钥而认证的,并且其中白盒还存储主秘密密钥或从主秘密密钥导出的密钥;由用户装置使用白盒使用安全元件公钥从带签名的已加密消息以密码方式恢复已加密消息;以及由用户装置使用白盒使用白盒中的主秘密密钥或从主秘密密钥导出的密钥对已加密消息进行解密以获得消息。
[0010]
本发明的另一实施例可涉及一种用户装置,包括:处理器;以及耦合到处理器的计算机可读介质,所述计算机可读介质包括可由处理器执行以用于实施方法的代码,所述方
法包括:从后端服务器计算机接收已加密消息,已加密消息是由后端服务器计算机利用主秘密密钥或从主秘密密钥导出的密钥进行加密的消息;使用安全元件利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息;使用白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,已认证密钥是由后端服务器计算机认证的;使用白盒使用安全元件公钥以密码方式从带签名的已加密消息恢复已加密消息;以及使用白盒使用主秘密密钥或从主秘密密钥导出的密钥对已加密消息进行解密以获得消息。
[0011]
本发明的另一实施例可涉及一种方法,包括:由后端服务器计算机从用户装置接收包括安全元件公钥的登记消息,所述用户装置已安装由后端服务器计算机编译的应用程序;由后端服务器计算机利用后端服务器计算机私钥对安全元件公钥进行签名以形成已认证密钥;由后端服务器计算机将已认证密钥提供到用户装置;由后端服务器计算机获得包括要提供到安装在用户装置上的应用程序的内容的消息;由后端服务器计算机利用主秘密密钥或从主秘密密钥导出的密钥对消息进行加密以获得已加密消息;以及由后端服务器计算机将已加密消息提供到用户装置,其中用户装置使用安全元件利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息,使用应用程序中的白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,使用白盒使用安全元件公钥从带签名的已加密消息以密码方式恢复已加密消息,并且使用白盒使用主秘密密钥或从主秘密密钥导出的密钥对已加密消息进行解密以获得消息。
[0012]
有关本发明的实施例的更多详细信息可见于具体实施方式和附图。
附图说明
[0013]
图1示出了示出根据本发明的实施例的白盒装置绑定系统的框图。
[0014]
图2示出了示出根据本发明的实施例的用户装置的框图。
[0015]
图3示出了根据本发明的实施例的绑定和安全消息递送过程。
[0016]
图4示出了根据本发明的实施例的替代绑定和安全消息递送过程的第二过程的第一部分。
[0017]
图5示出了根据本发明的实施例的替代绑定和安全消息传递过程的第二过程的第二部分。
具体实施方式
[0018]
在论述本公开的实施例之前,可以进一步详细描述一些术语。
[0019]“用户”可以包括个人。在一些实施例中,用户可以与一个或多个个人账户和/或移动装置相关联。在一些实施例中,用户也可以被称为持卡人、账户持有人或消费者。
[0020]“用户装置”可以是可由用户操作的装置。用户装置的实例可以包括移动电话、智能手机、卡、个人数字助理(pda)、膝上型计算机、台式计算机、服务器计算机、车辆(诸如汽车)、精简客户端装置、平板式pc,等等。此外,用户装置可以是任何类型的可穿戴技术装置,例如手表、耳机、眼镜等。用户装置可包括能够处理用户输入的一个或多个处理器。用户装置还可包括用于接收用户输入的一个或多个输入传感器。如本领域中已知的,存在能够检测用户输入的多种输入传感器,诸如加速度计、相机、麦克风等。由输入传感器获得的用户输入可以来自多种数据输入类型,包括但不限于音频数据、视觉数据或生物特征数据。用户
装置可以包括用户可以操作的任何电子装置,所述电子装置还可以提供与网络的远程通信能力。远程通信能力的实例包括使用移动电话(无线)网络、无线数据网络(例如,3g、4g或类似网络)、wi-fi、wi-max,或者可以提供对网络(诸如互联网或专用网络)的访问的任何其它通信介质。
[0021]“应用程序”可以是可用于特定目的的计算机程序。应用程序可从应用程序商店获得。应用程序可安装在装置上。应用程序的实例包括交互应用程序、视频流应用程序、数据传送应用程序、网页访问应用程序、社交媒体应用程序、文字处理器、电子表格程序、网页浏览器、电子邮件客户端、视频游戏、照片编辑器等。
[0022]“白盒”可包括其内部可被查看的子系统。白盒可以是包括在应用程序中的软件。白盒可以被查看,但不易被更改。
[0023]“公钥”可包括可公开利用的密码密钥。公钥可由任何人获得并用于对专供特定接收方使用的消息进行加密,使得只有通过使用仅接收方知道的第二密钥(例如,秘密密钥)才能对已加密消息进行译码。公钥可用于验证由与公钥相关联的秘密密钥作出的签名。
[0024]“秘密密钥”可包括可由装置秘密利用的密码密钥。秘密密钥可以保存在单个装置的内部。秘密密钥可能不会提供到其它装置。秘密密钥可用于对已加密消息进行解密,所述已加密消息是利用与秘密密钥相关联的公钥进行加密的。秘密密钥可用于对消息进行签名,从而形成数字签名。数字签名可由与秘密密钥相关联的公钥来验证。
[0025]“主秘密密钥”可包括对称密码密钥。主秘密密钥可用于在两个知道(即,已存储)主秘密密钥的装置之间创建安全通信信道。
[0026]“安全元件”可包括安全硬件或软件元件。安全元件可被保护以免受未授权访问,且可安全地运行过程。安全元件可存储机密和密码数据。安全元件可以是防篡改硬件平台,例如装置上的芯片。安全元件可以是防篡改软件程序,例如虚拟或模仿环境(例如,主机卡模仿(hce)等)。
[0027]“交互”可以包括互惠作用或影响。“交互”可以包括各方、各装置和/或各实体之间的通信、联系或交换。示例交互包括两方之间的交易和两个装置之间的数据交换。在一些实施例中,交互可以包括用户请求访问安全数据、安全网页、安全位置等。在其它实施例中,交互可以包括支付交易,在所述支付交易中,两个装置可以交互以促进支付。
[0028]“交互数据”可以包括与交互相关的数据和/或在交互期间记录的数据。在一些实施例中,交互数据可以是网络数据的交易数据。交易数据可以包括具有数据值的多个数据元素。
[0029]“密码”可以包括一段隐晦的文本,诸如加密的文本。密码可以通过用加密密钥(诸如对称加密密钥)对输入数据进行加密来形成。在一些实施例中,密码是可逆的,使得可以使用相同的对称密钥来获得用于形成密码的输入以执行解密过程。在一些实施例中,如果输入数据是使用公钥/私钥对的私钥加密的,则密码也可以是数字签名。可以用公钥/私钥对的公钥来验证数字签名。在一些实施例中,密码可以包括动态卡验证值(dcvv)。
[0030]
在本发明的实施例中,可以任何合适的方式生成密码。在一些实施例中,密码的输入可以包括数据元素,其包括账户标识符,例如主账号以及计数器、一天中的时间或交互价值等可变数据元素。可使用例如使用任何合适的加密密钥的des、三重des或aes的加密过程来包括此类数据。加密密钥也可以是唯一导出密钥或udk,并且可以基于例如账号的装置专
用信息而生成,可以使用主导出密钥(mdk)对所述装置专用信息进行加密。可以由远程计算机等另一计算机通过如下方式验证密码:将密码解密为解密后内容并用其它数据(例如,存储在文件中的账号)来验证所述解密后内容,或者对其它输入进行加密并将加密后结果与所述密码进行比较。
[0031]“资源提供商”可以是可提供例如商品、服务、信息和/或访问之类的资源的实体。资源提供商的实例包括商家、数据提供商、交通部门、政府实体、场地和住宅运营商等。
[0032]
术语“验证”及其派生词可以指利用信息来确定潜在的主体在一组给定的情况下是否有效的过程。验证可以包括任何信息比较以确保某些数据或信息是正确的、有效的、准确的、合法的和/或信誉良好的。
[0033]“授权请求消息”可以是请求对交互授权的电子消息。在一些实施例中,所述消息被发送到交易处理计算机和/或支付卡的发行方,以请求对交易进行授权。根据一些实施例,授权请求消息可遵守国际标准化组织(iso)8583,它是针对交换与用户使用支付装置或支付账户进行的支付相关联的电子交易信息的系统的标准。授权请求消息可以包括可以与支付装置或支付账户相关联的发行方账户标识符。授权请求消息还可以包括与“标识信息”对应的额外数据元素,包括(只作为实例):服务代码、卡验证值(cvv)、动态卡验证值(dcvv)、主账号或“账号”(pan)、支付令牌、用户名、到期日期等等。授权请求消息还可以包括“交易信息”,例如与当前交易相关联的任何信息,例如交易值、商家标识符、商家位置、收单方银行标识号(bin)、卡片接受器id、标识正购买的项目的信息等,以及可以用于确定是否标识和/或授权交易的任何其它信息。
[0034]“授权响应消息”可以是响应于授权请求的消息。在一些情况下,授权响应消息可以是由发行金融机构或交易处理计算机生成的对授权请求消息的电子消息应答。仅例如,授权响应消息可以包括以下状态指示符中的一个或多个:批准
‑‑
交易被批准;拒绝
‑‑
交易未被批准;或呼叫中心
‑‑
响应未决的更多信息,商家必须呼叫免费授权电话号码。授权响应消息还可以包括授权代码,所述授权代码可以是信用卡发行银行响应于电子消息中的授权请求消息(直接地或者通过交易处理计算机)返回给商家的访问装置(例如pos设备)的指示对交易的批准的代码。所述代码可充当授权的证据。
[0035]“授权实体”可以是授权请求的实体。授权实体的实例可以是发行方、政府机构、文件存储库、访问管理员等。授权实体可以操作授权实体计算机。“发行方”可以指发行并任选地维护用户账户的商业实体(例如,银行)。发行方还可以向消费者,或在一些实施例中向便携式装置发行存储在用户装置上的支付凭证,所述用户装置例如蜂窝式电话、智能卡、平板计算机或膝上型计算机。
[0036]“存储器”可以是可存储电子数据的任何合适的一个或多个装置。合适的存储器可包括非瞬态计算机可读介质,其存储可由处理器执行以实现所要方法的指令。存储器的实例可以包括一个或多个存储器芯片、磁盘驱动器等。此类存储器可使用任何合适的电、光和/或磁操作模式来操作。
[0037]“处理器”可以包括处理某事的装置。在一些实施例中,处理器可以包括任何合适的一个或多个数据计算装置。处理器可以包括一起工作以实现期望的功能的一个或多个微处理器。处理器可以包括cpu,所述cpu包括至少一个高速数据处理器,所述高速数据处理器足以执行用于执行用户和/或系统生成的请求的程序成分。cpu可以是微处理器,诸如amd的
athlon、duron和/或opteron;ibm和/或motorola的powerpc;ibm和sony的cell处理器;intel的celeron、itanium、pentium、xeon和/或xscale;和/或类似的处理器。
[0038]“服务器计算机”可以包括功能强大的计算机或计算机集群。例如,服务器计算机可以是大型主机、小型计算机集群,或者像单元一样工作的一组服务器。在一个实例中,服务器计算机可以是耦合到web服务器的数据库服务器。服务器计算机可以包括一个或多个计算装置,并且可以使用各种计算结构、布置和编译中的任一种来服务来自一个或多个客户端计算机的请求。
[0039]
本公开的实施例提供用于数字版权管理(drm)应用程序和交互应用程序两者的白盒装置绑定。然而,应理解,实施例提供用于其它类型的应用程序的白盒装置绑定。
[0040]
白盒密码术可用于安全硬件可能受限且因此大部分程序可在软件中实施的设置。在此类设置中,可利用装置绑定来确保程序的敏感部分无法被复制且无法在其它环境中运行(例如,如在代码提升攻击中进行)。
[0041]
实施例允许以高效方式分发白盒应用程序。可信的后端服务器计算机可以编译一次白盒应用程序(例如,包括白盒的应用程序),并通过应用程序商店分发应用程序。所有用户都可以下载相同的程序,而不是后端服务器计算机需要针对不同用户或用户群组编译不同应用程序。但是,每个程序需要被配置成仅在一个特定装置上工作,以减轻代码提升攻击。取决于应用程序,每个应用程序可能还需要使用不同的解密密钥。例如,如果应用程序是交互应用程序,则每个用户在其安装的应用程序中可能需要不同解密密钥,使得一个用户无法解密另一个用户的内容。本文的实施例展现了如何使用白盒密码术和不同模糊化技术来实现这一点。
[0042]
此外,对于交互应用程序,白盒密码术可以起到与基于drm的应用程序(例如,视频流应用程序等)中略微不同的目的。有多种不同类型的用户装置(例如,移动电话)可供用户使用。有了这种多样性,该硬件内发生很大变化。许多用户装置具有安全元件(se),其可用于执行敏感密码任务。然而,这些se提供有限的功能性,并且并非在所有电话上都可用。为了支持在没有可信硬件的手机上进行移动交互,引入了“主机卡模仿”(hce)。无论包括在用户装置中的安全硬件和/或软件的类型如何,都可以利用实施例。
[0043]
移动交互hce应用程序存储用户相关密钥(例如,有限使用密钥(luk))。这些密钥以加密形式存储。每当用户希望执行交互时,用户的用户装置就采取已加密有限使用密钥,对其进行解密并使用它来生成密码。密码用于认证用户的用户装置并使得交互能够继续。此处,实施例可以确保只有持有这些有限使用密钥的用户装置能够对它们进行解密,并且没有任何其它装置能够使用它们执行交互。白盒密码术可用于提供保护,防止已危及用户的用户装置的对手(例如,以恶意软件的形式)。
[0044]
恶意软件可能在用户不知道其的情况下出现在用户的用户装置上。恶意软件可能访问对有限使用密钥进行解密的程序代码。在没有进一步保护的情况下,对手可能恢复解密密钥,然后对有限使用密钥进行解密。对手还可能尝试通过简单地复制具有已加密有限使用密钥的整个应用程序并在自己的装置上运行该程序来执行代码提升攻击。应注意,在最差情况情境中,对手可能获得对用户装置的根访问,并且可能能够执行用户的交互应用程序。
[0045]
为了减轻上文所描述的攻击,实施例可以使用白盒密码术保护密码密钥,以及将
应用程序绑定到用户装置的安全元件。白盒密码术可以防止对手简单地读取解密密钥的值,复制整个应用程序并在他们选择的装置上运行它,和/或破坏已加密的有限使用密钥的机密性。应注意,在实施例中使用的有限使用密钥是用户连接的,并且应该只有一个确定的用户能够解密和使用它们。因此,在本发明的实施例中,每个交互应用程序可以配置有特定于每个用户的不同白盒解密密钥。
[0046]
如上文所论述,在drm和交互设置两者中,代码提升攻击都是关注点。为了减轻这些攻击,实施例可以确保白盒程序仅可在预期装置上运行。为此,实施例可以使用某种形式的装置绑定。
[0047]
在drm设置中,装置绑定确保恶意用户无法获取他们的白盒程序并将其分发给他人以供他们在未注册和/或付费访问应用程序的情况下使用。此处,由于装置绑定,白盒程序可仅在用户注册的装置上可使用。
[0048]
在drm设置中,已加密数据数据可以对于所有用户相同。相比之下,在根据实施例的交互中,每个用户将具有对他们的白盒程序的不同输入(与白盒程序相关联的有限使用密钥)。因此,在此情况下,装置绑定可以确保白盒程序可以1)仅绑定到所述装置,并且可以2)仅在特定于该用户的输入上运行。此额外特性可被称为“认证绑定”,其中一个目标是将移动应用程序绑定到特定用户。这可以确保只有有限使用密钥的所有者能够解密和使用它们。
[0049]
已在[1][2]中研究了移动交互应用的使用情况的白盒密码术的安全概念。中心概念依赖于(装置)硬件绑定的这些特性。然而,这和其它先前工作仅提供需要针对每个用户创建特定白盒应用程序的方案。生成和分发这些用户特定的白盒的实用性可能具有严重限制。实施例通过引入在分发适合于所有用户的单个全局白盒时提供装置和认证绑定的方案来改进这一点。
[0050]
图1示出了根据本公开的实施例的系统。所述系统包括用户装置102,其包括包括白盒104b的应用程序104a。用户装置102还可包括安全元件108。所述系统还可包括后端服务器计算机110(也被称为后端或be)和应用程序商店106。应用程序商店106可以在应用程序服务器计算机上运行。
[0051]
用户装置102可以与应用程序商店106和后端服务器计算机110进行操作性通信。后端服务器计算机110可以与用户装置102和应用程序商店106进行操作性通信。应用程序商店106可以与用户装置102和后端服务器计算机110进行操作性通信。
[0052]
为了简化说明,图1中示出一定数量的组件。然而,应当理解,本发明的实施例可以包括多于一个每种组件。此外,本发明的一些实施例可以包括比图1中所示的所有组件少或多的组件。
[0053]
至少图1中的装置之间的消息可使用安全通信协议来发送,所述安全通信协议例如但不限于:文件传输协议(ftp);超文本传输协议(http);安全超文本传输协议(https);ssl;iso(例如,iso 8583)等。通信网络可以包括以下中的任一个和/或组合:直接互连;互联网;局域网(lan);城域网(man);作为互联网上节点的运行任务(omni);安全定制连接;广域网(wan);无线网络(例如,采用例如但不限于无线应用协议(wap)、i-模式等的协议);等等。通信网络可以使用任何合适的通信协议以生成一个或多个安全通信信道。在一些实例中,通信信道可以包括安全通信信道,安全通信信道可以任何已知方式建立,例如通过使用
相互认证和会话密钥,以及建立安全套接层(ssl)会话。
[0054]
用户装置102可以包括例如移动装置。用户装置102可以与应用程序商店106通信以下载然后安装应用程序(例如,包括白盒104b的应用程序104a)。用户装置102还可包括安全元件108,其可以防止恶意篡改。安全元件108可以创建密码密钥并执行密码操作。应用程序104a可以是包括白盒104b的应用程序。例如,应用程序104a可以是交互应用程序、流媒体应用程序、通信应用程序、访问应用程序等。
[0055]
应用程序商店106可以托管一个或多个应用程序以供用户装置102下载。在一些实施例中,应用程序商店106可包括一个或多个服务器计算机。在其它实施例中,应用程序商店106可以是云存储系统。应用程序商店106可以在请求后将应用程序提供到用户装置102。
[0056]
后端服务器计算机110可以创建应用程序和白盒。例如,后端服务器计算机110可以利用合适的密码密钥编译白盒,如本文中所描述。后端服务器计算机110可包括处理器和耦合到处理器的计算机可读介质。计算机可读介质可包括可由处理器执行以执行方法的代码,所述方法包括:由后端服务器计算机获得包括要提供到安装在用户装置上的应用程序的内容的消息;由后端服务器计算机利用主秘密密钥或从主秘密密钥导出的密钥对消息进行加密以获得已加密消息;以及
[0057]
由后端服务器计算机将已加密消息提供到用户装置,其中用户装置使用安全元件利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息,使用应用程序中的白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,使用白盒使用安全元件公钥从带签名的已加密消息以密码方式恢复已加密消息,并且使用白盒使用主秘密密钥或从主秘密密钥导出的密钥对已加密消息进行解密以获得消息。
[0058]
在从应用程序商店106获得应用程序104a之后,用户装置102可以向编译应用程序104a的后端服务器计算机110登记下载的应用程序。例如,用户装置102可以将由安全元件108生成的安全元件公钥和/或用户标识符提供到后端服务器计算机110以用于登记。
[0059]
一旦登记,后端服务器计算机110就可以将内容提供到用户装置102上的应用程序104a。例如,内容可以包括视频、图像、有限使用密钥和/或由应用程序104a利用的任何数据。
[0060]
如上文所指出,架构可以包括以下三方:后端服务器计算机(be)110、应用程序商店106和由用户操作的用户装置102。用户装置102可以是具有安全元件(se)的电话。(pbe,sbe)表示在后端服务器计算机110处生成且分别被称为服务器计算机公钥和服务器计算机秘密密钥的公钥/秘密密钥(例如,私钥)对。(pse,sse)表示在用户装置102的安全元件108上生成且分别被称为安全元件公钥和安全元件秘密密钥的公钥/秘密密钥对。
[0061]
图1中的计算机可以执行各种密码函数。例如,后端服务器计算机110可以执行使用服务器计算机秘密密钥对值进行签名的signbe函数。后端服务器计算机110还可以执行基于服务器计算机公钥来恢复带签名消息的消息恢复算法recbe。用户装置102上的安全元件108可以执行使用安全元件秘密密钥对值进行签名的signse函数。安全元件108还可以执行基于安全元件公钥来恢复带签名消息的消息恢复算法recse。两种消息恢复算法都可以在白盒程序上运行。
[0062]
{x}k可以表示利用密钥k进行加密的值x。{x}k表示利用密钥k进行签名的值x。dec[k]表示其上硬编码有密钥k的算法。comp表示用于白盒程序的编译算法。更确切地说,comp
以(对称)主秘密密钥msk和公钥pk作为输入,并返回其中嵌入有两个密钥的白盒程序:wb
←
$
comp(msk,pk)。此编译算法可以由后端服务器计算机110安全地运行。
[0063]
图2示出了根据实施例的用户装置200的框图。示例性用户装置200可以包括处理器204。处理器204可以耦合到存储器202、网络接口206、计算机可读介质208和安全元件210。计算机可读介质208可以包括具有白盒208b的应用程序208a。
[0064]
存储器202可以用于存储数据和代码。存储器202可以在内部或在外部耦合到处理器204(例如,基于云的数据存储装置),并且可以包括易失性和/或非易失性存储器(诸如ram、dram、rom、闪存存储器或任何其它合适的存储器装置)的任何组合。例如,存储器202可以存储密码密钥、交互数据、用户标识符等。
[0065]
计算机可读介质208可包括可由处理器204执行以用于执行方法的代码,所述方法包括:由用户装置从后端服务器计算机接收已加密消息,已加密消息是由后端服务器计算机利用主秘密密钥或从主秘密密钥导出的密钥进行加密的消息;由用户装置使用安全元件利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息;由用户装置使用白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,已认证密钥是由后端服务器计算机且至少基于安全元件公钥而认证的,并且其中白盒还存储主秘密密钥或从主秘密密钥导出的密钥;由用户装置使用白盒使用安全元件公钥从带签名的已加密消息以密码方式恢复已加密消息;以及由用户装置使用白盒使用白盒中的主秘密密钥或从主秘密密钥导出的密钥对已加密消息进行解密以获得消息。
[0066]
应用程序208a可包括可由处理器204执行以用于实行特定任务的代码或软件。例如,如果应用程序208a是交互应用程序,则应用程序208a可包括可由处理器204执行以用于促进交互,特别是用于生成密码,的代码或软件。如果应用程序208a是视频流应用程序,则应用程序208a可包括可由处理器204执行以用于获得视频内容并将视频内容显示给用户装置200的用户的代码或软件。
[0067]
白盒208b可包括可由处理器204执行以用于执行密码操作的代码或软件。白盒208b与处理器204结合可以从带签名的数据以密码方式恢复数据,以及使用密码密钥对数据进行解密。例如,白盒208b与处理器204结合可以从带签名的安全元件公钥以密码方式恢复安全元件公钥。如果带签名的安全元件公钥是利用服务器计算机秘密密钥而签名的,则白盒208b与处理器204结合可以使用服务器计算机公钥从带签名的安全元件公钥以密码方式恢复安全元件公钥,所述服务器计算机公钥对应于用于对数据进行签名的服务器计算机秘密密钥。白盒208b与处理器204结合可以使用公钥从带签名的数据以密码方式恢复数据,所述公钥对应于用于使用消息可恢复签名过程对数据进行签名的秘密密钥。关于消息恢复的另外细节可见于[7]和[8]中,其出于所有目的以全文引用的方式并入本文中。
[0068]
白盒208b与处理器204结合可以从带签名的已加密消息以密码方式恢复已加密消息。例如,已加密消息可以由安全元件210使用安全元件秘密密钥来签名。然后,白盒208b与处理器204结合可以使用对应于安全元件秘密密钥的安全元件公钥从带签名的已加密消息恢复已加密消息。
[0069]
白盒208b与处理器204结合还可以对已加密消息进行解密。白盒208b可以包括主秘密密钥,其由后端服务器计算机编译到白盒208b中。白盒208b与处理器204结合可以使用主秘密密钥对已加密消息进行解密以获得消息。
[0070]
网络接口206可以包括可允许用户装置200与外部计算机通信的接口。网络接口206可以使得用户装置200能够将数据传送到另一装置(例如,应用程序商店、后端服务器计算机等)并从另一装置传送数据。网络接口206的一些实例可以包括调制解调器、物理网络接口(例如以太网卡或其它网络接口卡(nic))、虚拟网络接口、通信端口、个人计算机存储卡国际协会(pcmcia)插槽和卡,等等。由网络接口206启用的无线协议可以包括wi-fi
tm
。经由网络接口206传送的数据可以呈信号的形式,所述信号可以是电信号、电磁信号、光信号,或者能够由外部通信接口接收的任何其它信号(统称为“电子信号”或“电子消息”)。可以包括数据或指令的这些电子消息可以经由通信路径或信道在网络接口206与其它装置之间提供。如上所述,可以使用任何合适的通信路径或信道,诸如电线或电缆、光纤、电话线、蜂窝链路、射频(rf)链路、wan或lan网络、互联网,或任何其他合适的介质。
[0071]
安全元件210可以包括安全硬件组件和/或安全软件组件。可保护安全元件210免受未授权访问。例如,安全元件可以是防篡改硬件平台,例如装置上的芯片,或者可以是防篡改软件程序,例如虚拟或模仿环境。
[0072]
安全元件210可以在本地生成密码密钥对。例如,安全元件210可以生成安全元件公钥和安全元件秘密密钥。安全元件210还可以生成用户标识符。此外,安全元件210可以使用消息可恢复签名过程对数据进行签名。例如,安全元件210可以利用安全元件私钥对已加密消息进行签名以获得带签名的已加密消息,然后可以将所述带签名的已加密消息提供到白盒208b。
[0073]
实施例可以使用本文中所描述的系统和设备来至少将白盒绑定到装置。图3-5描述了此类方法的一些实例。在一些实施例中,用户装置306、406和506可以分别包括图1和2的用户装置102或用户装置200。
[0074]
图3示出了根据实施例的绑定和安全消息递送过程方法的流程图。图3中所示的方法将在用于数字版权管理的装置绑定的上下文中描述。然而,应当理解,本发明可以适用于其他情况。
[0075]
如本文中所论述,实施例可以包括其中后端服务器计算机可针对安全应用程序(例如,drm应用程序)编译一次白盒程序并将安全应用程序存储在应用程序商店304上的过程。然后,每一用户(例如,选择下载的每个用户)可以将相同的安全应用程序从应用程序商店304下载到他们的用户装置(例如,用户装置306)。这样,后端服务器计算机302不需要为了安全而针对每个新用户编译新白盒。后端服务器计算机302仅需要将已加密消息(例如,内容)提供给每个用户。
[0076]
步骤320-326可以包括在将安全应用程序提供到应用程序商店304之前由后端服务器计算机302执行的设置阶段。
[0077]
在步骤320,后端服务器计算机302可以生成服务器计算机公钥(pbe)和服务器计算机秘密密钥(sbe)。服务器计算机公钥和服务器计算机秘密密钥可以是密码密钥对。在一些实施例中,后端服务器计算机302可以具有先前生成的服务器计算机公钥和服务器计算机秘密密钥。然后,后端服务器计算机302可以从安全存储装置检索服务器计算机公钥和服务器计算机秘密密钥。
[0078]
在步骤322,在生成服务器计算机公钥/秘密密钥对之后,后端服务器计算机302可以生成主秘密密钥(msk)。主秘密密钥可以是对称密钥。后端服务器计算机302可以以能够
创建对称密码密钥的任何合适的方式生成主秘密密钥。
[0079]
在步骤324,在生成主秘密密钥之后,后端服务器计算机302可以编译应用程序。例如,后端服务器计算机302编译包括白盒的未编译应用程序,其中服务器计算机公钥和主秘密密钥嵌入到白盒程序中(例如,wb
←
$
comp(msk,pbe))。在一些实施例中,后端服务器计算机302可以获得未编译的应用程序以进行编译。例如,后端服务器计算机302可以从数据库、工作场所计算机等获得未编译的应用程序。在获得未编译的应用程序之后,后端服务器计算机可以使用编译器、到应用程序中的主秘密密钥和服务器计算机公钥来编译未编译的应用程序。编译应用程序可以包括将可以是人类可读的应用程序源代码转换为可以是计算机可执行的机器代码。在一些实施例中,可以以这样的方式编译应用程序:使得服务器计算机公钥和主秘密密钥在应用程序的白盒部分内被模糊化。
[0080]
作为说明性实例,应用程序可以是基于drm的应用程序。应用程序可以是视频流应用程序,其中当应用程序安装在用户装置306上时,用户可以在该应用程序中选择视频,然后从后端服务器计算机302接收所选择的视频。
[0081]
在步骤326,在编译包括白盒的应用程序之后,后端服务器计算机302可以将应用程序提供到应用程序商店304。
[0082]
步骤328-334可以包括在正试图下载应用程序的用户装置306与应用程序商店304之间执行的下载阶段。
[0083]
在步骤328,用户装置306(例如,使用用户装置306的处理器,例如图2中所示的处理器204)生成请求下载应用程序的下载请求消息。下载请求消息可以请求用户装置306的用户所选择的应用程序。在一些实施例中,下载请求消息可以包括用户装置标识符。
[0084]
在步骤330,在生成下载请求消息之后,用户装置306可以将下载请求消息提供到应用程序商店304。
[0085]
在步骤332,在接收到下载请求消息之后,应用程序商店304可以处理下载请求。例如,应用程序商店304可以确定用户装置306是否有资格接收安全应用程序。例如,应用程序商店304可以将用户装置标识符与包括多个用户装置标识符的数据库进行比较。如果用户装置标识符与所存储的用户装置标识符匹配,则应用程序商店304可以将安全应用程序提供到用户装置306。
[0086]
在步骤334,在确定将应用程序提供到用户装置306之后,应用程序商店304可以响应于下载请求消息而将应用程序提供到用户装置306。
[0087]
步骤336-366可以包括应用程序初始化和安全消息预配阶段。
[0088]
在步骤336,在接收到应用程序之后,用户装置306可以安装该应用程序作为应用程序310。安装应用程序可以包括使应用程序准备好执行。应用程序的安装可以由用户装置306以任何合适的方式执行。在一些实施例中,安装可以涉及应用程序的代码,所述代码从(从应用程序商店304接收的)安装文件复制/生成到用户装置306上的新文件以供操作系统更容易地访问,从而创建必要的目录,注册环境变量,提供用于卸载的单独程序等。
[0089]
在安装应用程序310之后,用户装置306可以向后端服务器计算机302登记应用程序310。
[0090]
在步骤338,用户装置306上的安全元件308可以生成安全元件公钥(pse)和安全元件秘密密钥(sse)。在一些实施例中,用户装置306可以提示安全元件308生成安全元件公钥
(pse)和安全元件秘密密钥(sse)。安全元件308可以生成安全元件公钥(pse)和安全元件秘密密钥(sse),使得它们对于新安装的应用程序(例如,应用程序310)是唯一的。每个不同的应用程序可以与不同的安全元件公钥/秘密密钥对相关联。
[0091]
在步骤340,在生成安全元件公钥/秘密密钥对之后,安全元件308(或在一些实施例中,用户装置306)可以生成登记请求消息。登记请求消息可以包括安全元件公钥。在一些实施例中,登记请求消息还可包括用户装置标识符。
[0092]
在步骤342,安全元件308可以将登记请求消息提供到用户装置306的处理器(例如,图2中的元件204)。在一些实施例中,安全元件308可以将安全元件公钥提供到用户装置306的在安全元件301外部的处理器。用户装置306,例如用户装置306的处理器,接着可以生成包括安全元件公钥的登记请求消息。
[0093]
在步骤344,用户装置306可以将具有安全元件公钥的登记请求消息提供到后端服务器计算机302。后端服务器302的地址(例如,ip地址)可能已经提供于应用程序310中。
[0094]
一旦后端服务器计算机302接收到登记请求消息,后端服务器计算机302就可以登记安装在包括安全元件308的用户装置306上的应用程序310。
[0095]
在步骤346,在接收到登记请求消息之后,后端服务器计算机302可以对安全元件公钥进行签名。后端服务器计算机302可以利用(在步骤320生成的)服务器计算机秘密密钥对安全元件公钥进行签名。利用服务器计算机秘密密钥对安全元件公钥进行签名可以被称为使得对已认证密钥进行编码。确切地说,后端服务器计算机302可以执行{pse}
sbe
←
(signbe(sbe,pse,)。
[0096]
后端服务器计算机302可以使用消息可恢复签名过程利用服务器计算机秘密密钥对安全元件公钥进行签名。关于消息恢复的另外细节可见于[7]和[8]中,其出于所有目的以全文引用的方式并入本文中。
[0097]
例如,消息可恢复签名过程可以允许签名装置(例如,后端服务器计算机302等)以这样的方式对数据进行签名:使得签名验证装置(例如,应用程序310等)可以获得数据并验证签名装置是实际对数据进行签名的装置。
[0098]
在步骤348,在获得带签名的安全元件公钥(例如,已认证密钥)之后,后端服务器计算机302可以将带签名的安全元件公钥提供到用户装置306。在一些实施例中,用户装置306可以将带签名的安全元件公钥存储在存储器中。
[0099]
在步骤348之后的任何合适的时间点,用户装置306的用户可以利用安装在用户装置306上的应用程序310来选择要从后端服务器计算机302接收的内容。例如,应用程序310可以是视频流应用程序。用户可以使用视频流应用程序来选择要观看的视频。在步骤350,应用程序310可以从用户接收选择。
[0100]
在步骤352,在从用户接收到选择之后,应用程序310可以将包括来自用户的选择的内容请求消息提供到后端服务器计算机302。
[0101]
在步骤354,在接收到内容请求消息之后,后端服务器计算机302可以获得要安全地提供到应用程序310的消息。消息可以包括要安全地预配给应用程序310的任何数据。例如,消息可以包括用于应用程序310的内容。内容可以与来自用户的选择相关联。内容可以包括图像、视频、动画、数据等。在一些实施例中,后端服务器计算机302可以从数据库获得消息。在其它实施例中,后端服务器计算机302可以生成消息。
[0102]
作为说明性实例,如果应用程序310是视频流应用程序,则后端服务器计算机302可以获得与用户在用户装置306上的应用程序310中所选择的视频相关联的内容,所述内容是视频。后端服务器计算机302可以从视频数据库获得视频。
[0103]
在步骤356,在获得消息之后,后端服务器计算机302可以对消息进行加密。后端服务器计算机302可以使用(在步骤322生成的)主秘密密钥(msk)对消息进行加密。包括内容的此消息可被称为m,并且可以是例如任何长度的位字符串。{m}
msk
表示已加密消息m。
[0104]
在步骤358,在对消息进行加密之后,后端服务器计算机302可以将已加密消息和带签名的安全元件公钥提供到用户装置306。
[0105]
在步骤360,在从后端服务器计算机302接收到已加密消息和带签名的安全元件公钥之后,用户装置306可以将来自用户装置306的处理器的已加密消息提供到用户装置的安全元件308。如果带签名的安全元件公钥尚未被提供到安全元件308,则用户装置306还可以将带签名的安全元件公钥提供到安全元件308(例如,从用户装置306的处理器)。
[0106]
在步骤362,在接收到已加密消息({m}
msk
)之后,安全元件308可以对已加密消息进行签名。安全元件308可以利用(在步骤338生成的)安全元件秘密密钥对已加密消息进行签名。利用安全元件秘密密钥对已加密消息进行签名产生带签名的已加密消息例如,安全元件308可以执行安全元件308可以使用消息可恢复签名过程利用安全元件秘密密钥对已加密消息进行签名。
[0107]
在步骤364,在对已加密消息进行签名之后,安全元件308可以将带签名的已加密消息和带签名的安全元件公钥提供到包括白盒的应用程序310。
[0108]
在步骤366,在接收到带签名的已加密消息和带签名的安全元件公钥之后,应用程序310(例如,由应用程序310的白盒,分别例如图1和2的白盒104b或白盒208b执行)可以从带签名的安全元件公钥恢复(例如,以密码方式恢复)安全元件公钥。应用程序310的白盒可以使用服务器计算机公钥从带签名的安全元件公钥恢复安全元件公钥,所述服务器计算机公钥对应于用于在步骤346对安全元件公钥进行签名的服务器计算机私钥。例如,应用程序310的白盒可以执行pse
←
recbe(pbe,{pse}
sbe
)。
[0109]
在步骤368,在获得安全元件公钥之后,应用程序310的白盒可以从带签名的已加密消息恢复(例如,以密码方式恢复)已加密消息。应用程序310的白盒可以使用安全元件公钥从带签名的已加密消息恢复已加密消息,所述安全元件公钥对应于用于在步骤356对已加密消息进行签名的安全元件私钥。例如,应用程序310的白盒可以执行
[0110]
在步骤370,在获得已加密消息之后,应用程序310的白盒可以对已加密消息进行解密。应用程序310的白盒可以使用在步骤324编译到应用程序310的白盒中的主秘密密钥(msk)对已加密消息进行解密。由应用程序310的白盒存储的主秘密密钥可以是与由后端服务器计算机302存储的主秘密密钥相同的密码密钥(例如,是对称密钥)。应用程序310的白盒可以通过对已加密消息进行解密来获得消息。例如,应用程序310的白盒可以执行m
←
dec(msk,{m}
msk
)。
[0111]
在步骤372,在从已加密消息获得消息之后,应用程序310可以将消息提供到用户
装置306的处理器。例如,如果应用程序310是视频流应用程序,则应用程序310可以将所选择的视频提供到用户装置306(例如,用户装置的处理器)以处理视频,使得用户可以观看该视频。
[0112]
图3中所示的方法实现drm应用程序的正确性和所需安全性。例如,在步骤344中将登记请求消息提供到后端服务器计算机302之前,用户(此处被称为恶意用户)将不能运行其安全应用程序。因此,恶意用户所制作的该程序的任何副本都是无用的,因为所述副本无法运行。如果恶意用户已登记,并且恶意用户已获得由后端服务器计算机302签名的安全元件公钥(例如,{pse}
sbe
),则恶意用户将能够运行安全应用程序。然而,恶意用户可能无法与尚未登记的其他用户共享安全应用程序。例如,如果恶意用户将带签名的安全元件公钥和安全应用程序与另一用户装置共享,则另一用户装置将无法正确地对消息进行解密。这是因为恶意用户的带签名的安全元件公钥只能对由恶意用户的用户装置的安全元件签名的消息进行解密。安全应用程序和带签名的安全元件公钥的任何不恰当地共享的副本都将不允许另一用户利用安全应用程序,从而防止了代码提升攻击。
[0113]
在一些实施例中,为了进一步的安全性,可以在登记期间包括证明(例如,使用证明公钥/私钥对)和认证程序。
[0114]
图4示出了根据实施例的替代绑定和安全消息递送过程方法的流程图。图4中所示的方法将在用于交互应用程序的装置绑定的上下文中描述。然而,应理解,本发明可应用于其它情形(例如,其它类型的应用程序、其它类型的交互等)。例如,应用程序可以是交互应用程序、视频流应用程序、数据传送应用程序、网页访问应用程序或社交媒体应用程序。
[0115]
参考图3所描述的方法可适合于drm或应用程序,但对于移动交互应用程序(例如,移动支付应用程序),需要更大的机密性。例如,在图3中的实施例中,具有有效安全应用程序的每一用户都可以对任何其他用户的已加密消息进行解密。这是因为所有消息都用相同的主秘密密钥加密,所述主秘密密钥是每一安全应用程序所持有的对称密钥,而与用户装置无关。图4-5中所示的方法提供了超出图3中所示的方法中提供的用于例如支付应用程序、建筑物访问应用程序等的交互应用程序的安全性之外的进一步的安全性。
[0116]
图4-5中所示的此替代方法可以遵循与图3中所示的方法类似的方法,但可以适于实现包括个别用户的有限使用密钥的消息的机密性。这可以通过将有限使用密钥的加密(例如,在消息m中)链接到编码在用户装置的安全元件上的标识符来实现。然后,标识符和由安全元件生成的公钥(pse)可以一起由后端服务器计算机进行认证。然后,标识符可以与主秘密密钥结合使用,以生成包括有限使用密钥的每个消息的用户特定加密密钥。参考图4-5提供另外的细节。
[0117]
步骤420-426可以包括在将安全应用程序提供到应用程序商店404之前由后端服务器计算机402执行的设置阶段。步骤428-434可以包括在正试图下载安全应用程序的用户装置406与应用程序商店404之间执行的下载阶段。图4的步骤420-434类似于图3的步骤320-334,并且在此不再详细重复。步骤436-466可以包括安全应用程序初始化和安全消息预配阶段。
[0118]
作为实例,图4中论述的应用程序可以是交互应用程序(例如,交易应用程序,例如支付应用程序等)。交互应用程序可以促进双方之间的交互。例如,交互应用程序可以促进用户装置406的用户与资源提供商计算机(未示出)的资源提供商之间的交互。交互应用程
序可以通过生成用于交互的安全信息来促进交互。例如,在一些实施例中,交互应用程序可以生成用于交互的密码。
[0119]
在步骤436,在从应用程序商店404接收到应用程序之后,用户装置406可以安装应用程序作为应用程序410。应用程序410可以包括利用服务器计算机公钥和主秘密密钥编译的白盒。
[0120]
在安装包括白盒的应用程序410之后,用户装置406可以向后端服务器计算机402登记应用程序410。
[0121]
在步骤438,用户装置406上的安全元件408可以生成安全元件公钥(pse)和安全元件秘密密钥(sse)。安全元件408可以生成安全元件公钥/秘密密钥对,如参考图3的步骤338所描述。
[0122]
在步骤440,在生成安全元件公钥/秘密密钥对之后,安全元件408可以生成用户标识符。用户标识符可以是标识用户、用户装置306和/或安全元件308的字母数字值。用户标识符可以是由安全元件308生成的唯一值,并且可以在登记期间用于向后端服务器计算机302标识安全元件308。安全元件408可以使用随机数发生器生成随机用户标识符。在其它实施例中,用户标识符可以是用户创建的值,例如密码或生物特征。
[0123]
在步骤442,在生成用户标识符之后,安全元件408可以生成安全元件标识数据。在一些实施例中,安全元件标识数据至少可以是用户标识符和安全元件公钥的组合。例如,安全元件408可以通过将安全元件公钥与用户标识符级联来生成安全元件标识数据。例如,安全元件408可以执行x=pse||id。安全元件标识数据可以标识安全元件408。安全元件标识数据可以标识安全元件408,因为安全元件标识数据包括安全元件408的公钥和由安全元件408生成的用户标识符。
[0124]
在步骤444,在生成安全元件标识数据之后,安全元件408(或在一些实施例中,用户装置406)可以生成包括安全元件标识数据的登记请求消息。例如,登记请求消息可以包括安全元件公钥和用户标识符。
[0125]
在步骤446,安全元件408可以将登记请求消息提供到用户装置406的在安全元件408外部的处理器(例如,图2中所示的处理器204)。在一些实施例中,安全元件408可以将安全元件标识数据提供到用户装置406的处理器,其中用户装置406接着生成包括安全元件标识数据的登记请求消息。
[0126]
在步骤448,用户装置406可以将登记请求消息提供到后端服务器计算机402。
[0127]
在步骤450,在接收到登记请求消息之后,后端服务器计算机402可以利用服务器计算机秘密密钥(sbe)对安全元件标识数据进行签名。利用服务器计算机秘密密钥对安全元件标识数据进行签名,使得对已认证密钥进行编码。确切地说,后端服务器计算机402可以执行{x}
sbe
←
signbe(sbe,x)。后端服务器计算机402可以使用消息可恢复签名过程利用服务器计算机秘密密钥对安全元件标识数据进行签名。
[0128]
在步骤452,在对安全元件标识数据进行签名之后,后端服务器计算机402可以导出导出的密钥。可以使用从安全元件标识数据获得的主秘密密钥(msk)和用户标识符(id)来导出导出的密钥。后端服务器计算机402可以将主秘密密钥和用户标识符输入到密钥导出函数(kdf)中以获得导出的密钥(k)。例如,后端服务器计算机402可以执行k
←
kdf(msk,id)。
[0129]
在步骤454,在创建导出的密钥之后,后端服务器计算机402可以将带签名的安全元件标识数据提供到用户装置406。在一些实施例中,用户装置406可以将带签名的安全元件标识数据存储在存储器中。
[0130]
在步骤454之后的任何合适的时间点,用户装置406的用户可以利用应用程序410来选择要从后端服务器计算机402接收的内容。例如,应用程序410可以是交互应用程序。应用程序410可以在交互之前或期间向后端服务器计算机402请求内容。由交互应用程序向后端服务器计算机402请求的内容可以包括有限使用密钥(luk)。例如,用户可以发起与资源提供商的交互以获得资源。在交互期间,应用程序410可以向后端服务器计算机402请求有限使用密钥。
[0131]
在步骤456,应用程序410生成内容(例如,有限使用密钥)请求。在一些实施例中,内容请求可以包括用户装置标识符或任何其它合适的数据。
[0132]
在步骤458,应用程序410可以将内容请求提供到后端服务器计算机402。
[0133]
在步骤460,后端服务器计算机402可以生成包括要提供到应用程序410的内容的消息。消息可以包括例如一个或多个有限使用密钥(luk)。后端服务器计算机402可以生成一个或多个有限使用密钥。在一些实施例中,后端服务器计算机302可以从数据库获得有限使用密钥。在其它实施例中,后端服务器计算机302可以生成有限使用密钥。
[0134]
在步骤462,在获得包括有限使用密钥的消息之后,后端服务器计算机402可以对消息进行加密。后端服务器计算机402可以使用(在步骤452生成的)导出的密钥(k)对消息进行加密。此消息(例如,有限使用密钥)可以被称为luk,并且可以是例如任何长度的位字符串。{luk}k表示已加密有限使用密钥luk。
[0135]
在步骤464,在生成已加密消息之后,后端服务器计算机402可以将已加密消息和带签名的安全元件标识数据提供到用户装置406。
[0136]
在一些实施例中,在步骤466,在接收到已加密消息和带签名的安全元件标识数据之后,如果在交互之前接收到已加密消息,则用户装置406可以存储已加密消息和带签名的安全元件标识数据以用于交互。在一些实施例中,带签名的安全元件标识数据可以存储在用户装置406的存储器中。在其它实施例中,用户装置406的处理器可以将带签名的安全元件标识数据提供到安全元件408以进行存储。
[0137]
图5示出了利用已加密消息和带签名的安全元件标识数据以用于交互的方法。
[0138]
在步骤520,用户装置506可以获得与资源提供商计算机(未示出)的资源提供商的交互的交互数据。交互数据可包括与从商家等资源提供商购买的一个或多个项目有关的数据,或与用户装置访问安全位置或安全数据的能力有关的数据。
[0139]
在交互期间,用户装置506上的应用程序510可以生成密码。步骤522-546描述使用在图4中接收的已加密消息和带签名的安全元件标识数据来安全创建密码。
[0140]
在步骤522,用户装置506的处理器可以将已加密消息提供到安全元件508,所述已加密消息由用户装置506在图4中的步骤464接收。
[0141]
在步骤524,在接收到已加密消息(例如,已加密有限使用密钥)之后,安全元件508可以确定认证消息(y)。安全元件508可以使用已加密消息和用户标识符来确定认证消息。例如,安全元件508可以将已加密有限使用密钥与用户标识符级联。例如,安全元件508可以执行y
←
{luk}k||id。
[0142]
在步骤526,在生成认证消息(y)之后,安全元件508可以对认证消息进行签名。安全元件508可以利用安全元件秘密密钥对认证消息进行签名。例如,安全元件508可以执行{y}
sse
←
signse(sse,y)。通过对已加密消息进行签名,应用程序510可以稍后验证应用程序510正与正确的用户装置506和安全元件508通信,如下文进一步详细论述。
[0143]
在步骤528,在对认证消息进行签名之后,安全元件508可以将带签名的认证消息提供到用户装置506的处理器,所述处理器在安全元件508外部。
[0144]
在步骤530,在获得带签名的认证消息之后,用户装置506的处理器可以将带签名的安全元件标识数据(由后端服务器计算机签名)、带签名的认证消息(由安全元件508签名)和交互数据(在步骤520获得)提供到应用程序510。
[0145]
在步骤532,在接收到带签名的安全元件标识数据({x}
sbe
)、带签名的认证消息({y}
sse
)和交互数据之后,应用程序510的白盒可以从带签名的安全元件标识数据恢复(例如,以密码方式恢复)安全元件标识数据。例如,应用程序510的白盒可以执行x
←
vrec(pbe,{x}
sbe
)。
[0146]
在步骤534,在获得安全元件标识数据(x)之后,应用程序510的白盒可以从安全元件标识数据确定安全元件公钥和用户标识符。例如,可以通过级联安全元件公钥和用户标识符来形成安全元件标识数据。因此,应用程序510的白盒可以从安全元件标识数据中提取安全元件公钥和用户标识符。例如,应用程序510的白盒可以执行从安全元件标识数据提取的用户标识符可以是登记用户标识符因为此用户标识符在登记期间被提供到后端服务器计算机。
[0147]
在步骤536,在获得安全元件公钥和用户标识符之后,应用程序510的白盒可以从带签名的认证消息({y}
sse
)恢复(例如,以密码方式恢复)认证消息(y)。例如,应用程序510的白盒可以执行y
←
vdec(pse,{y}
sse
)。
[0148]
在步骤538,在恢复认证消息(y)之后,应用程序510的白盒可以从认证消息确定已加密有限使用密钥和用户标识符。例如,可以通过级联已加密有限使用密钥和用户标识符来形成认证消息。因此,应用程序510的白盒可以从认证消息中提取已加密有限使用密钥和用户标识符。例如,应用程序510的白盒可以执行从认证消息提取的用户标识符可以是认证用户标识符因为此用户标识符在用于认证安全元件和用户的交互期间从安全元件接收。
[0149]
在步骤540,在获得已加密有限使用密钥和用户标识符之后,应用程序510的白盒可以确定两个所提取的用户标识符是否匹配。具体地,应用程序510的白盒可以将登记用户标识符与认证用户标识符进行比较。例如,应用程序510可以执行是否如果登记用户标识符与认证用户标识符匹配,则应用程序510的白盒可以进行到步骤542。如果登记用户标识符与认证用户标识符不匹配,则应用程序510的白盒可以终止所述过程。
[0150]
在步骤542,如果登记用户标识符与认证用户标识符匹配,则应用程序510的白盒可以导出导出的密钥k。可以使用存储在应用程序510的白盒中的主秘密密钥(msk)和
用户标识符(id)来导出导出的密钥。应用程序510的白盒可以以与由后端服务器计算机在图4中的步骤452导出的相同方式导出导出的密钥。例如,应用程序510的白盒可以使用密钥导出函数来导出导出的密钥。应用程序510的白盒可以将主秘密密钥和用户标识符输入到密钥导出函数中。密钥导出函数可以是后端服务器计算机所利用的相同密钥导出函数。例如,应用程序510的白盒可以执行k
←
kdf(mse,id)。
[0151]
在步骤544,在确定导出的密钥k之后,应用程序510的白盒可以对已加密有限使用密钥{luk}k进行解密。应用程序510的白盒可以使用导出的密钥k对已加密有限使用密钥{luk}k进行解密以获得有限使用密钥luk。例如,应用程序510的白盒可以执行luk
←
dec(k,{luk}k)。
[0152]
在步骤546,在对已加密有限使用密钥{luk}k进行解密之后,应用程序510的白盒可以生成用于交互的密码ac。应用程序510的白盒可以使用有限使用密钥luk和交易数据(m)生成密码。应用程序510的白盒可以以任何合适方式生成密码。例如,应用程序510的白盒可以使用消息认证码(mac)函数生成密码。例如,应用程序510的白盒可以执行ac
←
mac(luk,m)。
[0153]
在步骤548,在生成密码ac之后,应用程序510可以将密码提供(例如,输出)到用户装置506的处理器。
[0154]
在步骤550,在从应用程序510接收到密码ac之后,用户装置506可以使用密码继续交互。例如,用户装置506可以在交互中利用密码。用户装置506可以将密码连同交互数据和/或涉及交互的任何其它合适的数据提供到资源提供商计算机(未示出)。资源提供商计算机可以生成包括密码和交互数据的授权请求消息。例如,为了授权交互,可以将授权请求消息提供到传输(例如,收单方)计算机。然后,将授权请求消息发送到处理网络计算机。在一些实施例中,处理网络计算机可以验证密码。如果密码是有效的,则处理网络计算机可以将授权请求消息转发到与与用户相关联的授权实体相关联的对应授权实体计算机。
[0155]
在授权实体计算机接收到授权请求消息之后,授权实体计算机将授权响应消息发送回处理网络计算机以指示当前交互是否被授权(或未被授权)。然后,处理网络计算机将授权响应消息转发回传输计算机。在一些实施例中,即使授权实体计算机150已经授权交互,处理网络计算机也可以拒绝交互。然后,传输计算机将响应消息发送回资源提供商计算机。
[0156]
在资源提供商计算机接收到授权响应消息之后,资源提供商计算机接着可以将授权响应消息提供到用户装置506。响应消息可以由用户装置506显示,由资源提供商计算机显示给用户,或者可以在物理收据上打印出来。替代地,如果交互是在线交互,则资源提供商计算机可以提供网页或授权响应消息的其它指示作为虚拟收据。收据可以包括交互的交互数据。
[0157]
图4-5中所示的方法可以通过使用存储在安全元件中的用户标识符来实现机密性特性。当对安全元件公钥进行签名时,后端服务器计算机将id值附加到带签名的消息。类似地,当对已加密有限使用密钥进行签名时,安全元件将id值附加到有限使用密钥。安全应用程序检查两个带签名消息的用户标识符是否相同,并且在这种情况下,可以执行正确的解密。只有访问安全元件的用户才能够生成此类有效的带签名消息。因此,签名算法可以实现完整性的特性。
[0158]
本公开的实施例具有许多优点。例如,实施例防止恶意方执行代码提升攻击。实施例通过引入在分发适合于所有用户的单个全局白盒时给出装置和认证绑定的方案来改进先前的方法和系统。例如,通过将包括白盒的应用程序绑定到具有安全元件的特定用户装置来实现这一点。应用程序通过使应用程序验证所接收数据的签名而绑定到用户装置,其中签名由后端服务器计算机和安全元件创建。
[0159]
参考文献
[0160]
[1]estuardo alpirez bock等人,关于白盒密码术的安全性目标(on the security goals of white-box cryptography),密码研究预印本(cryptology eprint archive),发表于2020/104,2020年。https://eprint.iacr.org/2020/104
[0161]
[2]estuardo alpirez bock等人,移动支付中白盒密钥存储装置的安全性降低(security reductions for white-box key-storage in mobile payments),密码研究预印本(cryptology eprint archive),发表于2019/1014,2019年。https://eprint.iacr.org/2019/1014
[0162]
[3]dan boneh和brent waters,第13届acm计算机与通信安全会议论文集,ccs 2006,亚历山大市,弗吉尼亚州,美国,2006年10月30日至11月3日,第211-220页,acm,2006年
[0163]
[4]stanley chow等人,密码术的选择区(selected areas in cryptography),第250-270页,柏林,海德堡,2003年,施普林格柏林海德堡
[0164]
[5]stanley chow等人,数字版权管理中的安全和隐私(security and privacy in digital rights management),acm ccs-9研讨会,drm 2002,华盛顿,哥伦比亚特区,美国,2002年11月18日,修订论文,计算机科学讲义(lecture notes in computer science)的第2696卷,第1-15页,施普林格出版社,2002年
[0165]
[6]ccile delerablee等人,密码术选择区域-sac 2013-第20届国际会议,卑诗省,加拿大,2013年8月14日至16日,修订论文,计算机科学讲义(lecture notes in computer science)的第8282卷,第247-264页,施普林格出版社,2013年
[0166]
[7]国际标准化组织(international organization for standardization),(2010),信息技术-安全技术-给出消息恢复的数字签名方案-第2部分:基于整数因子的机制(information technology-security techniques-digital signature schemes giving message recovery-part 2:integer factorization based mechanisms)(iso/iec标准第9796-2:2010号)。iso.org/standard/54788.html
[0167]
[8]国际标准化组织(international organization for standardization),(2013),信息技术-安全技术-给出消息恢复的数字签名方案-第3部分:基于离散对数的机制(information technology-security techniques-digital signature schemes giving message recovery-part 3:discrete logarithm based mechanisms)(iso/iec标准第9796-3:2006号)。iso.org/standard/42228.html
[0168]
尽管以特定顺序示出或描述了上述流程图和过程流程中的步骤,但应理解,本发明的实施例可以包括具有呈不同顺序的步骤的方法。另外,可以省略或添加步骤,且它们仍可以在本发明的实施例中。
[0169]
本技术中描述的任何软件组件或功能可实施为使用例如java、c、c++、c#、
objective-c、swift的任何合适的计算机语言或例如perl或python的脚本语言使用例如常规的或面向对象的技术由处理器执行的软件代码。所述软件代码可以作为一系列指令或命令存储在计算机可读介质上以供存储和/或传输,合适的介质包括随机存取存储器(ram)、只读存储器(rom)、磁性介质(例如硬盘驱动器或软盘),或者光学介质(例如光盘(cd)或数字通用光盘(dvd))、闪存存储器,等等。计算机可读介质可以是此类存储装置或传输装置的任何组合。
[0170]
此类程序还可以使用适合于经由包括互联网在内的符合多种协议的有线网络、光学网络和/或无线网络进行传输的载波信号来编码和发送。因此,根据本发明的一个实施例的计算机可读介质可以使用以此类程序编码的数据信号来创建。以程序代码编码的计算机可读介质可以与兼容装置一起封装或者与其它装置分开提供(例如,经由互联网下载)。任何此类计算机可读介质可以驻存在单个计算机产品(例如,硬盘驱动器,cd或整个计算机系统)之上或其内部,并且可以存在于系统或网络内的不同计算机产品上或其内部。计算机系统可以包括监视器、打印机,或者用于向用户提供本文所提及的任何结果的其它合适的显示器。
[0171]
以上描述是说明性的并且不是限制性的。在阅读了本公开之后,本发明的许多变型形式对于本领域的技术人员将变得显而易见。因此,本发明的范围不应当参考上面的描述来确定,而是应当参考未决的权利要求连同其完整范围或等同物来确定。
[0172]
在不偏离本发明范围的情况下,来自任何实施例的一个或多个特征可以与任何其它实施例的一个或多个特征组合。
[0173]
如本文所用,除非明确指示有相反的意思,否则使用“一个”、“一种”或“所述”旨在意指“至少一个/种”。
技术特征:1.一种方法,包括:由用户装置从后端服务器计算机接收已加密消息,所述已加密消息是由所述后端服务器计算机利用主秘密密钥或从所述主秘密密钥导出的密钥进行加密的消息;由所述用户装置使用安全元件利用安全元件私钥对所述已加密消息进行签名,以获得带签名的已加密消息;由所述用户装置使用白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,所述已认证密钥是由所述后端服务器计算机且至少基于所述安全元件公钥而认证的,并且其中所述白盒还存储所述主秘密密钥或从所述主秘密密钥导出的所述密钥;由所述用户装置使用所述白盒使用所述安全元件公钥从所述带签名的已加密消息以密码方式恢复所述已加密消息;以及由所述用户装置使用所述白盒使用所述白盒中的所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密,以获得所述消息。2.根据权利要求1所述的方法,还包括:由所述用户装置将包括所述白盒的应用程序安装到所述用户装置上,其中所述白盒安全地包括所述主秘密密钥和所述后端服务器计算机公钥;由所述用户装置使用所述用户装置上的所述安全元件生成所述安全元件公钥和所述安全元件私钥;由所述用户装置将包括所述安全元件公钥的登记消息发送到与所述应用程序相关联的所述后端服务器计算机,其中所述后端服务器计算机利用后端服务器计算机私钥对所述安全元件公钥进行签名以形成所述已认证密钥,利用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述消息进行加密以获得所述已加密消息,并且将所述已加密消息提供到所述用户装置;以及由所述用户装置从所述后端服务器计算机接收所述已认证密钥。3.根据权利要求2所述的方法,还包括:在发送所述登记消息之前,由所述用户装置使用所述用户装置上的所述安全元件获得用户标识符,并且其中发送所述登记消息还包括:由所述用户装置将所述登记消息发送到所述后端服务器计算机,其中所述登记消息包括所述安全元件公钥和所述用户标识符,其中所述后端服务器计算机利用所述后端服务器计算机私钥对所述安全元件公钥和所述用户标识符的组合进行签名以形成所述已认证密钥,利用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述消息进行加密以获得所述已加密消息,并且将所述已加密消息提供到所述用户装置。4.根据权利要求3所述的方法,其中所述用户标识符是登记用户标识符,其中所述已认证密钥是带签名的安全元件标识数据,并且其中对所述已加密消息进行签名还包括:由所述用户装置使用所述安全元件使用所述已加密消息和认证用户标识符确定认证消息;以及由所述用户装置使用所述安全元件利用所述安全元件私钥对所述认证消息进行签名,以形成带签名的认证消息,其中从所述已认证密钥以密码方式恢复所述安全元件公钥包括:
由所述用户装置使用所述白盒从所述已认证密钥以密码方式恢复所述安全元件标识数据;由所述用户装置使用所述白盒获得所述安全元件公钥和所述登记用户标识符;并且其中从所述带签名的已加密消息以密码方式恢复所述已加密消息包括:由所述用户装置使用所述白盒从所述带签名的认证消息以密码方式恢复所述认证消息;以及由所述用户装置使用所述白盒从所述认证消息获得所述已加密消息和所述认证用户标识符;并且其中对所述已加密消息进行解密包括:由所述用户装置使用所述白盒将所述认证用户标识符与所述登记用户标识符进行比较;如果所述认证用户标识符和所述登记用户标识符匹配,则由所述用户装置使用所述白盒生成从所述主秘密密钥和所述认证用户标识符或所述登记用户标识符导出的所述密钥;以及由所述用户装置使用所述白盒利用从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密。5.根据权利要求4所述的方法,其中所述消息包括有限使用密钥,其中所述有限使用密钥由所述后端服务器计算机使用从所述主秘密密钥导出的所述密钥进行加密,所述密钥由所述后端服务器计算机使用密钥导出函数利用所述登记用户标识符和所述主秘密密钥创建。6.根据权利要求4所述的方法,其中所述应用程序是交互应用程序、视频流应用程序、数据传送应用程序、网页访问应用程序或社交媒体应用程序。7.根据权利要求4所述的方法,还包括:由所述用户装置获得所述用户装置的用户与资源提供商计算机的资源提供商之间的交互的交互数据,其中所述有限使用密钥用于形成在所述交互中使用的密码。8.根据权利要求7所述的方法,还包括:由所述用户装置使用所述白盒基于所述有限使用密钥和所述交互数据生成用于所述交互的所述密码。9.根据权利要求2所述的方法,其中在将包括所述白盒的所述应用程序安装到所述用户装置上之前,所述方法还包括:由所述用户装置生成请求下载所述应用程序的下载请求消息;由所述用户装置将所述下载请求消息提供到应用程序商店;以及由所述用户装置接收响应于所述下载请求消息而来自所述应用程序商店的所述应用程序。10.根据权利要求1所述的方法,其中所述主秘密密钥是由所述后端服务器计算机生成的对称密钥。11.一种用户装置,包括:处理器;以及耦合到所述处理器的计算机可读介质,所述计算机可读介质包括能由所述处理器执行
以用于实施方法的代码,所述方法包括:从后端服务器计算机接收已加密消息,所述已加密消息是由所述后端服务器计算机利用主秘密密钥或从所述主秘密密钥导出的密钥进行加密的消息;使用安全元件利用安全元件私钥对所述已加密消息进行签名,以获得带签名的已加密消息;使用白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,所述已认证密钥是由所述后端服务器计算机认证的;使用所述白盒使用所述安全元件公钥从所述带签名的已加密消息以密码方式恢复所述已加密消息;以及使用所述白盒使用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密,以获得所述消息。12.根据权利要求11所述的用户装置,其中所述方法还包括:将包括所述白盒的应用程序安装到所述用户装置上,其中所述白盒安全地包括所述主秘密密钥和所述后端服务器计算机公钥;使用所述用户装置上的所述安全元件生成所述安全元件公钥和所述安全元件私钥;将包括所述安全元件公钥的登记消息发送到与所述应用程序相关联的所述后端服务器计算机,其中所述后端服务器计算机利用后端服务器计算机私钥对所述安全元件公钥进行签名以形成所述已认证密钥,利用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述消息进行加密以获得所述已加密消息,并且将所述已加密消息提供到所述用户装置;以及从所述后端服务器计算机接收所述已认证密钥。13.根据权利要求12所述的用户装置,其中所述方法还包括:在发送所述登记消息之前,由所述用户装置使用所述用户装置上的所述安全元件获得用户标识符,并且其中发送所述登记消息还包括:由所述用户装置将所述登记消息发送到所述后端服务器计算机,其中所述登记消息包括所述安全元件公钥和所述用户标识符,其中所述后端服务器计算机利用所述后端服务器计算机私钥对所述安全元件公钥和所述用户标识符的组合进行签名以形成所述已认证密钥,利用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述消息进行加密以获得所述已加密消息,并且将所述已加密消息提供到所述用户装置。14.根据权利要求13所述的用户装置,其中所述用户标识符是登记用户标识符,其中所述已认证密钥是带签名的安全元件标识数据,并且其中对所述已加密消息进行签名还包括:由所述用户装置使用所述安全元件使用所述已加密消息和认证用户标识符确定认证消息;以及由所述用户装置使用所述安全元件利用所述安全元件私钥对所述认证消息进行签名,以形成带签名的认证消息,其中从所述已认证密钥以密码方式恢复所述安全元件公钥包括:由所述用户装置使用所述白盒从所述已认证密钥以密码方式恢复所述安全元件标识数据;
由所述用户装置使用所述白盒获得所述安全元件公钥和所述登记用户标识符;并且其中e)从所述带签名的已加密消息以密码方式恢复所述已加密消息包括:由所述用户装置使用所述白盒从所述带签名的认证消息以密码方式恢复所述认证消息;以及由所述用户装置使用所述白盒从所述认证消息获得所述已加密消息和所述认证用户标识符;并且其中对所述已加密消息进行解密包括:由所述用户装置使用所述白盒将所述认证用户标识符与所述登记用户标识符进行比较;如果所述认证用户标识符和所述登记用户标识符匹配,则由所述用户装置使用所述白盒生成从所述主秘密密钥和所述认证用户标识符或所述登记用户标识符导出的所述密钥;以及由所述用户装置使用所述白盒利用从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密。15.根据权利要求12所述的用户装置,其中所述后端服务器计算机使用消息可恢复签名过程利用所述后端服务器计算机私钥对所述安全元件公钥进行签名。16.根据权利要求11所述的用户装置,其中所述用户装置是移动电话。17.根据权利要求11所述的用户装置,其中所述安全元件在所述用户装置上且与所述处理器通信。18.根据权利要求11所述的用户装置,其中所述白盒在所述计算机可读介质上,并且其中所述消息是利用所述主秘密密钥进行加密的。19.一种方法,包括:由后端服务器计算机获得包括要提供到被安装在用户装置上的应用程序的内容的消息;由所述后端服务器计算机利用主秘密密钥或从所述主秘密密钥导出的密钥对所述消息进行加密,以获得已加密消息;以及由所述后端服务器计算机将所述已加密消息提供到所述用户装置,其中所述用户装置使用安全元件利用安全元件私钥对所述已加密消息进行签名以获得带签名的已加密消息,使用所述应用程序中的白盒使用后端服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥,使用所述白盒使用所述安全元件公钥从所述带签名的已加密消息以密码方式恢复所述已加密消息,并且使用所述白盒使用所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密以获得所述消息。20.根据权利要求19所述的方法,还包括:在获得所述消息之前,由所述后端服务器计算机生成所述后端服务器计算机公钥和后端服务器计算机私钥;由所述后端服务器计算机生成所述主秘密密钥;由所述后端服务器计算机获得未编译的应用程序以进行编译;由所述后端服务器计算机将所述未编译的应用程序、所述主秘密密钥和所述后端服务器计算机公钥编译到所述应用程序中;
由所述后端服务器计算机将所述应用程序提供到应用程序商店;由所述后端服务器计算机从所述用户装置接收包括所述安全元件公钥的登记消息,所述用户装置已安装由所述后端服务器计算机编译的所述应用程序;由所述后端服务器计算机利用所述后端服务器计算机私钥对所述安全元件公钥进行签名,以形成所述已认证密钥;以及由所述后端服务器计算机将所述已认证密钥提供到所述用户装置。
技术总结公开了一种方法。所述方法包括由用户装置从服务器计算机接收已加密消息。所述已加密消息是利用主秘密密钥或从所述主秘密密钥导出的密钥进行加密的消息。所述用户装置利用安全元件私钥对所述已加密消息进行签名。所述用户装置使用白盒使用服务器计算机公钥从已认证密钥以密码方式恢复安全元件公钥。所述已认证密钥由所述服务器计算机且至少基于所述安全元件公钥进行认证。所述用户装置使用所述白盒使用所述安全元件公钥从所述带签名的已加密消息以密码方式恢复所述已加密消息。所述用户装置使用所述白盒使用所述白盒中的所述主秘密密钥或从所述主秘密密钥导出的所述密钥对所述已加密消息进行解密以获得所述消息。所述已加密消息进行解密以获得所述消息。所述已加密消息进行解密以获得所述消息。
技术研发人员:S
受保护的技术使用者:维萨国际服务协会
技术研发日:2021.05.14
技术公布日:2022/11/1