变色龙哈希调研
1. 调研背景
1.1哈希函数定义
哈希函数是一类具备如下特征的函数:将任意长度输入的字串可转换成一个固定长度的字串,经过原始字串能够很容易地算出转换后的字串,经过转换后的字串很难还原出原始字串。算法
1.2哈希函数特征
- 抗弱碰撞性:对于消息x,找到y≠x且H(x)=H(y)的y在计算上是不可行的。
- 抗强碰撞性:找到任何知足H(x)=H(y)的偶对(x,y)在计算上是不可行的。
已知一个消息x,去找y使得二者的哈希相等要比随便找两个消息x,y使得两个的哈希相等要更难,可能性更“弱”,因此已知一个消息x,寻找消息y使得两个哈希值相等叫作“弱碰撞”,找到x,y使得两个哈希值相等叫作强碰撞安全
- 高灵敏度
- 不可逆
1.3哈希函数在区块链中的使用
区块链技术当中,使用了哈希函数来计算当前区块的父区块的区块头的哈希,并存放在当前区块中。以下图所示:函数
在上述区块链示意图中,使用的哈希函数是SHA256。若是咱们想要碰撞一个已经肯定了的区块,就要尝试2256中可能,这是不可行的。这也是区块链不可篡改的密码学基础。区块链
1.4存在的问题
若是使用普通的哈希哈希函数,对于基于区块链的版权保护系统而言,可能会有这样一种场景:原做者创做了数字做品以后,并无将本身的做用上链,而是以其余方式公布到了网上,Evil可能在网上或者其余地方看到这个做品,而后在未经做者的应允的状况下,将做品以本身的身份上链。若是上链成功,此后,当原做者要求改变区块链上该做品的版权的时候,因为区块链的不可篡改性,这时候就难以解决。spa
所以,咱们考虑引入变色龙哈希。设计
2. 变色龙哈希概述
2.1变色龙哈希(Chameleon Hash)的定义
一个变色龙哈希函数由四个部分组成:cham_hash=(Setup,KeyGen,Hash,Forge)blog
- Setup(λ ):输入安全性参数λ ,输出公共参数pp;
- KeyGen(pp):输入公共参数pp,输出公私钥对(HK,CK),HK为公钥,CK为私钥,又称门限;
- Hash(HK,m,r):输入公钥HK,消息m和随机数r,输出变色龙的哈希值CH;
- Forge(CK,m,r,m’):输入私钥CK,消息m,随机数r,消息m’,输出另外一个随机数r’,知足CH=Hash(HK,m,r)=Hash(HK, m’,r’)。
2.2变色龙哈希知足的安全性要求
- 抗碰撞:不存在一个有效算法在输入公钥HK,能够找到(m1,r1)和(m2,r2),其中m1≠m2 ,知足Hash(HK,m1,r1)= Hash(HK,m2,r2)。
- 陷门碰撞:存在有效算法,在输入门限CK后,对于任意的m1,r1,给定m2,能够计算出r2,知足Hash(HK,m1,r1)= Hash(HK,m2,r2)。
- 语义安全:对于任意消息m1 m2,Hash(HK,m1,r1)与 Hash(HK,m2,r2)的几率分布是不可区分的,特别的,当r为随机选择时,从Hash(HK,m,r)没法获得关于m的任何信息。
2.3变色龙哈希函数分析
相比于传统哈希函数的难以找到碰撞,变色龙哈希能够人为的设一个“弱点”或者“后门”:掌握了这个后门就能够轻松的找到哈希碰撞。数学
这种设计在必定程度上破坏了哈希函数的两个碰撞性的特色,同时,也破坏了基于哈希函数的区块链的不可篡改的特性,可是也扩大了区块链的应用场景,并且对于不知道门限的普通用户来讲,想要找到碰撞依然是不可行的,也就是说,变色龙哈希的安全性也是能够保障的,对于持有“后门”的管理人员,若是其随意篡改区块,也是能够经过验证两个区块的哈希是否相等来验证。hash
2.4变色龙哈希函数构造
同传统的密码学算法同样,变色龙哈希也都是基于数学难题的,好比:入门
2.4.1 基于因式分解的变色龙哈希函数的有效构造
2.4.2基于格的变色龙哈希函数的构造
2.4.3基于离散对数的变色龙哈希函数的构造
Hugo Krawczky 和 Tal Rabin 在2000年提出了变色龙哈希方案,具体方案描述以下:
- Setup(λ):输入安全性参数λ ,构造知足安全性参数λ 的大素数p,q,其中p,q知足p=kq+1,选取乘法循环群Z*P中阶为q的元素g,输出公共参数pp=(p,q,g);
- KeyGen(pp):输入公共参数pp,在乘法循环群Z*P中随机选择指数x,计算h=gx,最后获得私钥CK=x,公钥HK=h;
- Hash(HK,m,r):输入公钥HK,消息m,随机数r,其中m,r均为Z*P中元素,输出变色龙哈希值CH=gmhr mod p;
- Forge(CK,m,r,m’): 输入私钥,CH=x,消息m,随机数r,消息m’,其中m,r, m’,均为Z*P中的元素,根据CH= gmhr= gm’hr’mod p,可得 m+xr = m’+xr’mod q,继而可计算出r’=(m-m’+xr)x-1 mod p。
若是攻击者在不知道门限的状况下,想要进行碰撞,就必需要求解离散对数𝑙𝑜𝑔𝑔h,而这是不可行的。
对于其余的变色龙哈希函数,其难度也是基于必定的数学难题的,所以其安全性取决于其对应的数学难题的难易程度。