Paillier加密方案

数论基础

Carmichael函数:nZ+,aZn+,若能满足ax1(modn)的最小x,记为λ(n),称为Carmichael函数

定理:nZ+,设n=n1·n2,且(n1,n2)=1,则λ(n)=[λ(n1),λ(n2)]

证明.
aZn+,aλ(n)1modn
n1n
aλ(n)=1modn1
λ(n1)λ(n)
同理,λ(n2)λ(n)
[λ(n1),λ(n2)]λ(n)
Zn1+={ai|0<in1},Zn2+={bj|0<jn2}
Zn+={n2ai+n1bj}
(n2ai+n1bj)λ(n1)n2λ(n1)1modn1
(n2ai+n1bj)[λ(n1),λ(n2)]1modn1
同理,(n2ai+n1bj)[λ(n1),λ(n2)]1modn2
[n1,n2]=n
aZn+,a[λ(n1),λ(n2)]1modn
λ(n)[λ(n1),λ(n2)]
[λ(n1),λ(n2)]=λ(n)

Carmichael函数的取值:

  • 当原根存在时,显然λ(n)=φ(n),即当n=2,4,pα,2pα
  • 如果n = p1a1·p2a2psas,根据上面的定理,则λ(n) = [λ(p1a1),λ(p2a2),,λ(psas)]
  • 如果n = 2α,α3,则λ(n) = φ(n)2

定理:nZ+,wZn+,则wnλ(n)1modn2

证明.
wλ(n)1modn
kZN+,wλ(n)=1+kn
(wλ(n))n=(1+kn)n=1+Σ1nCni(kn)i=1+kn2+Σ2nCni(kn)i1modn2

Paillier加密方案

Paillier加密方案是欧洲通用的一种同态的公钥加密方案,其构造如下:

  • Gen:取两个大素数p,q,令n=pq,λ=[p-1,q-1],概率均匀的选择一个gZn2+,并且满足 n | ord(g),则(n,g)为公钥,(p,q,λ)为私钥
  • Enc:对消息mZn+,概率均匀的选择一个rZn+,则密文 c = rngmmodn2
  • Dec:解密m' = L(cλmodn2)L(gλmodn2),其中L(x)=x1n

正确性验证:
因为gλ1modn
不妨令gλ=1+kn,kZ+

m' = cλ1ngλ1n=(rngm)λ1n1+kn1n

(gλ)m1nk(1+kn)m1nk1+mkn+Σ2mCmi(kn)i1nk

kmkmmodn2

posted @   2hYan9  阅读(1840)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示