CN109214161A - 一种二维码安全标签登录系统 - Google Patents

一种二维码安全标签登录系统 Download PDF

Info

Publication number
CN109214161A
CN109214161A CN201810555781.9A CN201810555781A CN109214161A CN 109214161 A CN109214161 A CN 109214161A CN 201810555781 A CN201810555781 A CN 201810555781A CN 109214161 A CN109214161 A CN 109214161A
Authority
CN
China
Prior art keywords
label
dimension code
login
tag
icon
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810555781.9A
Other languages
English (en)
Other versions
CN109214161B (zh
Inventor
宋军
王力哲
杨帆
徐衡
齐笑田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Geosciences
Original Assignee
China University of Geosciences
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Geosciences filed Critical China University of Geosciences
Priority to CN201810555781.9A priority Critical patent/CN109214161B/zh
Publication of CN109214161A publication Critical patent/CN109214161A/zh
Application granted granted Critical
Publication of CN109214161B publication Critical patent/CN109214161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Toxicology (AREA)
  • General Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • Health & Medical Sciences (AREA)
  • Telephonic Communication Services (AREA)
  • Telephone Function (AREA)

Abstract

本发明提供一种二维码安全标签登录系统,包括二维码标签管理模块、图标标签登录模块、字符标签登录模块和PC端登录模块组成。将登录过程中所需的用户名与口令等重要隐私信息与手机唯一标识码绑定并进行数据加密与编码,据此建立应用软件的二维码安全标签库。用户定义登录应用软件的标签为该软件的简称、编号、图标或自定义字符。当用户登录应用时,输入或选择相应的二维码标签,即可通过模拟键盘填充过程或Hook Android系统API函数提交账户名口令,完成后台自动解密、解码和隐密录入,实现软件登录。本发明在未使用新认证技术或者硬件设备支持的情况下,有效避免了登录过程中的账户名和口令等信息遭受窥视及手动输入信息繁琐的问题。

Description

一种二维码安全标签登录系统
技术领域
本发明涉及通信数据安全领域,具体的涉及一种二维码安全标签登录系统。
背景技术
移动终端的密钥管理是通信数据安全的关键问题之一。目前大多数密钥管理方案侧重密钥在协议和应用层面的安全性,而对密钥在移动终端存储和使用过程中安全性考虑很少或明显不足。首先,目前普遍采用的基于账号名与口令的认证方式,潜在信息拦截、隐私泄漏、肩窥攻击等多种安全风险。其次,大部分用户倾向于使用简单密码或者在不同网站上重复使用相同密码,另有一部分用户习惯使用短密码或容易记忆的密码,无法满足移动支付服务等安全性需求较高的应用环境。第三,普通用户难以掌握专业安全技术和方法手段,有效管理、设计、记忆和存储复杂多样的账户名密码。
基于Android平台的应用软件登录机制设计,目前较普遍采用账户名密码的登录方式。这种登录方式需要用户记忆大量账户名和密码,存在管理繁琐、记忆困难、操作复杂的问题。虽然目前软件市场存在多款密码管理软件,例如keepass、1Pass-word、RoboForm、LastPass等,以及在线密码管理服务、记事本类工具、浏览器密码保存插件等,但是不能解决登录过程存在的用户隐私泄漏和用户手动输入繁琐等问题。为了提高登录过程的安全性和灵活性,近年来新出现了多种新型登录方式,如“双因素认证”、“语音识别”、“指纹识别”等。这些登录方式不仅需要新认证技术或者硬件设备支持,也引入了新的应用问题和安全风险,例如:仅少数应用软件支持这种安全登录方式,手机内指纹或面部编码内容可能被盗取,短信验证码可能被拦截,双因素认证过程比较繁琐,以及缺乏有效的用户隐私保护机制等。
综上所述,为较好的实现不同软件的安全登录,降低用户管理密码的复杂性,提高用户工作的高效性,一种适用于软件安全登录方案需要迫切的提出。
发明内容
本发明要解决的技术问题在于,针对上述目前微信、QQ、Foxmail等软件账号与口令难以管理、数据库被窃取、录入遭窥探泄漏的技术问题,提供一种二维码安全标签登录系统解决上述技术缺陷。
一种二维码安全标签登录系统,其特征在于,包含以下四个模块组成:
二维码标签管理模块:用于建立字符标签和图标标签,字符标签提供中文、英文、数字多种标签类型,图表标签提供二维码图标标签类型,利用加密技术和编码技术将真实账户信息存储在标签数据库并与二维码标签对应,并用于查看或删除所述存储在标签数据库中的真实账户信息和对应的二维码标签;
图标标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,选择对应的二维码图标,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
字符标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,输入自定义字符,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
PC端登录模块:用于与PC端建立通信并发送真实账户信息至PC端直接进行登录。
进一步的,所述真实账户信息包括实际的账户名和登录密码的字符信息。
进一步的,所述标签数据库采取两重加密方法,对于每一个账户密码信息,根据本机的多个唯一标识信息、用户设置的主密钥和一个后台生成的随机数生成子密钥,利用子密钥对每一个账户信息进行单独加密,当用户保存账号密码至本应用后,获取本机的多个唯一标识信息,使用ZUC算法生成一个随机数,通过SM3杂凑算法将多个唯一标识信息、随机数、主密钥计算生成杂凑值并作为该账户的子密钥,子密钥与用户保存的账号密码通过SM4算法加密编码,通过二维码生成子模块对产生的密文进行编码并生成二维码图片,存储在标签数据库中。
进一步的,所述标签登录输入法用于对选择输入二维码图标或者输入自定义字符。
进一步的,二维码标签管理模块包括二维码标签生成、二维码标签存储和二维码标签解码三个子模块;其中,二维码标签生成子模块用于实现对账户名和密码信息的加密和编码,生成包含密文形式的二维码标签;二维码标签存储子模块用于实现二维码标签在标签数据库的存储,其存储索引是二维码标签的简称、编号、标签图标或用户自定义的字符,存储内容为账户名和密码信息经加密、编码后的结果;二维码标签解码子模块用于实现账户名和密码信息的解码和解密。
进一步的,图标标签登录模块中所述图标登录输入法用于在标签数据库中选择目标应用的图标标签,后台自动对存储在系统中的二维码进行解码及解密操作,随后输入法通过 onkey函数接收解码解密后得到的账户名和密码信息,调用commiText函数,将真实账户信息填充到登录界面。
进一步的,字符标签登录模块包括函数加载、Hook和字符标签替换三个子模块;其中,函数加载子模块用于基于Xposed基本开发准则完成系统API函数的hook操作;Hook子模块用于实现对指定API函数的hook操作,以及完成标签数据库中字符标签信息的加载;字符标签替换子模块用于获得调用指定函数的对象,并检测文本框内容,若文本框内容与预设标签一致时,将其替换成真实密码。
进一步的,PC端登录模块包括Socket通信和Windows自动填充两个子模块;其中,Socket通信子模块用于实现Android手机端和PC端通信,手机端将用户的账户名密码信息发送至PC端;Windows自动填充子模块用于实现账户名和密码信息的自动填充,通过引入Windows API函数获取登录窗口输入框焦点并填充账户信息。
本发明的优势在于可以在未使用新认证技术或者硬件设备支持的情况下,使用户登录方式更加安全便捷、安全、高效,满足用户不同应用场合下的安全需求,防止和抵御肩窥攻击,降低用户敏感信息泄漏的风险。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明的系统框架示意图;
图2为本发明的标签数据库存储示意图;
图3为本发明的图标标签登录模块示意图;
图4为本发明的字符标签登录模块原理示意图;
图5为本发明的新型二维码安全登录原理示意图;
图6为本发明的标签替换原理示意图;
图7为本发明的系统二维码生成原理图;
图8为本发明中Android输入法生命周期示意图;
图9为本发明中PC端登录模块原理示意图;
图10为本发明中Socket通信模型示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
一种二维码安全标签登录系统,主要包含如下四个模块:
二维码标签管理模块:用于建立字符标签和图标标签,字符标签提供中文、英文、数字多种标签类型,图表标签提供二维码图标标签类型,利用加密技术和编码技术将真实账户信息存储在标签数据库并与二维码标签对应,并用于查看或删除所述存储在标签数据库中的真实账户信息和对应的二维码标签;
图标标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,选择对应的二维码图标,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
字符标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,输入自定义字符,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
PC端登录模块:用于与PC端建立通信并发送真实账户信息至PC端直接进行登录。
本设计为用户应用软件登录提供了新颖的安全和隐私保护机制,满足用户不同应用场合下的安全需求,抵御肩窥攻击,降低敏感信息泄漏的风险。二维码标签安全登录框架示意图如图1所示。
以下内容将详细介绍二维码标签管理、图标标签登录、字符标签登录、PC端登录四个子功能模块。
1.二维码标签管理模块
二维码标签管理模块主要包括二维码标签生成、二维码标签存储和二维码标签解码三个子模块。二维码标签生成子模块主要实现对账户名密码信息的加密和编码,生成包含密文形式的二维码标签;二维码标签存储子模块主要实现二维码标签在标签数据库的存储,其存储索引是二维码标签的简称、编号、标签图标或用户自定义的字符,存储内容为账户名密码信息经加密、编码后的结果;二维码标签解码子模块是二维码标签生成模块的逆过程,主要实现账户名密码信息的解码和解密。二维码标签管理模块基本操作原理如图7所示,其实现和操作步骤可简述为如下四个步骤:
二维码标签管理模块实现和操作步骤可简述为如下四个步骤:
(1)用户进入功能主界面,根据需求选择相应管理功能;
(2)用户可以建立字符标签或图标标签,提供中文、英文、数字、二维码图标等多种标签类型,调用二维码标签生成子模块和二维码标签存储子模块,将标签保存至标签数据库库;
(3)用户登录过程中通过输入字符标签或选择图标标签索引存有账户信息的二维码,调用解码解密模块得到真实账户名和密码;
(4)用户能够查看标签数据库,可以选择一个或多个需要删除的标签,点击“删除”按钮,即可将标签从标签二维码库中移除。
本作品采取了两重加密方法确保账户密码信息的安全性。对于每一个账户密码信息,系统会根据手机的多个唯一标识信息、用户设置的主密钥和一个后台生成的随机数生成子密钥。利用子密钥对每一个账户信息进行单独加密。当用户保存账号密码至本应用后,系统首先获取本机的IMEI和UUID唯一特征码,随后使用ZUC算法生成一个随机数,通过 SM3杂凑算法将IMEI、随机数、主密钥等计算生成杂凑值并作为该账户的子密钥,子密钥与用户保存的账号密码通过SM4算法加密编码,通过二维码生成子模块对产生的密文进行编码并生成二维码图片,存储在标签数据库中。
二维码管理模块核心功能是实现账户名密码信息的加密和编码,如图3-4所示,可以分为如下三个步骤:
(1)获取设备特征码:子密钥生成过程将首先获取手机的多个特征码,并实现两步加密,例如UUID、IMEI等唯一特征码。利用Android系统提供的 Context.TELEPHONY_SERVICE服务生成TelephonyManager对象,DeviceID和SimSerialnumber值能够通过该对象中接口函数得到,并经由 android.provider.Settings.Secure.getString()函数获得ANDROID_ID值,最后使用得到的三个值构造UUID对象,从UUID.toString()得到UUID值。
(2)两层加密:首先获取手机特征码,后台采用ZUC算法生成随机数,并将所有参数一起进行SM3杂凑算法生成一组杂凑值并作为子密钥。由于主密钥(登录密钥)参与子密钥生成过程,二维码信息会随主密钥的改变而动态更新。最后使用SM4算法,利用子密钥加密账户密码信息,主密钥加密子密钥并保存至系统数据库。
(3)编码生成二维码:将加密账户密码后的密文信息传入二维码生成模块。该模块引入开源Zxing包,通过其QRCodeWirter().encode()函数将密文编码生成BitMatrix对象,进而通过BitMatrix生成二维码图像,并保存至系统。
其中,二维码标签数据库数据存储结构如图2所示。
如图2所示,应用软件的二维码标签存储索引表,包括用户自定义的二维码标签的简称、编号和标签图标地址等三个部分,对应存储内容是经有IMEI、UUID和随机数等子密钥加密的密文信息,包括账户名、密码、邮箱、电话等隐私信息。在用户登录输入过程中,输入相应软件字符标签或选择图标标签,例如:输入“@Wei”,“@101”,“BobWeChat”、或选择“微信”图标标签,即可通过模拟键盘填充过程或Hook Android系统API函数提交账户名密码,完成后台自动解密、解码和隐密录入。账户名密码填充无需用户手动逐字符输入,登录过程更加安全便捷。
2.图标标签登录模块
图标标签登录模块主要功能是构造专用输入法,将解码解密后的账户名密码自动填充至登录窗口。用户输入密码过程中,可以切换到本应用专用输入法,只需按下键盘上的跳转按钮,即可跳转到二维码密码库进行图标选择。跳转至密码库后,用户通过输入主密钥验证身份。登录成功后,用户可以在密码库中选择目标应用的图标标签,后台自动对存储在系统中的二维码进行解码及解密操作,随后输入法将通过onkey函数接收解码解密后得到的账号密码信息,用户点击填充按钮即可调用commiText函数,将账号和密码填充到应用程序的输入框内。本模块示意图如图3所示。
本模块主要由输入法消息流转和二维码安全登录输入法设计两个子功能组成,简要介绍如下:
(1)输入法消息流转原理
本系统中输入法框架主要包括客户端、输入法服务和输入法应用三部分组成。输入法框架中的消息流转机制为:客户端获得焦点,启动输入法应用,创建一个连接类型对象,以实现输入法框架各个层次间信息的传输。该连接类型对象调用了InputConnection接口。
InputConnection接口是输入法框架(IMF)中一个重要接口,主要用于应用程序和InputMethod之间通信的通道,可以实现读取光标周围的输入、向文本框输入文本以及给应用程序发送各种按键事件等操作。其中,接口InputMethod可以产生各种按键事件和各种字符文本。
客户端通过InputConnection将输入码传给输入法应用后,输入法应用对输入码进行相关处理。输入法应用处理输入码,并将处理后得到的文字等数据内容,反馈给客户端控件。客户端不可以直接访问输入法程序,但可以通过某些输入控件访问InputMethodSession接口。
InputMethodSession是输入法应用提供给每个客户端的,可安全暴露在应用程序中的接口。应用程序通常本身不使用本接口,而是依靠TextView和EditText等提供的标准功能进行交互。输入法的生命周期如图8所示:
1)当用户点击客户端输入控件时,客户端控件获得焦点,InputMethodService启动,调用其onCreate()函数。该函数在输入法第一次启动的时候被调用,以完成初始化设置。然后调用updateInputMode()函数,该函数完成键盘视图的更新,也是键盘弹出过程中最后一个被执行的函数,在此函数中加入了监控代码,开启InputMethodService;
2)调用onCreateInputView()函数,在该函数中创建键盘视图(KeyboardView)并返回;
3)调用onCreateCandidatesView()函数,在该函数中创建候选字识图(CandidatesView) 并返回;
4)调用onStartInput()函数,开始接收并处理输入内容;
5)输入结束后调用onFinishInput()函数来结束当前输入;
6)移动到下一个输入框,重复调用onStartInput和onFinishInput函数;
7)在输入法关闭过程中调用onDestroy()函数。
(2)二维码安全登录输入法设计
以上述输入法原理为基础,本系统设计实现了一种二维码安全登录输入法。当用户按下键盘上的跳转按钮,即可跳转到图标标签选择界面。基本原理与操作过程如下:
1)跳转到标签库之前,用户需要通过选取的登录方式验证身份;
2)登录成功后,用户可以在二维码库中选择相应应用的二维码图标;
3)当选中二维码图标后,后台将自动对存储在系统中的二维码进行解码和解密操作,本设计使用一个boolean类型的值tempAccountExist表示当前存在的一组待输入的账户名和密码,同时自动跳转回应用登录界面;
4)在应用登录界面,用户选取输入框时,Android系统通过上述的输入法消息流转机制自动调用本作品设计实现的输入法应用;
5)输入法应用随即初始化并调用updateInputMode()函数,此时updateInputMode()函数中的监控代码检测到tempAccountExist存在账户和口令并模拟输入,用户点击文本框即可完成填充。
6)在模拟输入中,实现账户名、密码的输入,输入完毕将tempAccountExist值清空,下一次使用输入法时将不会再次模拟输入。
通过上述过程即可实现将账户名和密码快速填充到登录输入框中。
3.字符标签登录模块
字符标签登录模块中,用户将账户密码等隐私信息加密生成二维码,能够为其设置字符标签,通过字符标签索引密码,用户在登录过程中,输入预设的字符标签即可完成登录,无需跳转至其他界面。本模块核心内容是引入Xposed API Hook机制,在root环境下,将登录窗口中输入的字符标签替换成真实密码,其原理示意图如图4所示;在非root环境下,字符标签登录模块原理与图标标签登录相同,此时需跳转至字符标签登录界面。
在App或Web登录过程中,用户需要向登录界面文本框填入账户名密码并点击“登录”按钮,系统提取用户输入的内容并提交服务器进行验证。在Android系统中,文本输入框组件为EditText,系统利用EditText类中的getText()方法得到文本框中用户输入的内容。通过监视文本框的内容变化,即可完成字符标签信息与真实口令值的替换,其关键在于实现对文本框内容的检测。
Michael等人在分析了Android窗口组件的基础上,提出了一种名为Cashtags的隐私保护系统,该系统利用Android Xposed框架,对含有文本信息的窗口组件中的关键函数(如 TextView类中的setText()函数)实施Hook操作,将屏幕上的敏感信息替换成预设标签。其中,Android Xposed框架在系统执行新的虚拟机之前将重写的库例插入到Java类路径中,整个系统行为被修改时,不需修改其他程序和底层固件。
在此基础上,本系统引入Xposed API Hook技术,使得系统能够通过hook输入框组件 EditText中的getText()函数实现对用户内容的监控,当检测到后台提取的文本信息,是用户输入的字符标签时,将其替换成真实口令,进而完成登录。
字符标签登录模块将从以下三部分分别介绍:
(1)Xposed框架,该框架是本模块的实现基础;
(2)Hook技术,本模块实现的关键技术;
(3)模块实现流程,分析字符标签替换的实现流程。
(1)Xposed框架
Xposed框架是由国外知名IT技术人员rovo89设计开发的一款Android框架程序。该框架替换了系统重要程序app_process,替换后的app_process中注入了自定义的代码,用于在系统启动过程中加载额外的代码文件。
该框架由三个部分组成:
1)XposedBridge:Xposed提供的jar文件,app_process启动过程会加载该jar文件。其它插件模块的开发也基于该jar文件;
2)Xposed:Xposed的C++部分,主要用于替换/system/bin/app_process,并为XposedBridge提供JNI方法;
3)XposedInstaller:Xposed的安装包,提供对基于Xposed框架插件的管理。
通常jar文件被放置到/data/xposed/XposedBridge.jar目录下,Zygote进程会首先调用jar 文件中的方法。XposedBridge.jar中有一个私有的Native(JNI)方法hookMethodNative,这一方法也会在app_process中被使用。该方法提供一个方法对象,并利用java的reflection 反射机制对系统内置的方法进行覆写。
Xposed程序需要在系统版本在Android4.0以上的手机中运行。Xposed工作需在 /system/bin目录下替换文件,在安装过程中需要root权限,但运行时不需要该权限。
(2)hook技术
钩子(Hook)是Windows消息处理机制的一个平台,应用程序可以在其中设置子程以监视指定窗口的某种消息,所监视的窗口可以由其他进程创建。消息到达并在目标窗口处理函数之前先处理Hook。钩子机制允许应用程序截获处理Windows消息或特定事件。
通过系统调用,把钩子挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序先捕获该消息,亦即钩子函数先得到控制权。钩子函数可以加工处理该消息,也可以不作处理并继续传递该消息,或者强制结束消息的传递。
每一个Hook都有一个与之相关联的指针列表,称为钩子链表,由系统来维护。这个列表指针指向指定的、应用程序定义的、被Hook子程调用的回调函数,即该钩子的各个处理子程序。当与指定的Hook类型关联的消息发生时,系统传递此消息到Hook子程。一些Hook子程可以只监视消息、修改消息或停止消息的前进,阻止这些消息传递到下一个 Hook子程或目的窗口。新安装的钩子放在链的开始,而越早安装的钩子在链的最后,即后加入的先获得控制权。
在Android系统下编程,会接触到API函数的使用。借助API可以实现一些现有手段(例如使用控件)难以完成的功能。通过API Hook,可以改变一个系统API的原有功能。基本的方法是:通过Hook“接触”连接到需要修改的API函数入口点,改变地址指向新的自定义函数。API Hook并不是特殊的Hook,也需要通过基本的Hook提高自己的权限,跨越不同进程间访问的限制,达到修改API函数地址的目的。对于自身进程空间下使用的 API函数地址修改,不需要API Hook技术即可实现。
Hook的应用模式之一是在Android中结合观察者模式使用。例如Android提供的控件方法Setlistennerhook()就是为此类应用模式准备。此模式的特点在于事情发生时,发出一个通知信息。观察者只可以查看过程中的信息,根据自己关心的内容处理自己的业务,但被禁止更改原来的流程。如经常使用的鼠标消息、键盘消息的监视等应用。
Xposed框架中真正起作用的是对系统方法的hook操作。自定义java层hook代码在Xposed提供的before()和after()方法中实现。Jar包中的本地方法hookMethodNative会在替换后的app_process中被调用。它将一个类对象作为输入参数(可以通过java的反射机制获取),并且改变Dalvik虚拟机中对于该方法的定义。Xposed将该方法的类型改变为native,并且将这个方法的实现链接到本地通用类的方法。当调用被hook的方法时,通用的类方法依然会被调用,但不会对调用者产生任何影响。在hookMethodNative的实现过程中,会调用XposedBridge中的handleHookedMethod方法传递参数。
(3)模块实现流程
字符标签替换基本原理如图6所示:
1)函数加载子模块
在Xposed框架的基础上,基于Xposed基本开发准则完成系统API函数的hook操作。在XposedBridge类的main()函数中,完成了对所需要hook的函数处理,并调用loadModules() 函数完成初始化工作。
2)Hook子模块
XposedTextReplace类通过实现接口XposedHookLoadPackage和 IXposed-HookZygoteInit,完成hook子模块的加载。首先重写XposedHookLoadPackage中的handleLoadPackage方法,该方法在加载应用程序包的过程中执行用户操作,在该方法中实现对指定API函数的hook;其次,重写IXposedHookZygoteInit中initZygote方法,该方法完成加载该子模块的初始化工作,重写该方法以完成标签数据库中字符标签信息的加载。
3)字符标签替换模块
在handleLoadPackage方法中,定义XC_MethodHook对象editTextToActual,hook到指定函数后,在editTextToActual中实现具体操作。首先利用Method-HookParam.thisObject 获得调用指定函数的对象即EditText对象,并对其添加监视窗addTextChangeListner()以检测文本框内容。当文本框内容与预设标签一致时,将其替换成真实密码,最后在 findAndHookMethod(EditText.class,“getText”,edit-TextToActual)中实现对getText()函数的 hook。
4.PC端登录模块
PC端登录模块主要通过Socket通信和Windows自动填充两个子功能实现。Socket通信模块主要功能是实现Android手机端和PC端(Windows系统)通信,手机端将用户的账户名密码信息发送至PC端;Windows自动填充模块主要实现账户名密码的自动填充,通过引入Windows API函数获取登录窗口输入框焦点并填充账户信息。PC端登录模块基本操作原理如图9所示,其实现和操作步骤可简述为以下三个步骤:
(1)用户打开PC端软件,扫描PC端软件上显示的二维码,建立手机端与PC端之间的通信;
(2)用户在手机端软件选择二维码标签,调用解密解码模块,将账户信息发送至PC端;
(3)用户点击PC端软件的登录按钮,软件获取登录窗口中输入框的焦点位置,并自动填充账户信息。
实现PC端登录主要需要解决如下两个问题:一是手机与PC端软件建立通信,实现账户信息的传输;二是PC端软件获取登录窗口焦点,完成账户信息的自动填充。以下将从Socket通信机制、Windows自动填充两个子模块分别展开介绍。
(1)Socket通信机制
实现网络中进程间的通信,首先要解决的问题是如何唯一标识一个进程,而此问题已被TCP/IP协议族所解决。在TCP/IP协议中,网络层中的“ip地址”能够唯一标识网络中的主机,传输层中的“协议”和“端口”可以唯一标识主机中的应用程序。因此,利用三元组(ip地址,协议,端口)就可以唯一标识网络的进程,网络中进程通信利用此标志与其它进程交互。
使用TCP/IP协议的应用程序通常采用应用编程接口实现网络进程间的通信,即UNIX BSD的套接字(socket)和UNIX System V的TLI(已被淘汰)。Socket起源于UNIX,是“打开open→读写write/read→关闭close”模式的实现,是一种特殊的文件,一些socket 函数对其进行I/O、打开、关闭等操作,进而完成整个通信过程。
基于TCP协议socket服务端和客户端的通信模型,socket通信分为以下四步:
1)建立服务端ServerSocket和客户端Socket;
2)打开连接到Socket的输出输入流;
3)按照协议进行读写操作;
4)关闭相应的资源。
手机端与PC端建立Socket通信的过程具体实现如图10所示:
1)PC端作为服务端,通过getLocalIPForJava()函数从java.net.Network-Interface对象中获取本机IP地址,并从65535端口递减遍历,得到未占用的端口号。将得到的IP地址和端口号编码生成二维码,并显示在软件界面中,手机扫描即可建立通信。
2)PC端首先创建SeverClient线程类,定义数据输入流DataInputStream,并在run() 函数中读取数据流。然后创建PcReceiver类,在类中实现对SeverClient的初始化,并且实现对线程的创建(connect()函数)与关闭(close()函数)。最后,根据获得的端口号实例化 PcReceiver对象并开启线程,等待接收消息。
3)在PC端开启服务后,手机端通过扫描PC端二维码获取IP地址和端口号,并初始化客户端线程ClientThread(IP,port)。开启线程后,利用DataOutput-Stream.writeUTF(message) 将账户密码等信息发送至PC。
(2)实现流程:
1)利用jna将各API函数封装成接口User32和Kernel32,并自定义JFrame窗体AutoLoginWin(),设置窗体大小,并将改窗体设置为始终显示在最顶层。随后添加Button按钮并设置相应事件,用户通过点击该Button实现账户密码的自动填充。
2)定义相应Button的处理事件。首先将窗体设置为不可见,以便获得登录窗口中的焦点,否则点击Button时将获得本程序窗口的焦点。加载User32.class和Kernel32.class后,将登录窗口线程和本程序线程设置关联,实例化对象user32和kernel32,利用API函数 user32.GetFocus()获得登录窗口中的焦点。
3)调用API函数user32.PostMessage(getFocus,user32.WM_KEYDOWN,(byte)keyvalue, 0)将手机传来的信息自动录入到获得焦点的输入框中,最后取消线程关联,并将窗体设为可见。
实现账户名密码自动填充功能的关键在于设置线程关联的函数void Attach-ThreadInput(user32,kernel32,Boolean b)。该函数的作用是,允许线程共享输入序列,将本程序线程的输入处理机制附加到登录窗口线程中,只有在线程内才可以获取线程内控件的焦点。定义该函数所要调用的API函数有:Attach-ThreadInput(int idAttach,intidAttachTo,int fAttach),该API函数的作用是将前台窗口线程贴附在当前线程,使得自动录入程序可以对获得焦点的输入框操作;GetForegroundWindow(),该API函数的作用是获得当前前台窗口的句柄,以便程序找到获得焦点的输入框;GetWindowThreadProcessId(int hwnd,int lpdwProcessId),该API函数的作用是获得当前程序所在的线程标识;GetCurrentThreadId(),该API函数的作用是获得当前程序所在的线程标识。
本文提出了一种新型的二维码安全登录方法,如图5所示。利用标签替换机制,对登录过程中的账户名和密码等重要隐私信息进行加密和编码,并与手机识别码(IMEI、MAC地址等)绑定,建立二维码标签库;用户登录过程中,通过输入相应的字符标签或选择相应的二维码图标标签,实现后台解码解密及自动填充。
本系统与目前流行的密码管理软件登录方式相比,例如1Password、KeePass,具有以下主要特色和优点:
(1)安全性更高。用户可以输入字符或选择图标代替真实密码,利用加密技术和编码技术将密码等敏感信息存储在二维码中,降低了恶意应用记录手机按键的风险,防范了输入密码过程中遭到肩窥攻击,为用户提供安全与隐私保护。
(2)使用方便。用户既可通过系统键盘输入字符标签进行登录,也能够通过选择二维码图标完成登录,并且PC端登录时,用户通过扫描二维码即可完成相关应用登陆,不需要记忆复杂的密码。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (8)

1.一种二维码安全标签登录系统,其特征在于,包含以下四个模块组成:
二维码标签管理模块:用于建立字符标签和图标标签,字符标签提供中文、英文、数字多种标签类型,图表标签提供二维码图标标签类型,利用加密技术和编码技术将真实账户信息存储在标签数据库并与二维码标签对应,并用于查看或删除所述存储在标签数据库中的真实账户信息和对应的二维码标签;
图标标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,选择对应的二维码图标,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
字符标签登录模块:用于通过手机端在应用软件的登录界面切换至标签登录输入法,输入自定义字符,通过后台解码,得到真实账户信息,通过模拟键盘进行自动填充所述真实账户信息至登录界面并提交;
PC端登录模块:用于与PC端建立通信并发送真实账户信息至PC端直接进行登录。
2.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,所述真实账户信息包括实际的账户名和登录密码的字符信息。
3.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,所述标签数据库采取两重加密方法,对于每一个账户密码信息,根据本机的多个唯一标识信息、用户设置的主密钥和一个后台生成的随机数生成子密钥,利用子密钥对每一个账户信息进行单独加密,当用户保存账号密码至本应用后,获取本机的多个唯一标识信息,使用ZUC算法生成一个随机数,通过SM3杂凑算法将多个唯一标识信息、随机数、主密钥计算生成杂凑值并作为该账户的子密钥,子密钥与用户保存的账号密码通过SM4算法加密编码,通过二维码生成子模块对产生的密文进行编码并生成二维码图片,存储在标签数据库中。
4.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,所述标签登录输入法用于对选择输入二维码图标或者输入自定义字符。
5.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,二维码标签管理模块包括二维码标签生成、二维码标签存储和二维码标签解码三个子模块;其中,二维码标签生成子模块用于实现对账户名和密码信息的加密和编码,生成包含密文形式的二维码标签;二维码标签存储子模块用于实现二维码标签在标签数据库的存储,其存储索引是二维码标签的简称、编号、标签图标或用户自定义的字符,存储内容为账户名和密码信息经加密、编码后的结果;二维码标签解码子模块用于实现账户名和密码信息的解码和解密。
6.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,图标标签登录模块中所述图标登录输入法用于在标签数据库中选择目标应用的图标标签,后台自动对存储在系统中的二维码进行解码及解密操作,随后输入法通过onkey函数接收解码解密后得到的账户名和密码信息,调用commiText函数,将真实账户信息填充到登录界面。
7.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,字符标签登录模块包括函数加载、Hook和字符标签替换三个子模块;其中,函数加载子模块用于基于Xposed基本开发准则完成系统API函数的hook操作;Hook子模块用于实现对指定API函数的hook操作,以及完成标签数据库中字符标签信息的加载;字符标签替换子模块用于获得调用指定函数的对象,并检测文本框内容,若文本框内容与预设标签一致时,将其替换成真实密码。
8.根据权利要求1所述的一种二维码安全标签登录系统,其特征在于,PC端登录模块包括Socket通信和Windows自动填充两个子模块;其中,Socket通信子模块用于实现Android手机端和PC端通信,手机端将用户的账户名密码信息发送至PC端;Windows自动填充子模块用于实现账户名和密码信息的自动填充,通过引入Windows API函数获取登录窗口输入框焦点并填充账户信息。
CN201810555781.9A 2018-05-31 2018-05-31 一种二维码安全标签登录系统 Active CN109214161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810555781.9A CN109214161B (zh) 2018-05-31 2018-05-31 一种二维码安全标签登录系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810555781.9A CN109214161B (zh) 2018-05-31 2018-05-31 一种二维码安全标签登录系统

Publications (2)

Publication Number Publication Date
CN109214161A true CN109214161A (zh) 2019-01-15
CN109214161B CN109214161B (zh) 2020-09-29

Family

ID=64990994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810555781.9A Active CN109214161B (zh) 2018-05-31 2018-05-31 一种二维码安全标签登录系统

Country Status (1)

Country Link
CN (1) CN109214161B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110113329A (zh) * 2019-04-28 2019-08-09 北京信安世纪科技股份有限公司 一种验证码的验证方法及装置
CN110493206A (zh) * 2019-08-07 2019-11-22 彩讯科技股份有限公司 一种账号登录的方法及装置
CN111260010A (zh) * 2020-01-20 2020-06-09 浙江中国轻纺城网络有限公司 自定义二维码标签的处理方法、装置和设备
CN111988148A (zh) * 2020-08-26 2020-11-24 上海合合信息科技股份有限公司 一种基于生物认证的自动登录设备和方法
CN112465507A (zh) * 2021-01-22 2021-03-09 支付宝(杭州)信息技术有限公司 支付业务的实现方法和装置
CN113139164A (zh) * 2020-01-20 2021-07-20 启碁科技股份有限公司 自动输入密码的方法、系统及密码管理装置
CN113312535A (zh) * 2021-05-28 2021-08-27 中铁十一局集团第五工程有限公司 一种工程测量智慧管理控制云平台
CN114138112A (zh) * 2021-11-22 2022-03-04 瑞欧威尔(上海)智能科技有限公司 一种头戴式智能设备产品的高效聚合ocr输入法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000070838A3 (en) * 1999-05-14 2002-01-10 Pivia Inc Client-server independent intermediary mechanism
CN101272237A (zh) * 2008-04-22 2008-09-24 北京飞天诚信科技有限公司 一种用于自动生成和填写登录信息的方法和系统
CN106156598A (zh) * 2016-06-30 2016-11-23 中国地质大学(武汉) 一种二维码隐私登录保护系统及方法
CN107623664A (zh) * 2016-07-15 2018-01-23 阿里巴巴集团控股有限公司 一种密码输入方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000070838A3 (en) * 1999-05-14 2002-01-10 Pivia Inc Client-server independent intermediary mechanism
CN101272237A (zh) * 2008-04-22 2008-09-24 北京飞天诚信科技有限公司 一种用于自动生成和填写登录信息的方法和系统
CN106156598A (zh) * 2016-06-30 2016-11-23 中国地质大学(武汉) 一种二维码隐私登录保护系统及方法
CN107623664A (zh) * 2016-07-15 2018-01-23 阿里巴巴集团控股有限公司 一种密码输入方法及装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110113329A (zh) * 2019-04-28 2019-08-09 北京信安世纪科技股份有限公司 一种验证码的验证方法及装置
CN110113329B (zh) * 2019-04-28 2021-11-09 北京信安世纪科技股份有限公司 一种验证码的验证方法及装置
CN110493206A (zh) * 2019-08-07 2019-11-22 彩讯科技股份有限公司 一种账号登录的方法及装置
CN110493206B (zh) * 2019-08-07 2022-07-12 彩讯科技股份有限公司 一种账号登录的方法及装置
CN111260010A (zh) * 2020-01-20 2020-06-09 浙江中国轻纺城网络有限公司 自定义二维码标签的处理方法、装置和设备
CN113139164A (zh) * 2020-01-20 2021-07-20 启碁科技股份有限公司 自动输入密码的方法、系统及密码管理装置
CN111988148A (zh) * 2020-08-26 2020-11-24 上海合合信息科技股份有限公司 一种基于生物认证的自动登录设备和方法
CN112465507A (zh) * 2021-01-22 2021-03-09 支付宝(杭州)信息技术有限公司 支付业务的实现方法和装置
CN113312535A (zh) * 2021-05-28 2021-08-27 中铁十一局集团第五工程有限公司 一种工程测量智慧管理控制云平台
CN113312535B (zh) * 2021-05-28 2023-02-24 中铁十一局集团第五工程有限公司 一种工程测量智慧管理控制云平台
CN114138112A (zh) * 2021-11-22 2022-03-04 瑞欧威尔(上海)智能科技有限公司 一种头戴式智能设备产品的高效聚合ocr输入法

Also Published As

Publication number Publication date
CN109214161B (zh) 2020-09-29

Similar Documents

Publication Publication Date Title
CN109214161A (zh) 一种二维码安全标签登录系统
CN105376216B (zh) 一种远程访问方法、代理服务器及客户端
US10009173B2 (en) System, device, and method of secure entry and handling of passwords
US8990565B2 (en) Method and system for automatically logging in a client
van Oorschot Computer Security and the Internet
CN101320407B (zh) 提供基于图案的用户密码访问的方法和装置
US20030177378A1 (en) Apparatus and method for the decryption of an encrypted electronic document
US20170099144A1 (en) Embedded encryption platform comprising an algorithmically flexible multiple parameter encryption system
CN104331644A (zh) 一种智能终端文件的透明加解密方法
Madden API security in action
US20070186115A1 (en) Dynamic Password Authentication System and Method thereof
CN103686716B (zh) 安卓系统机密性完整性增强访问控制系统
CN103930899B (zh) 用于管理在设备处输入的公用数据和私人数据的方法
CN105975867B (zh) 一种数据处理方法
EP2130159B1 (en) Secure data storage and retrieval incorporating human participation
CN103701614B (zh) 一种身份验证方法及装置
CN110069916B (zh) 一种密码安全管理系统和方法
EP1785901B1 (en) Secure License Key Method and System
CN117240625B (zh) 一种涉及防篡改的数据处理方法、装置及电子设备
CN106156598A (zh) 一种二维码隐私登录保护系统及方法
CN103036852A (zh) 一种实现网络登录的方法以及装置
Ozkan et al. Security analysis of mobile authenticator applications
US11068579B2 (en) Method and system of performing an authorization mechanism between a service terminal system and a helpdesk system
US20140047555A1 (en) Method and system for securing a software program
CN105515959A (zh) 基于cms技术的即时通信保密系统的实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Song Jun

Inventor after: Yang Fan

Inventor after: Xu Heng

Inventor after: Qi Xiaotian

Inventor before: Song Jun

Inventor before: Wang Lizhe

Inventor before: Yang Fan

Inventor before: Xu Heng

Inventor before: Qi Xiaotian

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190115

Assignee: WUHAN TIMES GEOSMART TECHNOLOGY Co.,Ltd.

Assignor: CHINA University OF GEOSCIENCES (WUHAN CITY)

Contract record no.: X2022420000021

Denomination of invention: A QR code security label login system

Granted publication date: 20200929

License type: Common License

Record date: 20220302

EE01 Entry into force of recordation of patent licensing contract