密码学安全归约技术:壬寅年的见解
学习郭福春老师面向西电的安全规约分享录屏: https://www.bilibili.com/video/BV1AY4y1n775?share_source=copy_web&vd_source=4487439a1220fa77bb4a6f0079c98794
Outputs Force Inputs.
小白成长路线
密码学对安全的定义
PPT的敌手只能以可忽略的概率解决问题
计算安全:随着时间投入增加,解决问题的概率增加(公钥密码常用的概念)
信息论安全:one-time pad(无法实际使用)
安全规约
- 假设存在PPT敌手能够在安全模型下攻破方案
- 构造一个中间方案,面对已知的困难问题,敌手可以攻破该困难问题
- 困难问题确实是困难的,假设错误
规约基础问题
simulated game和proposed game之间需要满足不可区分,两者的区别在于敌手同时得到了两个公钥,而不是有先后顺序
abort和不可区分:敌手是一个算法,没有记忆,可以重新初始化
小专如何看看待研究问题和研究内容
安全规约相关的研究内容
安全规约究竟好不好
考虑以下4部分
- security model
- proof model
- reduction cost
- strong/week assumption
(之前的签名论文就是q type)
有安全证明的方案只在安全模型内安全
安全规约和其他证明的区别
- game-based proof
- simulation-based proof
game hopping类似于Hybrid
清楚定义了敌手会输出什么,能够知晓哪些信息
敌手没有特定的输出
Random oracle
Overview
An idealized model ,尚无人证明random oracle存在,但可以使用可信方的形式来实现
假设存在一个完全随机、公开可访问的哈希函数,只能通过查询oracle来取值
可采用以下形式化的方法来设计密码方案:
- 假设世界上存在random oracle,并且方案在random oracle模型下可证明安全
- 需要在现实世界中实现方案时,采用一个恰当设计的密码学哈希函数$H(x)$即可,即当需要查询random oracle时,计算$H(x)$
以上的设计需要实际上使用的密码学哈希函数能够足够好地模拟random oracle,所以第一步的证明在现实世界中是安全的。问题在于没有理论证明以上的模拟是足够好的,具体的哈希函数代码实现也不能与随机函数的行为一致
random oracle下的证明实际是在证明方案没有固有的设计缺陷,并没有证明任何实际的方案实现是安全的
Details
将random oracle理解为一个黑盒,接收输入为比特串,输出为比特串,内部的工作机理是未知且不可构造的,任何参与者(包括敌手)可以和黑盒交互;查询是隐私的,其他人无法观察参与者的输入$x$,甚至无法得知某个参与者是否查询过(合理性在于,参考本地调用哈希函数)
黑盒具有一致性,对于同一输入的输出保证不发生变化
如何构造$H$,考虑一个初始为空的$(x_i,y_i)$表,对于输入$x\neq x_i \in box$,随机选择$y\in \{0,1\}^l$并存入表内即可;如果输入$x = x_i \in box$,则输出对应的$y_i$。显然需要提前定义输出的域
Cons
存在方案在RO下安全但是使用任何现实的哈希函数时都不安全
在许多现有方案中可能安全性要求过高
Pros
- 没有已知的在RO下安全但在现实世界中受到攻击的方案
- 如果攻击被发现了,可以更换哈希函数
- 有证明总比没有好(摆烂.jpg)
参考 Page187 Introduction to Modern Cryptography, 3rd edition
UC安全计算
基本概念
03年之后出现了针对具体特定功能的函数
functionality的概念比函数更宽泛
函数和功能
函数的随机性会导致结果的分布,功能就是输出为分布的函数
考虑协议的安全性的三个维度
- 自适应和静态
- 恶意和半诚实
- PPT和计算能力无上限
MPC一般考虑蓝色的敌手
理想现实模型
攻击现实模型
理想模型没有信息泄露
参与者的输出不包含在view中(可以根据输入推导出)
安全两方计算
隐私性分f是确定性和一般情况
- 确定性:设计两个算法$S_1,S_2$能够根据输入输出模拟出view
- 引入随机性,多维随机变量,$S_1$需要模拟出view和output,因为随机性可能在对方输出内
- 因为view和output具有相关性
安全性
至少一方是诚实的
任意的A存在B
存在性:存在陷门置换,任何功能都能被安全计算
以半诚实安全下OT的例子进行介绍
单向置换,G是采样算法
这里利用到了hardcore predicate,参考https://zhuanlan.zhihu.com/p/588114150
发送方 发送的时候要无差别的对$\sigma_1,\sigma_2$ 加密
S1只需要额外随机在定义域内选择$y_1,y_2$就可以了
真实世界中r2和c2具有相关性,但是S2中r2和c‘2没有相关性,因此需要enhanced陷门置换
半诚实模型的组合定理
证明了某个组件的安全性后,后续在复杂协议中利用Oracle代替组件即可
存在性的思路
将随机性显式化,放在输入里面
电路规约为计算加法和乘法
one way trapdoor permutation
关键问题是如何能转换为计算加法和乘法的电路
乘法无法直接本地计算,只能交互再保证线性关系
安全多方计算
UC安全计算
引入了环境Z
- 生成输入
- 读输出
- 能够自由和敌手交互
STOC01
后续应该学习这个课程 (1) UC Tutorial 1.1 - Background: Introduction - YouTube