数据合规业务加密算法问题研究(上)| 天同网事
发布时间:2022.06.01 18:18 作者:邹晓晨 徐菲繁 来源:天同诉讼圈
动图

 

 

 

 

本文共计1,0414字,建议阅读时间18分钟

 

前言

 

数据合规业务正日益受到大家的关注。但与其他合规业务不同,数据合规与信息技术关系密切,在合规业务中会涉及到大量的技术概念。在这些技术概念中,最难理解的当数“加密算法”问题。诚然,加密算法不是新鲜事物,关于加密算法的原理和实现已经有相当多的文献予以涉及。但遗憾的是,这些文献的受众都不是法律人。更何况,即便对信息技术专业人员来说,全面理解加密算法亦非易事。因此,本文的目的,是让不具有技术背景的法律同行理解加密算法的基本概念和原理,并了解数据合规业务常见场景下的加密算法使用问题。

 

需要特别说明的是,加密算法的本质是典型的数学问题。但从数学公式理解算法并将其代入合规场景,需要漫长的学习过程和较高的学习成本。因此,本文将尽量避开数学公式,使用文字举例与可视化图表的形式解释算法问题,并对其中涉及的概念与术语附上权威英文解释,以便于读者在合规业务中使用。

 

一、加密算法的重要性 

在讨论加密算法的重要性之前,我们首先来回顾下信息安全三原则(CIA)的定义,信息安全三原则分别是:

 

1.机密性(Confidentiality),确保数据不会遭受未经授权的访问。

 

2.完整性(Integrity),确保数据不会遭受非授权的篡改或破坏。

 

3.可用性(Availability),确保数据可以被及时地、不间断地访问。

 

在以上信息安全三原则中,加密算法与数据机密性和数据完整性密切相关,并与数据可用性间接相关。简而言之,如果没有使用各类加密算法对数据进行加密、校验和验证,则数据的完整性和机密性就无从谈起;如果数据的完整性和机密性不存在,则数据的可用性就毫无意义。

 

基于以上原因,加密算法被使用在几乎所有需要信息保密和交易安全的场景中。在金融领域、个人消费领域、教育培训领域、医疗健康领域中,所有涉及数据传输、验证、存储、利用、销毁、身份认证、访问控制、行为审计的场合,均需要采取不同程度的加密措施。

 

因此,加密算法是数据合规业务中最为重要、最为核心的领域。

 

二、数据合规中必须了解的加密算法基本概念

 

在对加密算法基本概念进行介绍之前,我们首先要厘清一些与加密算法有关的基本术语的含义。这些术语极易混淆,在合规领域中一旦使用错误会造成不良后果。

 

1.密码(cryptology)

 

根据《中华人民共和国密码法》(以下简称《密码法》)第二条规定:“本法所称密码,是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务”。

 

从以上规定不难看出,《密码法》当中的“密码”,与我们日常所说的“密码”有着截然不同的含义。《密码法》当中的“密码”是个相当庞大的概念,其中包括了与加密、解密相关的所有技术、产品和服务等。

 

事实上,《密码法》中的密码,指的是“密码学”或“密码技术”。而我们日常所说的密码,一般指的是在登录计算机或各类网站时输入的字符串。因为大部分网站或APP出于安全考虑,均在登录界面将用户输入的口令以星号或其他方式替代。因此大家会错误地认为,输入的登录字符串就是“密码”,并进一步将“密码”这一概念与“密钥”、“密文”概念相混淆。这是合规业务中一定要避免的错误认识。事实上,我们在登录时输入的那串不可见的字符串,其标准术语应当是“口令”(Password)。

 

 

 

图1:登录网站时输入的口令

 

2.明文与密文

(ciphertext/plaintext)

 

明文就是看得懂的文字,密文就是看不懂的文字。明文通过加密转换成密文,密文通过解密转换成明文。法律人要注意,不要将“密文”与“密码”“密钥”等概念相混淆。

 

3.加密和解密

(encipherment/encryption)

 

保密,是人类与生俱来的需要。很多时候我们希望机密信息只有特定的对象可以看到,比如我们自己或朋友。所以人们会把日记锁在保险箱里。但是随着社会发展,信息流动不可避免。我们需要写信、打电话、发电子邮件。因此,需要有一种机制,可以让机密信息即便被他人看到,也不会暴露出真实的含义,这就产生了加密和解密的需求。

 

加密,就是把明文转换成密文。解密,就是把密文(看不懂的文字)转换成明文(看得懂的文字)。加密和解密是一对密不可分的概念,信息加密之后必须解密(信息到达真正的接受对象后,要转换成为能够看懂的内容),而解密之前必须先加密(在信息到达真正的接受对象前,将其转换成无法理解的状态)。

 

4.加密算法

(cryptographic algorithm)

 

加密算法,是规定如何进行加密和解密的数学方法。加密算法一般是公开的,会被深入地研究和广泛地使用,所以仅凭加密算法不足以对信息进行加密和解密,特定信息的加密和解密还需要密钥。

 

5.密钥(key)

 

密钥,就是使用特定算法将信息加密或解密的关键参数(字符串)信息。

 

6.密钥空间(key space) 

 

密钥空间,就是密钥的数值范围。在现代加密算法原理基本不变的情况下,其安全性主要由密钥长度和复杂度来决定。密钥空间越大,密钥长度和随机度就越大,加密的安全性就越高。

 

下面,我们将通过一个形象的例子来向大家解释加密、解密、算法与密钥的基本原理:

 

邹律师想和客户A见面,他把见面地点定在2020年5月3日下午四点半的肯德基,即“2020-0503-1630-KFC”。由于案情重大,客户A不希望被人知道他与律师见面,客户A也不相信各类通讯工具的安全。因此,邹律师需要想个办法把见面时间和地点隐藏起来,让客户A之外的人看不明白。

 

邹律师使用一种简单的算法对“2020-0503-1630-KFC”这串信息进行了加密。加密和解密分成以下三个步骤:

 

1.首先将明文中相邻两个字符的位置进行对调。对调之后“2020-0503-1630-KFC”变成了“0202-5030-6103-FKC”。

 

2.之后将第一步对调之后的字符串的首字符和末尾字符再次对调,对调之后“0202-5030-6103-FKC”变成了“C202-5030-6103-FK0”。

 

3.客户A在收到“C202-5030-6103-FK0”这串数字后开始着手解密,首先将头尾数字对调,对调之后得到“0202-5030-6103-FKC”,再将“0202-5030-6103-FKC”相邻的两个字符再次对调,最终得到“2020-0503-1630-KFC”,即真实的见面时间地点。

 

至此,邹律师通过一种简单的位移方法,将真实的时间地点“2020-0503-1630-KFC”转换为“C202-5030-6103-FK0”。这种方法极其简单却又非常有效。相信你看到“C202-5030-6103-FK0”这串数字的时候,肯定猜不出邹律师要在2020年5月3日下午四点半在肯德基跟客户见面。

 

 

 

表1:邹律师的加密过程与客户的解密步骤

 

看到这里,大家是不是认为邹律师的问题已经圆满解决了?答案是:不。以上算法虽然可以隐藏邹律师与客户见面的真实信息,但邹律师很快就发现这种算法存在两个问题:

 

1.密文的内容似乎容易被人猜出。例如,每次加密信息里的固定位置都会出现“C、K、F”“D、M、C”“S、T、B”之类的字符。别人看到的次数多了,难免会联想到肯德基、麦当劳、星巴克等地点。

 

2.邹律师的联系人有很多,除了客户A之外还有同事B、同学C等等。如果希望信息对每个联系人都能够保密,邹律师就必须给每个联系人都准备一套加密算法。这种情况下,算法的设计和管理压力太大。

 

经过一番思索,邹律师想出了一个办法完美解决上面的问题,这就是在加密算法中使用密钥!

 

如前所述,邹律师已经通过位移的方式,将真实的约会时间地点“2020-0503-1630-KFC”转换为“C202-5030-6103-FK0”。邹律师在这一基础上,使用密钥“213”对字符串“C202-5030-6103-FK0”中每个对应位置的字符再次进行加法运算。例如:

 

字符串“C202-5030-6103-FK0”的第一位字符是“C”,而密钥“213”的第一位是“2”,那么“C+2=E” (“C”在字母表中后移两位后变成“E”);

 

字符串“C202-5030-6103-FK0”第二位字符是“2”,而密钥“213”的第二位是“1”,那么“2+1=3”;

 

字符串“C202-5030-6103-FK0”第三位字符是“0”,而密钥“213”的第三位是“3”,那么“0+3=3”;

 

依次类推进行加密运算后,“C202-5030-6103-FK0”变成了“E334-6351-9316-HL3” 。

 

 

 

表2:使用密钥“213”进行加密

 

至此,一串非常容易理解的“2020-0503-1830-KFC”最终被加密成“E334-6351-9316-HL3”。看到这串字符,一定谁也猜不出邹律师是要去跟客户见面了,邹律师也丝毫不用担心联系人太多的问题。邹律师可以在加密算法不变的情况下,分配给各个对象不同的密钥。例如,客户A的密钥是“213”、同事B的密钥是“112”,同学C的密钥是“311”。即便是邹律师的联系人都清楚邹律师的加密算法,但由于每个人的密钥不同,仍然无法破解不属于自己的密文。

 

邹律师的故事讲完了,以上例子只是为了让大家更好地理解加密算法的基本原理,但真实世界的加密算法远比邹律师的故事复杂。根据《密码法》的规定,密码分为核心密码、普通密码和商用密码。核心密码、普通密码用于保护国家秘密信息,商用密码用于保护一般信息。但无论是核心密码、普通密码或商用密码,其原理基本相同,其区别主要体现在密钥的复杂度也就是密钥长度方面。其实,“邹律师的故事”已经基本符合“对称加密算法”的雏形。

 

为了便于大家理解以上加密原理,我们稍后会用Python实现以上加密算法,并将源代码在“天同电子证据实验室”微信小程序中向大家开源。此外,以上源代码并非只能用作举例,其亦有一定的实用性。生活中,我们很难记住每个网站和APP登录口令(密码),如果对每个网站和APP都使用相同的登录口令则又存在安全问题。大家可以用这段源代码加密各个网站的登录口令。只要保存好密钥,就再也不用担心口令的保密和遗忘问题。

 

 

 

图2:“天同电子证据实验室”微信小程序

 

三、数据合规业务中常见加密算法的基本类型

 

加密算法可以分为如下几个类型:对称加密算法、非对称加密算法、混合加密算法、消息摘要算法。

 

1.对称加密算法

(symmetric cryptographic algorithm)

 

就是使用同一个密钥既可以加密也可以解密的算法。前文当中邹律师用的加密算法,就是典型的对称加密算法。密钥“213”既可以被邹律师用来加密,也可以被客户A用来解密。 

 

 

 

图3:对称加密算法运算过程

 

常见的对称加密算法有以下几种:

 

(1)DES算法(Data Encryption Standard):

数据加密标准算法,该算法由美国政府在1977年公布,由于加密强度不足,目前已经被AES取代。

 

(2)3DES算法(Triple Data Encryption Algorithm):

三重数据加密标准算法,在维持DES算法不变的情况下,通过使用三个密钥来加强DES算法。

 

(3)AES算法(Advanced Encryption Standard):

高级加密标准算法,该算法由美国政府在2000年公布并用于替代安全性不足的DES算法。

 

(4)国密SM1算法:

由我国国家密码管理局公布的一种对称加密算法。该算法加密强度与AES相当,但算法集成在硬件当中不被公开。目前已经广泛使用于金融、交易、政府事务等多种场合。

 

2.非对称加密算法

(asymmetric cryptographic algorithm)

 

通俗地说就是,加密与解密所使用的不是同一个密钥的算法,即用A的密钥加密就要用A的另一个密钥解密,反之亦然。

 

因此,非对称加密算法的密钥有两个,分别为“公密钥”(publickey)和“私秘钥”(privatekey),用“公密钥”加密的数据,必须用“私秘钥”解密,而不能用“公密钥”解密。“公密钥”完全公开,可任意对外发布;而“私秘钥”完全保密,需个人严格保管。由于非对称加密算法在业务合规应用场景中涉及颇多且较难以理解,所以本文将做重点介绍。

 

 

 

图4:非对称加密算法过程

 

 

 

图5:非对称加密算法的公密钥、私秘钥

 

非对称加密算法的作用和意义在于:

 

(1)实现身份的不可否认性

 

举个例子:邹律师要请全所同事吃肯德基,他想要把下面这条消息发给全所同事:“2020-0503-1630-KFC”。那么,大家如何知道这条消息是邹律师发的,而不是王律师的恶作剧呢?

 

如果使用非对称加密算法,这个问题就很容易得到解决。邹律师使用自己私人保管并从未公开的“私秘钥”,对“2020-0503-1630-KFC”这条消息进行加密并发送给同事。由于被邹律师的“私秘钥”加密的消息只能用邹律师的“公密钥”来解密,而邹律师的“公密钥”在此之前已经在所内公开,全所同事都知道。所以,大家只需要用邹律师的“公密钥”对密文进行解密,如果解密成功,就能够确定这条消息来自邹律师。

 

(2)便于密钥分发

 

对称加密算法存在一个天然的BUG,就是密钥分发过程安全性无法保证。我们还以邹律师为例,邹律师必须首先告诉客户A双方的密钥为“213”才能开始加密通讯。但如果在告知密钥的过程中,密钥“213”本身发生了泄露,则保密也就无从谈起。

 

事实上,在非对称加密算法被发明之前,人们广泛使用对称加密算法。由于对称加密算法的双向特性,密钥必须被严格保密,甚至需要使用人肉方式送达,造成效率非常低下。

 

(3)便于密钥管理

 

让我们回到邹律师的故事。邹律师基于简单的对称加密算法,给每个联系人分配了一个密钥,如客户A的密钥是“213”、同事B的密钥是“112”与同学C的密钥是“311”。但我们设想一下,如果某一天客户A的案件结案了,密钥“213”还能分配给下一位客户使用吗?显然不能。如果邹律师频繁签约新客户,他就要维持一个庞大的密钥列表,以确保给每个人的密钥都是未使用过的,这就难免令邹律师伤神。

 

不只是邹律师有这方面的困扰,如果我们希望所有与外界通信中都能得到妥善的保密(谁不希望呢?),而我们使用的又是对称加密算法,则必须确保在每一个“点对点”之间通信中,密钥都是唯一的。例如,邹律师和客户A之间、邹律师和同事B之间、同事B和客户A之间,同事B和同学C之间、客户A和同学C之间的密钥都必须唯一。随着通信对象的增多,密钥数量会呈几何级增长。

 

 

 

表3:密钥数量与参与者数量的关系

 

但如果使用了非对称加密算法,则不存在上述问题。非对称加密算法的场景下,每个对象都只有一对密钥(公密钥和私秘钥),而这即可完成保密通信。

 

看到这里,大家可能会觉得非对称加密算法全是优点,似乎在有非对称加密算法的情况下,对称加密算法丝毫没有存在的必要。但实际情况则不然,虽然非对称加密算法有很多优点,但有一个致命缺陷是:非对称加密算法的加密和解密需要大量的数学运算,而这会极大影响系统的运行速率。非对称加密算法的运算所需时间大概是对称加密算法的1000倍到10000倍。因此,非对称加密算法只适合在有限的场合中使用,如涉及身份认证、会话密钥传递或“抗抵赖性”(身份或行为的不可否认性)等场合。

 

下表就对称加密算法与非对称加密算法的优劣进行了分析:

 

 

 

表4:对称与非对称加密算法之间的差异

 

非对称加密算法中最成功、最知名的算法产品当属大名鼎鼎的RSA。RSA是目前最主流的非对称加密算法。RSA算法由麻省理工学院的Ron Rivest、Adi Shamir和Leonard Adleman于1977年发明。RSA就是他们三人姓氏开头字母组成。到今天,几乎所有的互联网应用场景中都会涉及RSA加密算法。RSA在一定程度上改变了我们的生活方式,让我们向三位优秀的科学家致敬!

 

 

 

图6:发明RSA算法的三位科学家

 

RSA的数学原理是:将两个大质数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥。而两个大素数组合成私钥。公钥对外完全公开,而私钥则严格保密,由公钥加密的数据只能由私钥解密,反之亦然。

 

RSA加密算法在互联网应用中随处可见,我们APP中的数字证书就是用RSA算法生成。

 

 

 

图7:APP中的数字证书

 

我们在互联网上浏览网页时,确保加密通信所使用的HTTPS协议也基于RSA加密算法。

 

 

 

图8:HTTPS协议

 

除了RSA外,我们在合规应用场合中还可能会遇到椭圆曲线算法(Elliptic Curve Cryptography,简称ECC)、SM2(国密椭圆曲线算法)。由于RSA算法被发明的时间较早,因此这两种椭圆曲线算法的效率都要高于RSA(同样的密钥长度,密文更难以被破解),但RSA仍然是运用场景最多的非对称加密算法。

 

 

 

图9:与椭圆曲线算法相关的公告

 

需要特别说明的是,我们在后文中还会提到另一种ECC校验算法(Error Checking and Correction,即错误检查纠正算法)。这两种“ECC”的含义截然不同,ECC椭圆加密算法所针对的是数据的保密性、ECC校验算法针对的是数据的完整性,请法律人切勿混淆。

 

3.混合加密算法

(hybrid cipher algorithm)

 

如前所述,对称加密算法的优点是运算速度快。其缺点是无法验证发送方和接收方的身份,以及密钥的分发和管理存在困难。

 

而非对称加密算法的优点是可以验证发送方和接收方的身份,实现抗抵赖性。同时,密钥的分发和管理非常便利。其缺点是需要大量的数学计算,速度较慢。

 

由以上特点不难看出,对称加密算法和非对称加密算法各有所长,且一方的优点正是另一方的缺点,可形成优势互补。因此,人们尝试着将这两种算法同时在业务场景中使用,混合加密就应运而生。

 

混合加密的基本原理是:在加密数据的数据量较小但重要程度较高的场合,例如识别发送方和接收方的身份、传送“会话密钥”(关于会话密钥的问题我们将在后文中阐述)等场合,使用需要大量数学运算但效率较低的非对称加密算法;而在加密数据的数量较大,但重要程度较低的场合(法律人注意,这里的重要程度低并不等于不重要),使用不需要大量数学运算、效率较高的对称加密算法。

 

我们继续举例说明:

 

客户A是邹律师的外国客户。在一起技术秘密案件中,客户A打算从国外给邹律师发送一份长达100G的电子证据文件。证据涉及客户的核心机密,绝对不能被无关人员看到,因此需要将证据文件加密传输。邹律师在如何选择加密算法这个问题上遇到了困难。

 

如果用对称加密算法,邹律师就必须要在邮件或者聊天软件中将密钥告诉客户。但在这个过程中密钥就有可能泄露,而密钥一旦泄露,后果将不堪设想。

 

如果用非对称加密算法,由于邹律师和客户A彼此都知道对方的公密钥。因此,客户A可以先将电子证据用邹律师的公密钥来加密,邹律师在收到证据后用自己的私秘钥解密即可。但由于100G的数据量很大,用非对称加密算法传输,加密和解密都需要很长时间,从效率上并不可行。

 

于是,邹律师灵机一动,想出了将一个将对称加密算法与非对称加密算法混合使用的方案,以解决视频传输的安全性问题和运算效率问题。邹律师的混合加密算法大致分为如下几个步骤:

 

(1)邹律师和客户A各有一套公密钥和私秘钥,其中:

 

邹律师的公密钥为“555”,邹律师的私秘钥是“666”;

客户A的公密钥为“777”,客户A的私秘钥是“888”;

邹律师和客户A彼此都掌握对方的公秘钥,而不掌握对方的私秘钥。

 

(2)邹律师还是选择对称加密算法来加密证据文件,并用对称密钥“213”作为对100G证据文件加密与解密的密钥。

 

(3)邹律师向客户A传递对称密钥“213”之前,首先用客户A公密钥“777”对“213”进行加密,这样客户A就可以自己的私秘钥“888”解密,得到密钥“213”。

 

(4)为了确保客户A可以验证密钥的消息来自邹律师,邹律师把上一步用客户A公密钥对“213”进行加密的结果,用自己的私秘钥“666”再加密一次。这样客户A就可以用邹律师的公密钥“555”解密,确保传递对称密钥“213”的消息来自邹律师。

 

(5)客户A使用对称加密算法及对称密钥“213”,将100G的数据加密传输给邹律师,邹律师在收到加密数据后使用对称密钥“213”将加密数据解密,得到真实的证据文件。

 

 

 

图10:使用混合加密算法对证据与密钥进行加密、解密的步骤

 

请大家注意,以上示例当中的公密钥与私秘钥仅为说明原理。真实加密算法中的公密钥与私秘钥的长度要远远大于文中示例——通常至少在512位以上,而且全无规律可言。下图展示了使用RSA工具生成的一对真实的公密钥与私秘钥。

 

 

图11:真实的公密钥

 

 

图12:真实的私秘钥

 

关于非对称加密算法与混合加密算法的两大典型应用场景:PKI(PublicKey Infrastructure,公钥基础设施)和CA(CertificateAuthority,证书授权机构)。我们将在后文当中予以详细介绍。

 

4.消息摘要算法

(messagedigest algorithm)

 

严格意义来说,消息摘要算法并不是一个典型的“加密算法”,至少在其设计之初并不是为了加密。消息摘要算法又称哈希算法或散列算法。哈希(Hash)又称“散列”。英文原意是“混杂”“拼凑”“重新表述”的意思。因此,法律人在遇到“杂凑算法”“散列算法”“哈希算法”“消息摘要”算法时,要清楚这些概念都指代同一类算法。

 

通过消息摘要算法,可将一段较长的数据映射为较为短小的数据,这段小数据就是大数据的哈希值。哈希值类似于文件的“DNA”。它是唯一的,一旦数据发生了变化,哪怕是一个微小的变化,它的哈希值也会发生变化。例如在一本一百万字的小说文件中,只要其中一个逗号被修改,这个文件的哈希值也会发生显著变化。

 

消息摘要算法具有“不可逆”特性。由于消息摘要算法在运算的过程中会对目标文件做很多“丢弃”“位移”等复杂操作,这就导致不可能根据一段哈希值来推导出文件的原文。所以,任何人在仅仅拿到文件哈希值的情况下,也无法根据哈希值推导并获悉这个哈希值所对应的文件的内容。这就是为什么说,消息摘要算法不是一个专门用于加密的算法。因为加密算法必须可以解密。但消息摘要算法“不可逆”,无法从中推出明文。

 

 

 

图13:“不可逆”的消息摘要算法

 

虽然消息摘要算法不是一种专用的“加密算法”,但由于其“不可逆”的特性,该算法经常被用于“字段加密”与“文件签名”,或与其他加密手段配合,用来保护高度机密的数据。例如,网站和APP的登录口令严禁以明文形式保存在数据库中,必须要以消息摘要的形式予以保存。

 

关于“字段加密”这一应用场景。大家可以回想一下,我们经常会忘记在某某网站的登录口令,但是当我们尝试着找回口令密码时,网站一般会要求我们重置口令而不是直接告诉我们被遗忘的用户口令。这是因为,用户口令在网站中不以明文而以哈希值的形式保存,网站也并不知晓我们口令,因此只能将其重置。这样做的意义在于,一旦黑客攻击拿到目标网站的数据库,也无从知晓我们的用户口令。

 

但需要特别说明的是,在数据库关键字段加密的场景中,消息摘要算法并非绝对安全。虽然消息摘要算法“不可逆”,但是黑客在拿到一段特定的哈希值后,可以通过“彩虹表”反推出某个用户口令所对应的哈希值,而“加盐算法”可以很大程度上解决这个问题(关于彩虹表的原理,由于篇幅所限我们不做展开,关于加盐算法使用问题,我们将在后文中进行介绍)。

 

此外,哈希值在理论上有一定相同的碰撞机率(即,两个不一样的文件,却有一样的哈希值)。网上也有关于“山东大学王小云教授破解MD5和SHA1算法”的新闻。但这种“破解”指的并不是由一段哈希值逆向计算得出消息摘要的原文。这里的“破解”,指的是使用拥有强大算力的计算设备,通过特定的算法,构建出两个内容不同却拥有相同哈希值的文件。需要向大家说明的是,这里所说的“内容不同却拥有相同哈希值”的文件,一般来说,指的并不是我们通常所使用的PDF、WORD等文件。而我们在PDF、WORD等具有实际内容的文件签名领域,往往需要甄别的是两个基本相同的文件的局部篡改。例如,恶意修改合同中的金额部分,将一万元改成一百万元,然后让修改后的合同文件的哈希值与修改前相同。关于这一点,目前在技术上仍然无法做到“指哪打哪”式的随意修改。所以,我们可以认为哈希算法在PDF、WORD等文件的签名领域仍然足够安全。但在数字证书等签名领域要慎重使用SHA1算法。

 

目前,SHA1算法安全性不足已是行业共识,也有国外实验室构建出相同SHA1值的两个不同PDF文件,但这一技术的计算成本和实际效果仍需探讨。有关SHA1算法的安全性问题,由于本文篇幅所限不做展开,如果大家有兴趣,我们可以另行讨论。

 

因此,如果大家在业务场景中看到客户使用MD5或SHA1、SHA256等消息摘要算法,切不可由以上新闻直接得出相关算法已被破解并无法使用的结论(在数据合规场景中,这将主要涉及到对旧系统的改造问题)。MD5和SHA1算法的安全性问题需要结合具体场景来判断,不可一概而论。

 

数据合规场景中,常见的消息摘要算法有以下几种:

 

(1)MD系列哈希算法(MessageDigest)

 

MD是消息摘要的简称,MD系列算法包括MD1、MD2、MD3、MD4。当然,还有大名鼎鼎的MD5。

 

(2)SHA系列哈希算法(Secure HashAlgorithm)

 

SHA是安全散列算法的简称。SHA系列算法包括SHA-1、SHA-224、SHA-256、SHA-384、SHA-512。

 

(3)国密SM3算法

 

SM3是一种“国产”哈希算法,对任意长度的消息都会输出产生一个256位的消息摘要,其安全性及效率与SHA-256相当。

 

 

 

图14:与SM3算法相关的公告

 

哈希算法中的数字部分(如MD5、SHA256)往往代表这个算法中密钥空间的大小。密钥空间越大,安全性越高。所以,在合规场景中,尽量推荐客户优先使用SM3、MD5和SHA256、SHA-384、SHA-512算法。

 

写在后面

 

关于加密算法的基本概念,本文就介绍到这里。希望以上内容能够让大家充分理解加密算法的相关术语和原理。由于算法并不是一个简单的问题,且本文的受众是法律人。因此本文在阐述观点时,需要在数学公式和生活概念之间进行转换,相关论述难免存在疏漏之处,请大家海涵!如果大家对本篇内容有任何不清楚的地方或有任何建议,欢迎随时与作者联系探讨!

 

在下篇文章中,我们将对加密算法在合规场景中的具体运用问题进行详细介绍。谢谢大家!

 

 

免责声明

本文及其内容仅为交流目的,不代表天同律师事务所或其律师出具的法律意见、建议或决策依据。如您需要法律建议或其他专业分析,请与本文栏目主持人联系。本文任何文字、图片、音视频等内容,未经授权不得转载。如需转载或引用,请联系公众号后台取得授权,并于转载时明确注明来源、栏目及作者信息。

 

 

 

 

“天同网事”栏目由邹晓晨律师主笔/主持,本栏目深入研究互联网产业中竞争领域、知识产权领域、信息安全领域的相关技术问题与法律问题,并致力于将其打造成一门全新的“边缘学科”。我们希望借此栏目与法律同行和互联网产业同行一起分享资讯,碰撞观点,传播知识经验。如您有任何想法、意见、建议,欢迎点击文末留言。

 

 

 
动图

 

相关人员
  • 徐菲繁合伙人
    邮箱:xufeifan@tiantonglaw.com 地点:上海