现代密码学之安全多方计算

2023-10-28

本文中的所有内容是基于自己所学和理解整理而成的,解释部分可能会因为个人的理解产生错误和不严谨的问题。仅供初学者参考,欢迎交流指正。

什么是Secure Multiparty Computation

A set of parties with private inputs wish to compute some joint function of their inputs.
各方希望保留一些安全属性。例如,隐私和正确性。
例子:安全选举协议,隐私保护ML

如果存在可信的第三方,MPC很容易实现,每方只需要将它们的信息告诉这个信任的第三方,由第三方进行统一整合处理。这样各方用户之间就不会暴漏彼此的相关信息。

我们希望用一个协议来取代信任的第三方(TTP),同时实现相同的安全性和正确性目标。

安全定义

Privacy and correctness.

Privacy: parties 之间互相不知道输入。
Correctness:输出对应的输入一定是正确的。

Ideal/real model

在这里我们通过理想的/真实的模型来定义安全。
模型的范例

理想模型:
各方将输入发送给受信任的一方,后者计算函数并发送输出。
真实模型:
各方在没有TTP帮助的情况下运行一个真正的协议
如果对真实协议的任何攻击都可以在理想模型中执行(或模拟),那么协议就是安全的。
由于在理想的模型中基本上不可能进行任何攻击,因此隐含了安全性。
在这里插入图片描述
结合图来说一下。
上图左边是 real world 右边是 ideal world 右上那个人是 trust third-party. 总得来说就是,如果左边 real world 的中红色的 attacker 有什么能力的话,右边 ideal world 会有一个红色的模仿者,它与左边的 attacker 有着相同的能力,如果左边人能够获得任何跟 x 有关的信息的话,右边的模仿者应该也能获得跟 x有关的信息,但是对于理想世界模型来说,这个模仿者不应该能获得跟 x 有关
的信息,所以 real world 和 ideal world 有区别,不是 indistinguishable 的,所以左侧的 protocol 不安全。

用定义来说就是:
A protocol is secure if for every (efficient) real‐world adversary, there is an ideal world adversary such that for all x, y the joint distributions of the above are computationally indistinguishable.
为了证明安全性,我们必须取一个任意的(有效的)真实世界的攻击者A,然后构造一个理想世界的攻击者B,对所有x, y的分布是不可区分的。
B被称为a的模拟者
B(在理想世界中)将模拟A在现实世界中的view。
View = randomness + messages.

Oblivious transfer (OT)

Introduced by Rabin in 1982.
是密码协议的主力。
OT有许多基于它的变种,在这里我们举一个1‐out‐of‐2 string OT

1‐out‐of‐2 string OT

在这里插入图片描述
为方便理解,我们把中间蓝色当作 trust third-party,左边的 sender 将 M0 和 M1 给这个中间商,他只想让 receiver 获得其中的一个的同时,对另一个 M 一无所知。右边 Receiver 有一个 b,这个 b 是 0 或者是 1,他将这个 b 给中间商,中间商根据 b 的取值给 b 相应的 m,如果 b=0,那么 Receiver 将会获得 M0 ,b 在获得M 0 的同时,中间商将会销毁 M 1 ,所以 Receiver 将会对 M1 的内容一无所知。同时 sender 也不会知道 Receiver 到底是获得的 M1 还是 M0。

用ElGamal encryption实现OT

如何实现 OT 呢?举个简单的例子ElGamal encryption。
在这里插入图片描述
ElGamal encryption is IND‐CPA under DDH assumption.
在这里插入图片描述

//这个模型只在半诚实(Semi‐honest)的 receiver 前提下生效。

什么是Semi‐honest?简单理解就是说右边的 receiver 想作弊,但是他仍然按照这个模型的算法步骤走。Malicious receiver的话就是完全不按照模型的算法走,这种情况我们就不在模型中考虑了。

左边是 sender,右边是 receiver,我们假设 receiver 的 b=0右边的先选一个 secret key r0 ,计算 public key h0。

H1 是在 G 中任意选择的一个数,之后把 h0 和 h1 发给 sender。
Sender 用拿到的 h0 和 h1 进行加密,得到 c0 和 c1 ,但是他不知道 h0 和 h1 哪个是hb。发送 h0 和 h1 给 receiver,receiver 用他的 secret key r0 来对 c0 和 c1 解密,其中 c0 可以解密成 m0 ,得到了他想要的。c1 无法解密,所以丢掉。

为什么这个模型只在半诚实的 receiver 前提下生效?
因为 Malicious receiver 可以让 h0 和 h1 都通过 r0 和 r1 计算得出,不是随机得出的,所以他两个c都可以解开,这样这个模型都无效了。

Garbled circuits [Yao86]

主要思想:把任何的计算和方程都转换为Boolean circuit.

在这里我要举一个简单的2 parties的Garbled circuits例子来介绍。
Garbled gate 是AND gate
在这里插入图片描述

a,b,c都是random string,只有A知道他们具体map的是什么(比如a0代表着0,a1代表着1,在B眼中他们都是一串random string)

左下角是choese table,这个choese table的内容是基于gate的算法的,在我们这个例子中是AND gate所以我们根据choese table生成了And gate表,And gate中a0,b0等组合可以当做secret key去加密ouput c0。加密后A将And gate表的上下顺序打乱后发送给B,B只能在表中看到4个random string。

首先如果A的input是0,那么A就将能map0的a0发送给B,B的input是1,那么B通过上面提到的某种OT算法来得到b1. 那么B此时就拥有了a0和b1,但是B不知道a0代表的是0,因为在B眼中他是一串random string。B将手里的a0和b1当做Key来解密And gate表中的4个random string,B需要一个一个的尝试,直到尝试出可以用手中的key成功解密的c0。

最后B得到c0后把c0给A看。A告诉B你得的C是c0,因为在B眼中c0是一串random string。
在这整个过程中A.B都实现了零知识。A不知道B的input是0还是1,B也不知道A的input是0还是1。

这个例子作为讲解看起来很简单,但是在实际中要很复杂,因为他会涉及很多方的parties和很多不同的gate,这个例子只是两个parties和一个and gate而已。

GMW Protocol (GMW87)

基于 secret‐sharing.
For each wire w with value b (when evaluated on parties’ inputs), parties will hold a random secret sharing of b.
在这里插入图片描述
还是举个2 parties AND gate的简单例子来介绍。
P1和P2分别持有a和b的一半。
P1有a1,b1.
P2有a2,b2.
P1和P2都不知道c是多少,那么P1如何在零知识的情况下让P2计算出正确的C2呢?
首先P1随机选一个C1.(0/1)
P1不知道P2的a2,b2是0还是1,所以他可以把四种情况都列出来。
00,01,10,11
如下图,x代表的就是a2的取值,y代表的是b2的取值。
And gate 本质上可以用乘法代替(1 and 0 是0,1 and 1是1).
所以可以写出图中的代表C的公式。
之后把C的公式XOR C1,我们就得到了Cxy的公式。
那么如何实现零知识呢?
我们使用了1‐out‐of‐4 string OT
OT会根据P2所掌握的a2和b2的值来返回给P2正确的Cxy。
如果a2=0,b2=1,那么经过OT,P2将获得C01,这个C01就是P2想要得到的正确的C2.
在这里插入图片描述

Reference

  1. Wenbo Mao, Modern Cryptography, Prentice-Hall, 2003.
  2. Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, CRC Press, 2015.
  3. W Stallings, Cryptography and Network Security, Fourth (or later) Edition, Prentice Hall, 2006.
  4. J. Pieprzyk, T, Hardjono and J. Seberry, Cryptography: an introduction to computer security,
    Springer Verlag, 2003.
  5. Guo, F., Susilo, W., Mu, Y. Introduction to Security Reduction, Springer, 2018.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

现代密码学之安全多方计算 的相关文章

  • STM32 基础系列教程 18 – IWDG

    前言 学习stm32 独立看门狗 IWDG 接口使用 学会用STM32内部独立看门狗 IWDG 实现程序异常时自复位功能 STM32F10xxx内置两个看门狗 提供了更高的安全性 时间的精确性和使用的灵活性 两个看门狗设备 独立看门狗和窗口
  • 计算机网络——SOCKET、TCP、HTTP之间的区别与联系

    文章目录 一 Socket 1 什么是socket 2 为什么需要socket 3 建立socket连接 4 socket分类 二 HTTP 基于TCP 1 HTTP的概念 2 HTTP连接的特点 2 1 连接请求 一次连接 2 2 连接请

随机推荐

  • 专栏《乔新亮的CTO成长复盘》读书笔记(技术架构篇)

    架构决策能力不但非常关键 而且是技术管理者最重要的能力和职责之一 而且职级越高就越重要 很多所谓的 技术债 也就是由一次次的决策失误不断累加而成的 管理者要能充分利用自己的技术视野和业务认知提前做好预判和布局 也就是上医治未病 做 T 型人
  • 滑动谜题 -- BFS

    滑动谜题 输入 board 4 1 2 5 0 3 输出 5 解释 最少完成谜板的最少移动次数是 5 一种移动路径 尚未移动 4 1 2 5 0 3 移动 1 次 4 1 2 0 5 3 移动 2 次 0 1 2 4 5 3 移动 3 次
  • Python Selenium 基本使用(详细步骤)

    一 简介 Selenium 是一个 web 应用程序自动化测试工具 对各种浏览器都能很好地支持 包括 Chrome Firefox 这些主流浏览器 使用它可以模拟浏览器进行各种各样的操作 包括爬取一些网页内容 当看到浏览器自己运行并且在网页
  • QtConcurrent 线程使用说明

    关于Qt Concurrent 我们首先来看看Qt Assitant是怎么描述的 The QtConcurrent namespace provides high level APIs that make it possible to wr
  • 关于UE4 vs2017 SpawnActor编译通过,调试运行崩溃的问题

    在制作VR模式代码编写的时候 使用一些API采用UWorld SpawnActor的时候出现代码编译编译通过无报错 但是调试运行失败的原因 找了很久才找到原因 原来是构造器的问题 就是把SpawnActor放到到BeginPlay 中 不能
  • oracle全文索引之commit与DML操作

    我们知道 无论对多大的数据做DML操作 执行commit都可以很快完成 但如何删除建有全文索引的记录 在commit时可能会很慢 根据推断可以知道是由于域索引造成的 那么在有域索引的情况下 commit时 oracle还做了那些额外工作呢
  • chatgpt赋能python:Python求全排列的介绍

    Python求全排列的介绍 在计算机科学中 全排列是一种排列的形式 将一组元素按照固定的顺序安排 在Python中 可以使用递归和迭代来求解全排列问题 本文将介绍如何用Python求全排列以及如何在SEO方面优化文章 递归方法 递归方法是通
  • 新形势下,企业如何进行数字化转型 附下载地址

    2020年谈企业数字化转型 有一个不变和四个变 不变的是企业面临的整体宏观环境和企业 多年发展积累的运营模式和管理能力 因此企业数字化转型面临的固有难点依然存在 四个 变化因素是疫情影响 5G部署 人工智能 AI 加快应用 以及中美技术加速
  • springboot中 拦截器无法访问数据库解决方法

    在springboot中使用拦截器时 拦截器中还需要访问数据库 会出现实例化数据库访问对象失败的现象 不管是添加 Componse还是添加 Servie 或者 Configuration 均不可以 需要做如下处理 方法如下 1 在集成Web
  • yolov5环境搭建与pytorch中torch、torchvision、torchaudio安装

    python软件安装 可以不单独安装 2条消息 Python安装教程 2022最新 学Python的阿杜的博客 CSDN博客 安装anaconda3 2020 2对应的python版本为3 7 不推荐 2020 11对应的python版本为
  • 数据库MySql python读取插入数据,insert对那些类型加单引号,表单自己参考自己(外键),空值和NULL

    今天做了下数据库作业 好多出错 记录下 查漏补缺 本次只是实现一个employee表单 特殊在有一个外键参考自身主键 并且老师给的数据该外键可为null 表结构直接用workbench 里面构造的 Navicat还没解决不修改密码策略的条件
  • Python中常用的运算符

    1 算数运算符 最常见的 标准算数运算符 加减乘除 取余运算符 幂运算符 2 赋值运算符 3 比较运算符 4 布尔运算符 5 位运算符 1 算数运算符 2 赋值运算符 3 比较运算符 对变量或表达式的结果进行大小 真假等比较 一个 称为赋值
  • python怎么用print打出赋值_python print 输出赋值到变量

    In 52 import io In 53 row ACME 50 91 5 In 54 join row TypeError Traceback most recent call last in gt 1 join row TypeErr
  • 在 SQL 里描述数据分布情况的时候,有 Cardinality 和 Selectivity 两个概念,有什么区别?

    What is the difference between cardinality and selectivity In SQL cardinality refers to the number of unique values in p
  • 分享一波粉丝面试真题-主要是偏管理方面的

    怎么改善团队低迷现状 改善团队低迷的现状是一个重要的管理挑战 以下是一些可能有助于改善团队状态的方法 深入了解问题 首先 需要了解低迷的原因 这可能涉及与团队成员的个人会谈 收集反馈 观察工作流程等 明确问题的性质对于采取适当的措施至关重要
  • 使用python批量将svg转换成PNG

    CairoSVG介绍 CairoSVG是一个将SVG转为PNG PDF PS格式的库 当前版本的CairoSVG至少需要Python 3 5以上版本 CairoSVG安装和使用 pip install cairosvg 通过命令行你就可以使
  • 数据结构课设:学生信息管理系统(完整版)

    系统介绍 学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件 主要用于学校学生信息管理 总体任务是实现学生信息关系的系统化 科学化 规范化和自动化 其主要任务是用计算机对学生各种信息进行日常管理 如查询 修改 增加 删除 另
  • HTTP协议和web工作原理

    HTTP协议 是web学习的核心 学东东切忌只学配置 不学原理 只学会框架有什么用 要会自己写框架 web学习直接关系到J2EE的学习一 HTTP 超文本传输协议 人类之所发展得如此快 就是因为有自己的语言 1 所谓超文本 即纯文本语言 不
  • 使用git push太慢怎么办

    使用git push太慢怎么办 修改host文件 windows 的路径应该在 C Windows System32 drivers etc hosts 在host文件的最后一行加上 151 101 72 249 github global
  • 现代密码学之安全多方计算

    Secure Multi Party Computation 什么是Secure Multiparty Computation 安全定义 Ideal real model Oblivious transfer OT 1 out of 2 s