当前位置:首页 > 其他 > 正文内容

密码学许诺原理与使用 - 概览

邻居的猫1个月前 (12-09)其他1713

前语

作者:@warm3snow https://github.com/warm3snow
微信大众号:暗码运用技能实战
博客园主页:https://www.cnblogs.com/informatics/

简介

许诺计划(Commitment Scheme)是一个重要的暗码学原语(cryptographic primitive), 许诺计划是一种加密协议,答应发送者许诺一个挑选的值(或声明),一起对接纳者坚持躲藏,而接纳者能够在稍后验证所许诺的值。许诺计划一般能够分为两个阶段。

  • 许诺阶段(Commitment Phase): 发送方发送一个许诺值给接纳方,这个值是发送方挑选的,接纳方无法知道这个值的内容。
  • 翻开阶段(Opening Phase): 发送方翻开这个许诺,接纳方能够验证这个值的内容。

暗码学许诺计划在多个范畴有广泛的运用,以下是一些首要的运用场景:

  • 电子投票:在电子投票体系中,许诺计划能够确保选民在投票时能够保密其挑选,一起在投票完毕后能够验证其投票的有效性。
  • 拍卖:在拍卖中,许诺计划能够让竞标者在拍卖开始时提交他们的出价,而不泄漏详细的出价金额。拍卖完毕时,一切出价能够被提醒并验证,以确保竞标者的出价是诚笃的。
  • 安全多方核算:在多方核算中,参与者能够运用许诺计划来许诺他们的输入,而不需求在核算过程中泄漏这些输入。这有助于维护参与者的隐私。
  • 数字签名:许诺计划能够用于构建数字签名计划,确保音讯的完整性和不可否认性。
  • 区块链和加密钱银:在区块链技能中,许诺计划能够用于确保买卖的隐私和安全性。例如,某些隐私币(如Zcash)运用许诺计划来躲藏买卖金额和发送者信息。
  • 身份验证:许诺计划能够用于身份验证协议中,答运用户在不泄漏其身份信息的情况下证明其身份。
  • 游戏理论:在博弈论中,许诺计划能够用于规划机制,使参与者能够在不泄漏其战略的情况下进行协作或竞赛。

许诺计划原理

符号界说

  • \(C\): 许诺值
  • \(m\): 明文
  • \(r\): 随机数,需求确保每次许诺的随机数不同
  • \(H\): 哈希函数
  • \(||\): 字符串衔接
  • \([m]\): 明文\(m\)的许诺值
  • \([m;r]\): 明文\(m\)和随机数\(r\)的许诺值
  • \(G_p\): 模素数\(p\)的阶为\(q\)的循环群
  • \(g\): \(G_p\)的生成元
  • \(h\): \(G_p\)的生成元, 与\(g\)为独立生成元,即g和h生成的子群彼此独立
  • \(G\): 椭圆曲线上的点,即\((G_x, G_y)\), 一般情况下\(G\)是椭圆曲线的生成元
  • \(H\): 椭圆曲线上的点,即\((H_x, H_y)\), 一般境况下\(H\)随机选取
  • 明文\(m\)的Pedersen许诺值:\([m;r] = g^m \cdot h^r\)

计划界说

许诺计划是一个三元组, 包括\((Commit, Open, Verify)\),其间:

  • \(Commit\):发送方的许诺算法,一般发送方挑选一个明文\(m\)和一个随机数\(r\),核算许诺值\(C\)
  • \(Open\):发送方的翻开算法, 一般发送方提醒明文\(m\)和随机数\(r\)
  • \(Verify\):接纳方的验证算法, 一般接纳方验证许诺的正确性。

许诺值有两个特点:

  • 躲藏性(Hiding):接纳方无法知道发送方的许诺值对应的明文。
  • 绑定性(Binding):发送方无法修正许诺值对应的明文。

注:以上两种描绘并不谨慎

许诺计划一般涉及到两方,发送方和接纳方。发送方挑选一个明文\(m\)和一个随机数\(r\),核算许诺值\(C\),并发送\(C\)给接纳方。在某个时间,发送方翻开许诺,提醒\(m\)\(r\)。接纳方运用\(C\)和提醒的\(m\)\(r\)验证许诺的正确性。

常见许诺计划和原理

常见的许诺计划有 哈希许诺ElGamal许诺Pedersen许诺Sigma许诺等。尽管许诺计划的完成方法不同,但其基本原理类似。

要害流程如下:

image

[01] 发送许诺:Sender选取随机数\(r\), 并核算\(m\)的许诺值\(C\),发送给Receiver。(这儿的随机数\(r\)是为了确保每次许诺的值不同)
[02] 翻开许诺:Sender翻开许诺,提醒\(m\)\(r\)
[03] 验证许诺:Receiver从头核算许诺值\(C^{'}\),并验证\(C^{'}\)\(C\)是否持平。持平则以为许诺验证经过,不然许诺验证失利。

哈希许诺

哈希许诺是一种简略的许诺计划,经过哈希函数来完成许诺。假定\(H\)是一个哈希函数,\(m\)是明文。

哈希许诺的结构如下:

  • 许诺阶段:发送方挑选一个明文\(m\),核算许诺值\(C = H(m)\),并发送\(C\)给接纳方。
  • 翻开阶段:发送方提醒明文\(m\)
  • 验证阶段:接纳方从头核算许诺值\(C^{'} = H(m)\),并验证\(C^{'}\)\(C\)是否持平。

哈希许诺的躲藏性和绑定性是根据哈希函数的性质,哈希函数是单向函数,接纳方无法从许诺值\(C\)推导出明文\(m\)。一起,哈希函数是抗磕碰的,发送方无法找到两个不同的\(m\),使得\(C = H(m)\)

哈希许诺躲藏性较差,在明文空间有限的情况下,可能会产生磕碰; 哈希许诺关于相同的明文\(m\),许诺值\(C\)是固定的,尽管引进随机数\(r\)能够处理这个问题,但会损坏绑定性,由于发送方能够在确保\(m||r\)不变的情况下,随意更改\(m\)\(r\)的值。

ElGamal许诺

ElGamal许诺是一种根据离散对数问题的困难性假定结构的许诺计划。假定\(G_p\)是阶为\(q\)的循环群,\(g, h\)是生成元, \(m\)是明文

ElGamal许诺的结构如下:

  • 许诺阶段:发送方挑选一个明文\(m\)和一个随机数\(r\),核算许诺值\(C = (g^r, m \cdot h^r)\),并发送\(C\)给接纳方。
  • 翻开阶段:发送方提醒明文\(m\)和随机数\(r\)
  • 验证阶段:接纳方从头核算许诺值\(C^{'} = (g^r, m \cdot h^r)\),并验证\(C^{'}\)\(C\)是否持平。

ElGamal许诺的躲藏性和绑定性是根据离散对数问题的困难性假定,接纳方无法从许诺值\(C\)推导出明文\(m\),发送方无法找到两个不同的\((r_1, m_1)\)\((r_2, m_2)\),使得\(C = (g^{r_1}, m_1 \cdot h^{r_1}) = (g^{r_2}, m_2 \cdot h^{r_2})\)

假定发送方找到两个不同的\((r_1, m_1)\)\((r_2, m_2)\),使得\(C = (g^{r_1}, m_1 \cdot h^{r_1}) = (g^{r_2}, m_2 \cdot h^{r_2})\),则有:

\[g^{r_1} = g^{r_2} \Rightarrow r_1 = r_2 \]

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=758

分享给朋友:

“密码学许诺原理与使用 - 概览” 的相关文章

Codeforces Round 992 (Div. 2) 解题陈述

Codeforces Round 992 (Div. 2) 解题陈述

竞赛地址: https://codeforces.com/contest/2040 A. Game of Division 标题 https://codeforces.com/contest/2040/problem/A 题意 给你一个长度为 \(n\) 的整数数组 \(a_1, a_2, \ld...

Unity ECS System在什么时候更新?怎么自定义这个更新的机遇?

Unity ECS System在什么时候更新?怎么自定义这个更新的机遇?

在什么时候更新? 在其他用户代码都履行完之后。 去Netcode的ClientServerBootstrap里能够找到CreateLocalWorld函数,里边有相似这样的代码: public static World CreateLocalWorld(string defaultWorldName...

Solidity:ERC721

Solidity:ERC721

ERC-721 是以太坊区块链上的一种智能合约规范,专门用于创立和办理不行代代替币(NFT)。这些代币与ERC-20代币不同,ERC-20代币是同质化代币,每个代币都是相同的,能够交换。而ERC-721代币则是绝无仅有的,每个代币都具有共同的特点和价值 1. 什么是ERC-721? ERC-721(...

区块链是什么时候出现的,区块链的起源与发展历程

区块链技术最早出现在2008年,由一位或多位化名为中本聪(Satoshi Nakamoto)的人或团队在发布的比特币白皮书中首次提出。2009年,比特币作为第一个基于区块链技术的应用正式上线运行。区块链是一种分布式数据库技术,它允许数字信息在多个节点之间安全地存储和共享,同时确保数据的一致性和不可篡...

充电桩区块链,区块链技术在充电桩领域的应用与展望

充电桩区块链,区块链技术在充电桩领域的应用与展望

区块链技术在充电桩领域的应用主要集中在以下几个方面:1. 提高充电桩使用效率: 分布式能源管理:区块链技术可以优化电能传输流程,实现分布式太阳能发电与充电桩电能输出的有效结合,提升充电桩的使用效率。 共享充电桩平台:通过区块链技术建立共享充电桩平台,解决充电桩数量不足和各充电桩运营商平台...

云计算分为,云计算概述

云计算分为,云计算概述

云计算可以分为以下几个主要类型:1. 基础设施即服务(IaaS): 提供虚拟化计算资源,如虚拟机、存储空间、网络和其他基础设施组件,允许用户按需购买和使用。2. 平台即服务(PaaS): 提供一个开发环境,包括操作系统、编程语言执行环境、数据库和Web服务器等,使开发者可以构建、测试和部...