基于群签名和群密钥的安全通信系统。 Group Communication Security Protocol
-
基于CamSta97的群签名方案进行匿名签名与认证;
Anonymous signature and authentication algorithm based on CamSta97 which implements group signature scheme; -
基于GDH.2的群密钥交换方案进行密钥交换,并使用生成的群密钥进行消息加密和解密;
Key exchange algorithm based on GDH.2 which implements group key exchange scheme, and the group key encryption and decryption; -
安全通信系统demo;
All these algorithms are integrated to a demo;
本项目依赖于3个库,GMP,NTL,MMX。
GMP(GNU MP Bignum Library)为开源数学运算库。它可以满足任意精度的数学运算,包括有有理数、浮点数和符号整数。被NTL库所依赖。
安装方法:
$ sudo apt install libgmp-dev
NTL(Number Theory Library)是一个用于数论的库它是一个高性能,便携式的C ++库,提供数据结构和算法,用于处理带符号的任意长度整数,以及整数和有限域上的向量,矩阵和多项式。
安装方法:
$ wget http://www.shoup.net/ntl/ntl-10.5.0.tar.gz
$ tar xf ntl-*.tar.gz
$ cd ntl-*/src
$ ./configure
$ make
$ make check
$ sudo make install
MMX为自主编写的密码学相关的库,其中具有rsa的密钥生成,加解密和密钥数据结构的定义,以及一些常用的函数,如NTL的ZZ大整数类与string类的互相转换。
安装方法:进入lib/MMXlib
后执行make
。
按照上述步骤搭建好环境后,进入项目文件夹执行如下命令:
$ mkdir build
$ cd build
$ cmake ..
$ make
编译后生成可执行文件为GroupCommu
./GroupCommu
(选项)(参数)
-g: 以GM的身份运行
-m: 以Member的身份运行(默认)
-i <ip>: 指定GM的ip
-n: 指定Member的id
-p <PSK>: 指定PSK
-l <level>: 指定log的等级{debug|info|warn|err|critical}
MIT License