用于生成随机且唯一的代码的电子设备和方法与流程

文档序号:12278134阅读:605来源:国知局
用于生成随机且唯一的代码的电子设备和方法与流程

本公开涉及用于生成随机且唯一的代码(code)的电子设备和方法,并且更具体地涉及用于使用基于时间的一次性(one-time)密码来生成随机且唯一的代码的电子设备和方法。



背景技术:

操作系统和所有其它计算机应用系统可以唯一地生成标识符(ID)并且将它们分配给相应的对应用户以便彼此区分访问用户。为了对可能容易暴露或泄露的这样的ID的特性定址(address),可以生成可以由用户容易地记忆的密码,与ID映射,并且与ID一起受管理。相比于ID被暴露时的情况,与ID一起使用密码导致进一步增强的安全性。

然而,用户倾向于为了较容易记忆而生成简单类型的密码,例如‘12345678’。这使密码经受更多攻击,其使得其他人或黑客容易猜测密码。即使假定建立了复杂的密码(例如aB3Pe#28dwqP),黑客也可以使用高级黑客技术(例如黑客工具,诸如密钥记录器)来容易地想出ID和密码。为了解决这样的情况,系统要求用户周期性地变化复杂密码(要求例如预确定长度或大写/小写、特殊字符或字母的组合)。然而,在实际生活中,用户在记忆这样的密码方面存在显著困难,并且因而,他摘记下其针对相应系统的ID和密码以用于随后使用。

然而,仅仅使用ID和密码由于发展的黑客技术而在安全性方面呈现其限制。补偿方法是所谓的双因素验证,其中由用户单独实施的事物(例如,一次性密码生成器、一次性密码(OTP)令牌、安全卡等)连同由用户所记忆的信息(ID/密码)一起使用。

换言之,这允许由用户记忆的ID/密码与用户所占有的事物(诸如OTP令牌或安全卡)一起使用。双因素验证被如此称呼是因为其使用由用户识别(记忆)的ID/密码——认识因素——和由用户占有的事物——占有因素——二者。进一步高级的版本是多因素验证,其中例如用户的生物信息(例如指纹、虹膜或语音识别信息)的各种因素一起用于用户验证。

事实上,ID不足以彼此区分访问系统的用户。然而,要求用户连同密码一起使用多个因素以用于更好的安全性目的。这可以意味着针对系统而不是用户研究/开发用户验证技术。

一次性代码是由ASCII码构成的字符串并且包括字母数字{‘0’,……,‘9’,‘A’,……,‘Z’,‘a’,……,‘z’}和可显示ASCII字符{‘!’,‘@’,……}的组合。这是随机生成的预确定长度的ID,而不是系统中注册的实际用户ID,并且意味着字符串包括给定字符集合中所包含的字符。

例如,假定给定字符集合是具有长度6的{‘0’,……,‘9’,‘A’,……,‘Z’},则分配给用户的随机ID变为‘A012ZE’、‘KABFZE’、‘019D3F’、……。此处,分配给用户的一次性代码应当是唯一的。也就是说,使用给定字符集合可生成的代码的最大数目如下:36(26(其是字母表中的大写字母的数目)+10(其是数字的数目))^6(随机ID的长度)=2,176,782,336。

为了周期性地生成作为不同字符的组合的这种代码,使用TOTP(RFC6238),并且所生成的TOTP中的每一个数位(digit)被用作给定字符集合的索引,由此生成唯一且随机的代码。然而,OTP算法方式呈现以下可能性:相同结果在同时使用其它SEED(种子)时发生。也就是说,其也许可能引起冲突。作为结果,单独使用TOTP不能满足针对ID的唯一性要求,从而使得ID难以可用。

以上信息仅被呈现为背景信息以帮助理解本公开。就以上中的任一个是否可能适用为关于本公开的现有技术而言,尚未做出确定,并且不做断定。



技术实现要素:

如先前讨论的,区分用户的常规技术基于其中ID和密码是固定的方案而操作并且因而可能引起用户ID和密码的暴露。本公开已经设想要解决这样的问题,并且根据本公开的实施例,提供用于生成随机且唯一的代码的电子设备和方法。

根据本公开的实施例,用于生成代码的方法包括获取用于生成一次性密码(OTP)的第一种子、字符集合和分配给第一用户的第一唯一代码,使用第一种子生成第一OTP,通过将第一唯一代码和第一OTP的运算结果映射到字符集合而生成第一子代码,通过将第一OTP映射到字符集合而生成第二子代码,以及使用第一子代码和第二子代码来生成代码。

根据本公开的实施例,生成代码的电子设备包括存储器和与存储器电气连接的处理器,其中存储器可以存储指令,所述指令被执行以使得处理器能够获取用于生成一次性密码(OTP)的第一种子、字符集合和分配给第一用户的第一唯一代码,使用第一种子生成第一OTP,通过将第一唯一代码和第一OTP的运算结果映射到字符集合而生成第一子代码,通过将第一OTP映射到字符集合而生成第二子代码,以及使用第一子代码和第二子代码来生成代码。

根据本公开的实施例,电子设备包括通信模块,存储用于生成一次性密码(OTP)的第一种子、字符集合和分配给第一用户的第一唯一代码的存储器,以及处理器,其中处理器配置成使用第一种子生成第一OTP,通过将第一唯一代码和第一OTP的运算结果映射到字符集合而生成第一子代码,通过将第一OTP映射到字符集合而生成第二子代码,使用第一子代码和第二子代码来生成代码,以及通过通信模块将所生成的代码传送给另一电子设备。

根据本公开的实施例,执行验证的电子设备包括从另一电子设备接收第一代码的通信模块,存储用于生成一次性密码(OTP)的第一种子、字符集合和分配给第一用户的第一唯一代码的存储器,以及处理器,其中处理器可以配置成使用第一种子生成第一OTP,通过将第一唯一代码和第一OTP的运算结果映射到字符集合而生成第一子代码,通过将第一OTP映射到字符集合而生成第二子代码,使用第一子代码和第二子代码来生成第二代码,当第二代码与通过通信模块所接收的第一代码相同时,执行验证,并且当第二代码与通过通信模块所接收的第一代码不相同时,放弃执行验证。

根据以下详细描述,本公开的其它方面、优点和凸出特征将对于本领域技术人员显而易见,结合附图进行的以下详细描述公开了本公开的示例性实施例。

附图说明

随着本公开的更完整领会及其随附方面中的许多通过参照结合附图考虑的以下详细描述而变得更好理解,将容易地获取本公开的更完整领会及其随附方面中的许多,在所述附图中:

图1是图示了根据本公开的实施例的用于生成唯一代码的方法的流程图;

图2是图示了根据本公开的实施例的生成代码的电子设备的框图;

图3是图示了根据本公开的实施例的用于生成代码的方法的流程图;

图4是图示了根据本公开的实施例的用于生成代码的方法的流程图;

图5是图示了根据本公开的实施例的偏移(offset)确定过程的流程图;

图6是图示了根据本公开的实施例的用于确定字符集合的方法的流程图;

图7是图示了根据本公开的实施例的用于确定字符集合的方法的流程图;

图8是图示了根据本公开的实施例的智能卡和读卡器的框图;

图9是图示了根据本公开的实施例的智能卡和读取器的操作的流程图;

图10是图示了根据本公开的实施例的电子设备和打开/关闭系统的操作的流程图;

图11是图示了根据本公开的实施例的多因素验证系统的概念视图;

图12是图示了根据本公开的实施例的通过智能卡的验证过程的概念视图;

图13是图示了根据本公开的实施例的系统登录过程的概念视图;以及

图14是图示了根据本公开的实施例的IoT环境之下的电子设备的操作的概念视图。

遍及附图,相同的参考标号将理解成是指相同的部分、组件和结构。

具体实施方式

在此之后,参照附图详细地描述本公开的示例性实施例。然而,本公开不限于示例性实施例。每一个图中的参考标号表示基本上执行相同功能的构件。

图1是图示了根据本公开的实施例的用于生成唯一代码的方法的流程图。

在根据图1的实施例中,第一电子设备100可以是生成唯一代码的电子设备,并且服务器200可以是生成唯一代码并且核实被请求用于核实的唯一代码的电子设备。服务器200可以是使用唯一代码管理服务的电子设备。例如,服务器200可以是管理网络服务的电子设备,并且服务器200可以管理用户ID及其对应的登录信息。

在操作110中,第一电子设备100可以与服务器200共享第一单元信元(cell)和第一种子。根据本公开的实施例,当在系统中使用第一电子设备100登记第一用户时,服务器200可以将第一唯一种子和第一种子传送给第一电子设备100。服务器200可以传送允许向另一电子设备显示第一唯一代码和第一种子的信息。例如,第一用户可以发送请求以用于通过第一电子设备100或另一电子设备向服务器200登记。服务器200可以将第一唯一代码分配给对应于登记请求的第一用户。服务器200可以将第一唯一代码传送给第一电子设备100或另一电子设备。服务器200可以将第一种子分配给第一用户。第一种子可以被分配给第一用户以生成基于时间的一次性密码。服务器200可以将第一种子传送给第一电子设备100或另一电子设备。根据本公开的实施例,服务器200可以将包括第一唯一代码和第一种子的QR码图像传送给第一电子设备100或另一电子设备。第一用户可以通过第一电子设备100捕获显示在另一电子设备上的QR码的图像,并且因此,第一电子设备100可以获取第一唯一代码和第一种子。

在操作120中,第一电子设备100可以使用第一种子和第一时间信息来生成第一一次性密码(OTP)。也就是说,第一电子设备100可以在第一时间处使用对应于第一时间的第一种子和第一时间信息来生成第一OTP。另外,第一电子设备100可以在第二时间处使用对应于第二时间的第二时间信息和第一种子来生成第二OTP。第一电子设备100可以使OTP随时间动态地变化并且生成OTP。

在操作130中,第一电子设备100可以使用第一OTP和第一唯一代码来生成第一代码。在下文更详细地描述其中第一电子设备100使用第一唯一代码和第一OTP生成随机且唯一的第一代码的过程。当使用第一OTP和第一唯一代码二者生成第一代码时,第一OTP可以针对第一唯一代码的唯一性、动态变化可能性和随机性而受保护(secure),从而使其随机且唯一。在下文更详细地描述第一代码的随机性和唯一性。

在操作140中,服务器200可以使用第一种子和第一时间信息来生成第一OTP。服务器200可以生成与由第一电子设备100在第一时间处使用对应于第一时间的第一时间信息和第一种子所生成的第一OTP相同的第一OTP。服务器200可以生成与由第一电子设备100在第二时间处使用对应于第二时间的第二时间信息和第一种子所生成的第二OTP相同的第二OTP。也就是说,服务器200可以动态地改变并生成OTP。

在操作150中,服务器200可以使用第一OTP和第一唯一代码生成第一代码。其中服务器200使用第一OTP和第一唯一代码生成第一代码的方案可以与其中第一电子设备100使用第一OTP和第一唯一代码生成第一代码的方案相同。因而,由服务器200生成的第一代码可以与由第一电子设备100生成的第一代码相同。

在操作160中,服务器200可以接收代码标识请求。服务器200可以从由第一用户所操纵的电子设备(例如第一电子设备100或另一电子设备)接收代码标识请求。

在操作170中,服务器200可以确定代码标识请求中的代码是否与由服务器200所生成的第一代码相同。当代码标识请求中的代码与由服务器200所生成的第一代码相同时,服务器可以在操作180中确定代码是适当的。当代码标识请求中的代码不同于由服务器200生成的第一代码时,服务器可以在操作190中确定代码是不适当的。服务器200可以取决于代码是否适当而执行或放弃执行附加服务,诸如用户登录或电子商务(e商务)支付。

图2是图示了根据本公开的实施例的生成代码的电子设备的框图。

电子设备100可以包括图像捕获模块101、处理器102和存储器103。

图像捕获模块101可以是可以图像捕获外部风景的模块。例如,处理器102可以使用通过图像捕获模块101所捕获的图像来获取关于种子、唯一代码和字符集合的信息。

处理器102可以包括中央处理单元(CPU)、保持用于控制电子设备100的控制程序的只读存储器(ROM)、以及用于存储从显示设备100外部输入的信号或数据或者用作用于在显示设备100上执行的任务的存储区域的随机存取存储器(RAM)。CPU可以包括单核、双核、三核或四核。CPU、ROM和RAM可以经由内部总线彼此内连。

存储器103可以包括ROM和RAM二者,并且可以存储关于用于生成代码、种子、唯一代码和字符集合的程序或算法的信息。

存储器103可以存储指令,所述指令被执行以使得处理器102能够获取用于生成一次性密码的第一种子,获取分配给第一用户的字符集合和第一唯一代码,使用第一种子生成第一一次性密码(OTP),可以第一OTP和第一唯一代码到字符集合的计算结果以生成第一子代码,将第一OTP映射到字符集合以生成第二子代码,以及使用第一子代码和第二子代码来生成代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够通过向基于时间的一次性密码算法输入对应于第一时间的第一时间信息和第一种子来生成第一OTP。

存储器103可以存储指令,所述指令被执行以使得处理器102能够通过与字符集合进行比较而将第一唯一代码转换成数字代码,对数字代码与第一OTP进行求和,以及通过将求和结果映射到字符集合而生成第一子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够利用字符集合的大小在求和结果上执行取模运算,并且通过将通过在求和结果上执行取模运算所获取的结果映射到字符集合而生成第一子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够向求和结果应用预设偏移,并且通过将偏移应用后的求和结果映射到字符集合而生成第一子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够利用字符集合的大小在偏移应用后的求和结果上执行取模运算,并且通过将通过在求和结果上执行取模运算所获取的结果映射到字符集合而生成第一子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够将预设偏移应用于第一OTP,并且通过将偏移应用后的第一OTP映射到字符集合而生成第二子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够利用字符集合的大小在偏移应用后的第一OTP上执行取模运算,并且通过将通过在第一OTP上执行取模运算所获取的结果映射到字符集合而生成第二子代码。

存储器103可以存储指令,所述指令被执行以使得处理器102能够获取基本字符集合并且通过打乱基本字符集合中的元素而获取字符集合。

存储器103可以存储指令,所述指令被执行以使得处理器102能够获取针对系统的所有用户相同的第二种子,使用第二种子生成第二OTP,以及使用通过利用基本字符集合中的元素数目在第二OTP上执行取模运算所获取的结果来交换基本字符集合中的每一个元素数位与另一元素数位。

同时,服务器200可以包括通信模块201和处理器202。

通信模块201可以响应于请求而向另一电子设备传送关于种子、唯一代码和字符集合的信息。另外,通信模块201可以执行包括代码的代码标识请求。

处理器202可以将唯一代码分配给用户。或者,处理器202可以生成对应于代码标识请求的代码。处理器202可以通过将所生成的代码与代码标识请求中的代码进行比较来确定代码标识请求是否是适当的。

图3是图示了根据本公开的实施例的用于生成代码的方法的流程图。

在操作310中,第一电子设备100可以获取根据每一个用户不同的第一种子以及第一唯一代码。第一种子可以由服务器200分配给第一用户。同时,第一唯一代码可以是基于ASCII码的字符串并且可以是字母字符、数字和特殊字符或符号的组合。第一唯一代码可以是选自预设字符集合中的元素的代码。例如,服务器200可以使用从字符集合生成唯一代码的算法来生成用于第一用户的第一唯一代码并且将其传送给第一电子设备100。服务器200可以生成用于其他用户的唯一代码。分别分配给用户的唯一代码可以彼此不同。

在操作320中,第一电子设备100可以使用第一种子和第一时间信息生成第一OTP。第一OTP可以包括例如数字。

在操作330中,第一电子设备100可以将第一唯一代码映射到预设字符集合以生成对应于第一唯一代码的数字代码。

例如,假定第一电子设备100使用预设字符集合{‘0’,‘1’,‘2’,……,‘9’,,‘A’,‘B’,……,‘Z’}。另外,假设第一电子设备100获取第一唯一代码“AX83Z0”。根据本公开的实施例,第一电子设备100可以通过标识第一唯一代码中的每一个数位的编号是字符集合中的索引的什么编号来将第一唯一代码中的每一个数位的编号转换成数字代码。例如,第一电子设备100可以通过标识作为第一代码中的数字的第一数位的字符“A”是字符集合中的第十一个索引而将唯一代码“A”转换成数字代码“10”。这可以源于数字代码起始点为0。以相同方式,第一电子设备100可以通过标识“X”是字符集合中的第34个索引而将唯一代码“X”转换成“33”。第一电子设备100可以将第一唯一代码“AX83Z0”转换成数字代码{10,33,8,3,35,0}。

在操作340中,第一电子设备100可以对第一OTP和数字代码进行求和。例如,当第一OTP是“382901”时,第一电子设备100可以将第一OTP中的数字的每一个数位与经转换的数字代码中的数字的每一个数位进行求和。也就是说,第一电子设备100可以将数字代码{10,33,8,3,35,0}与第一OTP{3,8,2,9,0,1}进行求和,从而产生求和结果{13,41,10,12,35,1}。同时,当求和结果超出字符集合中的元素的总数(例如36)时,第一电子设备100可以利用通过在字符集合中的元素的总数上执行取模运算所获取的结果来替换求和结果。在这样的情况下,第一电子设备100可以利用作为在“41”上执行36的取模运算的结果的“5”而替换“41”。因此,第一电子设备100可以获取求和结果{13,5,10,12,35,1}。可替换地,当生成求和结果时,可以应用偏移,其在下文更详细地描述。

在操作350中,第一电子设备100可以将求和结果映射到字符集合以生成第一子代码。例如,第一电子设备100可以将{13,5,10,12,35,1}中的每一个数字解译为索引并且从字符集合获取对应于它的字符。也就是说,第一电子设备100可以获取对应于“13”的索引的“D”作为第一子代码的第一字符。第一电子设备100可以获取对应于“5”的索引的“5”作为第一子代码的第二字符。依照以上描述的方案,第一电子设备100可以获取第一子代码“D5ACY1”。

在操作360中,第一电子设备100可以将第一OTP映射到字符集合以生成第二子代码。例如,第一电子设备100可以将{3,8,2,9,0,1}中的第一OTP的数字的每一个数位解译为索引并且生成对应于数字的每一个数位的第二子代码的字符的每一个数位。例如,第一电子设备100可以获取对应于数字“3”的字符“3”,并且可以获取对应于数字“8”的字符“8”。因此,第一电子设备100可以获取第二子代码“382901”。根据本公开的实施例,第一电子设备100可以将通过向数字的每一个数位应用偏移所获取的结果映射到字符集合以获取第二子代码,其在下文更详细地描述。

在操作370中,第一电子设备100可以生成包括第一子代码和第二子代码的第一代码。第一电子设备100可以通过将第一子代码和第二子代码级联而生成第一代码,例如“D5ACY1382901”。如上文所述,第一代码的第一子代码“D5ACY1”通过对动态且随机生成的唯一代码和OTP进行求和来设定,从而通过唯一代码保证动态性和随机性以及唯一性。然而,由于具有相同求和结果的代码可能以较低概率发生,所以根据本公开的实施例,第一电子设备100可以通过级联第二子代码而生成第一代码,唯一代码。

图4是图示了根据本公开的实施例的用于生成代码的方法的流程图。

在操作410中,第一电子设备100可以获取根据每一个用户不同的第一种子以及第一唯一代码。如先前阐述的,第一电子设备100可以通过从服务器200接收第一唯一代码和第一种子或者对显示在另一电子设备上的QR码进行图像捕获来接收第一唯一代码和第一种子。第一种子可以是用于生成由服务器分配给第一用户的OTP的种子。

在操作420中,第一电子设备100可以使用第一种子和第一时间信息来生成第一OTP。在操作430中,第一电子设备100可以将第一唯一代码映射到字符集合以生成对应于第一唯一代码的数字代码。例如,类似于以上结合图3描述的实施例,第一电子设备100可以获取第一唯一代码“AX83Z0”,并且可以在第一时间处使用对应于第一时间的第一时间信息和第一种子来生成第一OTP“382901”。第一电子设备100可以通过将第一唯一代码映射到预设字符集合{‘0’,‘1’,‘2’,……,‘9’,,‘A’,‘B’,……,‘Z’}而将第一唯一代码“AX83Z0”转换成数字代码{10,33,8,3,35,0}。

在操作440中,第一电子设备100可以对第一OTP和数字代码进行求和。例如,当第一OTP是“382901”时,第一电子设备100可以将第一OTP中的数字的每一个数位与经转换的数字代码中的数字的每一个数位进行求和。也就是说,第一电子设备100可以将数字代码{10,33,8,3,35,0}与第一OTP{3,8,2,9,0,1}求和,从而产生求和结果{13,41,10,12,35,1}。在操作450中,第一电子设备100可以向求和结果应用偏移。第一电子设备100可以将偏移设定成例如18。第一电子设备100可以将偏移18添加到求和结果中的数字的每一个数位。另外,类似于以上结合图3描述的示例,第一电子设备可以通过在偏移应用后的求和结果上执行字符集合的大小的取模运算而获取结果。因而,第一电子设备100可以获取偏移应用后的求和结果{31,23,28,30,17,19}。

在操作460中,第一电子设备100可以将偏移应用后的求和结果映射到字符集合以生成第一子代码。第一电子设备100可以将偏移应用后的求和结果“31”解译为字符集合中的索引以获取第31个字符“V”。第一电子设备100可以顺序地将‘23’、‘28’、‘30’、‘17’和‘19’转换成字符,并且因而可以生成第一子代码“VNSUHJ”。

在操作470中,第一电子设备100可以向第一OTP应用偏移。因而,第一电子设备100可以将偏移18添加到第一OTP{3,8,2,9,0,1}中的每一个数字以生成偏移应用后的第一OTP{21,26,20,27,18}。

在操作480中,第一电子设备100可以将偏移应用后的第一OTP映射到字符集合以生成第二子代码。也就是说,第一电子设备100可以将偏移应用后的第一OTP的{21,26,20,27,18}的每一个数字解译为字符集合中的索引以生成第二子代码。例如,第一电子设备100可以基于偏移应用后的第一OTP的第一数字“21”而获取字符集合中的第21个字符“L”。第一电子设备100可以以上述方式从偏移应用后的第一OTP的{21,26,20,27,18}生成第二子代码“LQKRIJ”。

在操作490中,第一电子设备100可以生成包括第一子代码和第二子代码的第一代码。第一电子设备100可以通过级联第一子代码和第二子代码而生成第一代码,例如“D5ACY1LQKRIJ”。如上文所述,第一代码的第一子代码“D5ACY1”通过对动态且随机生成的OTP和唯一代码进行求和来设定,从而通过唯一代码保证动态性和随机性以及唯一性。然而,由于具有相同求和结果的代码可能以较低概率而发生,所以根据本公开的实施例,第一电子设备100可以通过级联第二子代码而生成第一代码,唯一代码。

在下文中,通过算法描述以上所述的代码生成过程。

-定义

-C,具有不同字符作为其元素的字符集合,如在ASCII码中所表示的

给定字符集合被表示为C,其中C包括在ASCII码中表示的不同字符(字母大写/小写字符、特殊字符或符号、或文字)。例如,当C仅包括数字时,C={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’}并且在数字中不存在副本。另外,当C包括数字和大写字符时,C={‘0’,……,’9’,‘A’,……‘Z’}。以相同方式,给定字符集合C可以采取各种形式。C中的元素可以在相同集合中搅乱(shuffle)。例如,当字符集合仅包括数字(例如C={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’})时,可以发生以下结果:C={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}。

-S,给定字符集合C中的元素的数目

-C(n),C中的第n个元素(0<=n<C中的数字的数目)

C中的第n个元素被定义为C(n),其中n是满足以下关系的整数:0<=n<S。也就是说,n意指C中所包括的元素的索引。当给定字符集合C仅包括数字(例如C={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’})时,0<=n<10并且C(0)=‘8’,C(9)=‘5’。

-IndexOf(c),针对给定字符c的C中的索引

当给定字符集合C={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}时,IndexOf(‘8’)=0,IndexOf(‘5’)=9。

-U,表示随机生成的唯一用户ID的字符串,其包括C中的数字

当给定字符集合C={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}时,U被表示为‘0382’或‘7192’。

-U(n),U中的第n个字符(0<=n<U中的字符的数目)

当给定U=‘0382’时,n是满足以下关系的整数:0<=n<4,并且U(2)=‘8’,U(3)=‘2’。

-T,TOTP码

例如,随机六数位TOTP码变成‘839023’或‘659921’。

-T(n),定位在TOTP码中的第n个数字(0<=n<TOTP中的数位的数目)

例如,当所生成的TOTP码是‘839023’时,T(0)=‘8’并且T(5)=‘3’。

-N,随机码的长度(N>=1)

-R,随机码

-numOf(c),ASCII数字c成为数字的转换

-算法

以与通过编程语言C++的形式类似的形式来编写。

String generate_random_id(C,U,N,T)

{

string preId,

string postId,

int offset=18,//随机指定

for(n=0,n<N,n++)

{

int d=numOf(T(n)),//将T(n)ASCII码转换成数字,‘3’->3,‘9’->9

int x=IndexOf(U(n)),

preId+=C((d+x+offset)%S),//附加到在之前步骤中所创建的字符。

postId+=C((d+offset)%S),

}

return(preId+postId),//附加两个所创建的字符以创建最终R。

}

-模拟

如果

N=6,

C={‘0’,……,‘9’,‘A’,……,‘Z’},并且

S=10+26=36

U=‘AX83Z0’并且

T=‘382901’,则

0<=n<36,(0……35)

IndexOf(U)={10,33,8,3,35,0},并且

numOf(T)={3,8,2,9,0,1},并且

当在每一个数位上执行运算时,

preId[0]=C((3+10+18)%36)=C(31%36)=C(31)=‘V’

preId[1]=C((8+33+18)%36)=C(59%36)=C(23)=‘N’

preId[2]=C((2+8+18)%36)=C(28%36)=C(28)=‘S’

preId[3]=C((9+3+18)%36)=C(30%36)=C(30)=‘U’

preId[4]=C((0+35+18)%36)=C(53%36)=C(17)=‘H’

preId[5]=C(1+0+18)%36)=C(19%36)=C(19)=‘J’

并且

postId[0]=C((3+18)%36)=C(21)=‘L’

postId[1]=C((8+18)%36)=C(26)=‘Q’

postId[2]=C((2+18)%36)=C(20)=‘K’

postId[3]=C((9+18)%36)=C(27)=‘R’

postId[4]=C((0+18)%36)=C(18)=‘I’

postId[5]=C((1+18)%36)=C(19)=‘J’

并且

R=generate_random_id(C,U,N,T),并且R=‘VNSUHJ LQKRIJ’。

-模拟2——同时不同ID的情况下

如上文,N=6,C={‘0’,……,‘9’,‘A’,……,‘Z’},S=10+26=36。

作为代替,如果U=‘B05EFA’,并且

T=‘382901’,则

0<=n<36,(0……35)

IndexOf(U)={11,0,6,14,15,10},并且

numOf(T)={3,8,2,9,0,1},并且

当在每一个数位上执行运算时,

preId[0]=C((3+11+18)%36)=C(32%36)=C(31)=‘W’

preId[1]=C((8+0+18)%36)=C(26%36)=C(26)=‘Q’

preId[2]=C((2+6+18)%36)=C(26%36)=C(26)=‘Q’

preId[3]=C((9+14+18)%36)=C(41%36)=C(5)=‘5’

preId[4]=C((0+15+18)%36)=C(33%36)=C(33)=‘X’

preId[5]=C(1+10+18)%36)=C(29%36)=C(29)=‘T’

并且

postId[0]=C((3+18)%36)=C(21)=‘L’

postId[1]=C((8+18)%36)=C(26)=‘Q’

postId[2]=C((2+18)%36)=C(20)=‘K’

postId[3]=C((9+18)%36)=C(27)=‘R’

postId[4]=C((0+18)%36)=C(18)=‘I’

postId[5]=C((1+18)%36)=C(19)=‘J’

并且

R=generate_random_id(C,U,N,T),并且R=‘WQQ5XT LQKRIJ’。

因而,即使在相同OTP同时出现时,不同随机码也带来不同结果。

图5是图示了根据本公开的实施例的偏移确定过程的流程图。

在操作510中,第一电子设备100可以获取对于所有用户相同的第二种子。此处,第二种子可以是用于生成例如基于时间的一次性密码的种子值,并且第二种子可以不同于第一种子。在操作520中,第一电子设备100可以基于第二种子和第一时间信息而生成第二OTP,并且在操作530中,第一电子设备100可以使用第二OTP确定要在图4中使用的偏移。例如,第一电子设备100可以利用通过以字符集合中的元素数目在使用第二种子所生成的偏移上执行取模运算而获取的结果值来设定偏移。第二种子可以对于在系统中登记的所有用户以及第一用户而言是相同的。因而,在第一时间处生成的偏移可以对于所有用户是相同的,并且所生成的代码可以保持唯一。

图6是图示了根据本公开的实施例的用于确定字符集合的方法的流程图。

在操作610中,第一电子设备100可以获取对于所有用户相同的第二种子。此处,第二种子可以是用于生成例如基于时间的一次性密码的种子值,并且第二种子可以不同于第一种子。

在操作620中,第一电子设备100可以使用第二种子和第一时间信息而生成第二OTP。在操作630中,第一电子设备100可以使用第二OTP确定字符集合。例如,第一电子设备100可以首先获取基本字符集合并且通过基于第二OTP使基本字符集合变化而确定要用于生成代码的字符集合。

图7是图示了根据本公开的实施例的用于确定字符集合的方法的流程图。

在操作710中,第一电子设备100可以获取基本字符集合。例如,第一电子设备100可以获取基本字符集合{‘0’,‘1’,‘2’,……,‘9’}。基本字符集合中的元素数目可以为10。

在操作720中,第一电子设备100可以使用第二种子和第一时间信息来生成第二OTP。根据本公开的实施例,第一电子设备100可以利用hOTP算法来生成第二OTP。例如,假定第一电子设备100生成第二OTP“123456”。

在操作730中,第一电子设备100可以在第二OTP和字符集合上执行取模运算以获取运算的结果值。在操作740中,第一电子设备100可以使用运算的结果值来交换基本字符集合中的两个字符的位置。例如,第一电子设备100可以获取6,其是在123456上的取模运算的结果。第一电子设备100可以通过将6的运算结果解译为字符集合的索引而交换第六个字符与字符集合中的第0个字符。

在操作750中,第一电子设备100可以在所有字符上顺序地执行交换以获取使基本字符集合搅乱的字符集合。例如,第一电子设备100可以在字符集合中的第一字符上执行OPT运算和取模运算,并且可以通过将运算的结果值解译为索引来交换第一字符与对应于该索引的字符,并且第一电子设备100可以在第二个字符到第九个字符的所有上执行上述过程。

在操作760中,第一电子设备100可以使用经搅乱的字符集合来生成第一代码。

如上文所述,由于字符集合可以动态地变化,并且只要共享种子,则相同字符集合可以针对所有用户而生成,所以如上文所述那样生成的代码可以保持唯一。

以上所述字符集合搅乱方法的算法在下文描述。

1.基本字符集合C={‘0’,‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’}。

2.设定全局密钥并且将其用作OTP的种子。

3.以下重复如字符集合的大小那么多的次数,由此创建随机字符集合。

1)为了改变C(n)的位置,创建一个HOTP,并且以集合的大小执行取模运算。

2)当HOTP是123456时,以作为字符集合的大小的10执行取模运算,由此产生6。

3)如所获取的6意指C的索引,并且对应于C[6]的数字与当前意图改变的第C[0]个字符进行位置改变。也就是说,执行交换。

4)过程1、2和3再重复九次直到C[9]。

5)当完成以上计算时,产生经搅乱的字符集合,并且该集合用于生成随机ID。

模拟——字符集合搅乱

字符集合C={0,1,2,3,4,5,6,7,8,9},并且C的大小S=10,0<=n<10。

假定通过在每一个阶段处所生成的HOTP上以S执行取模运算而获取的值是O,并且

O(0)=1111 2222%10,

O(1)=3333 4444%10,

O(2)=5555 6666%10,

O(3)=7777 8888%10,

O(4)=9999 0000%10,

O(5)=1111 2222%10,

O(6)=3333 4444%10,

O(7)=5555 6666%10,

O(8)=7777 8888%10,并且

O(9)=9999 0000%10。

1)搅乱C[0]=0

由于O[0]=11112222%10=2,所以通过在C[0]的位置处放置C[2]而同时在C[2]的位置处放置C[0]来进行交换。因而,字符集合C={2,1,0,3,4,5,6,7,8,9}。

2)搅乱C[1]=1

由于O[1]=33334444%10=4,所以通过在C[1]的位置处放置C[4]而同时在C[4]的位置处放置C[1]来进行交换。因而,字符集合C={2,4,0,3,1,5,6,7,8,9}。

3)搅乱C[2]=0

由于O[2]=55556666%10=6,所以通过在C[2]的位置处放置C[6]而同时在C[6]的位置处放置C[2]来进行交换。因而,字符集合C={2,4,6,3,1,5,0,7,8,9}。

4)搅乱C[3]=1

由于O[3]=77778888%10=8,所以通过在C[3]的位置处放置C[8]而同时在C[8]的位置处放置C[3]来进行交换。因而,字符集合C={2,4,6,8,1,5,0,7,3,9}。

5)搅乱C[4]=4

由于O[4]=99990000%10=0,所以通过在C[4]的位置处放置C[0]而同时在C[0]的位置处放置C[4]来进行交换。因而,字符集合C={1,4,6,8,2,5,0,7,3,9}。

6)搅乱C[5]=5

由于O[5]=1111 2222%10=2,所以通过在C[5]的位置处放置C[2]而同时在C[2]的位置处放置C[5]来进行交换。因而,字符集合C={1,4,5,8,2,6,0,7,3,9}。

7)搅乱C[6]=0

由于O[6]=3333 4444%10=4,所以通过在C[6]的位置处放置C[4]而同时在C[4]的位置处放置C[6]来进行交换。因而,字符集合C={1,4,5,8,0,6,2,7,3,9}。

8)搅乱C[7]=7

由于O[7]=5555 6666%10=6,所以通过在C[7]的位置处放置C[6]而同时在C[6]的位置处放置C[7]来进行交换。因而,字符集合C={1,4,5,8,0,6,7,2,3,9}。

9)搅乱C[8]=3

由于O[8]=7777 8888%10=8,所以通过在C[8]的位置处放置C[8]而同时在C[8]的位置处放置C[8]来进行交换。因而,字符集合C={1,4,5,8,0,6,7,2,3,9}。

10)搅乱C[9]=9

由于O[9]=9999 0000%10=0,所以通过在C[9]的位置处放置C[0]而同时在C[0]的位置处放置C[9]来进行交换。因而,字符集合C={9,4,5,8,0,6,7,2,3,1}。

因而,经搅乱的字符集合C={‘9’,‘4’,‘5’,‘8’,‘0’,‘6’,‘7’,‘2’,‘3’,‘1’},并且使用经搅乱的字符集合生成随机码一次。

如上文所详述的,其中所生成的代码针对其唯一性而受保护的字符集合可以被搅乱。

图8是图示了根据本公开的实施例的智能卡和读卡器的框图。如图8中所示,智能卡800可以包括处理器810、存储器820和通信电路830。智能卡800可以在以与典型信用卡相同材料的相同大小所形成的塑料卡的表面上具有其自身的计算功能。对于本领域普通技术人员而言可以显而易见的是,智能卡800可以实现为金融卡或者可以嵌入在护照中并且不受特定应用所限制,只要其使用特定信息执行验证。

例如,存储器820可以保持操作系统(例如芯片操作系统(COS))。操作系统可以存储和管理存储在存储器820中的小应用程序(applet)并且将数据从小应用程序传达给硬件终端。存储在存储器820中的小应用程序可以意指以java语言创建的小尺寸应用程序。java语言可以意指基于互联网的编程语言,其用来创建用于处理简单功能的小尺寸程序,诸如小尺寸动画、绘图、显示天气的变化、或者显示股票(stock)信息,其由于容量或速度方面的限制而不要求以大尺寸创建。例如,小应用程序可以根据存储在存储器820中的安全信息输出唯一且随机的代码。具体地,小应用程序可以配置成通过上述过程使用所存储的安全信息来输出唯一且随机的代码。另外,存储器820可以存储用于生成一次性密码的第一种子、分配给第一用户的第一唯一代码、以及字符集合。

处理器810可以通过例如数据线811向读取器850输出所生成的代码。处理器810可以利用通过数据线811所接收的电力进行驱动。可替换地,处理器810可以通过通信电路830将所生成的代码传送给读取器850的通信电路853。通信电路830可以基于各种通信方案而将从处理器810所接收的代码传送给通信电路853,所述各种通信方案诸如蓝牙、ZigBee、红外(IR)通信、可见射线通信、近场通信(NFC)通信、无线保真(Wi-Fi)直连等。因而,智能卡800可以以接触或不接触方式向读卡器850传送所生成的代码。

由读卡器850以接触或不接触方式所接收的代码可以被提供给处理器851。处理器851可以生成代码。处理器851可以通过将所生成的代码与所接收的代码进行比较来确定所接收的代码是否适当。或者,读卡器850可以将所接收的代码转发给管理服务器。在这样的情况下,管理服务器可以生成代码并且可以通过将所转发的代码与所生成的代码进行比较来确定所接收的代码是否适当。

图9是图示了根据本公开的实施例的智能卡和读取器的操作的流程图。

在操作905中,智能卡900可以从读取器901接收电力。智能卡900可以通过数据线或电力线从读取器901接收电力或者无线地接收电力。

在操作910中,智能卡900可以与读取器901共享第一唯一代码和第一种子。所分配的第一唯一代码可以之前存储在智能卡900中。读取器901或管理服务器也可以之前存储第一唯一代码。第一种子可以被分配给第一用户以生成基于时间的一次性密码。管理服务器可以将第一种子分配给智能卡900,并且第一种子可以存储在智能卡900中。智能卡900可以使用第一种子和第一时间信息生成第一一次性密码(OTP)。也就是说,智能卡900可以在第一时间处使用对应于第一时间的第一种子和第一时间信息来生成第一OTP。另外,智能卡900可以在第二时间处使用对应于第二时间的第二时间信息和第一种子来生成第二OTP。智能卡900可以使OTP随时间动态地变化并且生成OTP。

在操作920中,智能卡900可以使用第一OTP和第一唯一代码来生成第一代码。其中智能卡900使用第一OTP和第一唯一代码生成随机且唯一的第一代码的过程已经在上文描述,并且不给出其进一步详细描述。当使用第一OTP和第一唯一代码二者生成第一代码时,第一OTP可以针对第一唯一代码的随机性、动态变化可能性和唯一性而受保护,从而使其随机且唯一。

在操作930中,读取器901或管理服务器可以使用第一种子和第一时间信息来生成第一OTP。读取器901可以生成与由智能卡900在第一时间处使用对应于第一时间的第一时间信息和第一种子所生成的第一OTP相同的第一OTP。

读取器901可以生成与由智能卡900在第二时间处使用在第二时间处对应于第二时间的第二时间信息和第一种子所生成的第二OTP相同的第二OTP。也就是说,读取器901可以动态地改变并生成OTP。在操作940中,读取器901可以使用第一OTP和第一唯一代码生成第一代码。

在操作950中,读取器901可以从智能卡900接收代码标识请求。也就是说,读取器901可以以接触或不接触方式接收由智能卡900所生成的代码。

在操作960中,读取器901可以确定代码标识请求中的代码是否与由读取器901所生成的第一代码相同。当代码标识请求中的代码与由读取器901所生成的第一代码相同时,读取器901可以在操作980中确定代码是适当的。当代码标识请求中的代码不同于由读取器901所生成的第一代码时,读取器901可以在操作970中确定代码是不适当的。

图10是图示了根据本公开的实施例的电子设备1000和打开/关闭系统1001的操作的流程图。打开/关闭系统可以是车辆的门或要求安全通行证的系统,或者可以以各种类型实现。

在操作1005中,电子设备1000可以从打开/关闭系统1001接收电力。电子设备1000可以通过数据线或电力线从打开/关闭系统1001接收电力或者无线地接收电力。

在操作1010中,电子设备1000可以使用第一种子和第一时间信息而生成第一一次性密码(OTP)。在操作1020中,电子设备1000可以使用第一OTP和第一唯一代码来生成第一代码。其中电子设备1000使用第一OTP和第一唯一代码来生成随机且唯一的第一代码的过程已经在上文描述,并且不给出其进一步详细描述。

在操作1030中,打开/关闭系统1001或者管理服务器可以使用第一种子和第一时间信息来生成第一OTP。打开/关闭系统1001可以生成与由电子设备1000在第一时间处使用对应于第一时间的第一时间信息和第一种子所生成的第一OTP相同的第一OTP。

打开/关闭系统1001可以生成与由电子设备1000在第二时间处使用在第二时间处对应于第二时间的第二时间信息和第一种子所生成的第二OTP相同的第二OTP。

在操作1050中,打开/关闭系统1001可以从电子设备1000接收代码标识请求。也就是说,打开/关闭系统1001可以以接触或不接触方式接收由电子设备1000生成的代码。

在操作1060中,打开/关闭系统1001可以确定代码标识请求中的代码是否与由打开/关闭系统1001所生成的第一代码相同。当代码标识请求中的代码与由打开/关闭系统1001所生成的第一代码相同时,打开/关闭系统1001可以在操作1080中确定代码是适当的。当代码标识请求中的代码不同于由打开/关闭系统1001生成的第一代码时,打开/关闭系统1001可以在操作1070中确定代码是不适当的。

图11是图示了根据本公开的实施例的多因素验证系统的概念视图。

参照图11,电子设备1100可以显示屏幕1110以用于输入密码。用于输入密码的屏幕1100可以包括多个数字。例如,电子设备1100可以在用于输入密码的屏幕1110上检测“1”1111,“2”1112,“3”1113和“4”1114的连续输入。电子设备1100可以使用首先输入的唯一代码“1”1111来生成代码“SrDCC1040”。电子设备1100可以使用唯一代码“2”1112生成代码“FQd3se4tT”,使用唯一代码“3”1113生成代码“FrWwre0Te”,并且使用唯一代码“4”1114生成代码“hwDYQzQkey”。电子设备1100可以将所生成的代码的串“SrDCC1040FQd3se4tTFrWwre0TehwDYQzQ”发送给管理服务器1101。管理服务器1101可以将使用之前所存储的“1234”中的每一个数字的代码“SrDCC1040FQd3se4tTFrWwre0TehwDYQzQ”与从电子设备1100接收的代码进行比较,并且取决于比较结果来确定代码是否适当。因而,多因素验证可以通过用户的存储器和从其生成的代码使用信息“1234”而是可能的。

图12是图示了根据本公开的实施例的通过智能卡的验证过程的概念视图。

如图12中所示,智能卡1201可以以接触或不接触方式将所生成的代码发送给安全门1202。智能卡1201可以从安全门1202有线地或无线地接收电力并且使用所接收的电力操作小应用程序以生成和输出代码。安全门1202可以将从智能卡1201所接收的代码1203发送给安全服务器1210。安全服务器1210可以将代码1211发送给管理服务器1230。管理服务器1230可以之前生成代码并且将所接收的代码1211与所生成的代码进行比较。当比较结果示出之前所生成的代码与所接收的代码1211相同时,管理服务器1230可以将对应的用户标识(ID)和密码相关信息1241发送给安全服务器1210。安全服务器1210可以基于所接收的用户ID和密码相关信息1241来向安全门1202发送打开命令1242。安全门1202可以根据所接收的打开命令1242而打开门。同时,除非由管理服务器1230的比较结果示出预生成的代码与所接收的代码1211相同,否则可以将验证失败消息发送给安全服务器1210,并且在这样的情况下,安全服务器1210可以将关闭命令发送给安全门1202。

图13是图示了根据本公开的实施例的系统登录过程的概念视图。

电子设备1301可以实现在其中可以插入智能卡的结构中。因而,智能卡可以从电子设备1301接收电力以运行小应用程序,并且智能卡可以向电子设备1301输出作为运行小应用程序的结果而生成的代码。电子设备1301可以与用户名一起显示从智能卡所接收的代码(随机ID)。用户可以标识其并且可以将用户名1311和所显示的代码(例如6GHtY)1312放置在能够群件(groupware)登录的设备1310(诸如计算机)中的登录窗口中。能够群件登录的设备1310可以将所输入的用户名和代码1313发送给群件服务器1320,并且群件服务器1320可以将用户名和代码1321转发给管理服务器1330。

管理服务器1330可以之前生成代码并且将预生成的代码与所接收的代码进行比较。当比较结果示出预生成的代码与所接收的代码相同时,管理服务器1330可以将用户名和密码相关信息1341发送给群件服务器1320。群件服务器1320可以将群件登录相关消息1342发送给能够基于所接收的用户ID和密码相关信息1341而群件登录的设备1310。同时,除非由管理服务器1330的比较结果示出预生成的代码与所接收的代码1321相同,否则可以将验证失败消息发送给群件服务器1320,并且在这样的情况下,群件服务器1320可以发送登录失败消息。同时,如上文结合图12和13所述,一个智能卡可以用于在线地和离线地执行验证。

图14是图示了根据本公开的实施例的物联网(IoT)环境下的电子设备的操作的概念视图。

电子设备1401或智能卡1402可以生成代码1403并且将代码1403发送给家庭网络控制点1410。电子设备1401或智能卡1402还可以发送用于家庭网络中的多个电子设备1411-1419中的至少一个的控制信号。同时,控制点1410可以生成代码并且将所生成的代码与所接收的代码1403进行比较。当比较结果示出所生成的代码与所接收的代码1403相同时,控制点1410可以控制电子设备以执行对应命令。因而,可以在安全保证环境之下控制例如直接涉及用户的安全的气阀控制系统。

如从以上描述显而易见的,根据本公开的实施例,提供了用于生成随机且唯一的代码的电子设备和方法。所生成的随机且唯一的代码可以用于各种技术应用,例如作为区分系统之上的用户的ID、用于电子商务的输入码、或者代替货币的印出物(例如礼券)的标识代码。特别地,根据本公开的实施例,电子设备和方法可以随时间动态地生成随机且唯一的代码,从而显著降低代码泄露的可能性。

同时,本公开可以应用于要求验证的任何应用。例如,根据本公开,礼券生成器可以通过以上描述的算法生成唯一且随机的代码,将它们分配给相应类型的礼券,并且与验证系统共享它们。验证系统在通过在线使用系统接收到礼券编号时可以通过将所接收的礼券编号与之前共享的礼券编号进行比较来执行验证。如上文所述,所生成的代码针对其唯一性和随机性而受保证,从而防止其他人猜测和生成礼券编号。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1