本发明涉及信息安全领域,尤其涉及一种安全输入密码的方法及系统。
背景技术:
随着互联网行业的快速发展,网络交互在生活中得到越来越广泛的应用,网络交互中输入密码的安全也成了一个亟待解决的问题;智能密钥设备是指将私钥单独储存在一个芯片中,与互联网隔离,即连即用,很大程度上保证了网络交互的安全,随着上层软件要开放源码,传统的密码保护手段已经无法保护硬件的密码,无论是采用哪种加密方式,只要上层软件代码被篡改,硬件密码就有丢失的风险。
技术实现要素:
根据本发明,提供一种安全输入密码的方法包括:
步骤s1:智能密钥设备接收上位机发送的密码验证请求,生成并显示随机排列的字符,向上位机返回密码验证响应;
步骤s2:上位机接收密码验证响应,显示密码输入界面,等待用户输入,判断是否接收到用户输入,如果是,执行步骤s3;否则,报错,退出;
步骤s3:上位机根据用户输入获取对应位置的第一位置标识,根据第一位置标识得到密码获取响应,向智能密钥设备发送密码获取响应;
步骤s4:智能密钥设备接收密码获取响应,根据密码获取响应、自身保存的密码和随机排列的字符判断用户输入是否正确,如果是,验证成功,向上位机返回验证成功响应;否则,验证失败,向上位机返回验证失败响应。
可选地,步骤s1之前还包括:
步骤s1-1:上位机等待接收用户触发信息,判断是否接收到用户触发信息,如果是,执行步骤s1-2;否则,返回步骤s1-1;
步骤s1-2:上位机判断是否有已经连接的智能密钥设备,如果是,执行步骤s1-6;否则,执行步骤s1-3;
步骤s1-3:上位机发送连接请求;
步骤s1-4:智能密钥设备接收连接请求,生成连接响应,向上位机返回连接响应;
步骤s1-5:上位机接收连接响应,根据连接响应判断与智能密钥设备连接是否成功,如果是,执行步骤s1-6;否则,返回步骤s1-3;
步骤s1-6:上位机判断是否与智能密钥设备配对成功,如果是,执行步骤s1;否则,向智能密钥设备发送配对请求,并提示用户输入配对码,执行步骤s1-7;
步骤s1-7:上位机判断是否接收到用户输入的配对码,如果是,判断配对码是否正确,如果配对码正确,生成密码验证请求,向智能密钥设备发送密码验证请求;如果配对码错误,提示配对码错误,等待用户输入配对码,返回步骤s1-7;否则,退出,结束。
可选地,步骤s1-1中用户触发信息具体为交互签名请求。
可选地,步骤s1中生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形包含可用于用户输入的字符;或者
生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形包含可用于用户输入的随机排列的字符;或者
生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形包含可用于用户输入的随机字符。
可选地,步骤s2中显示密码输入界面具体为:显示与智能密钥设备显示的图形相同的图形,上位机显示的图形中不包含随机排列字符。
可选地,步骤s4之后,还包括:
上位机接收智能密钥设备返回的验证响应,判断验证响应类型,如果为密码验证成功响应,向智能密钥设备发送交互签名请求;
智能密钥设备接收上位机发送的交互签名请求,解析交互签名请求,得到第一交互数据,对第一交互数据进行签名生成交互签名响应,向上位机返回交互签名响应。
可选地,上述方法还包括:当上位机接收到智能密钥设备返回的交互签名响应时,根据交互签名响应得到第二交互数据,根据第二交互数据生成广播请求,向服务器发送广播请求,判断是否接收到服务器返回的响应,如果是,交互成功,结束;否则,报错,结束。
可选地,步骤s3具体为:
上位机根据用户输入获取用户输入的对应位置的第一位置标识,对第一位置标识进行哈希运算得到第一运算结果,将第一运算结果作为密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,获取第一运算结果,根据自身保存的用户密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对获取到的第二位置标识进行哈希运算,得到第二运算结果,根据第二运算结果判断第一运算结果是否正确,如果是,验证成功;否则,验证失败。
可选地,步骤s3具体为:
上位机根据用户输入获取用户输入的对应位置的第一位置标识,将第一位置标识作为密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,获取第一位置标识,对第一位置标识进行顺序拼接得到第一运算结果,根据自身保存的用户密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对第二位置标识进行顺序拼接得到第二运算结果,判断第一运算结果与第二运算结果是否相同,如果是,验证成功;否则,验证失败。
可选地,步骤s3具体为:
上位机根据用户输入获取对应位置的第一位置标识,将第一位置标识顺序拼接得到密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,分割并提取密码获取响应中的每个第一位置标识,根据第一位置标识确定用户输入的密码,判断用户输入的密码和自身保存的密码是否相同,如果是,验证成功;否则,验证失败。
根据本发明的另一方面,提供一种安全输入密码的系统,包括:
智能密钥设备和上位机;
智能密钥设备包括:
第一接收模块,用于接收上位机发送的密码验证请求;
第一返回模块,用于向上位机返回密码验证响应;
第一生成模块,用于当第一接收模块接收到上位机发送的密码验证请求时,生成并显示随机排列的字符;
第一接收模块还用于接收上位机发送的第一运算结果;
第一判断模块,用于当第一接收模块接收到第一运算结果时,根据第一运算结果、自身保存的密码和生成模块生成的随机排列字符判断用户输入是否正确;
第一返回模块还用于当第一判断模块判断出用户输入正确时,向上位机返回验证成功响应;当第一判断模块判断出用户输入错误时,向上位机返回验证失败响应;
上位机包括:
第二接收模块,用于接收智能密钥设备返回的密码验证响应;
第二显示模块,用于当第二接收模块接收到密码验证响应时,显示密码输入界面,等待用户输入;
第二判断模块,用于当第二显示模块显示密码输入界面时,判断是否接收到用户输入;
第二获取模块,用于当第二判断模块判断出接收到用户输入时获取对应位置的第一位置标识,并对第一位置标识进行运算,得到第一运算结果;
第二发送模块,用于将第二获取模块得到的第一运算结果发送给智能密钥设备。
可选地,第二判断模块还用于判断是否接收到用户的触发信息;
第二接收模块还用于接收用户的触发信息;
第二判断模块还用于,当第二接收模块接收到用户的触发信息时,判断是否存在已连接的智能密钥设备;当存在已连接的智能密钥设备时,判断是否接收到用户输入的配对码;
当接收到用户输入的配对码,第二判断模块还用于判断配对码是否正确;
第二发送模块还用于,当第二判断模块判断出上位机不存在已连接的智能密钥设备时,发送连接请求;
第一接收模块还用于接收上位机发送的连接请求;
第一生成模块还用于当第一接收模块接收上位机发送的连接请求时,生成连接响应;
第一返回模块还用于,当第一生成模块生成连接响应时,向上位机返回连接响应;
第二接收模块还用于接收智能密钥设备返回的连接响应;
第二判断模块还用于根据第二接收模块接收到的连接响应判断上位机与智能密钥设备连接是否成功;
第二发送模块还用于当第二判断模块判断出上位机与智能密钥设备配对未成功时,向智能密钥设备发送配对请求;
第二显示模块还用于当第二发送模块向智能密钥设备发送配对请求时,提示用户输入配对码;
第二判断模块还用于当上位机接收到用户输入的配对码时,判断配对码是否正确;
上位机还包括第二生成模块,用于当第二判断模块判断出用户输入的配对码正确时,生成密码验证请求;
第二显示模块还用于当第二判断模块判断出用户输入的配对码错误时,提示配对码错误。
可选地,第二接收模块接收到的用户触发信息具体为交互签名请求。
可选地,第一生成模块具体用于,当第一接收模块接收到上位机发送的密码验证请求时,生成并显示随机图形,随机图形包含可用于用户输入的字符;或者
第一生成模块具体用于,当第一接收模块接收到上位机发送的密码验证请求时,生成并显示预设图形,预设图形包含可用于用户输入的随机排列的字符;或者
第一生成模块具体用于,当第一接收模块接收到上位机发送的密码验证请求时,生成并显示预设图形,预设图形包含可用于用户输入的随机字符。
可选地,第二显示模块具体用于显示和智能密钥设备上显示的相同的图形相同的图形,图形中不包含随机排列的字符。
可选地,第二接收模块还用于接收智能密钥设备返回的验证响应;
第二判断模块还用于当第二接收模块接收到验证响应时,判断验证响应类型;
第二发送模块还用于当第二判断模块判断出验证响应类型为密码验证成功响应时,向智能密钥设备发送交互签名请求;
第一接收模块接收上位机发送的交互签名请求;
智能密钥设备还包括:
解析模块,用于当第一接收模块接收到交互签名请求时,解析交互签名请求得到第一交互数据;
第一生成模块还用于对第一交互数据进行签名生成交互签名响应;
第一返回模块将第一生成模块生成的交互签名响应返回上位机。
可选地,第二接收模块还用于接收智能密钥设备返回的交互签名响应;
第二生成模块还用于当第二接收模块接收到交互签名响应时,根据交互签名响应得到第二交互数据,根据第二交互数据生成广播请求;
第二发送模块还用于向服务器发送第二生成模块生成的广播请求;
第二判断模块还用于判断是否接收到服务器返回的响应。
可选地,第二获取模块具体用于根据用户输入获取用户输入的对应位置的第一位置标识,对第一位置标识进行哈希运算得到第一运算结果,将第一运算结果作为密码获取响应;
第二发送模块具体用于向智能密钥设备发送第二获取模块得到的第一运算结果。
可选地,
第一接收模块还用于接收上位机发送的密码获取响应,获取第一运算结果;
智能密钥设备还包括:
第一获取模块,用于根据自身保存的密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对获取到的第二位置标识进行哈希运算,得到第二运算结果;
第一判断模块还用于根据第二运算结果判断第一运算结果是否正确。
可选地,第二获取模块具体用于根据用户输入获取用户输入的对应位置的第一位置标识,将第一位置标识作为密码获取响应;
第二发送模块用于向智能密钥设备发送密码获取响应。
可选地,第一接收模块还用于接收密码获取响应;
第一获取模块还用于获取第一位置标识,对第一位置标识进行顺序拼接得到第一运算结果;
第一获取模块还用于根据自身保存的用户密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对第二位置标识进行顺序拼接得到第二运算结果;
第一判断模块还用于第一运算结果与第二运算结果是否相同。
可选地,第二获取模块还用于根据用户输入获取对应位置的第一位置标识,将第一位置标识顺序拼接得到密码获取响应;
第二发送模块还用于向智能密钥设备发送密码获取响应。
可选地,第一接收模块还用于接收密码获取响应;
第一生成模块还用于分割并提取密码获取响应中的每个第一位置标识,根据第一位置标识确定用户输入的密码;
第一判断模块还用于判断用户输入的密码和自身保存的密码是否相同。
通过本发明,实现了一种必须用户参与,并且一次一密码的验证方案,另外,通过数字在上位机屏幕不显示的方式,进一步保证了用户数字资产的安全。
附图说明
图1为本发明实施例1提供了一种安全输入密码的方法的流程图;
图2为本发明实施例2提供了一种安全输入密码的方法的流程图;
图3为本发明实施例2中智能密钥设备和上位机配对时,上位机显示输入配对码的示意图;
图4为本发明实施例2中智能密钥设备和上位机配对时,智能密钥设备显示配对码的示意图;
图5为本发明实施例2的实例中智能密钥设备显示包含数字的九宫格图形的示意图;
图6为本发明实施例2的实例中上位机接收到第一响应后,显示的用户输入密码图形的示意图;
图7为本发明实施例3提供的一种安全输入密码的方法的流程图;
图8为本发明实施例4提供的一种安全输入密码的方法的流程图;
图9为本发明实施例5提供的一种安全输入密码的方法的流程图;
图10为本发明实施例6提供的一种安全输入密码的系统的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例中,上位机为有显示屏的设备,如手机、电脑等设备,上位机和智能密钥设备之间通过蓝牙、音频或者有线等方式连接。
实施例1
根据本发明实施例1,提供一种安全生成密码的方法包括:
步骤s1:智能密钥设备接收上位机发送的密码验证请求,生成并显示随机排列的字符,向上位机返回密码验证响应;
步骤s2:上位机接收密码验证响应,显示密码输入界面,等待用户输入,判断是否接收到用户输入,如果是,执行步骤s3;否则,报错,退出;
步骤s3:上位机根据用户输入获取对应位置的第一位置标识,根据第一位置标识得到密码获取响应,向智能密钥设备发送密码获取响应;
步骤s4:智能密钥设备接收密码获取响应,根据密码获取响应、自身保存的密码和随机排列的字符判断用户输入是否正确,如果是,验证成功,向上位机返回验证成功响应;否则,验证失败,向上位机返回验证失败响应。
可选地,步骤s1之前还包括:
步骤s1-1:上位机等待接收用户触发信息,判断是否接收到用户触发信息,如果是,执行步骤s1-2;否则,返回步骤s1-1;
步骤s1-2:上位机判断是否有已经连接的智能密钥设备,如果是,执行步骤s1-6;否则,执行步骤s1-3;
步骤s1-3:上位机发送连接请求;
步骤s1-4:智能密钥设备接收连接请求,生成连接响应,向上位机返回连接响应;
步骤s1-5:上位机接收连接响应,根据连接响应判断与智能密钥设备连接是否成功,如果是,执行步骤s1-6;否则,返回步骤s1-3;
步骤s1-6:上位机判断是否与智能密钥设备配对成功,如果是,执行步骤s1;否则,向智能密钥设备发送配对请求,并提示用户输入配对码,执行步骤s1-7;
步骤s1-7:上位机判断是否接收到用户输入的配对码,如果是,判断配对码是否正确,如果配对码正确,生成密码验证请求,向智能密钥设备发送密码验证请求;如果配对码错误,提示配对码错误,等待用户输入配对码,返回步骤s1-7;否则,退出,结束。
可选地,步骤s1-1中用户触发信息具体为交互签名请求。
可选地,步骤s1中生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形包含可用于用户输入的字符;或者
生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形包含可用于用户输入的随机排列的字符;或者
生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形包含可用于用户输入的随机字符。
可选地,步骤s2中显示密码输入界面具体为:显示与智能密钥设备显示的图形相同的图形,上位机显示的图形中不包含随机排列字符。
可选地,步骤s4之后,还包括:
上位机接收智能密钥设备返回的验证响应,判断验证响应类型,如果为密码验证成功响应,向智能密钥设备发送交互签名请求;
智能密钥设备接收上位机发送的交互签名请求,解析交互签名请求,得到第一交互数据,对第一交互数据进行签名生成交互签名响应,向上位机返回交互签名响应。
可选地,上述方法还包括:当上位机接收到智能密钥设备返回的交互签名响应时,根据交互签名响应得到第二交互数据,根据第二交互数据生成广播请求,向服务器发送广播请求,判断是否接收到服务器返回的响应,如果是,交互成功,结束;否则,报错,结束。
可选地,步骤s3具体为:
上位机根据用户输入获取用户输入的对应位置的第一位置标识,对第一位置标识进行哈希运算得到第一运算结果,将第一运算结果作为密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,获取第一运算结果,根据自身保存的用户密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对获取到的第二位置标识进行哈希运算,得到第二运算结果,根据第二运算结果判断第一运算结果是否正确,如果是,验证成功;否则,验证失败。
可选地,步骤s3具体为:
上位机根据用户输入获取用户输入的对应位置的第一位置标识,将第一位置标识作为密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,获取第一位置标识,对第一位置标识进行顺序拼接得到第一运算结果,根据自身保存的用户密码和随机排列的字符获取自身保存的用户密码的对应位置的第二位置标识,对第二位置标识进行顺序拼接得到第二运算结果,判断第一运算结果与第二运算结果是否相同,如果是,验证成功;否则,验证失败。
可选地,步骤s3具体为:
上位机根据用户输入获取对应位置的第一位置标识,将第一位置标识顺序拼接得到密码获取响应,向智能密钥设备发送密码获取响应。
可选地,步骤s4具体包括:
智能密钥设备接收密码获取响应,分割并提取密码获取响应中的每个第一位置标识,根据第一位置标识确定用户输入的密码,判断用户输入的密码和自身保存的密码是否相同,如果是,验证成功;否则,验证失败。
实施例2
根据本发明实施例2,提供了一种安全输入密码的方法,如图2所示,包括:
步骤s201:上位机等待接收用户触发信息,判断是否接收到用户触发信息,如果是,执行步骤s202;否则,继续等待;
可选地,本实施例中,用户触发信息为用私钥签名请求。
步骤s202:上位机判断是否有已经连接的智能密钥设备,如果是,执行步骤s206;否则,执行步骤s203;
可选地,上位机和智能密钥设备可以通过蓝牙或者数据线的方式进行连接;本实施例中,以上位机和智能密钥设备通过蓝牙方式连接为例进行说明;
可选地,步骤s202具体包括:上位机读取上位机的蓝牙模块的参数,判断是否可以成功读取蓝牙模块的参数,如果是,上位机已经连接智能密钥设备,执行步骤s206;否则,上位机未连接智能密钥设备,执行步骤s203;
步骤s203:上位机向智能密钥设备发送连接请求;
步骤s204:智能密钥设备接收上位机发送的连接请求,根据连接请求生成连接响应,向上位机返回连接响应;
可选地,步骤s204具体包括:
步骤s204-1:智能密钥设备接收上位机发送的连接请求,智能密钥设备解析连接请求,获取上位机的终端信息,检查智能密钥设备自身保存的白名单,判断白名单中是否为空,如果是,连接上位机,向上位机返回连接成功响应;否则,执行步骤s204-2;
步骤s204-2:智能密钥设备判断白名单中是否存在与获取到的上位机的终端信息相同的终端信息,如果是,与上位机连接,向上位机返回连接成功响应;否则,拒绝与上位机连接,向上位机返回连接失败响应。
步骤s205:上位机接收连接响应,判断是否与智能密钥设备连接成功,如果是,执行步骤s206;否则,返回步骤s203;
步骤s206:上位机检查配对列表中是否存在该智能密钥设备,如果是,执行步骤s209;否则,向智能密钥设备发送配对请求,并提示用户输入智能密钥设备配对码,执行步骤s207;
例如,上位机向智能密钥设备发送配对请求,并在上位机的屏幕上显示如图3所示的提示用户输入智能密钥设备配对码的图案;
步骤s207:智能密钥设备接收上位机发送的配对请求,生成智能密钥设备配对码,显示智能密钥设备配对码;
其中,智能密钥设备的蓝牙为打开状态;
例如,智能密钥设备显示配对码,如图4所示;
步骤s208:上位机判断是否接收到用户输入的配对码,如果是,判断用户输入的配对码是否正确,如果配对码正确,配对成功,执行步骤s209;如果配对码不正确,提示用户配对码错误,返回步骤s208;否则,退出流程;
可选地,当上位机判断出未接收到用户输入的配对码,退出流程之前还包括:
上位机判断是否等待时长超过第一预设时间,如果是,退出流程,否则,继续执行步骤s208;
例如,上位机判断是否超过2分钟,如果是,退出流程;否则,继续执行步骤s208;
步骤s209:上位机生成密码验证请求,向智能密钥设备发送加密后的密码验证请求;
例如:上位机生成密码验证请求00290000,向智能密钥设备发送验证请求00290000;
其中,00290000为apdu报文。
步骤s210:智能密钥设备接收密码验证请求,生成并显示随机排列的字符,并向上位机返回密码验证响应;
可选地,生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形中包含可用于用户输入密码的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机排列的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机字符;
例如,智能密钥设备接收密码验证请求,生成一组随机数字1-9,并且将数字1-9随机以九宫格的图形显示在屏幕上,如图5所示,并向上位机返回密码验证响应;
可选地,智能密钥生成并显示随机图形,随机图形中包含可用于用户输入的随机数具体为:
可选地,密码为用户预先设置的,存储于智能密钥设备中。
智能密钥生成随机图形,将随机图形每个位置的位置标识保存在标识列表中,当接收到密码验证请求时,将可用于用户输入的所有数字,随机一一对应标识列表中的位置标识。
可选地,智能密钥生成的随机图形为预设图形。
步骤s211:上位机接收密码验证响应,显示与智能密钥设备显示形状相同但不包随机数的图形,等待用户输入密码,判断用户输入密码是否完成,如果是,执行步骤s212;否则,退出,结束。
可选地,上位机判断用户是否点击确认键,如果是,用户输入密码完成;否则,用户未完成密码输入;
可选地,步骤s211中判断为否时,退出之前还包括:
上位机判断等待用户输入密码完成时间是否超过第二预设时间,如果是,退出,结束;否则,继续等待用户输入密码;
例如,第二预设时间为2分钟。
例如,上位机接收密码验证响应,显示与智能密钥设备显示形状相同但不包含数字或字母的图形,如图6所示,等待用户点输入密码,判断是否接收用户输入的密码,如果是,执行步骤s212;否则,退出,结束。
步骤s212:上位机根据用户输入的密码获取用户点击位置对应的第一位置标识,对第一位置标识进行运算,得到第一运算结果,向智能密钥设备发送第一运算结果;
可选地,步骤s212具体为:上位机根据用户输入的密码获取用户点击位置的第一位置标识,对获取到的第一位置标识进行哈希运算,得到第一运算结果,向智能密钥设备发送第一运算结果。
例如,用户在上位机输入的密码为123456,对应位置的第一位置标识为258963,对获取的第一位置标识进行哈希运算,得到第一运算结果2680d8152dabba84c80a50e98afbcd84885b01a67ae276fdb1807fb3cfa66abb,向智能密钥设备发送第一运算结果。
步骤s213:智能密钥设备接收第一运算结果,根据用户预设的密码获取预设密码的位置对应的第二位置标识,对获取到的第二位置标识进行运算,得到第二运算结果;
可选地,步骤s213具体为:智能密钥设备接收第一运算结果,根据用户设置的密码获取对应位置的第二位置标识,并对第二位置标识进行哈希运算,得到第二运算结果;
例如:用户预设的密码为123456,根据用户预设的密码获取对应位置的第二标识为258963,对获取到的第二位置标识进行哈希运算,得到第二运算结果2680d8152dabba84c80a50e98afbcd84885b01a67ae276fdb1807fb3cfa66abb。
步骤s214:智能密钥设备判断第一运算结果和第二运算结果是否匹配,如果是,验证成功,向上位机发送验证成功响应;否则,验证失败,向上位机发送验证失败响应;
可选地,步骤s214具体为:智能密钥设备判断第一运算结果和第二运算结果是否相同,如果是,验证成功,向上位机发送验证成功响应;否则,验证失败,向上位机发送验证失败响应,结束。
例如:智能密钥设备判断第一运算结果2680d8152dabba84c80a50e98afbcd84885b01a67ae276fdb1807fb3cfa66abb和第二运算结果2680d8152dabba84c80a50e98afbcd84885b01a67ae276fdb1807fb3cfa66abb是否相同,如果是,验证成功,向上位机发送验证成功响应;否则,验证失败,向上位机发送验证失败响应,结束。
步骤s215:上位机接收智能密钥设备返回的响应,判断响应类型,如果返回的响应为验证成功响应,执行步骤s216;如果返回的响应为验证失败响应,提示用户密码错误,退出。
可选地,步骤s215中,上位机判断出接收到智能密钥设备返回的响应为失败响应时,提示用户密码输入错误之后,退出之前还包括:
上位机判断用户密码输入错误次数是否达到阈值,如果是,退出;否则,继续提示用户输入密码;
可选地,上述上位机判断用户密码输入错误次数是否达到阈值具体包括:
步骤a:上位机向智能密钥设备发送获取用户密码重试次数请求;
步骤b:智能密钥设备接收获取用户密码重试次数请求,从智能密钥设备储存区获取密码重试次数,并判断重试次数是否为0,若不为0,将重试次数返回上位机;若为0,向上位机返回智能密钥设备锁死响应,退出;
步骤c:上位机接收智能密钥设备返回的结果,判断结果类型,如果是重试次数,继续提示用户输入密码;如果是智能密钥设备锁死响应,退出。
步骤s216:上位机向智能密钥设备发送交互签名请求;
可选的,交互签名请求中包括交互数据;
具体的,交互数据中包括:上次交互数据,账户地址、交互金额。
其中,上次交互数据具体为上次交互的hash值;
本实施例中,接收到的交互数据具体为:0x0100000001
c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab700000000ffffffff0100bd0105000000001976a914634228c26cf40a02a05db93f2f98b768a8e0e61b88ac00000000;
其中,第六字节至第三十七字节0xc9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7为上次交互数据,第四十七字节至第五十四字节0x00bd010500000000为交互金额;第五十九字节至第七十八字节0x634228c26cf40a02a05db93f2f98b768a8e0e61b为账户地址。
步骤s217:智能密钥设备接收上位机发送的交互签名请求,解析交互签名请求,得到第一交互数据,对第一交互数据进行签名生成交互签名响应,向上位机返回交互签名响应;
可选地,智能密钥设备根据私钥对第一交互数据进行签名生成交互签名响应;
具体的,私钥通过椭圆曲线数字签名算法对第一交互数据进行签名,例如:本实施例中256比特的子私钥“0x6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420”通过椭圆曲线数字签名算法对交互数据0x0100000001c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab700000000ffffffff0100bd0105000000001976a914634228c26cf40a02a05db93f2f98b768a8e0e61b88ac00000000进行签名得到签名结果,生成的签名结果为“0x048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d1005eaafd4b3fbe”
步骤s218:上位机接收交互签名响应,根据交互签名响应得到第二交互数据,根据第二交互数据生成广播请求,向服务器发送广播请求,判断是否接收到服务器返回的响应,如果是,交互成功,结束;否则,报错,退出。
实施例3
根据本发明实施例3,提供一种安全输入密码的方法,如图7所示,包括:
步骤s301:上位机向智能密钥设备发送连接请求;
步骤s302:智能密钥设备接收上位机发送的连接请求,根据连接请求生成连接响应,向上位机返回连接响应;
步骤s303:上位机接收连接响应,生成密码验证请求,向智能密钥设备发送密码验证请求;
步骤s304:智能密钥设备接收上位机发送的密码验证请求,生成并显示随机排列的字符,记录用户密码对应位置的第一位置标识,生成密码验证响应,向上位机返回密码验证响应;
可选地,生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形中包含可用于用户输入密码的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机排列的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机字符;
步骤s305:上位机显示与智能密钥设备显示图形相同的图形,图形中不包含随机数,提示用户输入,判断是否接收到用户输入,如果是,向智能密钥设备返回用户输入对应位置的第二位置标识,判断用户是否结束本次输入,如果是,生成用户输入结束标识,向智能密钥设备发送用户输入结束标识;否则,返回步骤s305;否则,退出,结束;
步骤s306:智能密钥设备接收上位机发送的用户输入对应位置的第二位置标识,将接收到的第二位置标识顺序保存在位置标识列表中;判断是否接收到上位机发送的输入结束标识,如果是,执行步骤s307;否则,执行步骤s306;
步骤s307:智能密钥设备将位置标识列表中保存的第二位置标识顺序拼接得到第一验证数据;
步骤s308:智能密钥设备顺序拼接第二位置标识得到第二验证数据,判断第一验证数据和第二验证数据是否相同,如果是,验证成功,向上位机返回验证成功响应,结束;否则,验证失败,向上位机返回验证失败响应,结束。
实施例4
根据本发明实施例4,提供一种安全生成密码的方法,如图8所示,包括:
步骤s401:上位机向智能密钥设备发送连接请求;
步骤s402:智能密钥设备接收连接请求,根据连接请求生成连接响应,向上位机返回连接响应;
步骤s403:上位机接收智能密钥设备返回的连接响应,生成密码验证请求,向智能密钥设备发送密码验证请求;
步骤s404:智能密钥设备接收密码验证请求,生成并显示随机排列的字符,依次保存用户密码对应位置的位置标识,保存一个位置标识,计数器加1,计数器初始值为0,向上位机返回密码验证响应;
可选地,生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形中包含可用于用户输入密码的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机排列的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机字符;
步骤s405:上位机显示与智能密钥设备上显示图形相同的图形,随机图形不包含随机数,提示用户输入,判断是否接收到用户输入,如果是,执行步骤s406;否则,退出,结束;
步骤s406:上位机每次接收到用户输入,对用户输入的对应位置的位置标识进行哈希运算,得到第一运算结果,向智能密钥设备发送第一运算结果,并判断用户是否结束本次输入,如果是,生成用户输入结束标识,向上位机发送用户输入结束标识;否则,返回步骤s406;
步骤s407:智能密钥设备依次接收第一运算结果,根据计数器提取用户密码对应位置的当前位随机数,对当前位随机数进行哈希运算得到第二运算结果;
步骤s408:智能密钥设备判断第一运算结果与第二运算结果是否匹配,如果是,执行步骤s409;否则,验证失败,向上位机返回验证失败响应,结束;
步骤s409:智能密钥设备判断是否接收到用户输入结束标识,如果是,验证成功,向上位机返回验证成功响应,置位计数器,结束;否则,生成并显示新的随机图形,随机图形中包含可用于用户输入的随机数,返回步骤s407。
实施例5
根据本发明实施例5,提供一种安全输入密码的方法,如图9所示,包括:
步骤s501:上位机向智能密钥设备发送连接请求;
步骤s502:智能密钥设备接收连接请求,根据连接请求生成连接响应,向上位机返回连接响应;
步骤s503:上位机接收连接响应,生成密码验证请求,向智能密钥设备发送密码验证请求;
步骤s504:智能密钥设备接收密码验证请求,生成并显示随机排列的字符,向上位机返回密码验证响应;
可选地,生成并显示随机排列的字符具体为:生成并显示随机图形,随机图形中包含可用于用户输入密码的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机排列的字符;
可选地,生成并显示随机排列的字符具体为:生成并显示预设图形,预设图形中包含可用于用户输入密码的随机字符;
步骤s505:上位机接收智能密钥设备返回的密码验证响应,显示与智能密钥显示图形相同的图形,图形中不包含随机数,等待用户输入,判断是否接收到用户输入,如果是,将用户输入的对应位置的第一位置标识顺序保存在上位机保存的标识列表中,执行步骤s506;否则,退出,结束;
步骤s506:上位机判断用户是否结束本次输入,如果是,执行步骤s507;否则,继续接收用户输入的对应位置的第一位置标识,并顺序保存在标识列表内,返回步骤s506;
步骤s507:上位机将标识列表中保存的第一位置标识顺序拼接,得到第一验证数据,向智能密钥设备发送第一验证数据;
步骤s508:智能密钥设备接收第一验证数据,分割并提取第一验证数据得到每个位置标识,根据得到的位置标识确定用户输入的密码,判断用户输入的密码和智能密钥设备保存的密码是否相同,如果是,验证成功,向上位机返回验证成功响应,结束;否则,验证失败,向上位机返回验证失败响应,结束。
实施例6
根据本发明实施例6,提供一种安全输入密码的系统包括:智能密钥设备10和上位机20;
智能密钥设备1包括:
第一接收模块101,用于接收上位机20发送的密码验证请求;
第一返回模块102,用于向上位机20返回密码验证响应;
第一生成模块103,用于当第一接收模块101接收到上位机20发送的密码验证请求时,生成随机字符串;
第一接收模块101还用于接收上位机20发送的第一运算结果;
第一判断模块104,用于当第一接收模块101接收到第一运算结果时,根据第一运算结果、自身保存的密码和生成模块生成的随即字符串判断用户输入是否正确;
第一返回模块102还用于当第一判断模块104判断出用户输入正确时,向上位机20返回验证成功响应;当第一判断模块104判断出用户输入错误时,向上位机20返回验证失败响应;
上位机20包括:
第二接收模块201,用于接收智能密钥设备10返回的密码验证响应;
第二显示模块202,用于当第二接收模块201接收到密码验证响应时,显示密码输入界面,等待用户输入;
第二判断模块203,用于当第二显示模块202显示密码输入界面时,判断是否接收到用户输入;
第二获取模块204,用于当第二判断模块203判断出接收到用户输入时获取对应位置的第一位置标识,并对第一位置标识进行运算,得到第一运算结果;
第二发送模块205,用于将第二获取模块204得到的第一运算结果发送给智能密钥设备10。
可选地,第二判断模块203还用于判断是否接收到用户的触发信息;
第二接收模块201还用于接收用户的触发信息;
第二判断模块203还用于,当第二接收模块201接收到用户的触发信息时,判断是否存在已连接的智能密钥设备;当存在已连接的智能密钥设备时,判断是否接收到用户输入的配对码;
当接收到用户输入的配对码,第二判断模块203还用于判断配对码是否正确;
第二发送模块205还用于,当第二判断模块203判断出上位机不存在已连接的智能密钥设备时,发送连接请求;
第一接收模块101还用于接收上位机20发送的连接请求;
第一生成模块103还用于当第一接收模块101接收上位机20发送的连接请求时,生成连接响应;
第一返回模块102还用于,当第一生成模块103生成连接响应时,向上位机20返回连接响应;
第二接收模块201还用于接收智能密钥设备10返回的连接响应;
第二判断模块203还用于根据第二接收模块201接收到的连接响应判断上位机20与智能密钥设备10连接是否成功;
第二发送模块205还用于当第二判断模块203判断出上位机20与智能密钥设备10配对未成功时,向智能密钥设备10发送配对请求;
第二显示模块202还用于当第二发送模块205向智能密钥设备10发送配对请求时,提示用户输入配对码;
第二判断模块203还用于当上位机20接收到用户输入的配对码时,判断配对码是否正确;
上位机还包括第二生成模块,用于当第二判断模块203判断出用户输入的配对码正确时,生成密码验证请求;
第二显示模块202还用于当第二判断模块203判断出用户输入的配对码错误时,提示配对码错误。
可选地,第二接收模块201接收到的用户触发信息具体为交互签名请求。
可选地,智能密钥设备10还包括:
第一显示模块,用于当第一生成模块103生成随机字符串后,以特定图形将随机字符串显示在智能密钥设备10上。
可选地,第二显示模块202具体用于显示和智能密钥设备10上显示的相同的特定图形,图形中不显示随机字符。
可选地,第二接收模块201还用于接收智能密钥设备10返回的验证响应;
第二判断模块203还用于当第二接收模块201接收到验证响应时,判断验证响应类型;
第二发送模块205还用于当第二判断模块203判断出验证响应类型为密码验证成功响应时,向智能密钥设备10发送交互签名请求;
第一接收模块101接收上位机发送的交互签名请求;
智能密钥设备还包括:
解析模块,用于当第一接收模块101接收到交互签名请求时,解析交互签名请求得到第一交互数据;
第一生成模块103还用于对第一交互数据进行签名生成交互签名响应;
第一返回模块102将第一生成模块103生成的交互签名响应返回上位机。
可选地,第二接收模块201还用于接收智能密钥设备10返回的交互签名响应;
第二生成模块还用于当第二接收模块201接收到交互签名响应时,根据交互签名响应得到第二交互数据,根据第二交互数据生成广播请求;
第二发送模块205还用于向服务器发送第二生成模块生成的广播请求;
第二判断模块203还用于判断是否接收到服务器返回的响应。
可选地,第二获取模块204具体用于对第一位置标识进行哈希运算得到第一运算结果。
可选地,第一接收模块101还用于接收上位机20发送的第一运算结果;
智能密钥设备还包括:
第一获取模块,用于根据自身保存的密码和随机字符串获取自身保存的密码的对应位置标识的第二位置标识,对获取到的第二位置标识进行哈希运算,得到第二运算结果;
第一判断模块104还用于根据第二运算结果判断第一运算结果是否正确;
可选地,第二获取模块204具体用于对第一位置标识顺序拼接,得到第一验证数据,将第一验证数据作为第一运算结果。
可选地,第一接收模块101还用于接收第一运算结果;
第一获取模块还用于分割并提取第一运算结果中的每个位置标识;
第一判断模块104还用于根据位置标识确定用户输入的密码,根据自身保存的密码和随机字符串判断用户输入的密码是否正确。
以上为对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。