【教程】ubuntu20.04 下配置 Charm-crypto 0.5 实验环境

前言

Charm-crypto 是一个基于 Python 的密码学框架,最大的特点是可以基于它进行密码学方案的原型设计,因此绝大多数的相关论文中都以此为平台进行实验验证。

但是由于 Charm-crypto 项目整体比较老旧,更新维护的很少,所以当下进行部署安装经常会遇见操作系统不兼容,依赖库版本不匹配等问题。

在看了很多网上安装教程后,感觉挺麻烦的,但是实际操作过后,其实也挺简单的,版本兼容的问题也不大。

发现很多论文的验证都是放在 U’buntu14 这样的平台上,应该是实验室继承下来的开发环境,笔者没有这样的条件,只有自己搭建一下测试的环境,并选择在 Ubuntu20.04 上完成对 Charm-crypto0.5 版本(最新版,也叫做 dev 版)。

先决条件

在正式开始之前,有一些必要的条件需要提前准备,这些条件基本和 Charm-crypto0.5 本身无关,主要是基本环境的需要。

  1. Ubuntu20.04:至于其他较新的版本也有博主验证过,问题不大【1】
  2. 可以科学上网:由于部分资源需要外网下载,需要良好的网速
  3. 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 开发需要用到的插件,按如下顺序进行安装即可。Flake8yapf 都是用于代码格式化的插件
在这里插入图片描述
至此,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 环境安装成功

主要参考

  1. Linux安装Charm-crypto环境详细流程
  2. charm-crypto安装(一)
  3. Charm-Crypto 安装指南

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 10:28:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 10:28:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 10:28:06       87 阅读
  4. Python语言-面向对象

    2024-04-20 10:28:06       96 阅读

热门阅读

  1. 算法:指针

    2024-04-20 10:28:06       36 阅读
  2. SpringCloud中的nacos注册中心分析

    2024-04-20 10:28:06       31 阅读
  3. 用例设计-抖音视频上下滑动用例

    2024-04-20 10:28:06       31 阅读
  4. SQL中NULL值比较问题解析与解决方法

    2024-04-20 10:28:06       38 阅读
  5. 软件架构设计 Azure架构

    2024-04-20 10:28:06       32 阅读
  6. 【AIGC调研系列】Grok-1.5v与Gpt-4v的效果对比

    2024-04-20 10:28:06       32 阅读
  7. 如何使用cuda进行图像矫正

    2024-04-20 10:28:06       35 阅读
  8. 多语言vue-i18n (vue2,uniapp)

    2024-04-20 10:28:06       26 阅读