1、密码技术为什么重要?
每一个技术的突破用了大量的基础数据的研究方法和工具,我们突破了以后,基本上行业遍地都用。计算机通信系统,互联网系统的主体系统的安全性都是用密码系统保证的,所以密码技术是通信系统和基础设施融合在一起的,是分不开的技术。
美国的微软和IBM在80年代初期,它的密码团队是非常杰出的融合发展模式,我们国家我非常高兴,今天我们也到了融合发展的阶段。
今天我们所有的网络,包含计算机、手机、卫星、物联网,特别是物联网,应该是一个国家能够发展好新一代信息技术非常重要的环节,也使密码技术提到更高的环节。另外还有大数据,云计算等,现在我们的数据都上云了,但安全是怎样的,我想大家都比较清楚。
密码技术为什么这么重要?就是因为整个互联网和各种网络,我们的信息从产生到处理到传输,需要四个安全属性:机密性,就是加密算法,这个很简单。
可认证性和不可抵赖性,这是数字签名算法;完整性,就是防数据篡改的Hash函数,Hash函数是区块链的起源性技术,也是密码学的基本工具。
为什么说是一个基本工具?我举个例子,我们的电子签名对一个数据库进行签名,花100个小时签名才结束,它一个是慢,100个小时,还不安全。大家就问:我们的数字签名有什么用呢?这么慢、又不安全,怎么办呢?Hash函数,Hash函数对一个文件提炼出指纹就行了,它就可以把一百个小时变成一个小时,大家知道一百倍的提速,并且还是安全的,这就是区块链技术,大家不要把区块链技术想象得非常神秘。
Hash函数的电子签名技术就是标准的区块链技术,它是高效而安全的。
2、密码学的两大发展方向
密码学的发展有两大方向:第一个方向就是ENIGMA。1932年是数学方法,1939年是破译机,破译机的出现导致二战西欧战场提前两到三年结束,1949年香农(Shannon)提出是数码学的图像。
一个密码系统把密钥破解了就完全破解了,求解密钥的难度,就是一个攻击者攻击这些明文密文,它没有任何的数学关系不要紧,对破解密钥没有任何影响。传统密码里面,如ENIGMA密码,算法公开了,就意味着这个算法破解了。最早的密码破解就是情报人员拿到了图纸。
到了1973年1976年,美国国家安全局形成了较为系统的对称密码理论体系,宣布算法公开。对称加密AES,DES算法涉及56次计算(即秘钥长度为56位,下同)。
比特币10分钟出一个块,奖励12.5个比特币,涉及270次计算,远比单次破解的难度难。
对数学发展的研究最终发展到了密码分析的自动化,再进一步就是人工智能的介入,所以这个领域,所有的密码分析都可以转化为商用密码的特征。
还有一个领域是公钥密码学的发展,我们的计算机网络是一到多的,互联网时代一天一万个人进行安全通信,密钥通信,全是情报人员分布密钥。现在要对一万个人进行安全通信,一万个人的密钥是要生成的,现在密码学一秒钟可以同时跟很多人建立安全频道,跟每个人都可以修出一个安全的密钥通道,攻击者可以加入安全通信,但它拿不到我们的密钥,我给对方可以生成共同的加密密钥,这就是一到多的安全通信。
网络安全通信涉及对数问题,计算速率,算法速率,代数几何,关系到到很多领域的数学难题。我们在分析算法安全性的时候,我们就要跟其它的数学领域结合,所以密码学是一个多学科交叉的领域,研究的一个是数学难题,尤其是交叉的是多个领域,不仅是在这个领域,在更多的领域。
SM3是我们国家的标准加密算法,也是RS的标准。密码算法设计了以后,保证每个算法是安全可以做到,但不可以用单一的算法保证一个系统——所有的计算机网络通信系统要涵盖多算法,要实现四大功能,大多数都有四个安全属性,也就是需要三种密码算法。
我们要建立一个传输层的安全通信协议,就是SSL、TLS协议,TLS是SSL的升级版,它是达到安全可控的。出现信息泄露事件,大家一定不要认为是SSL出问题了,这个协议是非常安全的,原因在于,在实现过程中出现了问题。算法安全、协议安全、实现安全是保证整个系统是安全运营的,“实现不安全”永远是会导致非常可怕的攻击。
整个密码领域,从算法的研究到协议的设计,到协议的运营是需要培养高水平的科技人才。网络层是保证路由器安全的IPsec协议,无线局域网是WEP协议,它是行业标准,不是密码学设计的,它出来以后很快被破解了,图灵奖获得者被破解了,现在的安全协议是安全的。手机通信是行业标准,是二级,不管是算法还是协议,很多漏洞,是各种攻击方法都出现了,用了相当于没用,看起来什么都有,但都是不安全的。所以说到了3GPP(3rd,Generation Partnership Project),就是支持3G、4G、5G安全通信,不管是3G、4G、5G,只有公开拿出来让大家研究的才是安全的,藏着的,到目前为止,事实证明没有一个是安全的。
所以大家一定要注意,如果你认为你的协议是安全的,你不妨拿出来让大家公开分析,有漏洞不要紧,因为现在密码设计的能力非常强,很短的时间就可以把漏洞补上,逐渐变成安全,所以怕的就是大家说安全,又不公开,那问题比较严重,如果内部的人知道,内部的人可以做一定的攻击。
在密码领域,算法协议设计出来以后,要兼顾软件实现和硬件实现。硬件实现就是芯片实现。做好抗攻击的芯片实现,这个领域说实话比较难。
为什么要抗特性的攻击?所有的密码算法和协议都基于数学难题,假定我们的软件实现有一个bug,数学难题是非常容易破解的数学问题,如果我们注入了一个错误,数学难题变成简单的数学问题,它需要抗特性的攻击密码芯片。十几年前我有一个观点,说有的密码芯片是最高级的,因为其它的芯片不需要研究抗特性攻击的能力,但是密码芯片不行,因为它就是要依靠各种各样的攻击,包含物理手段的攻击。
我再来说一下软件实现,软件实现就是白盒安全实现,现在一个领域发展起来了,它不可能做到理论安全,只能做到实践安全,比如别人研究的白盒实现三个月破了,我们做的五年破不了,五年以后升级就可以了,是这么一个概念,我们要达到实际安全。密码芯片一定要抗各种各样的攻击。
3、密码Hash函数是区块链的起源性技术
1953年,IBM的一次历史性讨论,对数据库的文件进行检索,每个文件带一个电子指纹,相当于人的指纹一样,搜索的时候搜索指纹就把文件搜索起来了,非常简单。
1981年,为避免电子签名标准RSA等存在的伪造攻击,由Davis和Price提出密码Hash函数的概念,就是防止数据篡改,你的数据被篡改了,你的电子指纹一定要发生变化,就发现被篡改了,保证电子签名是安全的。我们对于一份文件进行签名,需要对它的指纹进行签名就行了。我们的指纹是多长呢?128、160、192、256、384或512比特。这是非常高效的,采用这种方式,对一个数据库签名一百小时,现在一个小时就签完了,还安全,何乐而不为。如果我们这个技术放在交易后台的管理,这么高效安全的技术,何乐而不为呢,所以是值得推广的一个技术。
大家知道,区块链主要是实现防数据篡改的功能,目前防数据篡改只有两三种方法,没有任何其它的数据篡改的技术,只有三种技术:第一种技术就是攻击者同时得到一个合同,100万或2000万的合同电子指纹是一样的,它的签名一定是一样的。而100万和2000万哪个是真的哪个是假的,你不知道,我说的是这种攻击。256比特的电子指纹,全球计算资源上千万亿年不可能找到两个文件电子指纹是相同的,这个大家不要担心。
第二种攻击是比特币,大家一定要注意,你在学比特币,你看这张片子就行了,其它的都不要看,比特币就来了,只要会原像攻击就会比特币了。原像攻击是怎样的呢,给出一个电子指纹外,你找到一个原像M,M的电子指纹就是p、y,口令就行了,如果我的计算机存放的是Y,也就是动态的,我的电子指纹Y,口令猜出来的概率是多少呢?假如这个口令是256比特电子指纹,上千万年是不可能成功实施原像攻击的。但是这个y如果只规定70比特,对一个70比特的Y,我找一个M,只有r的70次计算,这是比特币,也就是说我找一个Y,对应着70个比特的0,或者1都无所谓,Y是70比特,y的70次计算,全球是十分钟就可以找到这个原像,我相信不可能所有人都在找比特币,只有少数的在找比特币,十分钟就可以找到这个M,这个M就是比特币,比特币就产生了。
第二原像攻击,攻击者找到假的消息M2替换合法消息M1,但是替换的前提条件不是电子指纹,因为现在都是数据库,在替换的情况下,必须要跟电子指纹相同才能合法应用,所以不是想替换就能替换,这时候也是破不了的。
Hash函数我跟大家说,我们的密码算法如何能够证明有数学难题,必须有可证明安全的技术,就是知识证明,我用知识证明证明这个密码算法是安全的,在证明的过程中完成了加密和签名功能,需要交互128次256次,按照今天的安全长度,最后大家都不干了,那怎么办,很不有效。用Hash函数,使用了Hash函数以后就比较好了,一次性就可以完成证明,所以这是Hash函数的概念,知识证明。
既然我们有高效的证明方法,有的密码系统都要按照可证明安全,必须是用Hash函数,所有的密码技术都是区块链技术,因为必须是交互一百多次才能共,使用了Hash函数一次两次三次四次五次,一般不超过五六次就完成了。所以我们所有的密码系统都是区块链技术,当时区块链放在哪里呢?是Hash函数的一个变量叫Blockchain,后来就是我们现在的Blockchain,最早是Hash函数迭代过程中的一个专业术语,它的从Hash函数提出来就有的概念,大家记住这是一个老概念。
现在我们好多密码都离不开Hash函数。这就是Hash函数,我在1995年到1996年开始做Hash函数,大家可以看出来,1995年之前主要的Hash函数算法除了160没有被破解以外,那五个都是我们首次给出碰撞攻击,破解以后,当时SHA是2005年提出来的,它是后补的,它只有60个比特的指纹,SHA补了265、384、512比特的指纹,SHA就是破解以后新设立的标准。
MD5破解以后,发生了一个事件,伪造了一个数字证书,通过了浏览器的认证,这是2009年十大黑客技术之一,攻击架构是我提出来的,毫无疑问,整个攻击架构是我提供的。2010年这个技术就到了一个火焰病毒,火焰病毒是目前为止认为最为复杂的一个网络病毒。
这是新一代的Hash函数ISO、IEC标准。美国设计的的SHA-2,SHA-3,我们国家的SM3,目前我们国家的区块链技术就是SM3了,国产化的区块链已经使用了SHA-3,因为这是唯一的标准,还没有其它的标准产生。
4、区块链的技术起源
大家知道,Hash函数是任意的长度压缩成一个定长,我们没有想要的数学函数满足要求,所以密码学家Ralph Merkle在博士论文中首次描述Merkle-Damgard结构,第一次压缩M1、M2,把所有的数据分块压缩,这是比特币的结构,也是区块链的早期数据结构。
中本聪提出的比特币,找一个原像就是比特币,很容易。这就是比特币的区块链结构,这就是区块链结构,横着的就是这两条,只是M的长度有所变化,因为压缩的过程是自由组合的,可长可短,M一定长,把好多M组合在一起,就是比较大的M,所以可以灵活搭配,横的就是那个链,这里面就是Hash函数的压缩过程,这里面就是真正的Hash函数,F就是MD5,正向的运算过程。这就是区块链的数据结构。
比特币的系统运行就是交易,交易结构是怎样的,挖出12.5个比特币就是一个交易,求出一个原像就是一个交易,我拿比特币买了一件衣服是一个交易,我拿比特币买了一些食品是一个交易,我有这个交易以后要全球广播,广播以后要在平台上广播,广播完了以后,大家同步把我的交易信息放在M里面。大家一定要注意,这是交易信息进行压缩,最后一步才是我搜的,M2一块搜,前面都是全球一定时间内的交易信息,把交易信息都放在这里面,有了交易新的再放进来,再搜出一个电子指纹,等于70个0,这等于新的比特币就产生了,所以方法非常简洁。最后验证,研发合法性以后再进行挖矿,基本上这个过程。这个“?”就是比特币。
分布式系统得到了很好的利用,我们要进行共识协议,所有的数据达成一致,使用分布式环境下用户的数据达成一致,上世纪80年代有一个拜占庭共识协议,是分布式计算研究领域的重要方向,为什么区块链能解决这个技术,所有的密码算法,只有Hash函数有三个属性,其它的算法属性很少,并且想来就来,想走就走,非常灵活,所以为什么去中心化,它没有密钥,但有了密钥就可以去中心化。
它的一致性即所有的记录是一样的,就是分布式系统,我们的区块链增长速度要稳定,大家知道一个链,一个币同时三个人挖出来和六个人挖出来谁是合法的呢?你挖完以后再挖第二个链第三个链,谁先挖到第六个链谁是合法的,所以必须是先挖六个链。
区块链要抵抗各种攻击,我们2018年有两篇区块链的论文,山东大学有一篇,就是在一个小时十分钟的延迟后,挖一个比特币的延迟是安全的,目前有三类区块链,一个是逆向的,正向的就是压缩的过程,一秒钟可以10G,谁的权重大,它就是建链的概率高。第二就是分布式系统的拜占廷协议,数字签名本身就是区块链技术。
目前我们国家有一个供应链金融,有一个供应商,有一个采购商,采购商要采购一批货物,要支付200万,但它没钱,从银行贷款,传统的就是银行要检测供应商的供应能力和信用能力,然后要检查采购方的支付能力,可能半年才能放贷。但是区块链链上一检查,大家知道,我们任何一个信息上千万年以上才能篡改,篡改不了。所以在链上一检查就可以放贷了,非常高效。
这是疫苗,打了疫苗以后出问题,你可以看零售商、中间商、原材料商、生产商,每个环节都很清楚,非常便捷。