【moda专栏】电子签章的相关技术介绍

作者/数位发展部资讯处 周智禾副处长

近期为因应资讯科技及数位经济的迅速发展,我国正如火如荼展开相关电子签章法修法作业。本篇将深入探讨其中的技术细节。

与《电子签章法》修法相关讨论,请参考这篇文章:电子签章法新制与产业新兴应用场景

什么是电子签章?

我们这里要探讨的是符合《电子签章法》所定义的电子签章(Electronic Signature):指的是依附在电子文件内并与文件相关连,用以辨识及确认电子文件签署人身分、资格及电子文件真伪的签章;一般电子签章常使用演算法与资通讯安全技术(相关技术详本部 111 年 12 月 2 日产经字第 1114000229 函释),以达成符合电子签章法的要件。

其他像是将一张手写签名的图片加到电子文件中,或是在电子文件上,使用手机、平板或手写板进行签名等,这些方式容易被人使用绘图工具进行复制或修改,而不易辨别其真伪,难以正确举证签署人的身分,并不是电子签章法中所说的电子签章,所具备的效力较低。

我们将使用电子签章的过程分为三阶段来看:

一、事前准备:

使用者选择线上签署平台,如中华电信快意签、凯钿行动科技点点签、蒙恬科技好好签、台湾网路认证的 TWES 电子签署等平台,先进行注册及上传待签署的电子文件,并指定签署人资讯、身分验证方式及待签章栏位等资讯,以「设定签章与电子文件的关连」;等设定完成后,签署平台会通知签署人登入平台上进行后续的文件签署。

二、事中签章:

当签署人要在文件上签章时,会需要通过指定的验证方式(像是帐号密码、SMS 简讯密码、一次性密码 OTP 等),来达成「辨识及确认签电子文件签署人身分、资格」的要件,然后执行签章动作,例如将自己签名的图片档摆放到文件中的签章栏位。

三、事后验证:

拿到经过电子签章的文件后,任何人都可以直觉判断这份文件是否具备合法的签章。

如果在前一步骤进行电子签章时,签署平台有搭配使用符合 PDF 软体,如 Adobe 所列的认可信任清单(Adobe Approved Trust List, AATL)的数位凭证(Digital Certificate)来针对电子文件或稽核轨迹资讯进行数位签章,那么使用 Adobe Acrobat 或 Acrobat Reader 软体开启已签署文件时,软体会协助确认文件是否曾被窜改、数位凭证资讯的有效性等,并在软体上显示,借此更好的达成电子签章法要件中「辨识及确认电子文件真伪」。

更具效力的数位签章

在这次电子签章法修法中,明定数位签章(Digital Signature)是电子签章的一种,并且符合以下条件:将电子文件以数学演算法或其他方式运算为一定长度之数位资料,以签署人之私密金钥对其加密,形成电子签章,得以公开金钥加以验证,并具凭证机构签发之凭证者。

从这个条件中我们可以看到几个重点,依先后顺序大概可分为 3 个部分:

我们将使用电子签章的过程分为三阶段来看:

一、我们通常会透过杂凑演算法将电子文件进行运算,然后得到一个固定长度的数位资料,除有效缩短资料长度外(一般我们可以把运算结果称为讯息摘要,就像是用指纹来代替某个真实的人),同时也可以用来加速后续进行数位签章的运算速度。

二、在进行数位签章时,以目前常见技术,我们通常使用非对称式加密系统,每个人会有 1 把公开金钥及 1 把私密金钥,要进行签章的人(称为签署人),会用他的私密金钥(就像是他的私人印章)对前面固定长度的数位资料进行加密运算(就像盖章的动作,在密码学中实际称为签章运算),其结果称为数位签章。

三、任何人拿到前面的数位签章,如果想要验证这个数位签章的正确性,可以拿签署人的公开金钥进行验证,为了知道这把公开金钥是不是真的是属于这个签署人的,我们会拿凭证(就像是印鉴证明)来证明它的真伪。

这虽然听起来很复杂,但对签署人来说其实完全可以对应到现实生活中经常使用的签名需求:假设我们要签署一份文件,只要使用自己的个人私章(私密金钥)进行盖章(签章),就可以得到这份盖章(签章)后的文件,若要确认盖章(签章)的真实性,只需要利用盖章人的印鉴证明(签章人的公开金钥)进行验证即可。

在真实世界中,我们可以透过申请得来的印鉴证明来确认印章的真实性及正确性,但在数位世界中,前面所提的数位签章过程有一个问题:如何得知拿到的公开金钥是正确的?毕竟它看起来只是一串很长的数字或是英数混合的字串。这时候就需要一份资料能够说明和证明这把公开金钥是谁的,这份资料就是所谓的「凭证(Certificate)」。凭证的内容包含序号、版本、公开金钥、用途(用来加解密或签章)、识别码、有效日期等资讯,但这些内容只能说明这张凭证是谁的,并不能保证凭证是真的,所以需要有一个公正第三方来为这张凭证进行背书,也就是凭证机构(Certificate Authority, CA)。

像是中华电信通用凭证管理中心(PublicCA)及台湾网路认证公司(TWCA)皆为凭证机构,而背书指的是「由凭证机构为这张凭证进行签章」,因此签章还包含签发者名称、签发者唯一识别码、签章演算法、CA 对这张凭证的签章等资讯,可以确保这张凭证的完整性及不可否认性。

总之,这次修法特别强调数位签章能「连结及识别签名人」、「侦测签名所依附文件之改变」,并且「具凭证机构签发之凭证,具一定程度的公信力」,因此「推定」为本人亲自签名或盖章的效力。

接下来我们将近一步解释数位签章的技术细节及相关的名词。

浅谈密码学

前文我们解释了数位签章需要以私密金钥进行数学的运算,但实际上怎么进行呢?这牵涉到一些密码学(Cryptography)的相关知识。让我们先有个简单的概念:加密前的讯息称为明文(Plaintext),而加密后的则称为密文(Ciphertext)。

对称式密码系统

早在上千年以前就出现著名的凯萨密码(Caesar Cipher),其原理是将明文的每个英文字母使用往后数的第三个字母来取代,例如把 A 用 D 取代、把 B 用 E 取代,以此类推,全部取代完后的讯息就是密文;之后也出现多个类似用这种取代(Substitution)技巧,而复杂度越来越高的密码系统。

另一类密码系统则是使用置换(Transposition)的技巧,主要是将明文的每个字母按一定的规则进行重新排列成为密文,例如明文为digitalaffairs,把它分成 2 行写,再按列的顺序读取成为密文,如表图 1 所示。

表图 1:使用置换技巧之加密方式(图片来源/数位部)

你会发现,前面所提到的取代或置换,只要你知道明文如何转换成密文的规则,你就可以很容易将密文再转回原本的明文,这个规则如同一把金钥(Key),只要反过来执行一次就行了。

这就是对称式密码系统(Symmetric Cryptosystem),加密及解密使用同一把金钥。随著时间的推移,密码系统透过更复杂的取代及置换,再搭配其他数学逻辑(如「互斥或」Exclusive or, XOR)或其他运算等,形成更加安全的对称式密码系统,简单的示意如图 2,如近代著名的资料加密标准(Data Encryption Standard, DES)、进阶加密标准(Advanced Encryption Standard, AES)等。

图 2:对称式密码系统加解密(图片来源/数位部)

对称式密码系统成功实现了我们对资料机密性的需求,它的优点包括,金钥较小:金钥长度如果是 128 位元,把它转成我们生活常见的十进位数字,长度大概是 38 位数,而适用于缺乏运算能力的环境;此外,对称式的加解密机制容易使用硬体来实作,执行速度相当快;最后,它还能有效抵抗这几年大家常讨论量子运算(Quantum Computing)所带来的破密威胁。

但因为它的机制是加密及解密使用同一把金钥,因此衍生出诸多问题,例如,通讯双方彼此不认识,如何产生或分享同一把金钥?此外,每个人都要与另一个人之间有一把独一无二的金钥,将会造成金钥数量庞大,例如有 1,000 个人,彼此之间都有加密解密的需求,那么任两人之间都要有一把金钥,透过排列组合运算,总共需要 C10002 把金钥,也就是 499,500 个;最后,因为通讯双方都有同一把金钥,我们无法得知是谁拿金钥对讯息进行加密,无法满足不可否认性(Non-Repudiation),也就是说,你无法确切知道是谁拿金钥对讯息进行加密运算,万一这把金钥不小心掉了,也无从知道是谁泄露了。

非对称式密码系统

因为对称式密码系统存在许多尚待克服的议题,因此后面发展出非对称式密码系统(Asymmetric Cryptosystem),如 RSA、椭圆曲线密码学(Elliptic Curve Cryptography, ECC),这也是目前数位签章主要的使用技术。

非对称式密码系统与对称式密码系统最大的不同点在于,每个人都会有 2 把金钥,分别为公开金钥(Public Key)及私密金钥(Private Key),使用者先选择一把私密金钥并收藏好,不让别人知道,之后就可以轻易地计算得到相对应独一无二的公开金钥。

公开金钥及私密金钥的用法有两种,第一种是所谓的加解密,假如 Alice 想要将讯息加密传给 Bob,那么 Alice 拿 Bob 的公开金钥对讯息进行加密运算得到密文,Bob 收到后拿自己的私密金钥进行解密运算得到明文;另外一种应用则是所谓的数位签章。在大部分的密码系统中,加密指的是拿对方的公开金钥来进行加密运算,而签章一样是执行加密运算,只不过改成拿自己的私密金钥。你会发现,前面所提到的取代或置换,只要你知道明文如何转换成密文的规则,你就可以很容易将密文再转回原本的明文,这个规则如同一把金钥(Key),只要反过来执行一次就行了。

举例来说,Alice 想要传递一份他看过且认可的讯息,如同现实生活中我们签署同意书或契约书一样,那么 Alice 可以拿自己的私密金钥对讯息进行签章运算,运算完的结果就是所谓的数位签章,任何人想验证这个数位签章的真实性,可以拿 Alice 的公开金钥来进行解签章运算,解完后的结果再与原始讯息比对是否一致。简单的示意如图 3。

附带一提,前面所谈的签章,一般实务上会先将讯息进行杂凑运算1得到杂凑值,之后再针对杂凑值进行签章运算,除了可缩小讯息的大小,也可以加快运算速度。

图 3:非对称式密码系统加解密及数位签章(图片来源/数位部)

非对称式密码系统似乎完美解决了对称式密码系统面对的金钥分配问题,也可透过签章达到不可否认性,因为签章需要拿自己的私密金钥,也只有签署人有这把私密金钥。不过,非对称式密码系统的公开金钥及私密金钥长度相对较长,以 RSA 1024 为例,把它转成我们生活常见的十进位数字,其长度大概是 308 位数,比起对称式密码系统金钥多出许多,再加上大部分非对称式密码系统设计原理是基于特定数学的困难度,计算过程相当复杂,所以它的加解密速度较慢,较难适用于缺乏运算资源的环境。

安全与强度

以下补充几个非对称式密码系统议题。首先是私密金钥很重要也很隐密,最方便的作法是将私密金钥储存成一个档案,并辅以用密码保护它,当要开启及使用私密金钥时,使用者需要输入正确的密码才能使用;另一种常见的作法系将私密金钥存放到硬体载具中,如自然人凭证,为确保其安全性,私密金钥不会被读取出来,所有使用私密金钥进行解密或签章时,是将密文资料送到自然人凭证中进行运算,再取得运算完的结果。

此外,非对称式密码系统让任何人都可以拿到别人的公开金钥,而公开金钥跟私密金钥之间存在一定的关系,由于这是基于数学困难度的演算法,并非不能被破解,关键在于时间及成本,最直觉的作法是暴力破解法,一个一个去猜密钥是什么,就像猜密码一样。

如果以电脑每秒可运算百万或千万次的速度去破解,可能需要数百年才能完成;但积体电路存在摩尔定律,也就是相同面积的晶圆下生产同样规格的 IC,随著制程技术的进步,每隔 18 个月,IC 产出量就可增加一倍。随著电脑速度越来越快,再加上各式超级电脑的诞生,破解非对称式密码系统的时间逐渐大幅降低,所以我们可以发现,这类非对称式密码系统所使用的金钥越来越长,如 RSA 从一开始的 512 位元变成 1024 位元,现在则是建议至少使用 2048 位元,这数字的确相当大,所以要暴力破解需要非常长的时间,甚至安全等级要求高一点的金钥会长达 4096 位元。

数位信封

对称式密码系统及非对称式密码系统各有优缺点,各取两种系统的长处所开发出来的「数位信封」是目前最新型态的做法:假设 Alice 及 Bob 都各自拥有非对称式密码系统的公开金钥及私密金钥, Alice 先产生一把对称式密码系统的金钥,再拿这把金钥对明文进行加密后得到密文,然后 Alice 再拿 Bob 的公开金钥对前面的金钥进行加密,形成数位信封(Digital Envelope);Alice 同时把密文及数位信封送给 Bob,Bob 用自己的私密金钥对数位信封进行解密以得到金钥,再用这把金钥对密文进行解密以得到明文,如图 4 所示。

图 4:数位信封(图片来源/数位部)

与时俱进的数位签章

随著数位签章的技术成熟,搭配本次修正电子签章法,确认使用经主管机关许可的凭证机构所签发的凭证,除强化数位签章的效力,并要求各行政机关须以法律明定排除电子签章法适用,数位签章将如同传统纸本时代的印鉴证明,可推定数位签章为本人亲签或盖章,在法律诉讼上具有更强的证据能力。未来,现行纸本模式的行政程序,基本都可以采线上方式。

随著数位签章的国际标准化及法律认可后,在安全条件相当,且符合国际互惠或技术对接合作原则下,数位签章可应用在更多国际互动,例如国与国之间签订合作备忘录(MOU),以后将有机会演进成直接进行线上(数位)签署。

前面提到常用的数位签章均是使用非对称式加解密演算法,是目前相对安全的方式,但这类的演算法多是基于数学计算难题(如分解质因数问题、离散对数问题等),未来,运算能力更强的量子电脑可以轻易的破解这些问题。虽然量子电脑目前尚未成熟,但近年来研究机构已开始未雨绸缪,著手研究「后量子密码学(PQC)」,利用现有的电脑环境,设计出无法被量子电脑有效解决的计算难题,以因应未来可能面临的威胁。

此外,面对生成式 AI 带来新的挑战与冲击,数位签章也可以用来验证资料是否为 AI 或是人类产生,未来数位签章会是数位世界里的重要基础建设,提供信任、验证与不可否认等机制,值得所有人一起努力,让数位世界更安全与便利。

(本文转载自moda blog)