我的隐私计算学习——非对称RSA及不经意传输

本文介绍了隐私计算中的关键概念,如非对称RSA加密算法(包括欧拉函数、欧拉定理、模反元素和费马小定理),以及如何生成RSA公私钥和基于RSA的加密与解密过程。此外,还详细阐述了盲签名和不经意传输(ObliviousTransfer)在保护隐私的应用。
摘要由CSDN通过智能技术生成

隐私计算的必备基础知识(1)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。

(一)非对称RSA加密算法

  1. 欧拉函数和欧拉定理

    ​ 任意给定正整数 n,在小于等于 n 的正整数中,有多少个数与n构成互质关系?计算这些值的方法叫作欧拉函数,以 φ(n) 表示。在 1 到 8 中,与 8 形成互质关系的是1、3、5、7,所以 φ(8) = 4。

    如果两个正整数 a 和 n 互质,则 n 的欧拉函数 φ(n)可以让这条等式成立:aφ(n) ≡ 1(mod n)

    ​ 也就是说,a 的 φ(n) 次方被 n 除的余数为 1。或者说,a 的 φ(n) 次方减去1,可以被 n 整除。比如,3 和 7 互质,而 7 的欧拉函数 φ(7) 等于 6,所以 3 的 6次方(也就是 729)减去1,可以被 7 整除(728/7=104)。

  2. 费马小定理

    它是欧拉定理的一个特殊情况。假设正整数 a 与质数 n 互质,因为质数 n 的 φ(n) 等于 n-1,则欧拉定理可以写成下面的公式:an-1 ≡ 1(mod n)。

  3. 欧拉函数之积

    欧拉定理还有一个特点,如果 n 可以分解成两个互质的整数之积,即 n = p1×p2,则 φ(n)=φ(p1×p2)=φ(p1)×φ(p2)

    即积的欧拉函数等于各个因子的欧拉函数之积。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。

  4. 模反元素

    如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得 ab-1 被 n 整除,或者说 ab 被 n 除的余数是1。

    ab ≡ 1(mod n),这时,b就叫作 a 的模反元素。比如,3和11互质,那么3的模反元素就是4,因为(3×4)-1可以被11整除。显然,模反元素不止一个,比如15也是3的模反元素。而欧拉定理可以用来证明模反元素必然存在。可以看到,a的φ(n)-1次方就是a的模反元素。aφ(n) = a×aφ(n)-1 ≡ 1(mod n)

----------------------RSA公私钥如何生成?----------------------

1)随机选择两个不相等的质数p和q,比如61和53。实际应用中,这两个质数越大,就越难破解。

2)计算p和q的乘积n。比如n=61×53=3233。

3)计算n的欧拉函数φ(n)。φ(n)=φ(p×q)=φ§φ(q)=(p-1)(q-1)。因此,φ(3233)等于60×52,即3120。注意,这里用到了上面提到的欧拉函数之积。

4)随机选择一个整数e,选择条件是1<e<φ(n),且e与φ(n)互质。比如在1到3120之间,随机选择17。

5)计算e对于φ(n)的模反元素d。根据上文提到的模反元素的定义,ed ≡ 1(mod φ(n))。

6)将n和e封装成公钥,n和d封装成私钥。在这个例子中,n=3233,e=17,d=2753,所以公钥就是(3233, 17),私钥就是(3233, 2753)。

----------------------加密与解密?----------------------

1)加密计算公式为:me ≡ c(mod n),其中m就是要加密的信息,c就是计算生成的密文。沿用上面的例子,假设m=65,则6517 ≡ 2790(mod 3233)。

2)解密使用计算公式为:cd ≡ m(mod n),将密文2790代入公式计算可得27902753 ≡ 65(mod 3233)。

----------------------基于RSA算法的盲签名?----------------------

​ 盲签名(Blind Signature)是一种在不让签名者获取所签署消息具体内容的情况下进行数字签名的技术。盲签名允许拥有消息的一方先将消息盲化,而后让签名者对盲化的消息进行签名,最后消息拥有者对签字除去盲因子,得到签名者关于原消息的签名。

​ 盲签名的一个通俗的解释是:Alice想让Bob在一张信件上签名,但是不想让Bob看到信件上面所写的字。于是,Alice在信件上面放了一张复写纸,然后将信件和复写纸放到了信封中交给Bob。Bob在拿到信封之后直接在信封上面签字,这样字迹就通过复写纸写到了信件上。Alice拿到信封之后就可以得到Bob签过字的信件。

​ 基于RSA算法可以实现盲签名,假设Alice要让Bob对消息m进行盲签名,Bob拥有私钥对(n, d),并共享了公钥对(n, e),其具体实现步骤如下:

1)Alice 选取与 n 互质的盲因子 k,然后计算 t ≡ mke (mod n),并把 t 发送给Bob。

2)Bob 对 t 进行签名,即计算 td ≡ (mke)d (mod n),并把计算结果发送给Alice。

3)Alice 计算盲因子 k 的逆元 k-1,并计算 s ≡ k-1td (mod n),根据费马小定理,可得 td ≡ (mke)d≡mdked-1k ≡ md k(mod n),进而可得 s ≡ k-1mdk ≡ md(mod n)。最终 Alice 获得了 Bob 的签名,但 Bob 并不知晓所签名的消息 m 的具体内容,即 Alice 获得了 Bob 的盲签名。

(二)不经意传输

​ 不经意传输(Oblivious Transfer,OT)协议是一个密码学协议。在这个协议中,消息发送者将一批消息发送给接收者,接收者只能从中选取一条。但发送者对接收者选取了哪一条消息无法察觉,接收者也无法知道未选取的其他消息的内容。不经意传输协议可以保护接收者的隐私(选取的消息的内容)不被发送者知道,是密码学的一个基本协议,也叫茫然传输协议。

----------------------基于RSA加密算法的不经意传输协议?----------------------

假设发送者Alice有N个电话号码m0, m1, …, mN,接收者Bob只能从中选取一个,但又不想让Alice知道他拿到了哪一个号码。

1)发送者Alice生成一对RSA公私钥,并将公钥(n, e)发送给接收者Bob。

2)Alice方生成N个随机数X0, …, XN,将它们发送给接收者Bob。

3)Bob方生成一个随机数 k 以及一个编号标识 b(也就是Bob选择了第 b 个电话号码)。

4)Bob方用接收到的公钥加密k,同时用自己选中的Xb(从Alice方发送的N个随机数中选择的第b个随机数)盲化后发送给Alice,盲化计算公式为(Xb+ke) mod n。

5)Alice方并不知道Bob方究竟选择了哪个,她将X0, …, XN中的每个数据都拿去解密,获得k0, …, kN个解密结果。

6)Alice方对N个解密结果分别加上真实要发送的信息后发送给Bob。

7)Bob方根据自己选中的消息编号,只需对第b个消息解密就可以获得自己选中的电话号码。对于其他消息,Bob即使去解密也只能获得一个没有意义的随机值。而Alice方始终无法获知Bob究竟拿到了哪一个号码。

10月份新开了一个GitHub账号,里面已放了一些密码学,隐私计算电子书资料了,之后会整理一些我做过的、或是我觉得不错的论文复现、代码项目也放上去,欢迎一起交流!https://github.com/Ataraxia-github?tab=repositories

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RSA是一种非对称加密算法,由三位科学家Rivest、Shamir和Adleman共同发明,在加密和数字签名领域发挥着重要作用。RSA算法基于数论中的两个重要难题:大整数分解和模幂运算。 RSA算法的核心概念是公钥和私钥。在加密过程中,首先需要生成一对密钥,其中一个是公钥,可以公开给其他人使用,而另一个是私钥,必须保密。通过公钥可以将信息进行加密,而只有使用私钥才能解密。 RSA算法的加密过程如下:选择两个大素数p和q,并计算它们的乘积n=p*q作为所需的大整数。再选择一个与(p-1)*(q-1)互质的正整数e作为公钥,其中1 < e < (p-1)*(q-1)。然后计算d,满足(d*e) mod ((p-1)*(q-1)) = 1,并将d作为私钥。公钥对应着(n, e),私钥对应着(n, d)。 对于明文M,加密后得到密文C,加密过程为C = M^e mod n。解密过程为M = C^d mod n。由于大整数分解问题的复杂性,只有获得私钥才能成功解密,保护了通信的安全性。 RSA算法广泛应用于计算机网络和电子商务中,例如在网站上进行数据传输过程中,使用RSA加密算法保护数据的机密性和完整性,确保数据不被窃取或篡改。 需要注意的是,尽管RSA算法在安全性上相对较好,但其加解密过程消耗较大的计算资源,在处理大量数据时效率可能较低。因此,在实际应用中,常常将RSA与其他加密算法结合使用,以平衡安全性和效率的要求。 总之,RSA算法作为一种非对称加密算法,通过公钥和私钥的配对实现信息的加密和解密。它在数据安全领域的应用广泛,为保护通信和数据的安全做出了重要贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值