目录
- 前言
- 先决条件
- 基本依赖安装
- 准备好 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
安装成功后出现如下界面
安装 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.tar.gz
# 配置
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 开发工具
在桌面导航栏中选择【软件中心】进行安装,具体步骤如下
安装完成后,打开命令行输入 code
启动 vscode
接下来我们在插件中安装 python 开发需要用到的插件,按如下顺序进行安装即可。Flake8
和 yapf
都是用于代码格式化的插件
至此,Python 的开发环境已经安装完成
然后,我们随便新建一个文件进行测试
如果你的控制台能够产生合法输出,则说明 python 开发环境安装成功
【注】如果你的 Ubuntu 中没有左侧的【软件中心】,可以执行如下命令进行安装,安装完毕后该图标会出现在导航栏中
sudo apt install gnome-software
检验 Charm-crypto5.0 安装成功
接着,我们创建一个密码学测试文件
输入如下代码
import hashlib
# 创建一个 hashlib.sha256 对象
hasher = hashlib.sha256()
# 将数字 123 转换为字节数组
data = str(123).encode()
# 使用 sha256 哈希函数更新数据
hasher.update(data)
# 获取哈希值
hash_value = hasher.hexdigest()
# 打印哈希值
print(hash_value) # a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
若控制台能够产生合法输出,则说明 Charm-crypto5.0
环境安装成功
PS:经过实践,此方法无法在阿里云无影云桌面环境下起效,当重启后无法进入无影云桌面
参考
- Linux安装Charm-crypto环境详细流程
- charm-crypto安装(一)
- Charm-Crypto 安装指南