比特币的基础是密码学基础——中山大学软件工程学院区块链第二节课

今天公布了两个bonus,好耶\(^o^)/~

1.课堂小测加分

2.回答问题加分

unbelievable!榜上有名了!

密码学简介

what is cryptography?

“密码学是研究如何在敌人存在的环境中通讯”

生活中的密码

六位的支付密码。

人脸识别:生物密码。

谍战剧中广泛使用:摩斯码。

密码学历史

古典密码学

        某个古文明~1976

现代密码学

        1976~今

对称加密和非对称加密

使用相同的密钥(比如摩斯码),进行加密和解密。针对大量数据WHY?因为简单-复杂度低!

        缺点

  1. 密钥管理问题:对称加密需要在加密和解密之间使用相同的密钥。这导致了密钥的分发和管理问题。安全地将密钥传输给受信任的接收方可能会面临风险,因为密钥泄露将导致数据容易被解密。

  2. 缺乏前向保密性:一旦密钥被泄露,攻击者可以轻松地解密以前和未来的加密数据。这就意味着对称加密无法提供前向保密性,即新数据的加密性不受已知密钥的泄露影响。

非对称加密,加密和解密的密钥不一样,针对少量数据WHY?因为复杂度高,计算成本高。

零知识证明

证明自己有某样物品,但是不能让这个物品公之于众。

        比如两个人都说自己知道一元三次的求根公式。

                我的想法:给一个方程,自己知道结果。对是否能匹配结果。就像要验证一个黑盒。

                老师的想法:互相出题,看谁做得对。

同态加密

想象你有一个密封的黑色盒子,里面放着一个数(如5)。你想在这个数上进行一些操作,比如加2,但你不想打开盒子。同态加密允许你在这个封闭的盒子上进行加法操作,并得到另一个密封的盒子,里面的数是7(5+2),而你完全不知道里面的具体数字是多少。

同态加密的核心价值在于:它允许我们对加密的数据进行计算,而无需首先解密它。这在很多领域都非常有用,尤其是在云计算中,用户可以将加密的数据发送到云服务器进行处理,而服务器在进行计算时无需解密数据,从而保护用户数据的隐私。

比特币使用的密码学

比特币只采用了哈希函数和数字签名。

  1. 哈希函数:

    • 交易ID:当创建一个比特币交易时,该交易会被哈希,生成一个唯一的交易ID。
    • 区块哈希:每个新的区块包含了前一个区块的哈希值,这确保了区块链的完整性和连续性。
    • 工作证明(Proof of Work):比特币的共识机制是基于工作证明的,要求矿工解决一个数学难题,这实际上是一个哈希难题。矿工需要找到一个值,使得该区块内容的哈希值满足特定条件。
    • Merkle树:交易在区块内部是以Merkle树的形式组织的,其根哈希存储在区块头中。这提供了一种高效验证单个交易是否包含在某个区块的方法。
  2. 数字签名:

    • 交易验证:当一个用户希望发送比特币给另一个用户时,他会创建一个交易并使用其私钥签名。这个数字签名可以用来证明交易是由实际的币拥有者发起的,而且在传输过程中没有被篡改。
    • 防止双重支付:数字签名确保了只有币的拥有者才能花费它,这帮助防止了双重支付和其他欺诈行为。

简单来说,哈希函数在比特币中主要用于确保数据的完整性和创建工作证明,而数字签名则用于验证比特币交易的合法性和完整性。

nonce值的用途

在比特币和许多其他区块链系统中,"nonce"(Number Only Used Once,只使用一次的数字)是一个至关重要的概念,特别是在工作证明(Proof of Work, PoW)的上下文中。nonce为矿工提供了一种机制来证明他们已经完成了大量的计算工作,并成功地创建了一个新的区块。

在比特币挖矿中,nonce的主要用途如下:

  1. 工作证明的组成部分:矿工的任务是找到一个特定的nonce值,使得当所有的区块数据(包括这个nonce值)被哈希时,结果哈希值满足某个条件,例如前几位为零。为了达到这个目标,矿工会反复更改nonce的值,并计算新的哈希值,直到找到一个满足条件的哈希值为止。

  2. 确保数据完整性nonce和其他区块数据共同确保了数据的完整性。由于哈希函数对输入非常敏感,稍微改变一个字符(包括nonce)都会导致完全不同的哈希输出。因此,通过调整nonce的值,矿工可以产生不同的哈希结果,直到找到一个满足目标条件的哈希值。

  3. 证明计算工作量:工作证明机制确保网络的安全性,它要求矿工完成大量的计算工作。nonce为矿工提供了一种方法来尝试不同的解决方案,并证明他们已经投入了大量的计算资源来找到一个有效的解决方案。

  4. 增加随机性:由于nonce的值会被反复更改,它为区块的哈希计算提供了随机性。这意味着矿工不能预测哪个nonce值会产生一个有效的哈希,因此他们必须尝试大量的可能的nonce值。

缺点:浪费资源,一般的电脑算不了,只能买专用的矿机。炒高了显卡的成本。鉴于此,以太坊中已经把POW换成POS了。

哈希函数

哈希函数给文档产生一个“数字指纹”。

算法特点

正向快速

        O(n)

输入敏感

        明文变一点密文变很大

逆向困难

        给定特定哈希值很难逆推出明文。挖矿就是给哈希值逆推,比如找到一个输入,前三十位都是0。

冲突避免(与碰撞阻力相同)

        很难找到两段内容不同的明文使得他们哈希值相同

密码学安全

碰撞阻力

        很难找到x!=y,但H(x)=H(y)。

        找不到碰撞!=碰撞不存在。为什么?

                我的想法:哈希函数的结果最多只有2^256(以SHA256为例),但是输入是无穷的。

                老师的想法:就是我的想法!(*^▽^*)。

                更透彻的鸽笼原理:10只鸽子放进9个鸽笼,必有一个鸽笼放两个鸽子。

隐秘性/不可逆性

        如果输入x选自一个符合高阶最小熵的概率分布,在给定H(x)时来确定x是不可行的。

        知道y也很难知道x。

        x来自的集合如果熵很低,暴力试一遍就能知道原文了。

谜题友好

        给定x时,就是只能在O(2^n)的复杂度找到y。

        知道x也很难知道y。与隐蔽性相辅相成。

        没有策略比暴力求解/随机求解好。

SHA256是安全的哈希函数,MD5已经是不安全的哈希函数了(因为已经不满足碰撞阻力了)。

比特币中没有账户,只有钱包

通过一对<pk,sk>非对称加密。

公钥和私钥的作用

        私钥(可以对应为密码)签名,公钥(可以对应为账户)验证。

        需要随机源产生公私钥。

        私钥一旦丢失,无法找回。

数字签名

三个算法

        生成公私钥(sk,pk):=generateKeys(keysize)

        签名:sig:=sign(sk,msg)

        验证:isVaild:=verify(pk,message,sig)

要求两个性质

        有效的签名可以通过验证

        签名不可伪造。

                私钥不能被“试”出来。

实践中

        要找到一个良好的随机源。

        由于大小有限,所以用哈希算法。

        比特币中公钥即身份。所以比特币中可以提供去中心化的管理。

        具有匿名性:随时定制新的随机身份。方便洗钱啊!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值