论文笔记:Compact Multi-Party Confidential Transactions

https://link.springer.com/chapter/10.1007/978-3-030-65411-5_21

A compact, private, Multi-Party Confidential Transactions (MCT)

  • 紧凑型多方机密交易(Compact MCT):MCT的长度与常规的单一所有者交易一样短;换句话说,多方承诺、签名和范围证明与单方的承诺、签名和范围证明无法区分
  • 私密型多方机密交易(Private MCT)- 涉及多个方参与(以及他们的数量)的事实被隐藏起来。
  • 提出两种结构:一个更简单的N方一致转移和一个通用的T/N阈值转移

Intro

案例:

  • 正常情况:
    Alice发送预交易 ( C v , k 1 + k 2 , v , k 1 ) (C_{v,k_1+k_2}, v, k_1) (Cv,k1+k2,v,k1)给Bob、 ( C v , k 1 + k 2 , v , k 2 ) (C_{v,k_1+k_2}, v, k_2) (Cv,k1+k2,v,k2)给Charles,意图是需要两个共同所有者的同意才能花费这些硬币,因为他们都不知道 k 1 + k 2 k_1 + k_2 k1+k2。Bob和Charles随机生成各自的密钥 k 1 ′ k_1' k1 k 2 ′ k_2' k2,并共享部分承诺,如 C B o b = C v / 2 , k 1 C_{Bob} = C_{v/2,k_1} CBob=Cv/2,k1 C C h a r l e s = C v / 2 , k 2 C_{Charles} = C_{v/2,k_2} CCharles=Cv/2,k2,旨在创建一个新的硬币束 C ′ C' C
    在这里插入图片描述

  • 欺骗攻击:
    Bob等待Charles的部分交易承诺 C v / 2 , k 2 C_{v/2,k_2} Cv/2,k2,并与Charles共享一个欺骗性的部分承诺 C B o b = C v / 2 , k 1 ⋅ ( C v / 2 , k 2 ) − 1 C_{Bob} = C_{v/2,k_1} \cdot (C_{v/2,k_2})^{-1} CBob=Cv/2,k1(Cv/2,k2)1 C ′ C' C变成:
    在这里插入图片描述
    现在,硬币可以不经过Charles同意被花费。

  • 抵御恶意密钥攻击:Bob和Charles相互分享 P B o b = C 0 , k 1 ′ P_{Bob} = C_{0,k_1'} PBob=C0,k1 P C h a r l e s = C 0 , k 2 ′ P_{Charles} = C_{0,k_2'} PCharles=C0,k2。然后,他们各自计算:
    在这里插入图片描述
    (抗攻击的原理是哈希函数的单向性,计算 C B o b C_{Bob} CBob C C h a r l e s C_{Charles} CCharles时对应的P已经固定)

  • Bob仍然可以在交易上运行 C ′ ⋅ ( P C h a r l e s H ( P C h a r l e s , S ) ) − 1 C'·(P_{Charles}^{H(P_{Charles},S)})^{−1} C(PCharlesH(PCharles,S))1
    ( = C B o b ⋅ C v / 2 , 0 = C v , H ( P B o b , S ) k 1 ′ =C_{Bob}\cdot C_{v/2,0}=C_{v,H(P_{Bob},S)k_1'} =CBobCv/2,0=Cv,H(PBob,S)k1)
    解决:保密交易对 E = C ′ ⋅ C − 1 E = C'·C^{−1} E=CC1进行签名,而不是一个空消息,将 C ′ C' C提交承诺给交易。

Preliminaries

Compact Multi Signature Scheme

定义:(其他安全性质见原文)
在这里插入图片描述

Non-interactive Zero-Knowledge Compact Multi-party Range Proofs

在这里插入图片描述
定义以下范围证明的完整性、稳健性、零知识、不可延展性以及对诚实但好奇的组合者的安全性。
(安全性定义略,见原文)

Compact Multi-party Confidential Transactions

(构建块的定义交代清楚了,正式给出机密交易的协议)
两种MCT协议和安全模型。注意,与签署空消息的麦克斯韦CT不同,MCT协议签署了多余的值E

MCT所需的基本协议

在这里插入图片描述

Rogue Key Attack Resistant Commitment Generation.

在这里插入图片描述

通用多方资金转移

我们紧凑的私有MCT协议的工作原理如下。

  • 资产或币束的共同所有人自己计算密钥,但与其他共同所有人共享公共信息。
  • 最后,每个共同所有者生成部分交易,共同所有者(组合者)将部分交易组合起来生成最终交易。

( v , k , C ) (\boldsymbol{v, k, C}) (v,k,C)是输入的硬币束, ρ \boldsymbol ρ ρ是输出的硬币数量数组(每组都是共享账户,有多个接收者),应该发送到 ∣ m ∣ ( = ∣ ρ ∣ ) \boldsymbol{|m|(= |ρ|)} m(=ρ)组接收者,其中每组 i i i m i m_i mi个接收者组成。

资金发送功能MCT.Send

资金发送功能MCT.Send通过发送交易 t x tx tx来根据 ρ \boldsymbol ρ ρ隔离硬币,并将密钥分配 p t x \boldsymbol{ptx} ptx用于N-fund转账或 t p t x \boldsymbol{tptx} tptx用于T/N-fund转账,其中 m i m_i mi个接收方中的 t i t_i ti个必须同意花费硬币束 i i i。为了功能实现,我们一起输入盲密钥集 k \boldsymbol{k} k。但是, k j , i ′ \boldsymbol{k}_{j,i'} kj,i是属于第 i ′ i' i(输入币束)的第 j j j个共同所有者的部分秘密密钥,并且部分密钥不与任何人共享。

m \boldsymbol m m-接收方共享账户数组,每个 m i m_i mi代表一个接收者账户的共享所有者数量。
(交易的输出一般等于发送给接收方的若干账户+找零账户,所以 ∣ ρ ∣ = ∣ m ∣ = ∣ v ′ ∣ − 1 |\boldsymbol \rho|=|\boldsymbol m|=|\boldsymbol v'|-1 ρ=m=v1
v , v ′ \boldsymbol {v,v'} v,v-交易输入、输出金额数组, ∑ j = 1 n v = ∑ i = 1 ∣ ρ ∣ + 1 v ′ \sum_{j=1}^n \boldsymbol v=\sum_{i=1}^{|\boldsymbol \rho|+1} \boldsymbol v' j=1nv=i=1ρ+1v
ρ \boldsymbol \rho ρ-除找零外的交易输出

  • 首先是合法性验证和密钥生成,有n个co-owner,每个co-o j有一组主密钥 k j , P j \boldsymbol k_j,\boldsymbol P_j kj,Pj,面向每个账户各有一个分量,因为输入账户有 ∣ v ∣ |v| v个,所以每个主密钥都有对应的共 ∣ v ∣ |v| v个分量。
  • 输入小于输出,确保输入账户有足够的金额进行合法花费
  • 分享 P j \boldsymbol P_j Pj后,每个co-owner分别计算本次交易输出的交易密钥对
  • 当有余额时,将余额作为一个新的输出,为余额新初始化一组交易密钥。
    在这里插入图片描述
    每个co-owner,分别计算:
  • 把余额的交易密钥分量加入输出账户的主密钥集中
  • 生成自己的部分交易,并分享
  • 用收到的所有部分交易,计算总共的E
  • 验证E的合法性: ( ∏ i ′ = 1 ∣ v ′ ∣ g s k i ′ ⋅ h ∑ v ) ⋅ ∏ C − 1 (\prod_{i'=1}^{|\boldsymbol v'|} g^{\boldsymbol{sk}_{i'}}\cdot h^{\sum \boldsymbol v})\cdot\prod\boldsymbol C^{-1} (i=1vgskihv)C1,如果 ∑ v = ∑ v ′ \sum v=\sum v' v=v,E合法
  • 生成总签名和证明
  • 整合方将所有部分交易补全为总交易。

(这段是交易的发送方的操作,所有的co-owner拿出共同拥有的 ∣ v ∣ |v| v个输入账户, v ′ v' v个输出账户,需要的话,输出账户中包含一个新生成的找零账户,签名固定所有交易信息和交易密钥;交易合法性验证;输出账户的范围证明)

在这里插入图片描述
两种情况:

  • 门限为空,直接返回交易;(每个输出账户的使用都不设门限,所有co-owner同意才能交易)
  • 有输出账户的门限大于0,秘密共享SS生成交易。
    在这里插入图片描述

Threshold Key Sharing

我们使用Shamir秘密共享(SS)方案[23],其中有t个交易商,t为阈值。每个交易商分别选择一个秘密主密钥,最终密钥是所有t个主密钥的总和

在这里插入图片描述

资金接收方MCT.Receive

  • 共同接收方初始化接收账户的交易密钥,生成部分交易,并共享
  • 用接收到的所有部分交易整合成总体的E值
  • 验证E值
  • 共同所有者生成的总体签名和范围证明,整合
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270122.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据架构(3)】Lambda vs. Kappa Architecture-选择你需要的架构

文章目录 一. Data Processing Architectures1. Lambda Architecture1.1. 架构说明a. Data Ingestion Layerb. Batch Layer (Batch processing)c. Speed Layer (Real-Time Data Processing)d. Serving Layer 1.2. Lambda Architecture的优缺点1.3. 使用案例 2. Kappa Architect…

MongoDB Helloworld For Window

1. 下载MongoDB Download MongoDB Community Server | MongoDB 2. 安装MongoDB 3. 创建DB. 4. 用java code 连接mongo. 做增删改查操作。 pom.xml <dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId>&…

docker 基础(二)

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档&#xff1a;https://docs.docker.com/ 数据卷 命令说明文档地址docker volume create创建数据卷docker volume createdocker volume ls查看所有数据卷docker volume lsdocker volume rm删除数…

0.8秒一张图40hx矿卡stable diffusion webui 高质极速出图组合(24.3.3)

新消息是。经过三个月的等待&#xff0c;SD Webui (automatic1111)终于推出了新版本1.8.0&#xff0c;本次版本最大的更新&#xff0c;可能就是pytorch更新到2.1.2, 不过还是晚了pytorch 2.2.2版。 不过这版的一些更新&#xff0c;在forget分支上早就实现了&#xff0c;所以。…

C及C++每日练习(2)

1.选择&#xff1a; 1.使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。以下哪个选项是正确的&#xff1f; A.%-30.4e B.%4.30e C.%-30.4f D.%-4.30 在上一篇文章中&#xff0c;提到了…

【C++实战项目】Date日期类 --- 运算符重载的深入探索

&#x1f4f7; 江池俊&#xff1a;个人主页 &#x1f525; 个人专栏&#xff1a;✅C那些事儿 ✅Linux技术宝典 &#x1f305; 此去关山万里&#xff0c;定不负云起之望 文章目录 引言一、为什么需要运算符重载&#xff1f;二、日期类的实现1. 基本框架2. 预备工作3. Date 类…

Linux Watchdog 机制是什么

当涉及到Linux操作系统的稳定性和可靠性时&#xff0c;Linux Watchdog机制是一个至关重要的议题。该机制旨在监控系统状态&#xff0c;确保在出现问题时采取适当的措施以维持系统的正常运行。本文将深入探讨Linux Watchdog机制的工作原理、应用范围以及如何配置和使用该机制来提…

【leetcode C++】电话号码的字母组合

17. 电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 题目链接 . - 力扣&#xff08;LeetCode&…

MyBatis 学习(六)之动态 SQL

目录 1 动态 SQL 介绍 2 if 标签 3 where 标签 4 set 标签 5 trim 标签 6 choose、when、otherwise 标签 7 foreach 标签 8 bind 标签 1 动态 SQL 介绍 动态 SQL 是 MyBatis 强大特性之一&#xff0c;极大的简化我们拼装 SQL 的操作。MyBatis 的动态 SQL 是基于 OGNL 的…

腾讯云8核32G22M服务器优惠价格115元1个月、345元3个月

腾讯云8核32G22M服务器优惠价格115元1个月、345元3个月 一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核2G、2核4G、4核8G、8核16G、4核16G、8核32G、16核32G、16核64等配置可…

基于springboot+vue的科研工作量管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

基于 HBase Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数&#xff08;可选&#xff09; 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新…

Vue+腾讯地图-实现关键词输入提示功能

不废话&#xff0c;上代码~~~ 效果图&#xff1a; 1、先去腾讯地图后台创建自己的应用获取到应用的 Key 腾讯地图后台地址&#xff1a;腾讯位置服务 - 立足生态&#xff0c;连接未来 创建应用的 Key 如下&#xff1a; 2、在项目中添加腾讯地图API的js插件&#xff0c;如…

学习JAVA的第十四天(基础)

目录 Collection集合 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 遍历 数据结构 栈 队列 数组 链表 前言&#xff1a; 学习JAVA的第十三天 Collection集合 Collection的遍历方式&#xff1a; 迭代器&#xff08;不依赖索引&#xff09;遍…

Java线程池及Thread相关问题

Java线程池及Thread相关问题 一、Java线程池有哪些核心参数&#xff0c;分别有什么的作用&#xff1f;二、线程池有哪些拒绝策略&#xff1f;三、线程池的执行流程?四、线程池核心线程数怎么设置呢&#xff1f;方式一方式二基本原则 五、ThreadLocal底层是怎么实现的&#xff…

SoraAI优先体验资格注册教程

SoraA1视频工具优先体验资格申请 申请网址&#xff1a;https://openai.com/form/red-teaming-network 申请步骤&#xff1a; 填写基础信息 请使用英文根据内容填写以下内容&#xff0c;名、姓、电子邮件、居住国家、组织隶属关系(如果有)、教育水平 、学位&#xff08;哪个领…

利用Python副业赚钱,看完这篇你就懂了!

Python都可以做哪些副业&#xff1f; 1、兼职处理数据Excel整理数据功能虽然很强大&#xff0c;但在Python面前&#xff0c;曾经统治职场的它也的败下阵来。因为Python在搜集数据整理分析数据的过程中更加便捷&#xff0c;通过几行代码还可以实现自动化操作。 如果你学会Pyth…

指针运算笔试题解析

题目1&#xff1a; int main() { int a[5] { 1, 2, 3, 4, 5 }; int* ptr (int*)(&a 1); printf("%d %d", *(a 1), *(ptr - 1)); return 0; } ptr中存放了整个数组的地址&#xff0c;ptr是int*类型&#xff0c;&a1跳到5的地址后又被强制类…

EasyX的学习2

消息处理——漂亮的按钮(鼠标) 用到的函数 1.消息结构体变量类型&#xff1a;使用ExMessage ExMessage msg{ 0 }; 定义一个变量名为msg的ExMessage结构体变量并初始化为0 2.获取消息函数&#xff1a;peekmessage函数 //获取消息 peekmessage(&msg, EX_MOUSE); 两个参…

【打工日常】使用docker部署在线Photopea用于linux下替代ps

一、Photopea介绍 linux没有ps适配&#xff0c;对于有时候工作来说确实不方便&#xff0c;我找了很久&#xff0c;才找到了一款功能可以跟ps接近的在线软件&#xff0c;使用docker部署就可以了。它是ps的最佳替代品之一&#xff0c;其界面几乎与ps相同&#xff0c;只不过它是在…