一种防止数字签名钓鱼攻击的方法与流程

    专利2022-07-07  67

    本发明涉及可靠安全的数字签名实现方法,避免签名者遭受钓鱼攻击。具体而言,本发明涉及一种防止数字签名钓鱼攻击的方法。



    背景技术:

    二维码:二维码(2-dimensionalbarcode)是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的资讯。

    数字证书:数字证书是证明用户身份的网上标识,在网络中识别通讯各方的身份,即在虚拟社会中解决“我是谁”的问题。通俗的讲,数字证书就好像是网上用户的身份证,能够保证您在网络上进行的交易是安全的和可信的。

    数字证书主要有如下作用:

    1、身份认证:数字证书中包括的主要内容有:证书拥有者的单位信息、证书拥有者的公钥、公钥的有效期、颁发数字证书的ca、ca的数字签名等。

    2、加密传输信息:通过数字证书在网上传输数据,这些数据要进行加密,然后以密码的形式在internet上传输。发送方用接收方的公钥对文件进行加密,接收方用只有自己才有的私钥进行解密,得到文件明文。

    3、数字签名抗否认:在现实生活中用公章、签名等来实现的抗否认,在网上可以借助数字证书的数字签名来实现。

    数字签名是各类提供个性化高价值应用服务确认用户身份和防抵赖的重要手段,在网上银行、电子合同等应用中被广泛使用.但是数字签名本质上,是对待签名数据的hash进行签名。例如,当需要对一本《红楼梦》签名的时候,是先对《红楼梦》全文做一个hash,获得类似“ec7865a0bd1f6845715d408f37e10d09c8ff930fe5c660f971731838c5599299”这样的hash结果h,再用签名者的私钥对h进行签名,获得最终的数字签名s。

    hash值对人对计算机来说,都是一串“无规律”的字符串,不论是人还是计算机,都无法直接判读出hash值和原文之间的关系。这是hash算法的优点,但是这给中间人攻击留下了机会。

    例如,当b要对《红楼梦》进行数字签名的时候,q替换了《红楼梦》的hash值h1,改成了《水浒传》的hash值h2,b以为自己是对h1签名,但是由于hash值的无规律性,b对hash值已经被替换为h2毫无察觉,最终被钓鱼,被q获取了对《水浒传》的签名。

    这里的《水浒传》可以替换成转账、合同、登录等。考虑到数字证书的一个高频率签名的应用场景--登录,这会是钓鱼攻击者的重点攻击对象。



    技术实现要素:

    针对现有技术中存在的问题,本发明要解决的技术问题是:根据上文中所提到的数字签名方式存在的不足,提出一种更可靠的数字签名方式。

    为了实现上述发明目的,本发明采用的技术方案为:一种防止数字签名钓鱼攻击的方法,其特征在于:

    以hash purpose的方式组织待签名数据;

    在签名前,将purpose展现给签名者,让签名者确认本次签名的用途;

    对hash purpose进行签名,把签名和签名用途绑定,避免签名被用在其它用途。

    具体步骤为:

    ■a模块表示待签名数据的生成者;

    ■b表示签名者;

    ■c模块表示b持有的签名模块,签名模块是一段程序,完成实际的数字签名操作;

    ■q表示中间人或攻击者;

    步骤一、a模块根据待签名数据生成hash值h;

    步骤二、a模块以hash purpose的数据编码格式组织签名数据块;所述数据编码格式中还包括time、identity、signature;

    其中:

    所述hash:待签名数据的hash值(h),可以以任意编码格式组成,例如hexstring,base64编码等等;

    所述purpose:签名用途,由签名模块展示给b,用于给b验证签名用途;

    所述time:待签名数据生成的时间,用于给b做进一步验证签名用途;

    所述identity:待签名数据的生成者,用于给b做进一步验证签名用途;

    所述signature:a模块对以上所有或部分数据的数字签名,用于保证上述数据的完整可靠。

    步骤三、签名数据块能够转换为二维码等图像编码,供手机等终端通过扫描方式获取。

    步骤四、c模块解析签名数据块后,获取hash,purpose,time,identity,signature等项;

    (1)如果是无风险或者低风险purpose,c模块可以直接进入下一步骤;

    (2)将purpose以文字或者图标的方式,直观地展现给b;

    (3)b验证签名用途是否符合本次签名的目的,如果符合,则确认签名。

    步骤五、c模块有两种签名方式:

    (1)对整个签名数据块进行签名;

    (2)对至少包括hash purpose的数据进行签名;

    步骤六、b将签名后的结果提交给a模块;

    步骤七、a模块验证b的签名。

    有益效果:

    随着网上银行等在线应用、电子营业执照等电子证照的推广和普及,数字签名的应用越来越普遍。拿出手机、扫码、输入口令、完成签名这样的操作也将在越来越多的应用中出现。在采用数字证书作为身份认证手段的应用中,使用数字签名进行系统登录这样的场景也越来越广泛。

    但是数字签名的使用实际上存在巨大的风险。数字签名本质上是一种不可否认的确认,可以大致类比现实生活中的公章或签名。每一次数字签名,就是一次盖章。那么问题在于,在现实生活中,盖章的时候是不大可能发生有人在盖章人眼皮底下用借条换掉合同的事情,但是在网络上,电子化的环境中,这种偷梁换柱李代桃僵的情况却是非常普遍,以至于有了一个专门的名称,叫做“钓鱼”。电子签名的不可否认性,使得这种攻击的后果尤其严重。

    如果电子签名的使用场景仅仅只有签署合同这样的高风险场景,签名者基于原先的生活经验,可能会非常谨慎,对“钓鱼”的行为会安排一些防护手段。但是在使用电子签名登录系统这种场景下,虽然从技术本质上来讲,其签名流程和签合同几乎没有差异,但是却很少有用户甚至信息安全从业人员会意识到其中的风险。

    总结一下,目前电子签名的风险主要来自两个方面:

    1.高风险低风险场景混杂,极易在低风险场景下引发高风险后果;

    2.电子签名的使用频率大幅度上升,为诱发高风险后果打开了方便之门

    那么如何解决以上两个问题,显然降低电子签名的使用频率不可行,这本质上是开技术的倒车。因此,本发明的思路在于基于签名场景,一方面给签名者充分展现风险等级,另一方面将签名用途与签名结果直接绑定。例如,在用户要进行登录签名这种低风险操作的时候,在签名界面用绿色展示,让用户知道这个场景是低风险的,同时,将“登录”包含在签名结果中。而当用户需要在网上签名来确认交易的时候,在签名界面用红色展示,让用户知道这个场景是高风险的,同时把交易名称(例如“转账”)包含在签名结果里面。通过这样的方式,让钓鱼者无法通过伪造登录场景,用某个恶意合同的hash值骗取用户的电子签名,再移花接木到恶意合同上去。因为钓鱼者如果这么做了,要么签名里面包含的“登录”会直接揭露其骗术;要么在用户签名的时候会发现明明是绿色的登录操作,结果却被展现了红色的签约操作。

    本发明基于发明人在电子签名行业多年的积累,对用户需求的超前理解和对具体实现技术的反复衡量,在发明人2014年的专利技术《一种基于数据图像编码的跨设备跨应用的数字签名和验证方法zl201410132685.6》的基础上,最终找到的一个技术原理更加简洁明了,尤其适用高频低风险场景下的可信电子签名实现方案,具备高度独创性和实用性。

    具体实施方式

    下面结合具体实施例对本发明进一步描述。

    在下面的描述中:

    ■a模块表示待签名数据的生成者;

    ■b表示签名者;

    ■c模块表示b持有的签名模块,签名模块是一段程序,完成实际的数字签名操作;

    ■q表示中间人(攻击者);

    本实施例的防止数字签名钓鱼攻击的方法,具体步骤如下:

    1a根据待签名数据生成hash值h

    2a以以下方式组织签名数据块(这里使用json编码格式用于讲解,但是实际上可以采用包括asn.1、xml等等任何一种数据编码格式)

    3其中:

    ●hash(必选项):待签名数据的hash值(h),可以以任意编码格式组成,例如hexstring,base64编码等等;

    ●purpose(必选项):签名用途,由签名模块展示给b,用于给b验证签名用途;

    ●time(可选项):待签名数据生成的时间,用于给b做进一步验证签名用途;

    ●identity(可选项):待签名数据的生成者,用于给b做进一步验证签名用途;

    ●signature(可选项):a对以上所有或部分数据的数字签名,用于保证上述数据的完整可靠;

    4(可选步骤)签名数据块可以转换为二维码等图像编码,供手机等终端通过扫描方式获取;

    5c解析签名数据块后,获取hash,purpose,time,identity等项。

    5.1如果是无风险或者低风险purpose,(例如登录),c可以直接进入下面的步骤6。

    否则执行5.2、5.3;

    5.2(可选步骤)将purpose等以文字或者图标的方式,直观地展现给b。例如,在b的手机上,出现“您即将对以下数据进行签名。数据来自【我是一个应用】,签名用途是【登录】,请问是否继续?【是】/【否】”

    5.3(可选步骤)b验证签名用途是否符合本次签名的目的,如果符合,则确认签名;

    6c有两种签名方式:

    6.1对整个签名数据块进行签名;

    6.2对至少包括hash purpose的数据进行签名。time,identity等可以作为可选项也加入到签名内容里面去;

    7b将签名后的结果提交给a;

    8(可选步骤)a验证b的签名。

    根据以上的步骤说明,可以看到:

    ●即使攻击者q成功替换hash,但是由于有purpose的存在,q只有两个选择:

    ■要么改变purpose:这会被b发现,明明是在做低风险的“登录”却被改成高风险的“签合同”;

    ■要么purpose不变:由于b的最终签名里面带有purpose信息,如果q把带“登录”信息的签名附在合同后面,将会被迅速发现,明显是一个被改变了用途的签名,不具备合法性;

    ●如果要避免同样用途的签名被钓鱼,例如本来要签x合同,结果被改成y合同的hash值,可以采用另一个专利技术《一种基于数据图像编码的跨设备跨应用的数字签名和验证方法zl201410132685.6》来实现;

    ·与《一种基于数据图像编码的跨设备跨应用的数字签名和验证方法zl201410132685.6》相比,本发明进行数字签名所需要的数据量(hash purpose)大大减少,尤其适用于以较高频率进行的数字签名活动中,例如登录。

    本发明通过在签名对象上附加“用途”标识,来防止被钓鱼。

    本发明通过"用途"可以实现所谓的“安全态势感知和展示”,例如对“登录”这种低风险操作,用户的签名界面可以显示绿色,表示这是低风险操作;对“签合同”这种高风险操作,用户的签名界面可以自动调整成红色,以此来提醒用户注意。在没有加入“用途”这个签名概念之前,这一点是很难做到的。

    以上所述,本发明的上述方案都只能认为是对本发明的说明而不能限制本发明,权利要求书指出了本发明的范围,而上述的说明并未指出本发明的范围,因此,在于本发明的权利要求书相当的含义和范围内的任何改变,都应认为是包括在权利要求书的范围内。


    技术特征:

    1.一种防止数字签名钓鱼攻击的方法,其特征在于:

    以hash purpose的方式组织待签名数据;

    在签名前,将purpose展现给签名者,让签名者确认本次签名的用途;

    对hash purpose进行签名,把签名和签名用途绑定,避免签名被用在其它用途。

    2.根据权利要求1所述的防止数字签名钓鱼攻击的方法,其特征在于,具体步骤为:

    ■a模块表示待签名数据的生成者;

    ■b表示签名者;

    ■c模块表示b持有的签名模块,签名模块是一段程序,完成实际的数字签名操作;

    ■q表示中间人或攻击者;

    步骤一、a模块根据待签名数据生成hash值h;

    步骤二、a模块以hash purpose的数据编码格式组织签名数据块;

    步骤三、c模块解析签名数据块后,获取hash,purpose,time,identity,signature等项,如果是无风险或者低风险purpose,c模块直接进入下一步骤;

    步骤四、c模块有两种签名方式:

    步骤4.1、对整个签名数据块进行签名;

    步骤4.2、对至少包括hash purpose的数据进行签名;

    步骤五、b将签名后的结果提交给a模块;

    步骤六、a模块验证b的签名。

    3.根据权利要求2所述的防止数字签名钓鱼攻击的方法,其特征在于:步骤4.2中time,identity作为可选项也加入到签名内容里面去。

    4.根据权利要求1所述的防止数字签名钓鱼攻击的方法,其特征在于:

    所述数据编码格式中还包括time、identity、signature;

    其中:

    所述hash:待签名数据的hash值(h),能够以任意编码格式组成,例如hexstring,base64编码等等;

    所述purpose:签名用途,由签名模块展示给b,用于给b验证签名用途;

    所述time:待签名数据生成的时间,用于给b做进一步验证签名用途;

    所述identity:待签名数据的生成者,用于给b做进一步验证签名用途;

    所述signature:a模块对以上所有或部分数据的数字签名,用于保证上述数据的完整可靠。

    5.根据权利要求2所述的防止数字签名钓鱼攻击的方法,其特征在于:

    在步骤二和步骤三之间,还包括转换步骤,即签名数据块能够转换为二维码图像编码,供手机等终端通过扫描方式获取。

    6.根据权利要求2所述的防止数字签名钓鱼攻击的方法,其特征在于:

    在步骤三中,如果不是无风险或者低风险purpose,c模块则执行以下步骤1和步骤2:

    步骤1、将purpose以文字或者图标的方式,直观地展现给b;

    步骤2、b验证签名用途是否符合本次签名的目的,如果符合,则确认签名。

    7.根据权利要求1至5之一所述的防止数字签名钓鱼攻击的方法,其特征在于:

    通过在签名对象上附加“用途”标识,通过“用途”实现安全态势感知和展示。

    技术总结
    本发明防止数字签名钓鱼攻击的方法,以hash purpose的方式组织待签名数据;在签名前,将purpose展现给签名者,让签名者确认本次签名的用途;对hash purpose进行签名,把签名和签名用途绑定,避免签名被用在其它用途。使用本发明的防止数字签名钓鱼攻击的方法,即使攻击者Q成功替换hash,但由于有purpose的存在,Q只有两个选择:要么改变purpose:这会被B发现,明明是做低风险登录却被改成高风险的行为;要么purpose不变:由于B的最终签名里面带有purpose信息,如果Q把带登录信息的签名附在合同后面,将会被迅速发现,明显是一个被改变了用途的签名,不具备合法性。

    技术研发人员:庄昱垚
    受保护的技术使用者:江苏先安科技有限公司
    技术研发日:2020.11.18
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8839.html

    最新回复(0)