加密数字货币的安全编码规则体系示例

qer1232024-02-23 16:13:22144

加密货币还必须具备适当的安全措施,以防止人们篡改系统状态,并避免向不同的人创建不一致的语句。 例如,如果爱丽丝说服鲍勃她给了他一种数字货币,她就不应该说服卡罗尔她向卡罗尔支付相同的数字货币。 与法定货币不同,加密货币的安全规则需要纯粹在技术上执行,而不是依赖于中央机构。

顾名思义,加密货币大量使用加密技术。 就加密数字货币系统本身的机制而言,密码学提供了安全的编码规则体系。 我们可以用它来防止篡改并避免模棱两可的陈述,以及使用数字协议来创建编码新货币单位的规​​则。 在我们正确理解加密货币之前,我们需要深入研究密码学所依赖的基础。

神秘动物学是一个深入的学术研究领域,它利用许多先进的数学技术以巧妙而微妙的方式进行理解。 幸运的是,比特币仅依赖于一些相对简单且众所周知的密码结构。 在本章中,我们将专门研究加密哈希和数字签名,这两个原语已被证明在构建加密货币时非常有用。 未来的章节将涵盖更复杂的加密方案,例如零知识证明、比特币扩展和修改的建议。

一旦我们学习了必要的加密原语,我们将讨论构建加密货币的一些方法。 我们将在本章中介绍一些简单的加密货币示例,以演示我们需要应对的一些设计挑战。

1.1 加密哈希函数

我们需要了解的第一个加密原语是加密哈希函数(Hash)。 加密哈希函数(Hash)具有以下三个属性:

· 它的输入可以是任意大小的字符串。

·它产生固定大小的输出。 为了使本章的讨论具体化,我们假设它是 256 位大小的输出。 然而,我们的讨论适用于任何输出大小,只要它足够大。

·这意味着对于给定的输入字符串,可以在合理的时间内计算出哈希函数的输出。 从技术上讲,计算 n 位字符串的哈希值的运行时间应该是 O(n)。

这些属性定义了通用哈希函数,该函数可用于构建哈希表等数据结构。 我们将重点关注加密哈希函数(Hash)。 对于密码安全的哈希函数,我们要求它具有以下三个附加属性:(1)抗碰撞性; (2)隐身性; (3) 易于解谜。

我们将更仔细地研究每个属性,以了解为什么函数的行为如此有用。 密码学的读者应该意识到,本书中对哈希函数的处理与标准密码学教科书有所不同。 特别是,拼图友好属性不是加密哈希函数的一般要求,而是对于特定加密货币的有用属性。

防冲突:如果不可能找到两个值 x 和 y 使得 x ≠ y 且 H(x) = H(y),则哈希函数 H 被认为是防冲突的。

属性一:防碰撞。 我们需要加密哈希函数的第一个属性是它的抗碰撞性。 当两个不同的输入产生相同的输出时,就会发生冲突。 如果没有人能够检测到冲突,则哈希函数 H(.) 是防冲突的。

图1.1 哈希冲突。 x和y是不同的值,但是当输入到哈希函数H时,它们产生相同的输出。

请注意,我们说没有人可以找到碰撞,但我们并没有说不存在碰撞。 事实上,我们确实知道碰撞存在这一事实,并且我们可以用简单的计数论证来证明这一点。 哈希函数的输入空间包含所有长度的所有字符串,但输出空间仅包含特定且固定长度的字符串。 因为输入空间大于输出空间(实际上输入空间是无限的,输出空间是有限的),所以一定有输入字符串映射到同一个输出字符串。 事实上,根据“鸽子原理”,映射到任何特定输出的可能输入必然非常大。

图1.2 由于输入的数量超过了输出的数量,我们保证至少有一个输出允许哈希函数映射到多个输入。

现在,更糟糕的是,假设不可能检测到碰撞。 然而,有一些方法可以保证发现冲突。 考虑以下简单方法来查找输出大小为 256 位的哈希函数的冲突:选择 2 的 256 次方加上 1 个不同的值,计算它们每个的哈希值,并检查是否有两个相同的输出。 由于我们选择的输入多于可能的输出,因此在应用哈希函数时,其中一些输入必须发生冲突。

上述方法保证能找到碰撞。 但是,如果我们选择随机输入并计算哈希值,那么在检查 2 的 256 次方加 1 输入之前,我们将很有可能发现冲突。 事实上,如果我们随机选择 2 的 130 次方加 1 个输入,则有 99.8% 的概率至少其中两个会发生碰撞。 事实上,我们可以通过粗略地检查可能输出数量的平方根来发现冲突,这种现象在概率术语中被称为第二天悖论。 我们将在本章末尾的作业问题中更详细地研究这一点。

这种冲突检测算法适用于每个哈希函数。 但问题是,这需要很长很长的时间。 对于具有 256 位输出的哈希函数,在最坏的情况下,您必须计算哈希函数 2 的 256 次方加 1 次,平均约为 2 的 128 次方。 这当然是一个天文数字——如果计算机每秒计算 10,000 个哈希值,那么计算 2 的 128 次方哈希值需要超过 1000 万(10 的 27 次方)年! 另一种思考方式是,如果人类建造的每一台计算机从宇宙诞生之初就开始计算okx,那么迄今为止发现冲突的可能性仍然很小。 如此之小,以至于比地球在接下来的两秒内被一颗巨大流星摧毁的可能性要小得多。

因此,我们看到了一种通用但不切实际的算法来查找任意哈希函数的冲突。 一个更难的问题是:我可以在特定的哈希函数上使用其他方法来查找冲突吗? 换句话说,虽然通用的冲突检测算法不可行,但仍然可能存在一些其他算法可以有效地发现特定哈希函数的冲突。

例如,考虑以下哈希函数:

该函数满足我们对哈希函数的要求,因为它接受任意长度的输入,返回固定大小的输出(256 位),并且可高效计算。 该函数还有一种有效的方法来查找冲突。 请注意,此函数仅返回输入的最后 256 位。 碰撞的价值将是 3 和 3 加 2 的 256 次方。 这个简单的例子表明,虽然我们的通用碰撞检测方法在实践中不可用,但至少有一些碰撞检测方法的哈希函数确实有效。

然而,对于其他哈希函数,我们不知道是否存在这样的方法。 我们怀疑它们具有抗碰撞能力。 然而,还没有哈希函数被证明是抗碰撞的。 我们在实践中依赖的加密哈希函数只是人们尝试的函数,发现碰撞很难做到,而且永远不会成功。 在某些情况下,例如旧的MD5哈希函数欧易交易所,在多年的工作中最终发现了冲突,导致该函数过时并逐渐被实际社区抛弃。 所以我们选择相信它们是抗碰撞的。

应用:消息摘要 既然我们知道了什么是防冲突,那么合乎逻辑的问题是:防冲突有什么用? 这是一个应用:如果我们知道抗碰撞哈希函数H的两个输入x和y不同,那么就可以安全地假设它们的哈希值H(x)和H(y)不同,如果有人知道 x 和 y 不同,但具有相同的哈希值,这将违反我们的假设,即这样的 H 是抗碰撞的。

这个参数允许我们使用哈希输出作为消息摘要。 考虑一个经过身份验证的在线文件存储系统,它允许用户上传文件并在下载文件时确保其完整性。 假设Alice上传的文件很大,她想稍后验证她下载的文件与她上传的文件是否相同。 一种方法是将整个大文件保存在本地并直接与下载的文件进行比较。 虽然这有效,但它在很大程度上违背了上传它的目的; 如果Alice需要访问文件的本地副本以确保其完整性,她可以直接使用本地副本。

无冲突哈希为这个问题提供了一个优雅且有效的解决方案。 Alice只需要记住原始文件的哈希值即可。 当她稍后从文件下载文件时,她计算下载文件的哈希值并将其与存储的文件进行比较。 如果哈希值相同,那么她可以断定该文件确实是她上传的,如果它们不同,那么Alice可以断定该文件已被篡改。 因此,记住哈希值可以让她检测到文件在传输过程中或在服务器上的意外损坏,而且还可以由服务器强制修改文件。 这是密码学如何为我们提供针对其他实体的潜在恶意行为的保证的核心。

哈希用作消息的固定长度摘要或明确摘要。 这为我们提供了一种非常有效的方式来记住我们以前见过的事物并再次识别它们。 虽然整个文件可能已经有 GB 长,但哈希值是固定长度,在我们的例子中,哈希函数有 256 字节。 这大大减少了我们的存储需求。 在本章后面和整本书中,我们将看到使用哈希作为消息摘要的有用应用。

属性 2:隐秘性 您希望哈希函数获得的第二个属性是隐秘性。 隐藏属性声明 如果我们给出散列函数 y = H(x) 的输出,则没有可行的方法来确定输入 x 是什么。 问题是,该属性不能以声明的形式存在。 考虑以下简单的例子:我们将进行一个抛硬币实验。 如果抛硬币的结果是正面,我们要声明该字符串的哈希值为“正面”。 如果结果是tail,那么我们声明该字符串的哈希值为“tail”。

然后,我们询问没有看到硬币翻转、只看到散列输出值的对手,以找出该字符串已散列(我们很快就会看到为什么我们可能想玩这样的游戏)。 作为响应,他们将简单地计算字符串“head”和字符串“tail”的哈希值,然后他们就可以看到给的是哪一个。 因此,只需几步之后,他们就可以弄清楚自己输入的内容。

对手能够猜测这个字符串是因为 x 只有两个可能的值,并且对手很容易尝试这两个值。 为了能够实现隐藏属性,重要的是要注意 x 没有特别可能的值,这意味着 x 在某种意义上必须从分散集中选择。 如果x是从这样的集合中选择的,那么尝试x的几个可能值是行不通的。

最大的问题是:当我们想要的值看起来不像我们的“头”和“尾”实验时,我们可以实现隐藏属性吗? 幸运的是,答案是肯定的! 因此,我们也许能够隐藏即使一个输入也无法通过将其连接到另一个关联输入来传播的事实。 现在,我们可以更精确地指定隐藏的含义(双竖线”表示连接)。

神秘散列函数 H 是神秘的,如果:秘密值 r 是从具有高最小熵的概率分布中选择的,使得在给定 H(r||x) 的情况下找到 x 是不可行的。

在信息论中,最小熵是结果可预测性的度量,高最小熵表示分布(即随机变量)非常分散

本文链接:http://www.chuangkn.com/?id=23

数字货币的

阅读更多

网友评论