自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 BGV的SIMD编码

介绍了BGV的SIMD编码,给出了openfhe-python库的示例,介绍如何将多个数并行编码为一个明文多项式。

2024-03-01 12:07:06 686 1

原创 半诚实的高吞吐量三方秘密分享

介绍了一种三方的门限秘密分享方案。

2024-02-27 10:22:02 913

原创 三方相关随机数的分布式生成

介绍了和为0相关随机数的分布式生成算法。

2024-02-26 16:13:15 854

原创 RLWE同态加密编码打包——系数打包

介绍了RLWE加法同态加密的明文打包方法,系数打包。并给出OpenFHE的代码示例。

2024-02-25 10:35:59 857

原创 OpenFHE之BGV基本操作

介绍了如何使用 OpenFHE库进行BGV加密和基本的参数设置。

2024-01-27 20:52:28 982

原创 同态加密库Openfhe的介绍与安装

简要介绍了同态加密的概念和C++同态加密库OpenFHE,并给出linux上的安装方法。

2024-01-26 15:41:40 1126 2

原创 算术秘密分享(Arithmetic Share)

介绍了算术秘密分享,给出了其同态加法和同态乘法的运算操作。

2024-01-25 16:26:20 824

原创 安全多方计算之使用秘密分享求逆

介绍如何使用同态秘密分享计算一个有限域中元素的逆元。给出Shamir秘密分享设计的实例。

2024-01-15 20:17:43 805

原创 Shamir秘密分享的基本形式(同态加、同态乘)

介绍了shamir门限秘密分享的构造、同态加法、同态乘法,并给出了python示例代码

2024-01-14 17:40:22 955

原创 简单不经意传输(OT)及代码示例

介绍了简单不经意传输(OT)的基本概念和构造方法,给出了python中实现不经意传输的otc函数库的使用示例。

2023-11-29 15:51:42 262

原创 中国剩余定理的同态性质(CRT变换的同态性)

介绍中国剩余定理,并证明了CRT变换的加法同态和乘法同态

2023-08-09 13:11:25 314

原创 使用CKKS全同态求近似倒数(近似乘法逆元)

CKKS同态加密计算倒数(乘法逆元)

2023-05-08 20:21:29 684 1

原创 CKKS参数选择与安全级别

介绍了CKKS中的参数与具体的安全级别的关系,给出了TenSEAL中参数选择的限制

2023-04-05 21:44:27 1354

原创 TenSEAL库之CKKS参数介绍及代码示例

介绍了如何使用TenSEAL库进行CKKS的加密,同时介绍了CKKS的参数

2023-03-27 19:19:11 2566 6

原创 TenSEAL库介绍:如何开始同态加密

介绍了TenSEAL库的简单使用,公钥,私钥的产生与分离,BFV的简单示例。

2023-03-17 10:29:48 4271 2

原创 Pailliar同态加密算法描述与证明

Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。

2022-06-03 01:06:42 720

原创 python调用c++程序(pybind11)

前言c或者c++代码的效率比python要高很多,所以,很多时候,python程序会有一部分使用c或者c++来实现。本文介绍如何使用pybind11简单的包装c++程序,然后编译成一个python可以直接调用的模块。pybind11的安装pybind11的安装非常简单,你可以像安装一般的python包一样,使用pip来安装。pip install pybind11如果要安装在全局,/usr/local/include/pybind11路径,可以使用pip install "pybind11[

2022-05-16 23:47:00 1653

原创 拜占庭容错机器学习算法之剪枝平均

剪枝平均剪枝平均数,是指去掉一部分最大值和最小值后,剩余部分的平均数。更确切的定义是:假设有a1<a2<a3<⋯<ana_1<a_2<a_3<\cdots <a_na1​<a2​<a3​<⋯<an​,2β<n2\beta<n2β<n,那么{a1,a2,a3,⋯ ,an}\{a_1,a_2,a_3,\cdots,a_n\}{a1​,a2​,a3​,⋯,an​}的β\betaβ剪枝平均数定义为mβ=∑i=β+1n−2β

2022-05-15 10:48:34 683

原创 同态哈希函数

同态哈希是一种特殊的哈希函数。如果aaa的哈希是h(a)h(a)h(a),bbb的哈希是h(b)h(b)h(b),f(a,b)f(a,b)f(a,b)是aaa和bbb的函数,那么f(a,b)f(a,b)f(a,b)的哈希可以通过h(a)h(a)h(a)和h(b)h(b)h(b)的某种计算获得。在论文《A Practical Scheme for Non-interactive Verifiable Secret Sharing》中就使用了同态哈希来验证秘密分享是否被篡改。RSA实例假设有一个RSA的加

2022-05-08 21:57:29 2083

原创 机器学习训练过程中的模型攻击的类型

前言所谓的模型攻击是指,恶意的用户干扰正常的机器学习过程,从而达到某种目的,而实施的一系列操作。通常,一个机器学习过程有数据收集,训练模型两个主要过程。在数据收集阶段,采取的攻击,一般叫做数据投毒攻击。而在训练阶段采取的攻击,叫做模型投毒攻击。数据投毒攻击所谓的数据投毒攻击,是指在数据收集阶段,或者数据预处理阶段实施的攻击。标签反转,如我们要训练一个识别图片的数字的模型。我们将一部分图片中数字为1的图片,标签转换的0,这样可以使得最终训练的模型的准确率大幅下降。数据加噪,给训练集的数据加上一些噪

2022-05-04 15:28:15 3627

原创 从多项式除法来看Reed-Solomon编解码

前言Reed-Solomon是一种应用广泛的纠错码。(n,k)(n,k)(n,k)的RS码可以容忍n−k+12\frac{n-k+1}{2}2n−k+1​个错误,编码kkk个信息,需要nnn个码字。也就是说,当错误的码字小于n−k+12\frac{n-k+1}{2}2n−k+1​时,可以完全恢复kkk个信息。编码假设qqq是一个素数,Fq\mathbb{F}_qFq​是有qqq个元素的有限域,n,k,dn,k,dn,k,d是整数,满足1≤k<n≤q,d=n−k+11\leq k<n\leq

2022-05-02 23:21:34 694

原创 近似公因数问题(Approximate Common Divisor Problem,ACDP)

前言给定两个整数aaa和bbb,存在整数ddd,使得d∣ad|ad∣a并且d∣bd|bd∣b。即ddd同时整除aaa和bbb,我们把ddd叫做aaa和bbb的公因数,满足条件的ddd的最大值,叫做aaa和bbb的最大公因数(GCD)。通过辗转相除法或者错位相减法,可以在多项式时间内求出aaa和bbb的最大公因数。现在,我们考虑,aaa和bbb在传输的过程中出现了一些小错误。得到a′=a+e1a^\prime=a+e_1a′=a+e1​和b′=b+e2b^\prime=b+e_2b′=b+e2​,那么是

2022-04-29 22:33:15 788

原创 LEAF:一个联邦学习的基准数据集

LEAF提供了几个联邦学习的数据集,及简单的联邦学习例子,使用的算法是联邦平均算法,其代码是用python写的,机器学习的框架是tensorflow,所以如果要跑上面的例子,注意需要安装的环境,里面有个requirements.txt列出了要下载的python包。其地址为https://talwalkarlab.github.io/leaf/目前有6个数据集,可以选择是否切分为独立同分布(iid)。1、FEMNIST一个图像分类的数据集,识别英文字母和数字。有3550个用户,总共805263个样

2022-04-25 22:11:38 3101

原创 Gmedian(几何中位数或者中位数中心)

Gmedian是Geometric median的简称,也叫做spatial median 或者 L1-median,描述的是到nnn个点的加权距离之和最小的那个点。是平凡中位数的扩展。所谓的中位数,是在一个有序数组的中间位置的那个数。如果是偶数个数,那么是中间位置的两个数的均值。比如{1,2,3}\{1,2,3\}{1,2,3}的中位数为2,{1,2,3,4}\{1,2,3,4\}{1,2,3,4}的中位数为2.5。中位数存在的前提是两个数之间是可比较的,这样才能排序,然后确定中间位置的那个数。但是,

2022-04-24 23:09:22 1340

原创 拜占庭容错机器学习算法之Krum算法

Krum算法是一种基于欧氏距离的拜占庭容错机器学习算法,是一种在分布式机器学习中保证其在具有拜占庭错误时仍然可以收敛的算法。拜占庭错误所谓的拜占庭错误在机器学习中是指,客户端在提交模型更新时,可以提交任意的随机数,或者选择不提交。当然,这有可能是由于机器故障或者网络故障等不可抗力的原因,也可能是由于恶意的用户故意提交错误的更新,来破坏训练过程。算法假设我们具有nnn个客户端{c1,c2,⋯ ,cn}\{c_1,c_2,\cdots,c_n\}{c1​,c2​,⋯,cn​}和一个服务器sss,每个客户

2022-04-23 22:14:44 6414 2

原创 拉格朗日多项式插值及其c++演示

已知nnn个点,寻找一条穿过所有点的曲线的过程叫做插值。如果这nnn个点在某一条多项式的曲线上,那么,寻找这个多项式的解析式的过程就是多项式插值。拉格朗日(Lagrange)插值是一种快速求解穿过nnn个点的多项式的方法。这nnn个点必须满足其横坐标两两不相同,否则不存在过这nnn个点的多项式。而且,满足条件的 n−1n-1n−1次多项式只有一个。最简单的例子就是两点确定一条直线,三个点确定一条抛物线。拉格朗日系数多项式假设nnn个点(x0,y0),(x1,y1),⋯ ,(xn−1,yn−1)(x_

2022-04-21 22:02:36 3057

原创 lua调用c函数

环境配置使用lua调用c语言编写的函数,首先要安装c语言的lua库,然后将其编译为动态链接库。在Linux上直接使用apt-get安装的lua是没有自动安装lua库的,需要下载lua的源码编译安装。编写c函数如同main函数是所有c程序的入口程序一样,lua可调用的c语言程序也有一个入口程序叫做luaopen_lib,其中lib是你自己的库的名字。除此之外,每个函数要传入的第一个参数必须是lua_State类型,也就是lua的stack。lua和c之间的参数交换,是通过栈来完成的,也就是函数的第一

2022-04-17 16:20:31 1509

原创 lua连接mysql数据库

环境配置1、安装好lua,我的版本是5.42、下载mysql的c开发库3、下载luarocks用于安装luasocket包和luasql-mysql包4、配置一个本地或者远程的mysql服务器和一个测试的数据库,以及一个测试用户环境配置中的一些注意事项(Linux)1、下载mysql的开发库,通过下面命令下载sudo apt-get install libmysqlclient-dev然后,默认的文件路径是\usr\include\mysql在安装luasql-mysql包之前,首先

2022-04-16 21:13:11 3894

原创 使用Shamir门限方案进行隐私求和

定义Shamir门限方案是用来解决这样一个问题:有nnn个人,共同拥有一个秘密SSS,只要有k(k<n)k(k<n)k(k<n)个人在场,则可以知道这个秘密SSS,反之只要在场的人数少于k,则无法恢复秘密SSS。这样的方案叫做(k,n)(k,n)(k,n)门限方案。由Adi Shamir在1979年的论文How to Share a Secret中提出,该方案的时间复杂度为O(nlog⁡2n)O(n \log ^2n)O(nlog2n).该方案基于多项式插值:给定k个横坐标不同的点(

2022-04-15 22:22:24 939

原创 四元数(quaternion)

四元数是对实数或者说复数的一个扩展。类似于复数是在实数的基础上添加了一个虚部,四元数在复数的基础上再添加了两个虚部。一般形式的四元数,其实是一个四维的元组(a,bi,cj,dk)(a,bi,cj,dk)(a,bi,cj,dk)其中a,b,c,da,b,c,da,b,c,d是实数,i,j,ki,j,ki,j,k是不同的虚数单位,并且满足i2=j2=k2=ijk=−1i^2=j^2=k^2=ijk=-1i2=j2=k2=ijk=−1.而且{ij=−ji=kjk=−kj=iki=−ik=j\begin{al

2022-04-14 21:45:54 1630 1

原创 lua5.4:长度操作符#详解

在lua中,#叫长度操作符,是一元前缀运算符,用来返回字符串(string)或者表(table)的长度。1、对于字符串来说,其返回值是该字符串占有多少个字节。也就是当字符串中的一个字符占一个字节时,字符串的长度。2、#作用于表时,返回的实际上是表的一个边界(border)。一个表t的边界border,是一个满足下列条件的非负数:(border ==0 or t[border] != nil) and (t[border+1]==nil or border ==math.maxinteger)在lu

2022-04-12 22:43:58 2392 3

原创 lua:获取table的长度

对于一个table来说,要获得其长度,最简单的应该是直接使用“#”操作符。值得注意的是table.getn函数在lua5.+版本已经被移除。当然,如果table是一个数组,那么长度计算一般是正确的(没有值为nil)t={1,2,3,4}print(#t)--this will output 4虽然“#”操作符简单,但是,其计数有时候并不准确。t={[-1]=-1,[0]=0,[1]=1,[2]=2,[4]=5}print(#t)--this will output 4t={[-1]=-1

2022-04-11 23:39:10 9334

原创 BGV的对称加密

BGV是目前比较流行的全同态加密方案之一,其构造基于LWELWELWE或者R−LWER-LWER−LWE。本文介绍BGV方案的私钥加密,也就是对称加密的形式,基于多项式环的描述。假设与参数其假设跟公钥的BGV是完全一样的。有一个由分圆多项式构造的环R,满足安全参数。在环上有三个分布,均匀随机分布,私钥分布和噪声分布。一般来说,私钥分布和噪声分布是相同的(对于多项式环),为高斯离散分布。明文为Zp\mathbb{Z}_pZp​中的元素,ppp是一个公开的素数。私钥生成和加解密其私钥是从私钥分布中采样

2022-04-10 17:42:48 618 1

原创 在保护输入隐私的情况下求n个数的积(基于安全多方计算)

问题描述与假设有nnn个数a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​分别属于nnn个人p1,p2,⋯ ,pnp_1,p_2,\cdots,p_np1​,p2​,⋯,pn​.在不泄漏a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​的情况下,求这n个数的乘积prodcut=∏i=1naiprodcut=\prod_{i=1}^na_iprodcut=∏i=1n​ai​.使用秘密分享每两个人之间首先通过密钥协商等方法,获得一个秘密

2022-04-06 23:27:31 92

原创 安全求和问题

安全求和所谓安全求和,是这样一个问题:有n(n>2)n (n > 2)n(n>2)个数a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​,分别掌握在nnn个人手中(为了方便,数aia_iai​同时也代表第i个人)。我们想要获得这nnn个数的和,但是不会暴露其中任何一个人的值。即,公开sum=∑i=1naisum=\sum_{i=1}^{n}a_isum=∑i=1n​ai​,但是除了第iii个人,其他人不知道aia_iai​的值。方法一:同态加法可以采

2022-04-03 22:32:59 345

原创 中国剩余定理

定理内容中国剩余定理最早记载于《孙子算经》的“物不知数”问题,所以又叫做孙子剩余定理。设m1,m2,m3,⋯ ,mkm_1,m_2,m_3,\cdots,m_km1​,m2​,m3​,⋯,mk​是kkk个两两互素的正整数,则对于任意的b1,b2,b3,⋯ ,bkb_1,b_2,b_3,\cdots,b_kb1​,b2​,b3​,⋯,bk​,同余式组:{x≡b1mod  m1x≡b2mod  m2x≡b3mod  m3⋮x≡bkmod  mk\begin{aligned}\left\{

2022-03-30 19:33:11 678

原创 模重复平方算法

算法原理模重复平方算法是用来快速计算bnmod  mb^n \mod mbnmodm的一个算法。考虑直接计算bnmod  mb^n \mod mbnmodm,需要n−1n-1n−1次乘法,也就是递归计算bn≡(bn−1mod  m)⋅bmod  m.b^n \equiv (b^{n-1} \mod m) \cdot b \mod m.bn≡(bn−1modm)⋅bmodm.不过,当nnn很大的时候,计算会非常耗时。现在,考虑将nnn的二进制表示n=n0+n12+n222+⋯+nk−12k−1n=n_0

2022-03-29 22:03:00 3694

原创 扩展欧几里得算法及贝祖定理

贝祖定理对于a,ba,ba,b是任意两个正整数,则存在整数s,ts,ts,t使得sa+tb=(a,b)sa+tb=(a,b)sa+tb=(a,b)。其中(a,b)(a,b)(a,b)是a,ba,ba,b的最大公因数。其证明也就是求最大公因数的逆过程。这里使用辗转相除法来证明。不妨设a>ba> ba>b,则有下列等式成立:a=q0b+r0,(0<r0<b)b=q1r0+r1,(0<r1<r0)r0=q2r1+r2,(0<r2<r1)⋮rn−2=qn

2022-03-25 22:26:51 311

原创 最大公因数及其求解算法(GCD)

定义对于nnn个整数a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​,其中n≥2n \ge 2n≥2,如果整数d整除这n个整数中的每一个,那么d是这n个数的公因数。即d∣a1,d∣a2,⋯ ,d∣and|a_1,d|a_2,\cdots,d|a_nd∣a1​,d∣a2​,⋯,d∣an​如果a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​不全为0,那么其公因数中最大的一个,叫做这n个整数的最大公因数。一般记作gcd(a1,a2,⋯ ,

2022-03-21 22:37:17 2117

原创 BFV加密方案

BFV加密是主流的基于容错学习问题的全同态加密方案之一,其主要思想是将明文放在密文的高位,通过整除的方式,去除低位的噪声。比如有一个BFV的密文,私钥,则BFV的解密为,其中是一个公开常数,是解密噪声,显然,当噪声足够小的时候,我们可以通过除以t取整获得明文。公共参数选择我们需要三个分布噪声分布,私钥分布和一个随机均匀分布,然后是一个分圆多项式,其中是的整数次幂。由和一个大整数定义一个多项式环...

2022-03-18 18:03:14 3665

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除