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

server/2024/10/21 9:58:46/

目录

  • 前言
  • 先决条件
  • 基本依赖安装
    • 准备好 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 本身无关,主要是基本环境的需要。

  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 安装指南

http://www.ppmy.cn/server/4003.html

相关文章

《综合品酒师》培训中FENDI CLUB精酿啤酒掀起品质生活新浪潮

近日,云仓酒庄的《综合品酒师》培训活动成功刷新了世界纪录,这一壮举不仅彰显了云仓酒庄在人才培养方面的专业实力,更以其与众不同的FENDI CLUB精酿啤酒掀起了酒水行业的新风尚。作为一名业内专业人士,我深入剖析了此次培训对酒水…

《深入浅出多模态》: 多模态经典模型:BLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

Python基础学习之数据切片

数据切片介绍: 切片的基本语法是data[start:stop:step],其中: start 是切片开始的索引(包括该索引处的元素)。 stop 是切片结束的索引(不包括该索引处的元素)。 step 是切片的步长&#xff0…

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则:洪特规则。 洪特规则是德国人弗里德里希洪特(F.Hund)根据大量光谱实验数据总结出的一个规律,它指出电子分布到能量简并的原子轨道时,优先以自旋相同的方式分别占…

面试:lock 和 synchronized

一、语法层面 synchronized 是关键字,源码在jvm中,用c语言实现Lock 是接口,源码由jdk提供,用java语言实现使用synchronized时,退出同步代码块锁会自动释放,而使用Lock时,需要手动调用unlock方法…

java:Java中的接口

什么是接口 概念: 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为&#x…

JVM常见面试题

1. 什么是JVM JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,作用是为了支持跨平台特性JVM的功能有三项:第一是解释执行字节码指令;第二是管理内存中对象的分配,完…

51-41 Stable Video Diffusion,高质量视频生成新时代

23年11月,Stability AI公司公开了稳定视频扩散模型Stable Video Diffusion(SVD)的代码和权重,视频生成迎来了新时代。SVD是一种潜在扩散模型,支持文本生成视频、图像生成视频以及物体多视角3D合成。从工程角度来看,本文主要提出了…