首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Paillier是流还是块加密?

Paillier是流还是块加密?
EN

Cryptography用户
提问于 2021-02-05 04:59:26
回答 1查看 113关注 0票数 1

Paillier是遵循流加密还是块加密技术。如果是块加密,那么块的大小(以位或字节为单位)是多少。

EN

回答 1

Cryptography用户

发布于 2021-02-05 14:31:43

流密码

流密码产生的密钥流通常是小规模的比特(或字节或字,.)与消息位一起使用x来生成加密的流(或称其为密文)。流密码存储内部状态并为下一个输出更新它。它们也被称为状态密码,因为加密不仅取决于密钥和明文,还取决于状态。

更正式地说,让s是状态,f是下一个状态函数,g是生成密钥流z_i的函数,h是用密钥流c_i产生m_i加密的函数。

\begin{align} s_i &= f(s_i,k)\\ z_i &= f(s_i,k)\\ c_i &= h(z_i,m_i) \end{align}

块密码

一个分组密码在块上运行,更正式地说,它是一个排列家族。我们需要一种操作模式来操作数据: CBC,CTR,GCM等。在分组密码中没有存储的信息,它们被称为无记忆密码。

更正式地说:具有b-bit块大小的分组密码是一个排列家族;

E:\{0,1\}^b \times \{0,1\}^k \to \{0,1\}^b,其中每个键k\in \mathcal K都选择一个置换形式-- \{0,1\}^b的所有置换

我们期望这个置换族构成一个伪随机置换(PRP).

块与流

当像CTR模式这样的操作模式将块密码转换为流密码(通常是CTR模式是为PRF而非PRP设计的.)时,区别并不清楚。然而,我们可以看到真正的区别是,如果一个密码被设计为流密码,那么它就有内部状态。

Paillier

Pailler既不是分组密码,也不是流密码,它是一个公钥系统,您需要两个密钥:公钥和私钥。

在Paillier密码体制中,m0 \leq m < n的加密是以公钥(n,g)作为c=g^m r^n \bmod n来执行的,其中r \stackrel{R}{\leftarrow}\mathbb{Z}_n^*

消息通过私钥(\lambda,\mu)恢复为m = L(c^\lambda \bmod n^2) \cdot \mu \bmod n ( L = \dfrac{x-1}{n} )。

使用

的长消息

如果您想用Paillier加密目标A的长消息,那么您可以将其分成几个部分,每个部分最多都有<n end使用A的公钥对每个目标进行加密,每个块使用一个新的随机\lambda。问题是跟踪零件的顺序。它可以在外部或内部实现。外部是明确的,在内部,你必须留出一些空间,以进行跟踪。不过,我不会叫这个分组密码。可以像加密一样执行CBC吗?是的,请记住不要重用\lambda

转换成流密码也是可能的,但有危险的路径。考虑使用CTR模式。您需要选择一个现在和一个计数器,并加密它,然后x-或与输出块。如果省略为每个块生成一个新的\lambda,这将是一个灾难性的失败。

缺乏

然而,没有诚信和真实性。Paillier密码系统在设计上是可扩展的,记住公钥加密是免费的,Paillier密码系统具有加性和乘法性。因此,至少需要HMAC。

,忘了吧,

请记住,我们不使用公钥加密,我们更喜欢/建议使用混合密码系统,如DHKE/AES-GCM。与对称加密相比,公钥密码学速度慢.AES有巨大的速度与硬件支持,甚至GCM也有。即使没有硬件支持,ChaCha20也非常快速。坚持建议,使用混合密码系统。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/88004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档