PBC(Pairing-based cryptography)库是一个免费的C库(根据GNU Lesser General Public许可证发布),它建立在GMP库的基础上,执行基于配对的加密系统的数学运算
安装教程
该安装教程当前仅适用Linux平台的用户,具体可参考官方文档
下载
首先,在官网下载安装包,可以看到有多个不同的包,这里下载pbc-0.5.14.tar.gz,这是因为安装环境是在Linux平台(如有必要,本文档后续会更新在Windows平台的安装教程)
编译和安装库
对于大多数库,解压缩源程序包后,输入以下命令将其安装到主目录的本地子目录
$ ./configure --prefix=$HOME/.local
$ make
$ make install
其中**–prefix**指定了PBC库要安装的目录,您也可以指定到自己喜欢的地方。如果一切正常,您应该会在$HOME/.local
中看到新文件,包括include、lib和bin三个文件夹
简单使用
下面是PBC程序foo.c中的内容
#include "pbc.h"
int main(void)
{
/* call PBC functions */
return 0;
}
当完成程序编写,则需要gcc来完成程序编译,我们使用以下命令进行编译
$ gcc -o foo foo.c -I ~/.local/include/pbc -L ~/.local/lib -Wl,-rpath ~/.local/lib -l pbc
编译成功后,会在当前目录生产foo,通过./foo
执行即可
BLS实现
本章将介绍如何使用PBC库实现Boneh Lynn Shacham(BLS)签名方案,它基于文件example/bls.c
回顾BLS
我们有三个阶为素数 r r r的群 G 1 , G 2 , G T G_1,G_2,G_T G1,G2,GT和一个双线性映射 e e e,它从 G 1 G_1 G1中获取一个元素,从 G 2 G_2 G2中获取一个元素,并输出 G T G_T GT中的一个元素。我们将其与系统参数 g g g一起发布, g g g是 G 2 G_2