目录
- 前言
- 先决条件
- 基本依赖安装
- 准备好 gcc,make 和 perl
- 准备好 m4,flex,bison 和 libssl-dev
- 安装 Python3.x,pip3 和 pyparsing
- 安装 OpenSSL
- 安装 GMP5.x
- 安装 PBC
- 安装 Charm-crypto5.0
- 安装开发环境
- 检验 Charm-crypto5.0 安装成功
- 主要参考
前言
Charm-crypto 是一个基于 Python 的密码学框架,最大的特点是可以基于它进行密码学方案的原型设计,因此绝大多数的相关论文中都以此为平台进行实验验证。
但是由于 Charm-crypto 项目整体比较老旧,更新维护的很少,所以当下进行部署安装经常会遇见操作系统不兼容,依赖库版本不匹配等问题。
在看了很多网上安装教程后,感觉挺麻烦的,但是实际操作过后,其实也挺简单的,版本兼容的问题也不大。
发现很多论文的验证都是放在 U’buntu14 这样的平台上,应该是实验室继承下来的开发环境,笔者没有这样的条件,只有自己搭建一下测试的环境,并选择在 Ubuntu20.04 上完成对 Charm-crypto0.5 版本(最新版,也叫做 dev 版)。
先决条件
在正式开始之前,有一些必要的条件需要提前准备,这些条件基本和 Charm-crypto0.5 本身无关,主要是基本环境的需要。
- Ubuntu20.04:至于其他较新的版本也有博主验证过,问题不大【1】
- 可以科学上网:由于部分资源需要外网下载,需要良好的网速
- apt,apt-get 的下载源推荐使用国内的镜像,同样也是为了良好的下载速度
基本依赖安装
准备好 gcc,make 和 perl
在 Ubuntu20.04 中默认都安装好了这些工具的,你只需要通过输入上述命令,并在后面添加 -v 来确定一遍
gcc -v
make -v
perl -v
准备好 m4,flex,bison 和 libssl-dev
这几个库为后续库的前置库
sudo apt update
sudo apt install m4 flex bison libssl-dev
安装 Python3.x,pip3 和 pyparsing
由于 Ubuntu20.04 一般默认就安装了 Python3.7 和 pip3,因此这一步就无需进行过多的操作,如果没有的话,请先进行安装。
接着需要设置默认的 Python 版本为 Python3,同理 pip 也需要设置为 pip3。
将其指向的原因是后续的一些自动化配置中,会利用到 Python 命令,如果你没有将其绑定到 Python3 上,就无法执行。
本文通过软链接的方式将 Python 指向 Python3,实现系统级修改
sudo ln -s /usr/bin/python3 /usr/bin/python
此时再次执行 python 命令则会进入 python 交互状态
python
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip 采用相同的设置方式进行设置
下面安装 pyparsing,这是一个用于解析文本的 python 库
pip3 install pyparsing
安装 OpenSSL
OpenSSL 是一个安全套接字层的密码学库,提供了非常多的常用密码学算法
Ubuntu20.04 下默认也是安装好了 OpenSSL 的,你可以输入一下命令进行检查
openssl version
OpenSSL 1.1.1f 31 Mar 2020
安装 GMP5.x
GMP 是一个提供高精度运算的开源库,它的官方网站链接在这里
首先进入官方的下载页面,选择下载 gmp-5.1.3.tar.bz2
这个版本,在 Ubuntu20.04 下,下载的文件被放入了 Downloads
文件夹中,下面执行如下的命令对 GMP 进行安装
# 回到 Home 目录
cd ~# 进入 Downloads 文件夹
cd Downloads/# 解压文件,并移动至 /usr/local/src
# 该目录常被用于存放本地安装程序的源码
sudo tar -jxvf gmp-5.1.3.tar.bz2 -C /usr/local/src# 进入该目录
cd /usr/local/src/gmp-5.1.3# 执行配置文件
sudo ./configure# make
sudo make# 安装
sudo make install
【注】在本文中你会在多处看到我们选择将自己下载的源码放置在 /usr/local/src
这个目录下,原因在于按照 FHS(Linux 下的目录管理规范),/usr
目录一般用于存放可共享的数据,/local
一般用于存放和系统无关的数据,/src
一般用于存放源码
安装成功后出现如下界面
安装 PBC
PBC 是一个基于 GMP 的提供“配对”功能的密码学库,它的官方网站链接在这里
类似 GMP 的安装方式,我们先在相关的下载页面选择最新版进行下载,即 pbc-0.5.14.tar.gz
下载完成后,我们进入 Downloads
文件夹中,并执行如下命令进行安装操作
cd Downloads/# 解压并移动至 /usr/local/src
sudo tar -zxvf pbc-0.5.14.tar.gz -C /usr/local/src# 进入该目录
cd /usr/local/src/pbc-o.5.14# 配置
sudo ./configure# 编译
sudo make# 安装
sudo make install
安装成功后出现如下界面
安装 Charm-crypto5.0
在 Charm-crypto5.0 的 Github 仓库中,找到 dev
版本进行下载(dev
就是 5.0 版本)
接下来我们执行如下命令进行安装
# 移动 Charm-dev.zip 至 /usr/local/src
sudo mv charm-dev.zip /usr/local/src# 进入该目录
cd /usr/local/src/# 解压
sudo unzip charm-dev.zip # 进入 charm-dev 并进行配置
cd charm-dev/
sudo ./configure.sh # make
sudo make# 安装
sudo make install
安装成功后出现如下界面
安装开发环境
在本文中选择 vscode + 相关插件进行开发,也可以选择诸如 Pycharm 等 IDE 开发工具
在桌面导航栏中选择【gnome 软件中心】进行安装,具体步骤如下
【注】如果你的 Ubuntu 是 Ubuntu software
也是类似的安装方式,关于 Gnome software 和 Ubuntu software 的区别可以参考这篇文章
【注】除了通过软件中新的安装方式,你还可以采用直接从 vscode 官方网站下载安装包来进行安装,这篇文章阐述了下载安装的流程
安装完成后,打开终端输入 code
启动 vscode
接下来我们在插件中安装 python 开发需要用到的插件,按如下顺序进行安装即可。Flake8
和 yapf
都是用于代码格式化的插件
至此,Python 的开发环境已经安装完成
然后,我们随便新建一个文件进行测试
如果你的控制台能够产生合法输出,则说明 python 开发环境安装成功
【注】如果你的 Ubuntu 中没有左侧的【软件中心】,可以执行如下命令进行安装,安装完毕后该图标会出现在导航栏中
sudo apt install gnome-software
检验 Charm-crypto5.0 安装成功
接着,我们创建一个密码学测试文件 Cryptographers.py
,在文件里书写如下的代码
输入如下代码
from charm.toolbox.pairinggroup import PairingGroup
from charm.toolbox.hash_module import Waters# 产生一个双线性配对群
group = PairingGroup("SS512")
waters = Waters(group, length=8, bits=32)
# 用 hash 进行哈希
a = waters.hash("user@email.com")
# 用 sha2 进行哈希
b = waters.sha2("user@email.com")print(a)
print(b)
若控制台能够产生合法输出,则说明 Charm-crypto5.0
环境安装成功
主要参考
- Linux安装Charm-crypto环境详细流程
- charm-crypto安装(一)
- Charm-Crypto 安装指南