《用于验证和数据加密的方法和设备的制作方法》由会员分享,可在线阅读,更多相关《用于验证和数据加密的方法和设备的制作方法(5页珍藏版)》请在金锄头文库上搜索。
1、用于验证和数据加密的方法和设备的制作方法专利名称:用于验证和数据加密的方法和设备的制作方法技术领域:背景技术:微软公司的IEEE1667Password Silo验证协议要求希望访问存储在设备上的数据的主机和该设备都向彼此证明其知道正在被验证的密码。根据1667协议,这是通过使每一方为另一方提供随机询问,然后返回结合了密码的另一方的询问的散列。为了使得设备证实主机知道正确的密码,设备本身还必须知道和存储密码的拷贝。对大多数未加密产品来说这是合理的条件:由于用户的数据未加密,所以设备可以将密码的拷贝存储在非易失性存储器中,其中密码的拷贝只是比用户的数据更安全一点。然而,至少数据加密产品的密码、数
2、据加密密钥(DEK)和已加密数据本身必须是安全的。如果设计产品使得访问凭证仅仅与用户驻存在一起,那么设备本身必须不含有可用于访问用户的数据的任何密码或密钥。实际上,窃贼应该不能够分解和分析设备,并且不能发现能够使他或她解密存储的加密数据的必要信息。而且,在主机和设备之间监听的闯入者应该不能够捕获在主机和设备之间交换的任何信息,该消息使设备稍后验证他或她和允许其解密设备存储的加密数据发明内容图1是根据一个实施例配置的主机设备和存储设备的框图。图2是根据一个实施例的保护访问在存储设备上存储的数据的密码的方法的流程图。图3是根据一个实施例的验证主机设备的方法的流程图。具体实施例方式图1是根据一个实施
3、例配置的主机设备和存储设备的框图。如其中所示的,存储设备102可以通过接口 103耦接至一个或更多个主机设备104。在某些实施例中,可以存在耦接至存储设备102的不只一个主机设备104。主机设备104可以是或包括个人计算机、平板电脑或请求访问存储在存储设备102内的加密数据的任何设备,例如,数字视频录像机(DVR)、DNLA电视或无线设备。存储设备102可以包括非易失性存储介质112,例如,磁盘或多于一个磁盘、非易失性半导体存储器(例如闪存驱动器或SSD)、同时含有磁盘和非易失性半导体存储器的混合型存储介质或能够以非易失性方式存储用户数据的任何其他设备。存储设备102还可以包括易失性存储器10
4、8 (例如,随机存取存储器(RAM)和处理器110。处理器可以是共同执行附图2和3中的方法的硬件、软件和固件的任何组合。非易失性存储介质112可以存储至少加密的用户数据114、一个或更多个加密的用户密码118和第一数字116,如下文中所描述的。非易失性存储介质112还可以如下文所描述地包括一个或更多个DEK0如下文中所描述的,处理器110可工作以执行图2和图3中所示的方法。图2是根据一个实施例的保护用于访问在存储设备上的数据存储的密码的方法的流程图。可以可选地执行框B201和B292,在此为了完整性同时包括B201和B202。框B201要求存储设备102从主机设备104接收驱动安全状态检查。这
5、种状态检查可以确定是否已经设置存储设备102的密码。如果先前已经设置存储设备102的密码(框B202的肯定分支),那么该方法可以进行至图3的框B31。然而,如果还未设置存储设备102的密码(框B202的否定分支),那么该方法进行至图2的框B21。如图所示,框B21要求存储设备102接收得到对存储在存储设备102上的数据的将来访问所需的第一输入密码。该第一输入密码可以经过如图1所示的接口 103从主机设备104接收。主机设备104的用户可能已经输入该第一输入密码,并且该第一输入密码可以以明文(即,未加密的)被发送至存储设备。或者,先前已经将存储设备102接收的第一输入密码存储在主机设备104上。
6、响应存储设备102接收第一输入密码,存储设备102可以生成第一数字,如框B22中所示。所生成的第一数字可以包含随机数或伪随机数。然后,如框B23中所示,存储设备102可以组合所接收的第一输入密码和所生成的第一数字。如框B24所要求的,然后可以生成基于第一输入密码和第一数字的组合的加密密钥。如框B25中所示,利用所生成的加密密钥可以加密所接收的第一输入密码(以及,可选地,其他数据结构)。然后,如框B26所示,至少加密的第一输入密码和第一数字可以存储在非易失性存储介质112中。根据一个实施例,以明文发送至存储设备102的第一输入密码(和在框B21由存储设备102接收)仅仅是暂时存储在易失性存储器1
7、08中,而不存储在非易失性存储介质112中。基于第一输入密码和第一数字的组合可以生成加密密钥。根据一个实施例,通过使得第一输入密码附加到第一数字(例如,串接)或通过使第一数字附加到第一输入密码(例如,串接),第一输入密码和第一数字可以组合起来。根据一个实施例,通过散列第一输入密码和第一数字可以组合第一输入密码和第一数字。大多数任何安全的散列算法可以用于组合第一输入密码和第一数字。例如,SHA-1 (“安全的散列算法I”)加密散列函数可以用于组合第一输入密码和第一数字。SHA-1由美国国家安全局(NSA)指定,并且由美国NIST公布为美国联邦信息处理标准。合适的散列算法的另一个示实例是SHA-2
8、,其也是由NSA指定和NIST在2001年公布的一组加密散列函数(SHA-224、SHA-256、SHA-384、SHA-512)。SHA-2被认为包括大量来自其前驱SHA-1的改变。目前,SHA-2由具有长度是224位、256位、或512位的摘要的一组四个散列函数构成。如本领域的技术人员可认识到的,其他散列算法可以用于组合第一输入密码和第一数字。根据一个实施例,组合第一输入密码和第一数字可以包括使第一输入密码附加到第一数字(或使第一数字附加到第一输入密码),以及利用SHA-1和SHA-2散列算法散列合成的第一输入密码和附加的第一数字,从而生成密钥或多于一个密钥。于是,生成的密钥可以用于加密第
9、一输入密码(因而生成第一加密的第一输入密码)和DEK,DEK用于加密存储设备102上的用户数据。第一加密的第一输入密码(若干个)和加密的DEK (若干个)可以存储在非易失性存储介质112中。根据一个实施例,可以存在不只一个第一输入密码。例如,存储设备102可以支持同时使用用户密码和 管理员密码。如上所述,存储设备102还可以支持使用不只一个散列算法。例如,存储设备102还可以支持同时使用SHA-1和从SHA-2协议定义的散列函数集中选择的一个或更多个散列函数,例如,SHA-256。因此,根据一个实施例,为了同时支持用户密码和管理员密码与使用SHA-1和SHA-2,可以生成总共四个单独的密钥。第
10、一个这种密钥可以是附加到第一数字的第一输入用户密码的SHA-1散列或附加到第一用户输入密码的第一数字的SHA-1散列。第二个这种密钥可以是附加到第一数字的第一输入管理员密码的SHA-1散列或附加到第一管理员输入密码的第一数字的SHA-1散列。第三个这种密钥可以是附加到第一数字的第一输入用户密码的SHA-2散列或附加到第一用户输入密码的第一数字的SHA-2散列。最后,第四个这种密钥可以是附加到第一数字的第一输入管理员密码的SHA-2散列或附加到第一管理员输入密码的第一数字的SHA-2散列。然而,理解的是,如本领域的技术人员可以认识到的,大多数任何字符串运算、数学运算或逻辑运算,单个地或组合地可以
11、代替术语“附加到”和/或“组合的”。继续以上直接形成的实例,第一密钥(利用SHA-1生成的)可以用于加密第一输入用户密码和DEK,第二密钥(也利用SHA-1生成的)可以用于加密第一输入管理员密码和DEK,第三密钥(利用SHA-2生成的)可以用于加密第一输入用户密码和DEK,以及第四密钥(利用SHA-2生成的)可以用于加密第一输入管理员密码和DEK。一旦已经执行图2中概述的和以上所述的方法,存储设备102就只存储第一输入用户密码的加密版本(如果使用一个散列)或多于一个加密版本(如果使用不只一个散列)。如果使用管理员密码,则除了第一输入用户密码的加密版本(多于一个)之外,存储设备102还存储第一输
12、入管理员密码的加密版本(如果使用一个散列)或多于一个加密版本(如果使用不只一个散列)。用户密码和管理员密码不以明文存储在存储设备102中。用这种方式,如果非授权用户拥有存储设备102,这种非授权用户不能够分解和分析驱动器,尝试恢复用户密码和/或管理员密码,以访问存储在存储设备102上的加密用户数据。一旦以加密形式设置密码并且将密码存储在存储设备102上,存储设备102准备验证主机设备(以及延伸到主机设备的用户),主机设备寻求访问存储在非易失性存储介质112上的加密用户数据。图3是根据 一个实施例的验证主机设备的方法的流程图。如图所示,框B31要求存储设备102通过与主机设备104的接口 103
13、接收验证请求。主机设备104可以已经请求并且用户提供第二输入密码,该第二输入密码是当存储设备102请求来自主机设备104的验证时主机设备104的用户输入的密码。术语“第二输入密码”是为了区分在验证会话期间输入的密码与在密码设置或重新设置会话期间用户输入的“第一输入密码”。已经从主机设备104接收验证请求,存储设备102可以通过利用第一数字应答主机设备104来响应请求,如B32所示。根据一个实施例,第一数字可以包含先前由处理器110生成的或提供给处理器110并且存储在非易失性存储介质112中的随机数。框B33要求存储设备102接收第二数字,所述第二数字基于在框B32提供给主机设备的第一数字和第二
14、输入密码的加密组合。然后,存储设备102可以读取来自其存储介质112的已加密第一输入密码(在此还称为第一已加密第一输入密码),并且尝试利用第二数字解密第一已加密第一输入密码。如果第二数字成功解密第一已加密第一输入密码(在框B34的肯定分支),那么成功地验证主机设备104,如框B35中所示。在已经验证主机之后,如果用户选择改变密码,那么可以接收和加密(根据图2的框B21-B26)新密码。如果第二数字未成功解密第一已加密第一输入密码(在框B34的否定分支),那么未验证主机设备104,如框B36中所示。如果未验证,那么不允许主机设备104访问存储在存储设备102的非易失性存储介质112上的用户数据。
15、通过许多方式可以确定解密成功或解密失败。例如,为了确定第一已加密第一输入密码的解密是否成功,已经加密先前已知的数字(例如,其值可以在固件中设置的预定32位数字)和第一输入密码,并且将其存储在非易失性存储介质112上。然后,一旦解密先前加密的数字和第一已加密第一输入密码,就可以确定已解密数字是否匹配固件中设置的值。如果是,那么认为已经成功进行第一已加密第一输入密码的解密。如果已解密数字不匹配固件中设置的值,那么可以认为未成功进行第一已加密第一输入密码的解密。或者,可以确定第一输入密码的循环冗余校验码(CRC)。然后,可以连同第一输入密码加密CRC,并且将其存储在非易失性存储介质112上。一旦解密
16、第一已加密第一输入密码,还可以解密CRC,并且该CRC与刚刚解密的第一已加密第一输入密码的CRC相比较。如果刚刚解密的第一已加密第一输入密码的CRC匹配解密的CRC,那么可以认为已经成功进行第一已加密第一输入密码的解密。如果刚刚解密的第一已加密第一输入密码的CRC未匹配解密的CRC,那么可以认为还未成功进行第一已加密第一输入密码的解密。本领域的技术人员将认识到,确定第一已加密第一输入密码的解密成功或失败的其他方法是可能的。一旦成功进行验证,那么存储设备102的处理器110可以引起生成第一消息,并且将第一消息提供给主机 设备104,第一消息表明存储设备102已经成功地验证主机设备104。一旦未成功进行验证尝试,存储设备102的处理器110就可以引起生成第二消息,并且将第二消息提供给主机设备104,第二消息表明存储设备102还未成功验证主机设备104。在该情况下,存储设备102将拒绝主机设备104访问存储在其上的已加密用户数据114。根据一个实施例,基于第一输入密码和第一数字的组合生成的密钥不仅用于加密第一输入密码还用于加密DEK。如果验证成功并且主