# 基于区块链的隐私保护推荐算法
## 基本思路
传统的隐私保护推荐系统主要用于两个方面,一是对模型的保护,主要方式有同态加密和差分隐私(联邦学习,共享模型的时候),二是对用户数据的保护(企业间互换用户数据,数据流通,从而进行大模型训练-联盟链。或者用户单独上传,获取推荐计算结果-公链),主要方式为差分隐私。为什么没有同态加密呢,一是进行密钥分配后,每个用户都是不同的密钥,从而在使用密文云端计算后,无法在本地进行有效的解密;二是同态加密速度过慢,导致时效性过差。
对于以上两个问题:
- 首先通过E2LSH(基于P-稳态分布的欧式距离局部敏感哈希函数)对数据进行一次映射,将其哈希键值对(key:哈希桶编号,value:哈希值)与用户id一同记录在区块链上。E2LSH的特点是高维相似的数据在低维的映射编码空间也以一定概率相似(即以很大概率会映射到同一个哈希桶里面),因此,只需要对哈希桶编号相同的用户分发相同的密钥,那么他们的数据在经过同态加密后,就能在云端进行同态运算(因为只使用同一个哈希桶里的用户进行相似度和推荐计算,且他们很大概率就是相似的用户),然后将运算后的值返回给用户,用户使用分发的密钥解密即可得到推荐结果明文(因为都是同一个密钥,参数一致,因此能正确解密)。且E2LSH映射后,一方面,只需检索同一个哈希桶里的用户,数据量大大减小;另一方面,因为P稳态分布的特点,使其可直接用哈希值进行相似度计算,降低了计算量。因此在合理分发密钥,进行同态运算的同时,整体推荐效率也得到了提升。
- 通过使用基于格的快速同态加密算法提高加解密速度(与一般的格不一样,参考文献:Efficient Homomorphic Encryption on Integer
Vectors and Its Applications),其原理基于LWE困难问题和格理论,与传统基于质数分解和离散对数等困难问题的同态加密相比(Paillier,RSA等),具有更高的运算速度(以矩阵形式运算),且依然具有同态性质。
- 本文采用IPFS对用户密文数据进行存储,其存储哈希值和用户E2LSH映射后的哈希值都记录在了区块链上,便于云端进行提取,同时,记录在链上还有一个好处便是能通过溯源E2LSH哈希值判断某个用户是否存在数据异常问题(历史哈希值是否存在差异过大问题)从而判断异常用户。
本文的区块链实现相对简单,通过Dapp university上的教程编写和搭建的,使用以太坊测试网络链接IPFS网络,前端作为上传页面,Ganache分配多个以太坊账户和对应的ETH作为测试用户。手动在本地进行运算后上传测试网,IPFS会自动进行记录,之后手动通过哈希值进行数据获取等。
注意:所有用户应使用同一个E2LSH且只使用一张哈希表,从而避免一个用户映射到多个哈希桶,或者最后映射的值不对等问题。
## 代码文件说明
- CF.py 协同过滤实现
- K_means_train.py 使用K-means优化LSH的实现
- Paillier_mx.py 对Paillier用矩阵进行遍历尝试
- Paillier.py Paillier的实现
- VE_LSH LSH和加密的实现
- K_means.ipynb 使用K-means优化LSH的尝试
- laplace_dp 使用拉普拉斯噪声模糊数据
- main.ipynb 整体运行
- pre_treat.ipynb 数据预处理
- vector_encrypt.ipynb 格加密的实现
算法核心代码还整理在了在另一个仓库“基于格的隐私保护推荐算法”里面,这个里也有,但可能比较乱。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
代码文件说明 CF.py 协同过滤实现 K_means_train.py 使用K-means优化LSH的实现 Paillier_mx.py 对Paillier用矩阵进行遍历尝试 Paillier.py Paillier的实现 VE_LSH LSH和加密的实现 K_means.ipynb 使用K-means优化LSH的尝试 laplace_dp 使用拉普拉斯噪声模糊数据 main.ipynb 整体运行 pre_treat.ipynb 数据预处理 vector_encrypt.ipynb 格加密的实现 。
资源推荐
资源详情
资源评论
收起资源包目录
基于区块链的隐私保护推荐算法python源码+项目说明.zip (338个子文件)
0 94KB
0_20220819132820 106KB
0_20220819135222 106KB
1 47KB
1_20220819132923 106KB
1_20220819135227 106KB
4_20220819141506 112KB
4_20220819141722 112KB
attack_user_mx 108KB
.babelrc 53B
App.css 22B
df_xy_20221127150648.csv 1.18MB
test_20221127151240.csv 1.18MB
df_xy_20221127152651.csv 1.18MB
noist_data.csv 602KB
noisy_data_user_mx.csv 525KB
user_mx.csv 417KB
data.csv 393KB
train.csv 327KB
attack_data.csv 99KB
predict_data.csv 94KB
test.csv 66KB
new_test.csv 7KB
test_20221127153043.csv 147B
test_20221127151306.csv 105B
test_20221127151308.csv 103B
test_20221127152339.csv 55B
test_20221127152341.csv 53B
test_20221127152428.csv 49B
test_20221127152429.csv 47B
test_20221127151232.csv 0B
.gitignore 339B
.gitignore 52B
.gitignore_20220805165601 0B
.gitignore_20220805165620 30B
.gitignore_20220806201500 41B
.gitignore_20220806201532 0B
.gitignore_20220806201533 23B
.gitignore_20220806201547 11B
zditect.html 6KB
index.html 2KB
favicon.ico 318KB
k_means.ipynb 545KB
pre_treat.ipynb 241KB
main.ipynb 107KB
LDP.ipynb 24KB
Paillier.ipynb 21KB
LDF_LSH.ipynb 0B
CF_LSH_ELSH1.jpg 1.01MB
attack_cmp.jpg 993KB
CF_LSH_ELSH.jpg 941KB
K_means_line.jpg 863KB
CF.jpg 838KB
LSH_nbits.jpg 833KB
LSH_num.jpg 831KB
CF.jpg 822KB
LSH.jpg 815KB
k-means.jpg 669KB
K_means_clusters.jpg 646KB
location.jpg 642KB
CF2.jpg 380KB
LSH_num.jpg 377KB
CF1.jpg 369KB
re_cmp_time.jpg 229KB
re_cmp_mae.jpg 224KB
LSH_nbits_time_MAE.jpg 223KB
LSH_num_time_MAE.jpg 212KB
attack_cmp_mae.jpg 205KB
CF_LSH_ELSH_time.jpg 204KB
attack_cmp_time.jpg 195KB
attack_cmp_time.jpg 194KB
LSH_num_mae.jpg 192KB
CF_LSH_ELSH_MAE.jpg 168KB
LSH_MAE_time.jpg 165KB
LSH_nbits_time_MAE2.jpg 138KB
LSH_nbits_time_MAE1.jpg 131KB
LSH_num_time_MAE2.jpg 128KB
LSH_num_time_MAE1.jpg 122KB
9.jpg 76KB
2.jpg 48KB
1.jpg 32KB
4.jpg 18KB
3.jpg 12KB
8.jpg 10KB
6.jpg 9KB
5.jpg 8KB
7.jpg 8KB
App.js 5KB
test.js 5KB
serviceWorker.js 5KB
ipfs_hash.test.js 1KB
index.js 495B
truffle-config.js 449B
1_initial_migration.js 130B
2_deploy_migration.js 127B
package-lock.json 2.04MB
ipfs_hash.json 127KB
Migrations.json 104KB
package.json 1KB
launch.json 495B
共 338 条
- 1
- 2
- 3
- 4
资源评论
FL1768317420
- 粉丝: 4993
- 资源: 5748
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功