示例性上下文
图1示出由口令所保护的个人计算机100。除非用户已登录,否则不允许他们访问存储在该计算机上的信息。出于这一目的,在计算机100的屏幕上显示登录界面102。登录界面102包括供用户输入登录名的登录提示104和供该用户输入他或她的口令的口令提示106。可以在登录界面102上提供信息消息108,通知该用户所需的口令长度和容许字符。在所示实现中,口令必须是6-8位字符长,可以包括字母和/或数字,且是大小写敏感的。
如果该用户未能记住口令,他或她将不能够登录到计算机100。在某些情况下,可以允许该用户重新设置口令,可以向该用户提供暗示来帮助该用户记起口令,和/或可以响应于该用户回答一个或多个安全问题(例如,母亲的娘家姓、出生地等)来向该用户提供该口令。在缺少这些选项的情况下,或如果用户仍然不能够记起该口令,则可能必须恢复或破解该口令来得到对所保护的材料的访问。
示例性口令恢复技术
取决于要恢复的口令的大小(即,位置的数量)和每一位置所容许的字符的数量,口令恢复可能是冗长的过程。对于每一附加字符,恢复该口令的时间呈指数地增加。具体地,可能的口令的数量可以表示如下:
其中,P是可以在该口令中使用的容许字符的数量,N是按照字符位置数量来计算的口令长度,而X和Y分别是最小和最大容许口令长度,其也是按照字符位置的数目来计算的。
图2和3示出简单的口令恢复情况。在所示情况中,口令可以具有1到3个位置的长度N,以及有可用于每一位置的3个容许字符P{A,B,C)。应用上述方程1,容许字符A、B和C可被组合为长度上1到3个字符的39个可能的口令(即,31+32+33=39)。在所示情况中,用户先前创建了口令“CAB”(39个可能的口令中的一个),但现在忘记了该口令。
图2示出代表性口令恢复程序200。在该实现中,可以请求用户输入关于合适的口令的某些准则202,如口令的容许长度(在该情况下是1-3个位置)和可以在该口令中使用的容许字符集(在该情况下是A、B和C)。程序200随后对所生成的文字的所有位置使用单个预定字符串“ABC”,以顺序的方式生成“文字列表”204。该文字列表包括通过对每一字符位置在预定字符串中循环,直到尝试了所有可能的组合为止,来顺序地生成的文字。因此,如图2所示,生成的第一个文字是“A”,第二个文字是“B”,第三个文字是“C”,第四个文字是“AA”,第五个文字是“AB”,依此类推。该过程继续,直到生成了口令为止。在图2的示例中,直到生成了第23个文字206,才会发现忘记的口令“CAB”。
在仔细分析该用于猜测口令的方法时,显而易见,在恢复过程期间,以该字符串的首字母开头的文字比以该字符串的后续字母开头的文字生成的更快。如果所有39个可能的口令都有关相等的可能性被使用,则字符串中的字符的顺序将不重要。然而,在实践中,口令通常至少是部分地基于常见字符组合,如单词、名称、日期、缩写词、首字母、这些的组合、和/或比随机字符组合更可记忆的其它字符组合。因此,如果用于文字生成的字符串以这些字符在可能的口令中使用的顺序来重新排列,则猜测口令所需要的时间将会减少。如果对于文字中的每一不同的位置使用不同的字符串,则该时间将进一步减少。例如,用于每一位置的字符串可以基于该字符出现在例如,诸如英语等语言、现有口令的样本等中的每一位置的频率等来组织。
图3示出使用基于字符位置的方式的示例性口令恢复程序300,其中用于生成文字的至少一个字符串是基于这些字符出现在现有3字口令的假想样本中的每一位置的频率来组织的。在一示例中,口令可以从容许字符集{A,B,C)中选择。在图3的示例中,假定字符C是在现有口令的样本中在口令的第一和第三位置中使用得最常见的字符,随后是B,然后是A。字符A是在该样本中在口令的第二位置中使用得最常见的字符,随后是B,然后是C。
基于这些假设的结论,用于文字生成的这些字符串被以与在口令样本中发现的在该位置的出现频率相同的顺序来组织(从最频繁的到最不频繁的)。因此,用于第一字符位置的第一字符串302是C,B,A;用于第二字符位置的第二字符串304是A,B,C;而用于第三字符位置的第三字符串306是C,B,A。文字列表308是使用这些字符串来生成的。在该基于字符位置的实现中,忘记的口令“CAB”将作为第14个文字310来生成,比在图2的示例中更快。
如上所述,基于字符位置的文字生成允许用户在“按位置”的基础上指定字符串,以在破解会话中顺序地生成口令。这允许用户采用根据每一字符将出现在每一位置的可能性来组织的一组字符串,以尝试更快地回复口令。
实际上,因为只有39个不同的可能的口令,所以图2和3的3字符口令将很容易破解,最多只花几秒钟。然而,口令恢复时间随着容许字符的数量和口令的容许长度而增加。同样,尽管图3所示的实现只对于检索从字符A、B和C所形成的口令有用,但可以扩展该概念来包括使用包括字母(小写和/或大写)、数字、符号(标点或其它)、空格、形状等在内的任何其它所需字符的口令。
图4示出可用于恢复口令的另一示例性口令恢复程序400。在该示例中,口令可以是1到3个字符长,且可以从26个容许字符(在这种情况下是小写字母表a-z)中制定。在该示例中,假定对给定环境中的所有口令执行的研究示出,口令中的第一字符具有相等的机会是小写字母表字符的任一个,但字母“p”、“b”和“m”是所有口令的第二字符位置中的最常见的字符。使用基于字符位置的文字生成技术,用于3字符口令的字符串可能如下出现:
用于位置#1的字符串=“abcdefghijklmnopqrstuvwxyz”
用于位置#2的字符串=“pbmacdefghijklnoqrstuvwxyz”
用于位置#3的字符串=“abcdefghijklmnopqrstuvwxyz”
在定时场景中在猜测该环境的口令时,基于先前对该环境中使用的口令执行的研究,这些字符串将更高效。
这种现有口令的研究是确定用于基于字符位置的文字生成的字符串的一种可能的方式。然而,确定用于基于字符位置的文字生成的字符串的各种其它方式也是可能的。例如,通过分析给定语言(如英语)的语法规则或字典,用户可以确定给定文字位置中的最常见的字符。使用该信息,用户可以创建用于基于字符位置的文字生成的字符串,以在文字的每一字符位置处的出现频率的顺序列出字符。使用该方法,用户可以合理地假定在破解口令时,这种基于字符位置的字符串将比以标准序列(如按字母顺序、编年顺序等)列出可用字符的默认字符串更有效。
图5示出使用基于语法规则组织的字符串的示例性实现。如上所述,口令往往至少部分地基于常见单词、名称、日期、缩写词、首字母等等。至少在英语中,名称、日期、缩写词、首字母和句子的第一个单词通常都以大写字母开头。因此,在大写和小写字母都是口令的容许字符时,通过大写字母优先来组织对应于第一字符位置的字符串,恢复时间可以另外地或另选地减少。可以用小写字母优先或以任何其它所需顺序来组织用于第二和后续字符位置的字符串。
图5示出可用于恢复口令的示例性口令恢复程序500。在一示例中,口令可以是4到6个字符长,且可以从52个容许字符(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)中制定。在这种情况下,超过200亿个不同的口令是可能的(确切地说是20,158,125,312个),这将需要大量的恢复时间。
出于说明的目的,假定在这种情况下要恢复的口令是“YoYo”。在该实现中,对应于该口令的第一字符位置的第一字符串502以先大写字母后小写字母来开始(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)。对应于第二和后续字符位置的第二字符串504按先小写字母后大写字母排列(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)。对于所示实现中的每一字符位置,大写和小写字母都是以字母表顺序排列的。然而,字母可以另选地以不同的顺序来排列。例如,字母可被以逆字母表顺序、随机顺序或以字符出现在例如,诸如英语等语言、现有口令样本等中的每一位置处的频率的顺序等来排列。此外,可以用一顺序来组织小写字母,而用另一顺序来组织大写字母。在一示例中,字符串可能是(abcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFEDCBA)。
文字列表506是使用字符串502和504生成的。以此方式,口令“YoYo”大约作为文字列表506上的文字号3,415,064来生成。然而,如果对所有位置使用以字母表顺序排列的小写字母开始的字符串,则该口令将直到大约文字号7,070,871时才被生成——在该场景中,节省超过50%的时间。
图6示出可用于恢复口令的另一示例性口令恢复程序600。在该示例中,口令可以是1到7个字符长,且可以从36个容许字符(abcdefghijklmnopqrstuvwxyz0123456789)中制定。因此,在该示例中,存在超过800亿(具体地是80,603,140,212)个可能的口令。
采用基于字符位置的文字生成技术,使用从犹他州盐湖城的古登堡计划文学归档基金(Project Gutenberg Literary Archive Foundation)获得的公众可用的英语字典来分析856368个单词,(然而,可以另外地或另选地使用任何其它合适的字典)。古登堡计划字典包括小写常见名称、常见日期、小写常见单词和小写常见拼写错误。分析了单词的头7个字符位置,且为每一字符位置生成一字符串,对每一字符位置字符都是从最常见到最不常见来组织的。为所有7个位置所生成的字符串是:
位置#1=“scpabtmdrhfguelionwvkjqyz0x312465789”
位置#2=“aeorisucnphltmbdfgwvykjqxz0132647859”
位置#3=“aeorinslcutpmhbdgfwvyxjxqz0132467589”
位置#4=“aeroinstlcupmdhbgfwvykxjqz0123465789”
位置#5=“earointslcupmdhbgfywkvxjzq0123465789”
位置#6=“eairontslcupmdhbgfywvkxzjq0123465789”
位置#7=“eairontslcupdmhbgfywkvxzjq0123465879”
从第一位置到最后位置,字符频率以及字符串的顺序都是大不相同的。此处所描述的基于字符位置的技术可能不能对每一口令都导致较短的口令恢复时间,但它们将比使用传统口令恢复方法平均提供较短的恢复时间。
示例性计算设备
图7更详细地示出图1的计算机100。计算机100可被配置为能够实现口令恢复程序的任何合适的计算设备。在一示例性配置中,计算机100包括至少一个处理单元700和存储器702。取决于计算设备的配置和类型,存储器702可以是易失性的(诸如RAM)和/或非易失性的(诸如ROM、闪存等)。
存储器302可以包括操作系统804和用于实现口令恢复技术的全部或部分的口令恢复程序或代理程序806,以及各种其它数据、程序、媒体等等。计算机100还可包括附加可移动存储808和/或不可移动存储810,其包括但不限于磁盘、光盘和/或磁带。操作系统804和/或口令恢复代理程序806可以另外地或另选地存储在可移动存储808和/或不可移动存储810上。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器302、可移动存储808和不可移动存储810都是计算机存储介质的示例。可以存在的附加类型的计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储所需信息且可以由计算机100访问的任何其它介质。
计算机100还可以包括允许计算机100经由网络与一个或多个其它计算机、服务器或其它计算设备通信的通信连接812。作为示例而非局限,通信连接812可以包括诸如有线网络或直接线连接等有线介质,以及诸如声学、RF、红外线和其它无线介质等无线介质。
计算机100还可包括输入设备814,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等,和输出设备816,如显示器、扬声器、打印机等等。所有这些设备在本领域中都是公知的,因此不必在此详细讨论。
示例性口令恢复方法
图8是示出示例性口令恢复方法800的流程图。方法800可以但不必至少部分地由如图7所示的、运行如图2-6所示的口令恢复程序的计算设备100实现。方法800包括,在802,标识可用于口令的语言;在804,标识可以在该口令中使用的容许字符,以及在806。
对于从最少字符位置(如果有)到且包括最多字符位置(如果有)的每一字符位置,该方法包括在808,确定容许字符的每一个在所标识的语言中在相应的字符位置使用的频率。该判定是基于字典、对现有口令样本的研究、语法规则等来作出的。
在810,基于所确定的、每一字符在所标识的语言的单词中的相应位置处使用的频率,将容许字符排列成用于每一位置的字符串。在812,还可以基于诸如将名称、日期、缩写词、句子的开头单词的首字母大写等语法规则,来选择用于每一位置的字符串。
在814,可以顺序地生成具有至少一个字符位置的文字,每一文字都是通过从用于该位置的字符串中顺序地为该文字的每一字符位置选择字符来生成的。在816,该顺序地生成的文字可被输入到登录界面等中,直到确定了该口令为止。
以上描述了一个示例性口令恢复方法800的细节。然而,应当理解,取决于各种情况,口令恢复方法800中的某些动作不必以所述顺序执行,可被修改,和/或被完全省略。例如,可以基于英语、另一语言、一组现有口令或这些的组合中的出现频率来生成文字。另外地或另选地,可以基于诸如将单词的首字母大写、在单词的末尾加点、加省略号作为该单词的第二个到最后的字符等一个或多个语法规则来生成文字。
此外,上述任何动作都可由计算机、处理器或其它计算设备基于存储在一个或多个计算机可读介质上的指令来实现。如上所述,计算机可读介质可以是可以由计算设备访问以实现其上存储的指令的任何可用的介质。
结论
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但所附权利要求书中定义的主题不必限于所述具体特征或动作。相反地,这些具体特征和动作是作为实现该权利要求的示例性形式而公开的。例如,该方法动作不必以此处所述的顺序或组合来执行,而能以一个或多个动作的任何组合来执行。