simulationPart3
How To Simulate It – A Tutorial on the Simulation Proof Technique-Part3
Defining Security for Malicious Adversaries
Motivation
相比半诚实敌手下的安全性定义,恶意敌手会更难一些,因为恶意敌手可能会做出任何偏离协议规定的行为,只要求存在一个模拟器,能根据其规定的输入和输出生成被破坏方的视图就足够了。
但是,相较于之前的敌手,攻击者可能不使用给定的输入去输出,此外,除了要考虑到攻击者会从中获取额外的信息以外,还应当考虑到攻击者对于输出所带来的影响。
我们在分析协议的安全性时,会将对手在协议中能做的事情与在理想情况下能做的事情进行比较,而理想情况下的协议根据定义是安全的。此外,我们会设计一个不可篡改的可信第三方,各方将其输入发送给该第三方。受信任方计算输入的功能,并向各方返回各自的输出。
我们假设总是有一方被破坏。
The Definition
理想模型允许理想执行中的对手中止执行或在诚实方未获得输出的情况下获得输出。
参与方P1,P2P_1,P_2P1,P2, ...
zkp入门
ZKP入门
交互式证明是可验证计算概念的核心概念。最重要的是,交互式证明理论为非交互式零知识证明 (NIZK)、简洁非交互式知识论证 (SNARK) 或简洁透明知识论证 (STARK) 奠定了基础。
简介
什么是证明系统
交互式证明系统是一种抽象的机器,它将通过计算建模为双方之间交换信息,分别称为证明者PPP和验证者VVV。
证明者无所不能,拥有无限的计算资源,但不可信任。
验证者的计算能力有限。
验证者和证明者之间会不断发送消息,直到验证者能够验证或伪造某个陈述。
所有交互式证明系统都具有两个关键属性:
完整性:当陈述是真实的,诚实的验证者可以通过诚实的证明者确认这一事实。
健全性:当陈述是错误的,除去可忽略不计的概率,没有恶意的证明者可以欺骗验证者。
零知识保护隐私
证明系统的第三个属性:
**零知识:**如果陈述为真,那么没有任何作弊验证者会了解除此事实之外的任何其他信息。
零知识的阿里巴巴洞穴:
有一个洞穴,它的路径一分为二。这两条路径由一扇门连接,这扇门只能用密码打开。一个人叫爱丽丝,想向另一个人鲍勃证明她知道密码,而不会泄露它。为此,双方首先将自己置于洞穴的入口处。然后爱 ...
精通以太坊
Chapter 1
以太坊开发主要有四个阶段
四个主要的发展阶段代号为前沿(Frontier),家园(Homestead),大都会(Metropolis)和宁静(Serenity)。中间的硬分叉代号为“冰河时代(Ice Age)”,“DAO”,“蜜桔前哨(Tangerine Whistle)”,“假龙(Spurious Dragon)”,“拜占庭(Byzantium)”和“君士坦丁堡(Constantinople)”。它们在下面列出,以及硬分叉发生的块号:
之前的过渡
Block #0
"Frontier" - 以太坊的初始阶段, 从2015年7月30日持续到2016年3月。
Block #200,000
“Ice Age” - 引入指数级难度增长的一个难题,激励了到权益证明的过渡。
Block #1,150,000
"Homestead" - 以太坊的第二阶段,2016年3月启动。
Block #1,192,000
“DAO” - 恢复被破坏的DAO合约的硬分叉,导致以太坊和以太坊经典分成两个竞争系统。
Block #2, ...
simulationPart2
How To Simulate It – A Tutorial on the Simulation Proof Technique-Part2
Simulating the View of Malicious Adversaries– Zero Knowledge
零知识仿真考虑的是恶意对手(尤其是恶意验证者),他们的行为可能是任意的,不一定符合协议规范。零知识中没有私人输入或输出,模拟器需要在证明中生成验证者的观点,而不需要考虑输入和输出的额外复杂性。
Defining Zero Knowledge
Notation
AAA:概率多项式时间机器
A(x,y,r)A(x,y,r)A(x,y,r):机器A在输入xxx,辅助输入yyy和随即磁带rrr上的输出。
n=∣x∣n=|x|n=∣x∣:语句xxx的长度
outputB(A(x,y,rA),B(x,y,rB))output_B(A(x,y,r_A),B(x,y,r_B))outputB(A(x,y,rA),B(x,y,rB)):表示乙方在公共输入xxx上与甲方交互执行的输出,其中甲方有辅助输入yyy和随机磁带rAr_ArA, ...
浙大暑期课程
Provable Security Basics
Modern Cryptography:
Confidentiality
Integrity
Authentication
Provable Security:
Precisely specify threat model
Propose a construction
Write a formal proof(reduction)
One-way function:
f(x) is polynomial-time computable for all x
For all PPT algorithm A\mathcal{A}A
Pr[InvertA,f(n)=1]≤ϵ(n)Pr[Invert_{\mathcal{A},f}(n)=1]\le \epsilon(n)Pr[InvertA,f(n)=1]≤ϵ(n)
Discrete Logarithm Problem
Let G\mathcal{G}G be a neneric, polynomial-time, group generation algorithm
Input 1n ...
simulation
How To Simulate It – A Tutorial on the Simulation Proof Technique
本文将介绍如何通过模拟的思想去证明一个密码学系统的安全性。
文档原文:https://eprint.iacr.org/2016/046.pdf
Introduction
首先,我们需要理解什么是模拟–simulation。
原文是这样描述的:
1Simulation is a way of comparing what happens in the “real world” to what happens in an “ideal world” where the primitive in question is secure by definition.
也就是说,模拟是一种比较方式,将ideal world和real world进行比较。
所谓的理想世界 (ideal world) 是一个理论模型,用于描述一个安全协议在理想条件下的行为。在这个模型中,存在一个被称为理想函数的抽象实体,它能够完美地执行协议应有的功能,而不会泄露任何额外的信息。同时, ...
随机数
安全随机数生成
在密码学中,随机性是不可或缺的一个角色。许多密码学算法都要求使用一个不可预测的随机数,只有在生成的随机数不可预测时,这些算法才可以保证足够的安全性。例如MAC 算法中的 key,ElGamal,ECC算法的k。
另外许多高性能算法如快速排序,布隆过滤器都依赖于随机性,如果随机性可以被预测,或者能够找到特定的输入值使这些算法变慢,那么黑客就有攻击可循。
python随机数
在python中最简单方便的是使用random生成随机数。
123456789101112131415161718#需要的库import randomimport string#random.randint(a,b) 在[a,b]内生成随机数random.randint(1,50)#随机生成最小值为1,最大值为50的整数(可以等于上下限)random.randint(20, 20) #上下限一样时结果永远是20 #random.randrange(a, b), random.randrange([start], stop[, step]), [a,b)random.randrange(0, 101, ...
拜占庭将军问题
拜占庭将军问题(The Byzantine Generals Problem)提供了对分布式共识问题的一种情景化描述, 由Leslie Lamport等人在1982年首次发表。
问题描述
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
内涵:在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识。
当前研究的结论是:如果叛徒的数量大于或等于1/3,拜占庭问题不可解。
2个将军的情况
当两个将军在攻击同一个敌人的时候,一个人被认为是领导,而另一个被认为是跟随着。单一的将军无法打败敌人,因此,两人必须要合作。
为了两军的沟通和决定作战时间,将军1号必须要派遣一个信使穿过敌人的营地去把攻击时间告诉将军2 ...
智能设备配对
我们分别从熵源和所使用的加密基元两个方面来讨论智能物联网设备配对。
熵源
考虑到熵源,目前人们最感兴趣的是加速和声音。
基于加速度的配对使用移动设备上的加速度传感器来检测两个设备之间的物理接触。有一些方案提出提取步态中的加速度作为上下文。步态是利用人体运动时的姿势和动作特征记录下来的。还有一些方案提出利用人体运动提取有效指纹,这些方案通常在可穿戴设备上实现。还有一些方案提出利用运动过程中的加速度(例如汽车内部环境)提取有效熵,有文章已经成功地在道路上行驶的汽车内通过传感器融合实现了设备配对。然而,这些方案要求设备处于移动环境中,这对配对条件的要求很高。
声音在生活中无处不在,大多数智能设备都配备了麦克风和话筒,从而具备了播放和录制声音的能力。一些方案关注环境中的噪声并提取指纹序列,等方案提出录制自然噪声进行匹配,但环境声音的随机性在实际过程中带来了较长的匹配时间。随后,提出通过在法定边界内添加额外声源来增强环境声音,并给出了一种基于时域的音频指纹提取方法。近年来,也有人提出在智能家居环境中通过人声来实现智能设备的配对。提出麦克风可以很好地识别人声,并提到了人声的特征。
加密原语
在 ...
关于评价指标
关于评价指标
本文将介绍识别/匹配类论文中常出现的几种评价指标:TPR,FPR,TAR,FAR,FRR,ERR
TPR:True Positive Rate,真阳性,分类器正确分类且本身为正例
TNR:True Negative Rate,真阴性,分类器正确分类且本身为负例
FPR:False Positive Rate,假阳性,分类器错误分类本身为负例
FNR:False Negative Rate,假阴性,分类器错误分类本身为正例
TPR=TP/(TP+FN),即正确识别的正例数据占据总的正例数据的比例,为召回率;
FPR=FP/(FP+TN),即实际值为负例数据,将负例数据预测为正例的百分比;
ROC
ROC曲线(Receiver Operating Characteristic):受试者工作特征曲线
在分类任务中,我们使用分类器对样本进行分类,分类器会给出样本为正例的概率,我们可以针对此来设定一个阈值,当某个sample被判断为正例的概率大于这个阈值时,认为该sample为正例,小于则为负例。根据阈值-正负例概率,我们可以得到若干个(TPR , FPR)对。
当阈值越大时,越多 ...
KDF
KDF 密钥派生函数
在现实生活中,我们更倾向于使用密码来保护自己的数据,而不是二进制的密钥。因为相比于二进制复杂的密钥,字符形式(小写字母,大写字母,数字,特殊符号等的组合)才符合人类正常的思维。
可对计算机来说这相反,现代密码学的很多算法都要求输入是一个大的数字,二进制的密钥就是这样一个大的数字。 因此显然我们需要一个将字符密码(Password)转换成密钥(Key)的函数,这就是密钥派生函数 Key Derivation Function。
直接使用SHA-一类的哈希函数加密password是不可取的,因为password通常都包含着个人的情感元素,这是容易记忆但容易受到猜测的,通常密码不会很长,在10位左右。另外,有的人为了方便,还会选择一些常见的弱密码,比如123456,admin,个人生日等。这就导致如果直接使用SHA-类的算法,许多密码将很容易被暴力破解,字典攻击,彩虹表攻击等手段猜测出来。
KDF 目前主要从如下三个维度提升 hash 碰撞难度:
时间复杂度:对应 CPU/GPU 计算资源
空间复杂度:对应 Memory 内存资源
并行维度:使用无法分解的算法,锁定 ...
区块链中的前沿技术
元宇宙
头号玩家:献给所有游戏玩家的一封情书
在头号玩家中,令人惊叹的“绿洲”让人向往,那么这一世界是怎么实现的呢?这就体现区块链技术在另一个方向的发展:元宇宙。
根据维基百科,Metaverse 被定义为“一个集体虚拟共享空间,由虚拟增强的物理现实和物理持久的虚拟空间融合而创造,包括所有虚拟世界、增强现实和互联网的总和。”
这是另一个与我们物理世界平行的虚拟世界——一个我们可以通过互联网和兼容的硬件设备自由访问的世界,并在其中进行互动。
元宇宙是真实和虚拟之间的桥梁,可以扩展我们的视觉、声音和触觉,将数字物品融入物理世界,让我们随时进入完全沉浸式的3D 环境。
元宇宙虽然不像科幻小说和影视作品中描绘的那样奇幻,但却有可能成为新的计算平台和内容媒体,产生数万亿美元的价值。元宇宙确实可以作为网络功能的“继承者”——覆盖范围更大、花费的时间更长、商业活动更多——经济优势也有可能更大。
更广泛地说,元宇宙**将改变现代资源的分配和货币化方式。**在元宇宙的模式下,居住在“一线发达市区”以外的潜在劳动力将通过虚拟劳动参与“高价值”经济。作为极具生命力的新事物,元宇宙源源不断地创造着新就业机会 ...
铜锁杂谈
铜锁/Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。
项目地址:https://github.com/Tongsuo-Project/Tongsuo
安装Tongsuo
本节将介绍如何在ubuntu的虚拟机中安装Tongsuo。
常见的安装方法有两种:直接安装和使用docker安装,没有本质上的区别,docker只是更方便我们卸载,你可以省略前面的安装dockers过程,直接到Tongsuo的安装步骤。
安装docker
在这一步,建议大家进入root权限
卸载旧版本
ubuntu下自带了docker的库,不需要添加新的源。
但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的
123sudo apt-get remove docker docker-engine docker.io containerd runc(su)apt-get remove docker doc ...
纵向联邦学习
现在我们介绍另一种联邦学习算法:纵向联邦学习(Vertical Federated Learning)。纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据,通过共有样本数据进行安全联合建模,在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比,纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和模型联合推理。并且,参与方越多,纵向联邦学习系统的复杂度就越高。
纵向联邦学习VFL一般由两部分组成:加密实体对齐,加密模型训练。
加密实体对齐
由于A方和B方公司的用户群体不同,系统使用一种基于加密的用户ID对齐技术,来确保A方和B方不需要暴漏各自的原始数据便可以对齐共同用户。在实体对齐期间,系统不会将属于某一家公司的用户暴露出来。
加密模型训练
在确定共有实体后,各方可以使用这些共有实体的数据来协同地训练一个机器学习模型。训练过程可以被分为以下四个步骤:
协调者C创建密钥对,并将公共密钥发送给A方和B方
A方和B方对中间结果进行加密和交换,中间结果用来帮助计算梯度和损失值
A方和B方计算加密梯度并分别加入附加掩码。B方还会计算加密损失。A方和B方将加密的结果发送给C ...
公钥加密方案在选择密文攻击下的不可区分性
IND-CPA安全仅保证敌手是完全被动情况的安全,不能保证敌手主动情况(如向网络中注入消息)的安全。
为了描述敌手的主动攻击,前人提出一种选择密文攻击(Chosen Ciphertext Attack,CCA)的概念,其中敌手在获得目标密文以前,可以访问解密喻言机。敌手获得目标密文后,希望获得目标密文对应的明文的部分信息。
公钥加密方案在选择密文攻击下的IND游戏如下:
(1)初始化。挑战者产生系统Π\mathcal{\Pi}Π,敌手获得系统的公开钥。
(2)训练。敌手向挑战者做解密询问,即取密文CT给挑战者,挑战者解密后,将明文给敌手。
(3)挑战,敌手输出两个长度相同的消息M0,M1M_0,M_1M0,M1,再从挑战者接收MβM_{\beta}Mβ的密文,其中随机值β←R{0,1}\beta \larr _R\{0,1\}β←R{0,1}。
(4)猜测,敌手输出β′\beta^{\prime}β′,如果β′=β\beta^{\prime}=\betaβ′=β,则敌手攻击成功。
以上攻击过程称为午餐时间攻击,相当于有一个执行解密运算的黑河,掌握黑盒的人在午餐时间离开后,敌手 ...