安全输入的实现方法和装置与流程

文档序号:11681051阅读:293来源:国知局
安全输入的实现方法和装置与流程

本申请涉及信息安全技术领域,尤其涉及一种安全输入的实现方法和装置。



背景技术:

随着智能终端行业的飞速发展,大量的触屏设备进入到人们的日常生活中去,越来越多的事务可以在终端上,只需要用户动动手指就可以轻松完成,如银行转账、预定机票、购买商品等等。用户在实现这些功能的时候往往需要在终端上输入身份证号码、银行密码等关键信息,这些信息的安全输入对用户来说至关重要。

在一些应用程序中,当用户输入密码等关键信息时,由终端生成按键随机排列的虚拟键盘,用户点击虚拟键盘上的按键,终端将用户点击的字符加密后发送给服务器。这种方式能够避免采用固定键位的虚拟键盘时,因用户在某些键位多次点击造成触摸屏上某些部位磨损较为严重,导致用户的关键信息易于被社工方式攻破。但是,这种方式至少需要将用户输入的关键信息暂存在本地并上传给服务器,在暂存期间和上传过程中仍然可能被恶意软件截取而导致关键信息泄露。



技术实现要素:

有鉴于此,本申请提供一种安全输入的实现方法,应用在客户端,包括:

根据客户端算法生成虚拟键盘的按键布局,并显示给用户;

记录用户在虚拟键盘上输入时的点击位置;

将输入相关参数上传给服务器;所述输入相关参数包括用户在虚拟键盘上的点击位置,供服务端采用服务端算法还原出同样的按键布局,根据上传的点击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

本申请提供的一种安全输入的实现方法,应用在服务端,包括:

接收客户端上传的输入相关参数;所述输入相关参数包括用户在虚拟键盘上的点击位置;所述虚拟键盘的按键布局由客户端根据客户端算法生成;

采用服务端算法还原出同样的按键布局,根据所述点击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

本申请还提供了一种安全输入的实现装置,应用在客户端,包括:

客户端布局生成单元,用于根据客户端算法生成虚拟键盘的按键布局,并显示给用户;

点击位置记录单元,用于记录用户在虚拟键盘上输入时的点击位置;

输入参数上传单元,用于将输入相关参数上传给服务器;所述输入相关参数包括用户在虚拟键盘上的点击位置,供服务端采用服务端算法还原出同样的按键布局,根据上传的点击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

本申请提供的一种安全输入的实现装置,应用在服务端,包括:

输入参数接收单元,用于接收客户端上传的输入相关参数;所述输入相关参数包括用户在虚拟键盘上的点击位置;所述虚拟键盘的按键布局由客户端根据客户端算法生成;

输入内容获取单元,用于采用服务端算法还原出同样的按键布局,根据所述点击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

由以上技术方案可见,本申请的实施例中,客户端采用客户端算法生成虚拟键盘的按键布局,并且将用户在虚拟键盘上的点击位置上传给服务端,由服务端根据与客户端算法相同或相对应的服务端算法还原按键布局后得到 用户的输入内容,从而避免了因客户端保存的用户输入内容被访问或上传给服务端的报文被截取导致的关键信息泄露,提高了网络应用的安全性。

附图说明

图1是本申请实施例中一种应用在客户端,安全输入的实现方法的流程图;

图2是本申请实施例中一种应用在服务端,安全输入的实现方法的流程图;

图3是本申请应用示例中客户端的安全输入实现方法流程图;

图4是本申请应用示例中服务端的安全输入实现方法流程图;

图5是本申请实施例所运行的设备的一种硬件结构图;

图6是本申请实施例中一种应用在客户端,安全输入的实现装置的逻辑结构图;

图7是本申请实施例中一种应用在服务端,安全输入的实现装置的逻辑结构图。

具体实施方式

本申请的实施例提出一种新的安全输入的实现方法,在客户端和服务端通过相同或相对应的算法来生成同样按键布局的虚拟键盘,客户端记录并向服务端上传用户在虚拟键盘上输入时的点击位置,使得无需使用用户的输入内容本身,即可实现关键信息到服务端的上传,减少了关键信息被截取的可能性,提高了关键信息的安全性,从而解决现有技术中存在的问题。

本申请的实施例中,客户端与服务端之间通过网络可相互访问。其中,客户端所在的设备可以是手机、平板电脑、pc(personalcomputer,个人电脑)、笔记本等终端,也可以是服务器;服务端可以运行在一个物理或逻辑服务器上,也可以是由两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现本申请实施例中服务端的各项功能。本申请实施例对客户端 和服务端所在设备的种类,以及客户端与服务端之间通信网络的类型、协议等均不做限定。

本申请实施例中,安全输入的实现方法应用在客户端的流程如图1所示,应用在服务端的流程如图2所示。

在客户端,步骤110,根据客户端算法生成虚拟键盘的按键布局,并显示给用户。

客户端算法可以在安装客户端时预置在客户端内,也可以由客户端在需要进行安全输入时从服务端下载,本申请的实施例不做限定。

当客户端需要用户输入关键信息时,调用客户端算法生成虚拟键盘的按键布局,并按照生成的按键布局显示虚拟键盘,供用户输入时使用。

在客户端,步骤120,记录用户在虚拟键盘上输入时的点击位置。

当用户通过点击虚拟键盘上的按键进行输入操作时,客户端可以从所在设备的操作系统获得用户点击点在屏幕上的坐标。根据客户端在屏幕上显示虚拟键盘的区域,可以计算出用户在虚拟键盘上的点击位置。用户在虚拟键盘上的点击位置可以用点击点在虚拟键盘上的坐标来表示;对虚拟键盘在屏幕上的显示面积可变的情况,也可以用点击点在虚拟键盘上的比例坐标来表示点击位置。

在客户端,步骤130,将输入相关参数上传给服务器;输入相关参数包括用户在虚拟键盘上的点击位置,供服务端采用与客户端算法相同或相对应的服务端算法还原出同样的按键布局,根据上传的点击位置获取用户的输入内容。

在服务端,步骤210,接收客户端上传的输入相关参数。

在服务端,步骤220,采用服务端算法还原出同样的按键布局,根据输入相关参数中的点击位置获取用户的输入内容。

客户端将记录的用户在虚拟键盘上的点击位置作为输入相关参数,上传给服务端。服务端接收客户端上传的输入相关参数,通过输入相关参数和服务端算法来得到用户的输入内容。任何能够生成符合应用场景需要的按键布 局的算法都可以用来作为相同的客户端算法和服务端算法,任何能够生成相同按键布局的不同算法都可以作为相对应的客户端算法和服务端算法,本申请实施例不做限定。

根据客户端算法与服务端算法的具体实现,输入相关参数中可以只包括用户在虚拟键盘上的点击位置,也可以还包括服务端算法用来还原用户在客户端进行输入操作时所使用的按键布局所需的其他参数。

例如,客户端和服务端同步进行计时,客户端与服务端采用相同的算法,按照当前计时时间来生成按键布局,预定时间段内的计时时间对应于相同的按键布局;则客户端算法与服务端算法在每个预定时间段内都会生成同样的按键布局,并在进入下一个预定时间段时改变按键布局。这种实现方式中,客户端可以只向服务端上传用户在虚拟键盘上的点击位置。

再如,客户端与服务端采用同样的算法,该算法以一个到多个由客户端确定的算法变量值为输入来生成按键布局。这种实现方式中,客户端需要将生成用户使用的按键布局时所采用的算法变量值作为输入相关参数,上传给服务端。这样,服务端将接收的算法变量值输入到服务端算法中,还原出用户使用的按键布局,以便进一步根据输入相关参数中的点击位置获取用户的输入内容。例如,客户端可以采用时间戳来作为算法变量值,在需要进行关键信息输入时,客户端获取当前的时间戳,以当前的时间戳为客户端算法的输入,生成虚拟键盘的按键布局;为了使服务端能够生成同样的按键布局,客户端要将生成虚拟键盘的按键布局时采用的时间戳作为输入相关参数上传给服务端。

一个例子中,在需要用户输入关键信息时,客户端获取当前的时间戳,以当前的时间戳作为预定伪随机数算法的种子,根据预定的伪随机数算法生成客户端随机数k(k为整数);把虚拟键盘上的按键组成按键集合,其中包括n(n为自然数)个按键;设k对i取模得m(即:m=k%i),在按键集合中取出第m个按键,将其依序添加到布局序列中,重复本步骤将i从n递减到0,这样按键集合中的n个按键将以某个顺序排列在布局序列中;根据 布局序列中按键的顺序,生成虚拟键盘的按键布局,例如可以将布局序列中的按键按顺序逐个放置在虚拟键盘的键位上,形成按键布局。

上述例子中,对应的,在服务端,从客户端上传的输入相关参数中提取出时间戳,以客户端上传的时间戳作为预定伪随机数算法(与客户端的预定伪随机数算法相同)的种子,生成服务端随机数k;将虚拟键盘上的按键组成按键集合,其中包括n个按键;取出按键集合中第(k%i)个按键,将该按键顺序添加到布局序列中,重复本步骤将i从n递减到0;根据布局序列中按键的顺序,还原虚拟键盘的按键布局,按照上传的点击位置得到用户的输入内容。

客户端可以在用户每次在虚拟键盘上完成一次点击输入后,向服务端上传一次输入相关参数;在这种情况下,在整个关键信息的输入过程中,客户端可以循环执行步骤120和步骤130,服务端可以循环执行步骤210和步骤220。客户端也可以在用户完成整个关键信息的输入后,一次性向服务端上传包括多次点击位置的输入相关参数。

一些虚拟键盘在用户点击某个按键后会进行键盘输入反馈,将该按键的内容(即输入字符)显示在屏幕上。恶意的录屏软件可以通过操作系统获取并记录屏幕显示的内容,来窥知用户的关键信息。本申请的实施例中,可以在收到用户在虚拟键盘上的点击输入后,不显示用户点击输入的按键内容,以避免用户的关键信息被录屏软件截取。

如果客户端生成一种按键布局后,用户在采用该按键布局的虚拟键盘上输入整个关键信息,则由于在输入关键信息的过程中键位固定,点击位置仍然会暴露关键信息的一些特征,如用户的密码中相同的字符有多少个,第几位和第几位相同等等。

为了更大程度的为用户提供保护,客户端可以在记录用户在虚拟键盘上一次输入操作的点击位置后,根据客户端算法更新虚拟键盘的按键布局,并显示给用户供其进行下一次输入操作;其中,输入操作指的是用户对虚拟键盘上按键有效区域的点击操作,即用户的点击点在虚拟键盘的按键上而不是 其他地方。这样,用户每输入一个字符,虚拟键盘的按键布局就会更新一次,使得整个关键信息对应的点击位置序列不会透露输入内容的特征。

对应的,在服务端,在根据按键布局获取对应于用户一个点击位置的输入内容后,采用服务端算法更新虚拟键盘的按键布局,并根据更新后的按键布局来获取对应于用户下一个点击位置的输入内容。需要说明的是,在客户端以算法变量值为输入生成按键布局的情形下,客户端可以向服务端上传对应于每个点击位置的算法变量值,服务端依次使用一组对应的算法变量值和点击位置来得到一个输入字符,最终得到用户的输入序列;而在一些客户端算法和服务端算法的实现中,可以根据初始的算法变量值迭代生成相同的算法变量值序列(如以初始的算法变量值为种子的伪随机数算法),在这种情况下,客户端可以向服务端上传初始的算法变量值,由服务端自行进行迭代运算,得到对应于后续点击位置的算法变量值,请参见本申请应用示例中给出的方案。

可见,本申请的实施例中,在客户端和服务端分别采用相同或相对应的客户端算法和服务端算法,来生成同样的虚拟键盘按键布局,客户端采集用户在虚拟键盘上的点击位置上传给服务端,服务端按照按键布局和点击位置来获得用户的输入内容,这样,用户的输入内容既不需要在客户端本地保存,也不需要向服务端上传,避免了因客户端本地信息被盗取、或客户端上传给服务端的信息被截取给用户关键信息带来的威胁,提高了应用和网络的安全性。

在本申请的一个应用示例中,客户端在需要用户输入密码时向用户显示密码键盘,按键包括从0到9的10个数字和确定按键;当用户点击确定按键时,密码输入完成。

客户端的处理流程如图3所示。

步骤301,获取当前的时间戳timestamp,将timestamp作为随机数种子。

步骤302,运行预定的伪随机数算法,生成一个整数随机数k。

步骤303,生成按键集合:{0,1,2,3,4,5,6,7,8,9},按键集合包括10个元素;生成空的布局序列,令i=10。本应用示例中确定按键将位于虚拟键盘上的固定位置,其他10个数字按键在虚拟键盘上有预定键位,但键值将根据随机数k来确定。

步骤304,计算k对i取模的结果m,即m=(k%i)。

步骤305,删除按键集合中第m个元素,将第m个元素添加到布局序列的最后。

步骤306,判断i是否等于0,如果是,执行步骤307;如果否,将i减1,转步骤304。

步骤307,按照布局序列中各元素的顺序设置虚拟键盘上数字按键的键值,生成按键布局,向用户显示虚拟键盘,接收用户的点击操作。

步骤308,判断用户点击的按键是否是确定,如果是,转步骤310;否则执行步骤309。

步骤309,计算用户点击点在虚拟键盘上的坐标(x,y),并按顺序记录下来,转步骤302,运行预定的伪随机数算法得到下一个随机数,用来生成新的按键布局,供用户输入下一个数字。

步骤310,将{timestamp,(x1,y1),(x2,y2),…(xn,yn)}作为输入相关参数上传给服务端。

服务端的处理流程如图4所示。

步骤401,接收客户端上传的输入相关参数{timestamp,(x1,y1),(x2,y2),…(xn,yn)},从中提取时间戳timestamp和点击位置序列{(x1,y1),(x2,y2),…(xn,yn)},将timestamp作为随机数种子。取点击位置序列中的第一个坐标值(x1,y1)作为当前点击坐标值。生成用户输入字符串,当前为空。

步骤402,运行预定的伪随机数算法,生成一个整数随机数k。服务端的预定伪随机数算法与客户端相同,这样,当使用相同的随机数种子时,将生 成相同的伪随机数序列。

步骤403,生成按键集合:{0,1,2,3,4,5,6,7,8,9},包括10个元素。生成布局序列,此时为空。令i=10。

步骤404,计算k对i取模的结果m,即m=(k%i)。

步骤405,删除按键集合中第m个元素,将第m个元素添加到布局序列的最后。

步骤406,判断i是否等于0,如果是,执行步骤407;如果否,将i减1,转步骤404。

步骤407,按照布局序列中各元素的顺序设置虚拟键盘上数字按键的键值,生成按键布局。查找当前点击坐标值在虚拟键盘上的点在哪个数字按键上,将该按键的键值添加到用户输入字符串的末尾。

步骤408,判断当前点击坐标值是否是点击位置序列中的最后一个坐标值,如果是,执行步骤409;否则将点击位置序列中的下一个坐标值作为当前点击坐标值,转步骤402。

步骤409,将用户输入字符串作为用户的输入密码。

与上述流程实现对应,本申请的实施例还提供了一种应用于客户端的安全输入的实现装置,和一种应用于服务端的安全输入的实现装置。这两种装置均可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的cpu(centralprocessunit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图5所示的cpu、内存以及非易失性存储器之外,装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,或者用于实现网络通信功能的板卡等其他硬件。

图6所示为本申请实施例提供的一种安全输入的实现装置,应用在客户端,包括客户端布局生成单元、点击位置记录单元和输入参数上传单元,其中:客户端布局生成单元用于根据客户端算法生成虚拟键盘的按键布局,并显示给用户;点击位置记录单元用于记录用户在虚拟键盘上输入时的点击位 置;输入参数上传单元用于将输入相关参数上传给服务器;所述输入相关参数包括用户在虚拟键盘上的点击位置,供服务端采用服务端算法还原出同样的按键布局,根据上传的点击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

可选的,所述装置还包括:客户端布局更新单元,用于在记录用户在虚拟键盘上一次输入操作的点击位置后,根据客户端算法更新虚拟键盘的按键布局,并显示给用户供其进行下一次输入操作。

可选的,所述装置还包括:显示取消单元,用于在收到用户在虚拟键盘上的点击输入后,不显示用户点击输入的按键内容。

一个例子中,所述输入相关参数还包括算法变量值,供服务端以接收的算法变量值为服务端算法的输入,还原出同样的键盘布局。

上述例子中,所述客户端布局生成单元可以具体用于:获取当前的时间戳,以当前的时间戳为客户端算法的输入,生成虚拟键盘的按键布局,并显示给用户;所述算法变量值包括:生成虚拟键盘的按键布局时采用的时间戳。

上述例子中,所述根据客户端布局生成单元可以包括客户端随机数模块、客户端按键集合模块、客户端布局序列模块和客户端按键布局模块,其中:客户端随机数模块用于获取当前的时间戳,以当前的时间戳作为预定伪随机数算法的种子,生成客户端随机数k;所述客户端随机数为整数;客户端按键集合模块用于将虚拟键盘上的按键组成按键集合,其中包括n个按键;n为自然数;客户端布局序列模块用于取出按键集合中第(k%i)个按键,将其依序添加到布局序列中;重复本步骤将i从n递减到0;客户端按键布局模块用于根据布局序列中按键的顺序,生成虚拟键盘的按键布局。

图7所示为本申请实施例提供的一种安全输入的实现装置,应用在服务端,包括输入参数接收单元和输入内容获取单元,其中:输入参数接收单元用于接收客户端上传的输入相关参数;所述输入相关参数包括用户在虚拟键盘上的点击位置;所述虚拟键盘的按键布局由客户端根据客户端算法生成;输入内容获取单元用于采用服务端算法还原出同样的按键布局,根据所述点 击位置获取用户的输入内容;所述服务端算法与客户端算法相同或相对应。

可选的,所述输入内容获取单元具体用于:在根据按键布局获取对应于用户一个点击位置的输入内容后,采用服务端算法更新虚拟键盘的按键布局,并根据更新后的按键布局来获取对应于用户下一个点击位置的输入内容。

一个例子中,所述输入相关参数还包括算法变量值;所述输入内容获取单元具体用于:以所述算法变量值作为服务端算法的输入,还原出同样的键盘布局,根据所述点击位置获取用户的输入内容。

上述例子中,所述算法变量值可以包括时间戳;所述输入内容获取单元可以包括服务端随机数模块、服务端按键集合模块、服务端布局序列模块和输入内容模块,其中:服务端随机数模块用于以客户端上传的时间戳作为预定伪随机数算法的种子,生成服务端随机数k;所述服务端随机数为整数;服务端按键集合模块用于将虚拟键盘上的按键组成按键集合,其中包括n个按键;n为自然数;服务端布局序列模块用于取出按键集合中第(k%i)个按键,将其依序添加到布局序列中;重复本步骤将i从n递减到0;输入内容模块用于根据布局序列中按键的顺序,还原虚拟键盘的按键布局,按照上传的点击位置获取用户的输入内容。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、 静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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