Ulord社区开展深度学习,由杨征博士对学员在学习《区块链中的密码学》一课的疑问进行解答,以下是问答记录整理,供大家学习参考。
问题1:请解释一下多人共同帐号的加密问题
回答1:多人共同帐号的加密问题又叫多重签名技术。就是多个用户同时对一个数字资产进行签名,可以简单地理解为一个账号有多个人拥有签名权和支付权。如果一个地址只有一个私钥签名和支付那么表现形式就是以1:1,而多重签名的表现形式是m:n。也就是说,一共有n个私钥可以给一个帐户签名,当有m个地址签名时就可以支付一笔交易。所以m一定是小于n的。举几个例子,比如说多层签名2:3,表示的是有三个人拥有签名权,而只要其中两个人签名就可以支付这个帐户里面的数字资产,比如说UT。另外一种情况,比如说多重签名1:2表示的是两个人可以签名,就是说两个人都拥有私钥,只要其中一个人签名做可以支配这笔资金。
问题2:公匙能否用来验证信息是否由私匙加密?如何验证?
回答2:首先要知道公钥和私钥分别是什么。公钥和私钥是通过一种算法得到的一个密钥对。公钥要是这个密钥对中公开的部分,私钥是非公开的部分。通常来说一般是用公钥加密,对应的私钥来解密。另外一方面是用私钥签名,用公钥验证。回到问题本身,公钥是否能用来验证信息是由私钥来加密的呢?是可以的。如果我用这个私钥加密一段数据,当然私钥只有我自己知道。用私钥加密这段数据以后,所有知道我公钥的人都可以用我的公钥来解密我加密的这段内容,那么这种加密有什么好处呢?举一个例子来说明,比如淘淘姐说有人冒充水哥给他发信息,那么怎么解决这个问题?可以让水哥每次给淘淘姐发信息的时候用他的私钥进行加密,加密以后再把这个信息发给淘淘姐,淘淘姐收到以后就可以用水哥的公钥来解密,如果能够解开就证实这个信息确实是水哥发的。为什么呢?因为只有水哥有他自己的私钥,别人都没办法掌握他的私钥,因此可以确认这个信息是水哥发给淘淘姐的。这就是用公钥来验证信息是否由私钥加密的验证过程。
问题3:Ulord采用密码学中的哪些加密机制来保护资料及隐私?
回答3:Ulord区块链从属于比特币系。它也是采用的这个UTXO模型。引入加密技术一个很大的作用就是实现这个UT在系统内的确权,也就是说谁拥有一个UT地址对应的私钥,谁就拥有地址上这个UT的所有权,而且在Ulord系统中是去中心化的,这个地址跟现实生活中具体个人的关系是一种弱关联,也就是说有很好的匿名性来保护用户的隐私。Ulord在密码学的应用,还有一方面就是通过哈希函数来计算区块的哈希值,也就是实现挖矿,就是区块的产生过程,确保了交易数据的不可篡改。
问题4:能具体说一下数字签名的应用场景吗?
回答4:先说说数字签名的作用。数字签名的作用就是使用数字证书的私钥,对数据的摘要进行加密,以保证数据的完整性、真实性和不可抵赖。应该说数字签名是目前保证数据的完整性、真实性和不可抵赖最可靠的和最关键的方法,什么地方需要就可以用在什么地方,比如说现在最典型的应用有网上银行、电子商务、电子政务、网络通信等。数字签名主要是用在需要验证签批文件的那些场景。比如说像电子合同,还有像政府机关文件的签发等。
问题5:“bloom filters”在Ulord公链实现方案中是如何具体应用的?
回答5:Ulord的轻钱包,没有存储完整的区块链数据,只存储了区块链头部的数据。如果这个轻钱包要验证某一笔交易的时候,需要去访问其他的节点,也就是全节点。监控网络的第三方,比如说一些黑客,可以跟踪某个轻钱包所请求的全部交易信息,并且利用这些交易信息,把比特币地址和钱包的用户关联起来,从而损害用户的隐私。为了防止这种隐私泄露的风险,就引入了bloom过滤器,让轻钱包节点既能验证某些特定的交易,同时也不至于泄露用户的隐私信息。简单的说,bloom过滤器是一个允许用户描述特定的关键词组合,而不必精确表达的基于概率的过滤方法。
问题6:Ulord首创的cryptohello,和其他Hash比,由什么优势?为什么说可以防止ASIC挖矿?
回到6:cryptohello算法实际上是通过区块的一系列信息求解区块哈希的过程,也就是挖矿的过程,在这个过程中会涉及到多种的哈希算法。各种哈希算法会组合成一个特定的组合来达到预期的目标,也就是抗ASIC挖矿。所谓的抗ASIC挖矿,就是想有效的防止挖矿的中心化,让更多非专业的人员能够参与到UT的挖矿中。cryptohello算法防止ASIC挖矿主要有以下几点。首先,工作存储器容量是选择面向CPU开启容量的优化,对于GPU或者ASIC则难以满足同时执行大量工作量证明算法的存储器容量需求,这是第一点。第二点,这个算法通过两种方式来限制并行的效率。第一种是使用十六种散列函数,也就是我们说的哈希函数。用这十六种散列函数构成一个散列函数族,并从中随机选择执行。第二种限制并行效率的方法是,在修改工作存储器阶段使用严格的串行的执行序列,而且以字节为单位来进行访问。最后一点,就是整个方案控制逻辑非常的复杂,所需要的存储容量特别大,内存访问地址也不规则,所以难以使用传统的堆叠大量加速部件模块的方式来实现ASIC挖矿。更加详细的信息,建议参看下面这个链接的内容。https://www.jinse.com/blockchain/198455.html
问题7:重点详细讲hash算法
回答7:哈希算法是指可以将任意长度的输入变为固定长度输出,且不可逆的一个单项密码的算法。这种算法,具有四个方面的特点,第一个是正向快速,指给定一个特定的明文和哈希算法,它可以在有限时间和有限资源内计算出相应的哈希值。第二个特点是逆向困难,指的是给定一个哈希值,在有限的时间内很难,基本不可能逆推出它的明文。第三个特点是输入敏感,也就是原始输入信息修改一点点,哪怕是一个字节一个位发生变化,产生的哈希值也是很大的不同。第四个特点是冲突避免,是很难找到两段内容不同的明文,使得它们的哈希值一致,如果出现了一致的话也就是发生了冲突。因为哈希算法具有以上四个特点,所以它也是在现代密码学里非常重要的一类加密算法。这里简要介绍一种典型的哈希算法,也就是SHA,又称作安全散列算法。它是一个密码散列函数家族,也是FIPS所认证的安全散列算法。它能够计算出一个数字消息所对应的长度固定的字符串。这个字符串我们通常称做是它的摘要,也就是消息摘要。通过这些特点我们可以知道,输入消息不同,它们对应的字符串不同的概率是非常高的。SHA家族目前有五个算法,分别是SHA1,SHA224,SHA256,SHA384和SHA512。SHA家族算法族,是由美国国家安全局所设计,并且由美国国家标准与技术研究院发布,是美国政府的一个标准。后面四个算法又并称为SHA2。现在目前用的比较多的SHA1在很多安全协定中都广为使用。但是也有很多专家对它的安全性开始质疑。虽然现在还没有出现对SHA2有效的攻击。但是它算法的整个架构跟SHA1基本上是相似的。因此,开始有人发展其他替代SHA2的散列算法。关于哈希算法更详细的内容,建议大家参考下面这个链接相关的内容。https://blog.csdn.net/s_lisheng/article/details/77937202?locationNum=7&fps=1
问题8:挖矿与哈希算法的关系?
回答8:实际上,挖矿就是打包交易到区块中,然后反复计算区块的哈希值,直到这个区块值满足特定目标值的过程。区块哈希值的计算一般用SHA256哈希算法,这个算法它的参数包括区块的版本号,前一个区块的哈希值,准备打包的交易事务的哈希数的根值,也就是梅克尔根,还有区块的时间戳以及当前难度,还有一个随机数等参数。在这些参数里,版本号是固定的,前一个区块的哈希值是固定的,当前难度也是固定的,因此,能变的参数只有梅克尔根,区块的时间戳和随机数。挖矿就是重复的计算区块头的哈希值这样一个过程,在计算过程中间要不断的修改参数去进行多次的尝试。这里面能够修改的参数,就是刚才讲的随机数,还有时间戳和梅克尔根,实际上,主要的能够修的就是随机数。最终,希望能够计算到一个与这个目标难度值匹配的目标值。用一句话总结,挖矿实际上就是一个反复执行哈希算法的过程。
问题9:公钥和私钥之间是什么关系?
回答9:说到公钥和私钥,就会说到叫做不对称加密或者叫做公钥密码体制。公钥与私钥,是通过一种算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥是非公开的部分。公钥通常用于加密会话,就是消息或者说信息,同时,也可以来用于验证用私钥签名的数字签名。私钥可以用来进行签名,用对应的公钥来进行验证。通过这种公开密钥体制得到的密钥对能够保证在全世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密数据,则必须用它对应的另一个密钥来进行解密。比如说用公钥加密的数据就必须用私钥才能解密。如果用私钥进行加密,就必须要对应的公钥才能解密,否则无法成功解密。还有,在比特币区块链,是通过私钥来计算出公钥,通过公钥来计算出地址,这个过程是不可逆的。
问题10:既然有加密算法 密码学,那数字货币频繁被盗,如何安全有效防范?
回答10:加密数字货币,用户要加强保密、安全意识,要做好自身防护。主要从以下五个方面来做好安全措施。第一点是非常重要的,千万不要暴露你的私钥。私钥要保管好,是加密数字货币资产最重要的凭证。第二点,建议采用双因子的身份验证,比如说Ulord所采用的多重签名的钱包。第三点,在使用加密货币交易平台的时候要保护好自己的电子邮箱的地址和电话号码等信息。第四点,不要因为虚荣心,在网上吹嘘自己加密货币的财产,让黑客盯上你。最后一点,就是计算机、电脑的漏洞要及时修复,经常杀毒,更新安防软件,不要随意下载一些没有经过认证的软件,这也是一般性的安全防护必须具备的。
问题11:对零知识证明做更详细的讲解?
回答11:,零知识证明是区块链里面非常重要的一种密码技术,指的是既能够充分证明自己是某种权利的合法拥有者,又不会把相关的信息泄露出去,这样一种技术。指这个证明者向验证者证明并使其相信自己知道或者拥有某一信息,但是证明过程中间不能向验证者泄露任何关于被证明信息的相关信息,也就是给外界的知识是零,所以称为零知识证明。举个例子,假设P表示掌握了某些信息,并希望证实这一事实的一个实体。假设V是证明这一事实的实体,假如有某个协议向V证明了P确实掌握了某些信息,但是V无法推断出这些信息是什么,那我们就称P实现了最小泄漏证明,也就是零知识证明。
问题12:Ulord在加密技术方面有什么创新?
回答12:Ulord团队在加密技术本身没有做更多的创新。这里也想提醒大家,加密技术没有经过大规模的实际验证使用的话,我们不要轻易的去自己创造一种加密技术出来。Ulord团队主要是基于加密技术的应用研究。比如说,之前讲到的cryptohello算法里面,涉及到多种哈希算法,也就是SHA256。用了十六种SHA256的组合,能够很好的防止ASIC化,提高Ulord记账参与的相对公平性。