密码密钥管理的制作方法

文档序号:7793640阅读:264来源:国知局
专利名称:密码密钥管理的制作方法
密码密钥管理
背景技术
计算设备可能以各种各样的不同方式遇到各种各样的敏感数据。例如,计算设备可以用来存储数据,通过网络传送数据等等。此外,该数据可能是相当有价值的,并且因而成为恶意方的目标。然而,用来保护该数据的常规技术可能涉及存储大量的密码 (cryptographic)密钥。例如,该数据可能被保护以供不同各方访问,从而涉及管理大量的密码密钥。传统上,这导致复杂的存储和通信技术,当面临要单独地加密和/或解密的大量各种各样的数据时,尤其如此。

发明内容
描述了密码密钥管理技术。在一个或多个实现方式中,读取包括具有多个原子的布尔表达式的访问控制规则,每个原子具有密码密钥的标识符。请求与访问控制规则中的所述多个原子中的每一个的标识符相应的密码密钥。然后,使用所述密码密钥中的一个或多个对数据执行一种或多种密码操作。在一个或多个实现方式中,从嵌入了加密的数据的访问控制规则读取密钥标识符。形成请求,该请求包括密钥标识符并且描述了请求访问数据的主体(principal)的一个或多个属性。接收对所述请求的响应,该响应包括基于所描述的一个或多个属性而授权主体使用的解密密钥。依照访问控制规则应用在响应中接收的解密密钥以便确定获得了解密加密的数据的足够的解密密钥集合。在一个或多个实现方式中,对于访问控制规则中的每个原子获取保护器密钥,访问控制规则在布尔表达式中描述多个原子。对于布尔表达式中的一个或多个合取子句、用于子句中的每个原子的分数密钥(fractional key),使用与该原子相应的保护器密钥加密该分数密钥,并且利用具有一定保护器密钥的复合原子代替合取子句,该保护器密钥是分数密钥的组合。产生内容加密密钥,并且使用该内容加密密钥加密数据。对于每个复合原子,利用该复合原子的保护器密钥加密内容加密密钥,并且与复合原子的保护器密钥的标识符一起存储加密内容加密密钥的结果。本发明内容部分被提供以便以简化的形式引入构思的选择,这些构思在下面的具体实施方式
中进一步加以描述。本发明内容部分并不预期标识要求保护的主题的关键特征或基本特征,也不预期用来帮助确定要求保护的主题的范围。


具体实施方式
参照附图进行描述。在图中,附图标记的最左边的数字标识其中该附图标记第一次出现的图。在说明书的不同实例和附图中使用相同的附图标记可能指示相似或相同的项。图1示出了数据保护系统的实例实现方式中的环境,该数据保护系统可操作来采用涉及密码密钥管理的技术。图2A和图2B为绘出其中依照访问控制规则加密数据的实例实现方式中的过程的
3流程图。图3为更详细地示出图1的数据保护模块的实例实现方式中的系统的图示。图4示出了被示为依照访问控制规则加密数据的图1数据保护系统的实例实现方式。图5示出了多级密钥导出方案的实例实现方式。图6为绘出其中安全主体从采用图5的多级密钥导出方案的密钥管理服务请求加密密钥的实例实现方式中的过程的流程图。图7示出了可操作来采用关于图5和图6描述的层级技术的系统的实例实现方式。
具体实施例方式实例环境
图1示出了数据保护系统的实例实现方式中的环境100,该数据保护系统可操作来采用涉及密码密钥管理的技术。该环境100示出了包括密钥管理服务102的分布式环境的一个实例,所述密钥管理服务可由第一和第二计算设备106、108经由网络104访问。密钥管理服务102进一步被示为使用一个或多个服务器(例如服务器群的一部分)来实现。尽管示出了一个实例分布式环境,但是应当容易清楚的是,该环境100可以进一步扩展(例如以便包括众多其他计算设备)、缩小(例如以便由两个设备或者甚至单个设备采用)等等。计算设备可以以各种各样的方式进行配置。例如,可以将计算设备配置成能够通过网络104通信的计算机,例如台式计算机、移动站、娱乐器具、通信耦合到显示设备的机顶盒、无线电话、游戏控制台等等。因此,计算设备可以范围从具有充分的存储器和处理器资源的全资源设备(例如个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如传统机顶盒、手持式游戏控制台)。此外,尽管示出了单个计算设备(例如用于密钥管理服务102的服务器),但是计算设备可以代表多个不同的设备,例如多个由企业用来执行操作的服务器。计算设备也可以包括使得计算设备的硬件执行操作的实体(例如软件),例如处理器、功能块等等。一个这样的实例是针对对应计算设备106、108而示出的通信模块110、 112,其代表经由网络104通信的设备功能。在一个或多个实现方式中,计算设备可以包括计算机可读介质,该计算机可读介质可以被配置成维持使得计算设备以及更特别地计算设备的硬件执行操作的指令。因此,这些指令用来将硬件配置为执行操作并且通过这种方式导致将硬件转换成实现功能。这些指令可以通过各种各样的不同配置由计算机可读介质提供给计算设备。计算机可读介质的一个这样的配置是信号承载介质并且因而被配置成例如经由网络104将指令(例如作为载波)传输至计算设备的硬件。计算机可读介质也可以被配置成计算机可读存储介质并且因而不是信号承载介质。计算机可读存储介质的实例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁、光和其他技术存储指令和其他数据的其他存储器设备。尽管网络104被示为因特网,但是该网络可以采取各种各样的广泛配置。例如,网络108 104包括广域网(WAN)、局域网(LAN)、无线网络、公共电话网络、内联网、蓝牙个人区域网络(PAN)等等。此外,尽管示出了单个网络104,但是网络104可以被配置成包括多个网络。密钥管理服务102被示为包括数据保护模块114,其代表依照用作加密和解密数据的基础的访问控制规则116管理密码密钥的功能。在一个或多个实现方式中,该规则是由例如利用“AND”(与)和“OR”(或)逻辑算子组合的原子118集合形成的布尔表达式。每个原子118可以表示为形式为“属性=标识符”的字符串,其中标识符转化成密码密钥。例如,每个原子可以采取“安全_主体_类型=标识符”的形式,使得安全主体标识符转化成密码密钥。因此,利用这种规则加密的数据被配置成仅仅通过具有满足该规则的属性的实体(例如满足该规则的安全主体)而被解密。例如,基于安全标识符(SID)的系统可以采用以下访问控制规贝丨J "SID=S-l-5-32-544 AND 密钥=MSKSPimyKeyName OR 证书 =IssuerAndSerial:3132,3131”。因此,该访问控制规则包括三个原子
"SID=S-l-5-32-544";
“密钥=MSKSP: myKeyName ” ;以及
“证书=IssuerAndSerial :3132, 3131”
此外,该访问控制规则规定应当满足的不同属性集合,SID和密钥或者证书。因此,有权访问标识的证书或者在其令牌中具有标识的SID并且也有权访问标识的密钥的主体满足该规则。下面的讨论安排如下。首先,讨论用于将密码访问控制规则的每个原子转换成密码密钥(或者可以从其导出密码密钥的秘密)的技术。然后,讨论使用密码密钥按照访问控制规则在密码学上保护数据块。如前面所描述的,这可以以这样的方式执行,使得授权主体只能使用访问控制规则的密码密钥中的每一个解密该数据。与访问控制规则原子相应的密码密钥称为保护器密钥,并且假设每个保护器密钥具有唯一标识符,当需要时,该唯一标识符可以用来定位相应的解密密钥。然后,描述了涉及以高效且可伸缩的方式产生保护器密钥和相应的解密密钥的技术。例如,这些技术可以用于属于公共安全域的实体,例如用于主体的授权表达式,其可能涉及一个主体或一组主体的标识符,例如用在数据存储区或目录(例如微软公司的活动目录产品)中的安全标识符(SID)。通常,本文描述的任何功能都可以使用软件、固件、硬件(例如固定逻辑电路)、手工处理或者这些实现方式的组合来实现。当在本文中使用时,术语“模块”和“功能”通常代表硬件、软件、固件或者其组合。在软件实现方式的情况下,模块、功能或逻辑代表指令和硬件,其执行硬件指定的操作,例如一个或多个处理器和/或功能块。可以将指令存储到一种或多种计算机可读介质中。如上面所描述的,计算机可读介质的一个这样的配置是信号承载介质并且因而被配置成例如经由网络104将指令(例如作为载波)传输至计算设备的硬件。计算机可读介质也可以被配置成计算机可读存储介质并且因而不是信号承载介质。计算机可读存储介质的实例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁、光和其他技术存储指令和其他数据的其他存储器设备。下面描述的技术的特征是平台独立的,这意味着这些技术可以在具有各种各样的硬件配置的各种各样的商业计算平台上实现。
访问控制规则
图2A和图2B绘出了其中依照访问控制规则加密数据的实例实现方式中的过程200。 以下讨论描述了可以利用先前和随后描述的系统和设备实现的技术。每个过程的各方面可以以硬件、固件、软件或者其组合实现。这些过程被示为规定由一个或多个设备执行的操作的功能框集合,并且不一定限于所示出的各功能框执行操作的顺序。开始于图2A,为了按照访问控制规则加密数据块,可以执行以下操作。首先,例如使用唯一标识符获取与访问控制规则中的每个原子相应的保护器密钥(框202)。然后,将布尔访问控制规则转换成析取范式(框204)。对于规范化访问控制规则中的每个合取子句206,执行以下操作(框206)。对于子句中的每个原子,例如使用随机化技术产生分数密钥(框208)。利用与该原子相应的保护器密钥加密分数密钥(框210)。然后,与唯一标识的保护器密钥一起存储加密的分数密钥(框 212)。该结构称为保护器。然后,利用新的复合原子代替整个合取子句,所述新的复合原子的保护器密钥是分数密钥的组合(框214)。该组合可以以各种各样的不同方式形成,例如通过采用诸如XOR或密钥导出函数之类的密码技术形成,所述密钥导出函数例如基于口令的密钥导出函数,比如来自RSA实验室的公钥密码标准系列的PBKDF2。现在继续到图2B,例如使用随机化技术产生内容加密密钥(框216)。然后,使用诸如AES-GCM之类的加密技术利用内容加密密钥加密数据(框218)。对于析取范式的表达式的每个复合原子(框222),可以执行以下操作。利用原子的保护器密钥加密内容加密密钥(框224)。在每种情况下与作为保护器的保护器密钥的唯一标识符一起存储加密的结果(框226)。然后,例如通过使用RSA安全公司公布的公钥密码标准#7将加密的内容和上面创建的保护器封装进信封(框228)。因此,上面的技术允许按照访问控制规则中的原子的组合加密数据。该技术也是高效的,因为它可以使用对称加密技术。当解密数据时,嵌入到包封和封装的加密数据中的唯一密钥标识符可以用来取回必要的保护器密钥。如果对于主体可用的保护器密钥集合足以满足加密的数据的访问控制规则,那么加密方案确保该主体解密数据将是可能的。图3为更详细地示出图1的数据保护模块114的实例实现方式中的系统的图示。 为了找到与每个原子相应的保护器密钥,每个安全主体类型302可以采用以下关联的方法。GetEncryptionKey (获得加密密钥)方法 304
该方法304可以将安全主体标识符306取为输入并且返回加密密钥308以及相应解密密钥的唯一标识符310。在一个实现方式中,可以为调用主体执行该方法,即使调用主体未被授权访问解密密钥。GetDecryptionKey (获得解密密钥)方法 312
在一个实现方式中,该方法采取解密密钥的唯一标识符314,其可以与从 GetEncryptionKey方法304接收的解密密钥的唯一标识符310相同。然后,当且仅当调用主体被授权访问解密密钥316时,GetDecryptionKey方法312才可能取回解密密钥316。图4示出了被示为依照访问控制规则加密数据的图1数据保护系统102的实例实现方式400。在该实例中,用户希望依照以下访问控制规则保护数据块“密钥=User:UserIdXYZ OR SID=S-l-5-32_544,,。数据保护系统102以及更特别地数据保护模块114定位负责管理“用户 (User)"类型402的密钥的模块(例如数据保护模块114的子模块),并且利用输入参数 "UserIdXYZ"406调用该模块的GetEncryptionKey方法404。因此,用户类型402提供了用于该类型的加密密钥408以及在该实例中称为“UniqueIdXYZ”410的相应解密密钥的唯一标识符。类似地,数据保护模块114定位负责管理用于“SID”类型412的主体的密钥的模块(例如数据保护模块114的子模块),并且利用输入参数“S-l-5-32-544”416调用相应的 GetEncryptionKey方法414。因此,SID类型412提供了用于该类型的加密密钥418以及在该实例中称为“UniqueIdSidM4” 420的相应解密密钥的唯一标识符。然后,数据保护模块114使用早先描述的技术通过使用加密密钥408、418加密数据422以便获得被包封和封装的加密的数据424。然后,加密的数据4M可以被存储以供以后使用、传输至不同的计算设备(例如如关于图1所描述的)等等,以供以后解密。最后,可以代表用户或其他实体(例如应用程序)要求计算设备解密加密的数据424。因此,数据保护系统102可以尝试使用GetDecryptionKey方法取回唯一标识符 “UniqueldXYZ”和“UniqueIDSidM4” 410、420标识的解密密钥,所述方法的实例关于图3 进行了描述。如果二者都不可以获得,那么就不可能解密加密的数据424。如果获得了任一解密密钥,那么数据保护系统102使用它以便解密数据和验证其完整性。如果完整性检查失败,那么返回错误;否则,系统将解密的数据返回给用户。图5示出了多级密钥导出方案的实例实现方式500。该密钥导出方案采用了可以利用一个主体或一组主体的标识符的主体的授权表达式,其一个实例是以下讨论中的SID, 但是也可以设想其他的实例。该实例示出了三级导出,第一级次(标记为L0)具有链长1,并且其他级次(Li和L2)具有链长32,但是应当容易清楚的是,也可以设想其他的长度。为了简单起见,始终使用相同的密钥导出函数,并且表示为KDF,但是应当容易清楚的是,可以采用各种各样的不同导出函数。MRK在该实例实现方式中代表主根密钥。该技术被描述为使用受信任认证服务(包括诸如活动目录之类的分布式服务)以便获得与服务的安全域中的每个唯一标识相应的密钥。例如,该技术可以由活动目录域控制器用来产生用于AD林(forest)中的每个SID的保护器密钥,并且响应对于这样的密钥的请求。该实例实现方式包括以下组件。主密钥
采用一个或多个主密钥(MRK)以用于安全域,以及用于每个主密钥的唯一标识符和用于从主密钥集合确定当前主密钥的规则。导出级次
可以支持一定数量的导出级次N,其在所示的实例中为三个级次。对于0与N-I之间的每个导出级次k,采用初始密钥导出函数KDFl_k。也可以采用用于确定其参数的规则, 该规则可以基于安全主体的标识符或其他属性(例如可以由主体满足的授权表达式)、当前时间和可选的附加参数。与用于基于安全主体的属性(例如标识符)或授权表达式、当前时间和可选的附加参数确定对应参数的规则一起,对于每个导出级次也采用链密钥导出函数 KDF2_k。对于“k”导出级次中的每一个,也采用链长M_k。
时间间隔
时间间隔Tl代表对于给定的安全主体,多长时间创建新加密密钥一次。这可以用来间接地确定层级中每个级次的密钥寿命。例如,考虑如图5中所示具有三个级次(即N=3)的实例。用于第二导出级次“L2”的新密钥在时间间隔“Tl”处产生。这意味着用于第一导出级次“Li”的新密钥在时间间隔“32*1!”处产生,这反过来意味着用于最高导出级次“L0” 的新密钥在时间间隔“32*32*T1=10M*T1”处产生。当可以从某个密钥导出的每个密钥的创建时间已经过去,则称该密钥已经耗尽。例如,如果从“Li”密钥导出每个“L2”密钥的创建时间已经过去,则认为“Li,,密钥耗尽。根据一个或多个实现方式中的定义,主密钥不可能耗尽。时间间隔“T2”代表对于给定安全主体,给定加密密钥可以多长时间用来加密新数据。因此,在一个实现方式中,密码密钥可能经常改变,从而不采用显式的密钥撤销技术。对称加密算法
可以在该实例实现方式中采用对称加密算法Al以及可以用来导出用于该算法的密钥的密钥导出函数KDF_s。当授权进行GetEncryptionKey调用的主体访问相应解密密钥时, 可以导出供该算法使用的保护器密钥。非对称算法
在该实现方式中,非对称算法A2以及两个密钥导出函数KDF_e和KDF_d可以用来导出用于该算法的加密和解密密钥配对。当进行GetEncryptionKey调用的主体未被授权访问密钥对的解密密钥时,可以导出供该算法使用的保护器密钥对。图6绘出了其中安全主体从采用图5的多级密钥导出方案的密钥管理服务请求加密密钥的实例实现方式中的过程600。以下讨论描述了可以利用先前描述的系统和设备实现的密钥导出技术。每个过程的各方面可以以硬件、固件或软件或者其组合实现。这些过程被示为规定由一个或多个设备执行的操作的功能框集合,并且不一定限于所示出的各功能框执行操作的顺序。在以下讨论的部分中,将参照图5的实例实现方式。密钥管理服务从安全主体“S”接收针对给定安全主体标识符“S”的对于加密密钥的请求(框602)。作为响应,密钥管理服务获得用于域的当前主密钥(框604)。然后,基于安全主体的标识和当前时间,密钥管理服务确定用于该主体的当前加密密钥的链位置(1_0, 1_1,…,1_N-1)(框606)。应当指出的是,在该实现方式中,每个链位置与(M_k -1)之间的整数。对于范围从0至N-I且包括0和N-I的每个导出级次k,执行以下操作(框608)。 KDFl_k用来从先前级次的当前密钥导出该级次的初始密钥(框610)。对于k=0,主密钥为先前级次的密钥。将KDF2_k&“M_k - l_k - 1”次迭代应用于初始密钥以便获得该级次的当前密钥(框612)。一旦获得了 N-I级次的当前密钥,那么可以执行以下操作。如果主体S被授权请求的安全主体S’的解密密钥,那么使用KDF_s导出对称密钥(框614)。如果主体S未被授权请求的安全主体S’的解密密钥,那么使用KDF_e导出非对称加密密钥(框616)。然后,将前面的操作中导出的密钥与通过级联安全主体的属性(例如标识属性)ID S’、主密钥的唯一 ID和多元组(1_0,1_1,…,1_N-1)而构造的唯一密钥标识符一起,返回给安全主体(框618)。为了提高效率,客户端实现方式可以缓存加密密钥。然而,在一个实现方式中,比T2更旧的加密密钥不用来加密新数据。当主体“R”从服务器请求解密密钥时,主体“R”提供唯一密钥标识符。唯一密钥标识符包含密钥的安全主体标识符R’、主密钥的唯一 ID以及多元组(1_0,1_1,…,1_ N-1)。然后,密钥管理服务可以执行与上面类似的具有以下差异的过程。如果调用安全主体R未被授权安全主体标识符R’,则返回错误。否则,服务返回可以用来导出请求的解密密钥的最新且最高级次的耗尽密钥。然后,客户端可以应用一个或多个密钥导出函数以便获得适当的解密密钥。在一个实例实现方式中,做出以下算法选择,但是应当容易清楚的是,也可以设想其他的选择。伽罗瓦计数器运算模式(GCM)中的高级加密标准(AES)算法可以用作 Al。具有指定的组发生器、模数和子组大小的Diffie-Hellman-Merkle算法可以用作算法A2。NIST特刊800-108中指定的密钥导出函数之一可以用于KDFl和KDF2函数中的每一个以及KDF_s函数。函数1 _(1可以采用SP 800-108 KDF,其输出被截断为用于A2 的私有子组的大小。然后,通过应用KDF_d并且计算相应的公钥而执行函数KDF_e。对于Diffie-Hellman-Merkle算法,这涉及将组发生器提升至KDF_d的输出模组的模数 (modulo)所表示的整数。因此,可以利用这些技术以便提供各种各样的性质。例如,密钥管理服务可以存储相对较小的主密钥集合,而不管安全主体的总数如何。此外,安全主体不能可行地确定用于该主体未被授权的安全主体标识符的解密密钥。此外,安全主体不能可行地计算主密钥,也不能计算未来的密钥。再进一步,即使当安全主体“A”不是主体集合“B”的成员时,安全主体“A”也可以在密码学上保护用于主体集合“B”的数据。像所述服务那样,客户端也可以缓存相对较小的密钥集合以便能够解密加密到给定安全主体的每个过去数据项。例如,在图6的实现方式中,缓存耗尽的“L0”密钥、不超过31个耗尽的“Li”密钥以及当前L2密钥中的每一个就足够了。图7示出了可操作来采用关于图5和图6描述的层级技术的系统700的实例实现方式。如图所示的系统700包括具有保护API 704的密钥管理客户端模块702,所述保护 API 704可调用来访问模块代表的功能。例如,可以调用保护API 704以便访问主体标识符(例如SID)保护器模块706、证书保护器模块708和密钥保护器模块710。密钥保护器模块710代表管理诸如持久对称密钥712之类的密钥、持久KDF秘密714等等的功能。证书保护器模块708代表密钥管理客户端模块702维护和管理证书的功能。主体标识符保护器模块706代表与诸如安全标识符(SID)之类的主体标识符有关的功能。例如,主体标识符保护器模块706可以用来本地地维护SID密钥缓存716。主体标识符保护器模块706可以利用一个或多个有线或无线协议718以便访问可以在只读域控制器(RODC)中实现的SID密钥服务模块720,和/或被配置成在全域控制器内起作用的SID 密钥服务模块722。AD存储区724也可以由系统700采用,其可以用来维护主密钥和服务器配置(并且可以使用一个或多个管理工具7 进行访问和管理)。密钥管理客户端模块702也被示为与配置7 数据通信,所述配置数据例如客户端算法、命名描述符、恢复等等,其进一步被示为利用组策略设置730。尽管关于活动目录描述了上面的图5-7的实例,但是应当指出的是,本文描述的技术也可以用于其他的密码应用。例如,可以实现用于数据完整性保护的系统,使得授权安全主体单独地可以检验给定数据块的完整性(或真实性)。
结论
尽管以特定于结构特征和/或方法动作的语言描述了本发明,但是应当理解的是,所附权利要求书中限定的本发明不必限于所描述的特定特征或动作。相反地,这些特定的特征和动作作为实现要求保护的本发明的实例形式而被公开。
权利要求
1.一种由一个或多个计算设备实现的方法,该方法包括读取包括具有多个原子(118)的布尔表达式的访问控制规则(116),每个所述原子具有密码密钥的标识符;请求与访问控制规则中的所述多个原子中的每一个的标识符相应的密码密钥;以及使用所述密码密钥中的一个或多个对数据执行一种或多种密码操作。
2.如权利要求1所述的方法,其中至少一个所述原子与被限定为由主体满足以便对数据执行解密操作的属性相应。
3.如权利要求1所述的方法,其中执行所述对于密码密钥的请求以便加密数据;并且请求密码密钥的主体不共享与所述多个原子相应的属性。
4.如权利要求3所述的方法,其中当主体被授权访问相应解密密钥时,密码密钥被配置用于对称技术,并且当主体未被授权访问相应解密密钥时,密码密钥被配置用于非对称技术。
5.如权利要求1所述的方法,其中执行所述对于密码密钥的请求以便解密数据;并且对于密码密钥的访问基于请求密码密钥的主体是否共享与如访问控制规则所限定的对应所述原子相应的属性。
6.如权利要求1所述的方法,其中访问控制规则支持至少两个所述属性的集合,其中任一集合被配置成当主体满足对应所述集合中的每个原子时,允许访问所述密码密钥。
7.如权利要求1所述的方法,其中所述属性中的至少一个与活动目录中的主体有关。
8.如权利要求7所述的方法,其中所述属性中的所述至少一个用来标识要被提供对数据的访问的主体。
9.如权利要求1所述的方法,其中密码密钥是多级密钥导出方案的一部分。
10.如权利要求9所述的方法,其中所述方案涉及使用时间间隔以便确定该方案的每个所述级次的密码密钥的寿命。
全文摘要
描述了密码密钥管理技术。在一个或多个实现方式中,读取包括具有多个原子的布尔表达式的访问控制规则,每个原子具有密码密钥的标识符。请求与访问控制规则中的所述多个原子中的每一个的标识符相应的密码密钥。然后,使用所述密码密钥中的一个或多个对数据执行一种或多种密码操作。
文档编号H04L9/08GK102571329SQ201110437099
公开日2012年7月11日 申请日期2011年12月23日 优先权日2010年12月23日
发明者B.G.M.奈斯特伦, C.M.伊拉克, C.M.埃利森, D.伊索波夫, N.T.费尔古森, O.T.乌雷彻, P.J.诺沃特尼, V.G.巴拉瓦吉, 周大翊 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1