随着区块链技术越来越受到关注,区块链在安全方面也面临更大的挑战,因此需要从技术体制上保证链上数据和链上交易的安全。本文将简要介绍加密通信、数字签名以及匿名通信等几个与区块链紧密相关的安全技术。
1.加密通信
信息安全问题是网络安全通信中的关键问题,信息安全所要求的保密性、完整性、可用性和可控性等都可以利用密码技术得到解决。密码技术是以研究信息的保密通信为目的,研究对存储或传输信息进行何种秘密的变换以防止未经授权的非法用户对信息的窃取的技术。其包括密码算法设计、密码分析、安全分析、身份认证、消息确认、数字签名、密钥管理和密钥托管等。
密码通信系统的基本模型如图2-13所示。在信息发送者A,由信源产生明文P,然后利用加密算法对明文P进行加密变换EK,从而获得密文Q,Q=EK(P)。从此可以看出,加密就是一种变换,将明文P从明文信息空间变换到密文信息空间,EK就是实现这种变换的带有参数K的加密变换函数,参数K就是加密的密钥。密文Q经过一条可能受到信息窃取、攻击的、含有噪声的信道传送到接收者B。作为合法接收者B掌握密钥K,利用密钥K的解密变换DK对密文进行变换,从而恢复出明文P,P=DK(Q)=DK(EK(P))。解密变换是将密文Q从密文信息空间到明文信息空间的逆变换,DK是解密变换函数。
信息的加密方法有许多种,具体的加密算法各种各样。按照密钥的使用和分配方法不同,可以分为传统的对称密钥体制和公开密钥体制两类。传统的对称密钥体制的加密方法的特点是,无论是加密还是解密,均采用相同的密钥,或者密钥不相同但利用其中一个密钥可以推算出另一个密钥。因此这类加密方法的安全性就依赖于密钥的安全性,一旦密钥泄露,则整个加密系统的安全性就不能保证。这类加密方法的算法一般是可逆的,加密、解密速度较快,安全强度高,使用方便。但是在网络通信的环境下,其缺点更加明显,主要表现如下。
(1)随着网络规模的扩大,密钥管理、分配成为难题,因为密钥不能通过网络传输分发,所以在网络环境下,不适合单独使用。
(2)无法解决报文鉴别、确认的问题。
(3)缺乏自动检测密钥泄露的能力。
传统的对称密钥体制和公开密钥体制的加密方法各有优缺点,网络通信中普遍采用将二者结合起来的混合加密体制,即加密、解密采用传统的对称加密算法,发挥其速度快、安全强度高的优点;密钥采用公开密钥的方法加密后再分发传送,发挥公开密钥方法适合于网络环境加密、便于对少量数据加密的优势。这样,既解决了密钥管理的困难,又解决了加密、解密速度的问题,成为目前保证网络信息传输安全的一种有效方法。加密算法将在后续章节中进行专门介绍。
2.数字签名
信息的真实性可以通过数字签名技术来实现。日常生活中,人们常常在文件、书信和票据上签名来表明其内容的真实性,但是在计算机网络中传输的信息能否利用签名的方法来表明信息的真实性呢?因此出现了数字签名(DigitalSignatures)的概念。像生活中的签名一样,数字签名必须具备以下3个特性。
(1)接收者能够识别、验证发送者对报文的签名;
(2)发送者签名后否认签名的报文;
(3)接收者或第三方不能伪造发送者对报文的签名。
数字签名是通信双方在网络中交换信息时,利用公钥密码加密、防止伪造和欺骗的一种身份验证方法。在传统密码中,通信双方使用的密钥相同,接收方可以在数字签名中伪造、修改密文,发送方也可以否认其发过的密文,如果产生纠纷,无法裁决。所以数字签名一般采用公钥加解密算法。数字签名的过程是,发送方A用私钥SKA对报文M进行签名得到结果D(M),将其传给接收者B,B用已知的A的公钥解密即可得到报文M。由于只有A具A的私钥,别人不可能有,所以B就可以相信报文M是A签名发送的。如果A要否认曾发送报文给B,B可将D(M)出示给第三者,第三者很容易用A的公钥证实A确实发送M给B。如果B将M伪造成M’,则B不能给第三者出示D(M’),说明B伪造了报文。由此可以看出,实现数字签名也实现了对报文来源的鉴别。但是这里有一个问题,由于A的公钥是公开的,A发送的内容可以被任何具有A公钥者接收,报文本身未保密。为此可以对A签名后的报文再加密,然后再传输,这样,加密和签名组合起来就更安全了。
数字签名的具体过程如图2-14所示。其中,Ksa:发送方A的私钥;Kgb:接收方B的公钥;Ksb:接收方B的私钥;Kgb:发送方A的公钥。发送方A对报文M签名得到N,即N=Ksa(M),接着用接收方B的公钥对N加密得到X,X=Kgb(N),接收方B收到X后,先用自己的私钥解密得到N,N=Ksb(X),然后用A的公钥处理得到还原的报文M,M=Kga(N)。当然这种签名过程仍存在缺陷:当B收到A发送的X,用自己的私钥解密后得到N,再用另外一方C的公钥加密发给C,C以为是A发给它的。这样B就冒充A向C发送报文。改进的方法是:发送方A先用B的公钥加密,再用自己的私钥签名,同样接收方B先用A的公钥还原签名报文,再用自己的私钥解密。如此,签名过程就更安全了。
3.匿名通信
网络中通信的实体可以分为发送者(sender)和接收者(receiver),通信的内容称为消息(message)。传统的网络安全更多地研究通信内容安全和保密问题,即消息的机密性、完整性、可用性、可控性和不可否认性。匿名问题考虑的是如何保护发送者和接收者的身份信息。一个匿名系统的攻击者(attacker)希望得到的是“谁和谁”在通信,甚至要控制或破坏通信过程。
匿名通信(anonymouscommunication)是指通过一定的方法将业务流中通信实体的网络地址、实体间的通信关系等隐私信息加以隐藏,使攻击者无从直接获知或推知。在发送者Alice与接收者Bob的通信中,如果Bob不知道Alice的身份,并且第三方观察者Eve不能把Alice和Bob关联起来,则称Alice匿名地与Bob通信。有时允许Bob知道Alice的身份,但Alice和Bob都会对Eve隐藏他们之间的通信。下面简要介绍几种典型的基本匿名通信模型。
(1)基于简单代理的匿名模型
基于简单代理的匿名模型的匿名性不强,但仍然可以抵抗一些通信流分析和攻击,并且此类模型具有简单、高效的优点。常见的基于简单代理的匿名模型有匿名器(Anonymizer)模型、朗讯个性化Web助手(LPWA)模型、商业化的Penet邮件转发器(anon.penet.fi)模型和密码朋克邮件转发器(Cypherpunk)模型等。
(2)基于mix的匿名模型
基于mix的匿名模型可以分为基于消息的匿名模型和基于连接的匿名模型两类。基于消息的匿名模型(message-based)主要用于异步信息传输。remailerM是第一个基于互联网的匿名模型,该模型使用一个应用代理,将应用代理的邮件地址替代用户的电子邮件地址,但是并没有提供应答功能,因此容易遭受很多攻击。因此Danezis等设计了第三代匿名邮件协议mixminiorr7,该协议在应用代理之间采用基于链路的加密技术,提供转发匿名,可以抵御已知的破坏匿名性能的攻击。基于连接的匿名模型(connection-based)主要用于低延时的双向通信,例如,SSH连接和web浏览。现有的基于连接的匿名通信系统主要有onion、routing、crowds和Tor等。
(3)基于叠加发送的匿名模型
基于叠加发送的匿名通信系统的典型代表是DC-Nets,它最初是由Chaum提出来的。它的主要思想是使用匿名广播技术来实现发送者匿名。整个发送过程将时间划分为时间片。称为轮。每轮只有一个参与者Pi(i=l,2…n,n为参与者的数目)发送有效信息,其他参与者发送噪声信息。
DC-Nets机制的提出起源于“用餐的密码学家”(diningcryptographer)问题。即使在计算能力无限的攻击者条件下,DC-Nets也可以取得发送者匿名和接收者匿名。然而,Chaum在DC-Nets协议安全性证明中的一个假设是可靠的广播,即每个诚实参与者所广播的消息都被其他参与者未经修改地接收。由于无条件的拜占庭协商(指在计算能力无限并且可以控制任意多个参与者的攻击者条件下的拜占庭协商)是不可能的,所以可靠的广播是一种不现实的假设,它不可能通过密码学的手段来获得。DC-Nets的核心思想是在每一次通信中都有很多的参与者。这样就可以把发送者和接收者隐藏在参与者集合中。
(4)基于广播和多播技术的匿名模型
广播与组播通信可完成主机间一对多的通信,基于广播/组播的匿名通信系统结构,发送者节点可以利用广播或组播技术将信息传送到包含接收者的一组节点中,从而达到隐藏接收者的目的。当发送者向广播组或组播组内成员发送数据时,组内其他成员发送垃圾数据,则外部攻击者并不能区分发送者,也能达到发送者匿名的目的。这种匿名通信系统中,广播组或组播组成员越多,攻击者能猜中发送者或接收者的概率就越小,匿名性就越好。
(5)基于P2P的匿名模型
P2P匿名通信系统的主要思想在于P2P网络系统中的每一个节点都可以作为一个mix节点,使得攻击者没有专门的攻击目标。对于P2P网络匿名通信系统,除非攻击者攻击了该系统中的所有节点,否则在第三方的眼里,每一个节点都是一样的,攻击者无从下手,从而破坏系统匿名性的难度很大。基于P2P的匿名通信系统主要采用重路由机制来实现匿名。
本文摘自:InterValue创始人兼CEO曹源博士携核心团队成员参与撰写的《DAG区块链技术原理与实践》一书。