前言
签署电子合同方便快捷,大幅节省商务合作成本,但因其中涉及较多的技术原理,对法律专业人士和普通人都造成一些困惑。
对法律人士来说,在对簿公堂时,电子合同常会受到相对方的否认,拒绝承认合同的内容或签名,那应该如何举证证明电子合同的真实性和有效性?
对普通人来说,收到别人的电子凭证,如何确定真伪?和别人约定一个事项,通过网络远程签字,法律上能不能受到保护,对方会不会篡改和抵赖?
作为技术出身的的法律人士,我准备花点精力写个系列,用浅显易懂的语言,把电子合同的技术原理和相关法律问题彻底讲清楚。
信息安全
电子合同是信息安全技术的在近些年的一个应用,在理解电子合同之前,我们先了解一下信息安全领域的一些基本技术。
A向B发送信息m,为保证信息安全需要满足以下几个要求:
保密性:传递的信息不能被其他人读取,即使信息被截获也无法获得信息内容;
完整性:信息即使被截获也无法篡改,如被篡改能够被B识别;
真实性:B收到的信息,能确定是A发送的而不是由他人冒充A发送;
在早期的军事等领域的通信中,需要对发送的信息加密处理,过程是这样:
A和B约定一个加密算法和密钥key;
A用密钥key对信息m加密得到m',然后传输给B;
B接收到m'后用对应的解密算法和密钥key解密得到m。
这种加密叫对称加密,A需要把密钥key提前传递给B,A传递密钥和B保管密钥的过程均可能发生泄露,所以需要经常更换k,其通信方式无法适用于大规模用户的民用场景。
常用的对称加密算法有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法、SM4算法等,其中SM4算法全称为SM4分组密码算法,是国家密码管理局2012年3月发布的第23号公告中公布的密码行业标准。
非对称加密
进入上世纪70年代,人们提出并实现了一种非对称加密算法,该算法可生成一对密钥:私钥和公钥,用公钥加密的数据只能由对应的私钥解密,用私钥加密的数据只能由对应的公钥解密。
使用非对称加密,A向B发送信息m的过程是这样:
B用加密算法生成一对密钥:私钥key1和公钥key2;
B将公钥key2对外公开,任何人都可以获得,私钥则只有B自己知道;
A使用B已经公开的公钥key2对信息m加密得到信息m',然后传输给B;
B收到m'后,使用自己保存的私钥key1对m'解密,得到m。
非对称加密算法既满足了信息安全的要求,又解决了密钥传输和保管的问题,因其便利性的优点被广泛用于民用领域。
因为非对称加密算法对信息加密的过程非常耗时,在实际应用中,通常是用对称加密算法加密原文信息,非对称加密算法用来传递对称加密算法的密钥,过程如下:
A使用密钥key对原文信息进行对称加密得到m';
A再用B的公钥key2对key加密为key';
A把m'和key'发送给B;
B收到后,先用私钥key1解开key'得看key,再用key解开m'得到m。
常用的非对称加密算发有 RSA算法、Elgamal算法、ECC算法、SM2算法等,其中SM2算法全称为SM2椭圆曲线公钥密码算法,是国家密码管理局2010年12月发布的第21号公告中公布的密码行业标准。
数字签名
非对称加密除了用于安全通信之外,还有一个对称加密算法不具备的便利功能,就是身份确认。
传统上,我们通过在纸质文件上手写签名或按指纹来确认对文件内容的认可,对电子设备传输的信息,要确认是发送者本人的真实意思表示,需要满足以下两点:
接收到的信息没有受到篡改;
确实是信息拥有者发出来的;
满足这两个条件的技术叫数字签名。
数字签名除了使用非对称加密算法,还需要哈希函数,哈希函数可以把任意长度的原文变换成固定长度的哈希值,叫做消息摘要,也称数字摘要。这个过程是不可逆的,无法用摘要计算出原文;该过程也是一一对应的,即一个摘要只能由它的原文生成,原文做了任何改动都会导致摘要发生变化。
常用的哈希函数有 MD4、MD5、SM3等,其中SM3密码杂凑算法是国家密码管理局2010年公布的中国商用密码杂凑算法标准。
利用哈希函数,A向B发送信息m时,对发送的信息做数字签名的过程如下:
A对外发布公钥,并声明对应的私钥在自己手上;
A对信息m做哈希计算,得到摘要d;
A使用私钥key1对d进行加密得到签名s;
A将m和s发送给B。
B接到A的信息m后,需要验证A的签名,过程如下:
B使用A的公钥key2对签名s进行解密,得到d;
B对m做哈希计算,得到摘要d';
比较d和d’,如果相同,那么证明m确实是A发出的,并且没有被篡改过。
一般把用私钥加密的过程叫签名,用公钥解密的过程叫验签。我们看到,数字签名就像物理签名一样,附在信息原文的后面,能证明信息确实是拥有者发出来的,也能证明信息在传输过程中无人篡改。
中间人攻击
中间人攻击指的是在A、B通信双方的通道上,混入攻击者C,通信过程变为:
C对接收方B伪装成发送者A,对发送方A伪装成接收者B;
C监听到双方发送公钥时,偷偷将消息篡改,把自己的公钥发送给双方,同时自己保存双方的公钥;
AB双方加密使用的都是攻击者的公钥,攻击者C在拦截后进行解密,并且篡改信息内容再用接收方公钥加密后发送;
接收方得到的是篡改后的信息,即发送方和接收方都是在和中间人通信。
评论区