本发明属于信息安全,特别是手写电子签名方法。
背景技术:
1、电子签名(electronicsignature)是一种用于等同、替代手写纸质签名的电子形式的签名,电子签名有很多种形式,各国在法律上、司法实践中对电子签名的有效形式、法律有效性有不同的定义、理解和界定,在此不作进一步叙述。
2、基于公钥数字证书的数字签名技术是目前比较安全、可靠的电子签名技术,但由于其比较复杂、用户使用不便等问题,目前仅在一些安全要求较高的场合应用。
3、目前在有些场合,允许将一个人的手写签名的图片放入到一个word文档、pdf文档,以此作为此人对文档内容的签名确认;还有,目前一些基于移动终端(如手机、平板电脑)的app,在需要用户确认、认可某项内容、某个结果时,显示一个空白板(电子空白板,空白板指未签名的背景板,空白板不一定是白色),让用户手写签名并提交。这种手写签名是电子签名的一种形式,这种电子手写签名方式有一个好处,这就是一个人的手写签名很难被模仿,通过手写签名可以确保这个签名确实是某人自己的签的,但这种方式是不安全的,放入到一个word文档、pdf文档中的手写签名的图片很容易被人复制、盗用,无法防止对手写签名所确认内容的篡改、伪造,通过app空白板书写、提交手写签名也是极其不安全的,因为用户通过空白板书写、提交的手写签名为一个没有任何安全保护措施的图片,这种手写签名的图片很容易被盗用,也无法防止对手写签名所确认内容的篡改、伪造,如果用户的手写签名被恶意app盗用,其后果是不堪设想的。
4、如何在利用手写签名的有益之处时,避免其存在的问题,确保用户手写签名的安全,确保用户手写签名不被盗用,以及确保手写签名所确认的内容不被篡改,是一个需要解决的问题。
技术实现思路
1、本发明的目的是针对目前电子手写签名存在的安全问题,提出一种解决方案。
2、针对本发明的目的,本发明提出的技术方案包括一种手写电子签名方法以及在此基础上衍生的两种手写电子签名方法。
3、在进行本发明的描述之前需要说明的是,电子签名这个术语可以指一种替代纸质手写签名的电子形式的手写签名的技术概念,也可以指电子形式的签名的操作处理过程(签名过程),也可以指这个电子形式的签名的操作处理过程所产生的结果即电子签名数据,因此电子签名这个术语具体指啥,需要根据上下文环境(这与数字签名类似),比如,发明主题名中的电子签名指电子形式的签名的操作处理过程(签名过程),而此过程产生的结果,标识签名的手写签名图片数据为电子签名数据。
4、本发明的手写电子签名方法具体如下。
6、电子签名程序通过人机界面显示手写签名空白板(blankpanel),所述手写签名空白板是一个尚未输入用户手写签名的人机界面(空白板不一定是白的,不一定完全空白无图形、无文字,只是指尚未手写签名而已);
7、用户在空白板上手写签名并提交;
8、电子签名程序生成包含有用户手写签名的图片即手写签名图片,所生成的手写签名图片中还允许包含其他特定用途或目的信息(其中包括以文字、图形、数字水印、条码形式携带的信息);
11、电子数据认证系统(使用私密数据,比如私钥)对待认证数据b进行认证,生成认证数据c,将认证数据c返回给电子签名程序(认证数据c不必包含待认证数据b);
13、所述认证数据c具有如下技术特性(可验证性及防伪防篡改性):
14、若一个数据w与待认证数据b相同且认证数据c未改变,则利用认证数据c对此数据w进行验证能通过,否则,验证不通过(哪怕待认证数据b和/或认证数据c的二进制数中只有一位改变也验证不通过);
15、电子数据认证系统在对手写签名进行认证前,对使用移动终端的用户进行身份鉴别。
16、为了限定手写签名图片只有经过认证后才有效,在手写签名图片中显示有此手写签名图片只有在经过电子认证后才有效之类的提示,或者手写签名图片中包含有此类信息,手写签名图片包含此类信息的方式包括数字水印、条码。
17、为了确保请求对手写签名进行认证的用户就是声称的用户,便于追踪到手写签名的真实签名者,电子数据认证系统绑定有(维护有)能唯一标识、确定电子签名程序用户身份的信息,比如身份证号、手机号。
18、应用程序将电子签名生成请求传递给用户移动终端中的电子签名程序的方式包括:
19、若应用程序与电子签名程序运行在不同计算装置中,则应用程序通过跨计算装置(crossdevice)信息和数据的传送方式将电子签名生成请求传递给电子签名程序;
20、若应用程序为与电子签名程序运行在同一个计算装置中的桌面应用程序和/或应用客户端程序,则应用程序通过同计算装置内信息和数据的传送方式将电子签名生成请求传递给电子签名程序。
22、若用户手写签名在应用程序的人机交互界面输入并由应用程序生成手写签名图片,则手写签名图片或者手写签名图片的获取信息随同电子签名生成请求一起传递给电子签名程序;若传递的是手写签名图片的获取信息(如图片获取url),则电子签名程序利用获取信息获得手写签名图片(这时手写签名图片通常是存放在网上,获取信息通常是url);
23、若有需要,电子签名程序在接收或获得的手写签名图片中加入额外信息(比如,应用标识即应用服务id、用户在应用系统的标识即应用用户id等)。
24、认证数据c为手写签名图片之外的电子签名构成数据(组成部分),或者将认证数据c添加(嵌入)到手写签名图片中;若在生成认证数据c后将其添加到到包含手写签名的图片中(比如,为了将电子签名的全部数据放到手写签名图片中),则包含手写签名的图片(数据)又包含两部分图片(数据),其中一部分为包含手写签名的图片部分即手写签名图片分块,包含手写签名的图片部分即手写签名图片分块为认证数据c所针对的手写签名图片部分,即生成待认证数据b时所使用的图片(数据),另一部分为用于额外数据携带的图片部分即额外数据携带图片分块,对额外数据携带图片部分即额外数据携带图片分块的图片数据的修改不会改变包含手写签名的图片部分即手写签名图片分块的图片数据(即包含手写签名的图片部分的像素数据不会改变);认证数据c被添加到额外数据携带图片分块;将认证数据c添加到额外数据携带图片分块的方式包括数字水印、条码、base64编码后的文字(手写签名图片分块和额外数据携带图片分块一起构成了一个完整的手写签名图片或为完整手写签名图片的组成部分)。
25、电子签名的各组成数据集中存放在一个数据结构中以单个数据的形式存放,或者不集中存放一个数据结构中而是作为多个数据分开存放。
26、当需要利用电子签名对一个手写签名所确认的内容进行验证,即验证待确认内容是否就是当初手写签名所确认的内容时,可采用如下方式进行验证:
27、若电子签名中不包含手写签名所确认的内容的散列值,则验证程序计算得到待验证确认的内容的散列值,利用从电子签名中获得的生成待认证数据b所需的数据,计算得到待验证确认的内容的散列值,按生成待认证数据b的方式生成数据b1,然后利用电子签名中包含的认证数据c1对待验证数据b1进行验证(通过或不通过);(名称为b1、c1是因为这些数据也许被改变了,或者是伪造的)
28、若电子签名中包含手写签名所确认的内容的散列值,则验证程序计算得到的待验证的手写签名所确认的内容的散列值,验证此计算得到散列值与电子签名中包含的手写签名所确认的内容的散列值是否相同,若不同,则验证不通过;若相同,则利用从电子签名中获得的生成待认证数据b所需的数据,按生成待认证数据b的方式生成数据b1,然后利用电子签名中包含的认证数据c1对待验证数据b1进行验证(通过或不通过);
29、若以上验证通过,则待验证确认的内容是当初手写签名所确认的内容。
30、以下为在以上所述电子签名方法基础上衍生的一种结合用户端数字签名的手写电子签名方法:
31、电子签名程序生成或获得包含用户手写签名的图片即手写签名图片,所生成的手写签名图片中还允许包含其他特定用途或目的信息(其中包括以文字、图形、数字水印、条码形式携带的信息);电子签名程序生成一个临时的用于数字签名的公开密钥对(任何有效的公钥签名算法的密钥对),其中公钥为kpub、私钥为kprv;
34、(注:此时数据a仍然可以包含手写签名所确认的内容的散列值h)
35、电子数据认证系统对待认证数据b进行认证,生成认证数据c,并将生成的认证数据c返回给电子签名程序;
36、在请求对手写签名进行认证之前或之后或同时,电子签名程序使用私钥kprv对包含手写签名所确认的内容的散列值h的待签名数据d进行数字签名,得到签名值s(数字签名s);数字签名完成后私钥kprv被丢弃;待签名数据d包含手写签名所确认的内容的散列值h的方式包括直接包含或间接包含;待签名数据d直接包含或间接包含数据的含义同数据a直接包含或间接包含数据的含义;
38、签名值s是手写签名图片之外的电子签名中的数据,或者被(电子签名程序)添加到手写签名图片中(比如,为了将电子签名的全部数据放到一个图片中);
39、若签名值s被(电子签名程序)添加到手写签名图片中,则:
40、签名值s被添加到被认证的手写签名图片中(先填加签名值,后认证签名图片),
41、或者,手写签名图片分为包含手写签名的图片部分即手写签名图片分块,以及额外数据携带图片部分即额外数据携带图片分块,手写签名图片分块为构成待认证数据b的图片,额外数据携带图片分块用于携带手写签名之外的信息或数据,签名值s被添加、嵌入到额外数据携带图片分块;签名值s被添加、嵌入到额外数据携带图片分块的方式包括数字水印、条码、base64编码后的文字;
42、若认证数据c被添加到手写签名图片中,则认证数据c被添加、嵌入到额外数据携带图片分块的方式包括数字水印、条码、base64编码后的文字;
43、若电子签名中不包含手写签名所确认的内容的散列值,则当需要利用电子签名对一个手写签名所确认的内容进行验证时,验证程序计算得到待验证确认的内容的散列值h1,验证程序利用从电子签名中获得的生成待认证数据b所需的数据,按生成待认证数据b同样的方式,生成待验证数据b1,然后利用电子签名中包含的认证数据c1对待验证数据b1进行验证;验证通过后,利用计算得的散列值h1,按生成待签名数据d同样的方式生成包含散列值h1的待签名验证数据d1,然后利用从电子签名中获得的公钥kpub验证电子签名中的签名值s1作为待签名验证数据d1的数字签名的有效性(通过或不通过);
44、若电子签名中包含手写签名所确认的内容的散列值,则当需要利用电子签名对一个手写签名所确认的内容进行验证时,验证程序计算得到待验证确认的内容的散列值h2,验证此计算得到散列值与电子签名中包含的手写签名所确认的内容的散列值h1是否相同,若不同,验证不通过;若相同,则利用从电子签名中获得的生成待认证数据b所需的数据,按生成待认证数据b同样的方式,生成待验证数据b1,然后利用电子签名中包含的认证数据c1对待验证数据b1进行验证;验证通过后,验证程序利用从电子签名中获得的手写签名所确认的内容的散列值h1,按生成待签名数据d同样的方式生成包含手写签名所确认的内容的散列值h1的待签名验证数据d1,然后利用从电子签名中获得的公钥kpub验证电子签名中的签名值s1作为待签名验证数据d1的数字签名的有效性(通过或不通过);
45、若以上验证通过,则待验证确认的内容是当初手写签名所确认的内容。
46、以下为在以上所述手写电子签名方法基础上衍生的一种结合用户端标识签名的手写电子签名方法:
49、(注:此时数据a仍然可以包含手写签名所确认的内容的散列值)
51、电子签名程序使用私钥kprv对包含手写签名所确认的内容的散列值h的待签名数据d进行数字签名,得到签名值s;数字签名完成后私钥kprv、kpub被丢弃(不包含在电子签名中);待签名数据d包含写签名所确认的内容的散列值h的方式包括直接包含或间接包含;待签名数据d直接包含或间接包含数据的含义同数据a直接包含或间接包含数据的含义;
53、签名值s是手写签名图片之外的电子签名中的数据,或者被(电子签名程序)添加到手写签名图片中(比如,为了将电子签名的全部数据放到一个图片中);
54、若签名值s被(电子签名程序)添加到手写签名图片中,则手写签名图片分为包含手写签名的图片部分即手写签名图片分块,以及额外数据携带图片部分即额外数据携带图片分块,手写签名图片分块为构成待认证数据b的图片,额外数据携带图片分块用于携带手写签名之外的信息或数据,签名值s被添加、嵌入到额外数据携带图片分块;签名值s被添加、嵌入到额外数据携带图片分块的方式包括数字水印、条码、base64编码后的文字;
55、若电子签名中不包含手写签名所确认的内容的散列值,则当需要利用电子签名对待验证确认的内容进行验证时,验证程序利用从电子签名中获得的生成待认证数据b所需的数据,按生成待认证数据b同样的方式,生成待验证数据b1,验证程序计算得到待验证确认的内容的散列值h1,按生成包含手写签名所确认的内容的散列值h的待签名数据d同样的方式,生成包含计算得到的待验证的手写签名所确认的内容的散列值h1的待签名验证数据d1,以待验证数据b1作为标识公钥kpub1,验证电子签名中的签名值s1作为待签名验证数据d1的数字签名的有效性(通过或不通过);
56、若电子签名中包含手写签名所确认的内容的散列值,则当需要利用电子签名对待验证确认的内容进行验证时,验证程序计算得到待验证确认的内容的散列值h2,验证此计算得到散列值与电子签名中包含的手写签名所确认的内容的散列值h1是否相同,若不同,验证不通过;若相同,则从电子签名中获得的生成待认证数据b所需的数据,按生成待认证数据b同样的方式,生成待验证数据b1,按生成包含手写签名所确认的内容的散列值的待签名数据d同样的方式,生成包含手写签名所确认的内容的散列值h1的待签名验证数据d1,以待验证数据b1作为标识公钥kpub1,验证电子签名中的签名值s1作为待签名验证数据d1的数字签名的有效性(通过或不通过);
57、若以上验证通过,则待验证确认的内容是当初手写签名所确认的内容。