Linux下使用同态加密库Microsoft SEAL v4.1| 配置环境 | CKKS | BGV

没有看到关于SEAL v4.1非常完整的教程,把自己安装使用的过程和步骤记录下来。

0 准备工作

下载SEAL代码

git clone https://github.com/microsoft/SEALgit clone https://github.com/microsoft/SEAL

配置环境

安装cmake,要求>=v 3.13

wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz
tar -xvzf cmake-3.22.1.tar.gz
cd cmake-3.22.1
./bootstrap
make
make install
cmake --version

如果还是旧版本,删除原版本(可选),替换软链接

sudo ln -sf /usr/local/bin/*  /usr/bin/

编译项目

cd SEAL
cmake .
sudo cmake -S . -B build
cmake --build build

构建完成后,可以在build/lib目录中找到输出的二进制文件

运行测试代码

SEAL官方提供了一系列的测试代码,可以通过如下命令运行

cd SEAL/native/examples
cmake -S . -B build 
cmake --build build
cd build/bin
./sealexamples 

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
同态加密是一种令人信服的加密技术,可以在加密的状态下保持数据运算的可行性。同态加密背后的主要思想是对数据进行加密,使其仍然可以在加密的状态下进行某些数学运算,然后将结果解密以获得最终结果。 BGV(Bajard, Gentry, Halevi)是一种同态加密方案,可用于执行加法和乘法运算。以下是一个简单的伪代码示例,用于说明如何实现同态加密的加法和乘法操作: // 密钥生成 参数:安全参数 lambda 输入:无 返回:公钥 pk,密钥 sk 成员: pk, sk 函数密钥生成(lambda): 生成两个大质数 p, q 生成一个可满足安全性要求的环 R 随机选择多项式 f(x) ∈ R 满足特定条件 生成公钥 pk = (p, q, R, f(x)) 生成密钥 sk = (p, q, R, f(x)) 返回 pk, sk // 加密函数 参数:公钥 pk, 明文 m 输入:无 返回:密文 c 成员:c 函数加密(pk, m): 随机选择多项式 g(x) ∈ R 计算密文 c = (g(x) * f(x) + m) mod q 返回 c // 解密函数 参数:密钥 sk, 密文 c 输入:无 返回:明文 m 成员:m 函数解密(sk, c): 使用 CRT 计算 c mod p 和 c mod q 计算明文 m = (c mod p) mod q 返回 m // 同态加法函数 参数:公钥 pk, 密文 c1, 密文 c2 输入:无 返回:密文 c 函数同态加法(pk, c1, c2): 计算密文之和 c = (c1 + c2) mod q 返回 c // 同态乘法函数 参数:公钥 pk, 密文 c1, 密文 c2 输入:无 返回:密文 c 函数同态乘法(pk, c1, c2): 计算密文之积 c = (c1 * c2) mod q 返回 c 以上是一个基本的同态加密方案的实现示例。需要注意的是,该示例中的函数并不具有完整性和安全性,并且仅用于说明目的。实际中,同态加密的实现还需要进行更多的细化和改进,以满足具体应用的安全性需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值