2017-2018-1 20155205 实验五 通讯协议设计
2017-2018-1 20155205 实验五 通讯协议设计
基础知识
-
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
-
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。
-
对称加密算法 OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
-
非对称加密算法 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
-
信息摘要算法 OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。
-
密钥和证书管理 密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。
实验内容
『任务一』
- 下载openssl后通过下列方式安装。
$ ./config
$ make
$ make test
$ make install
- 输入
gcc -o test test_openssl.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -lcrypto -ldl -lpthread
编译生成可执行文件test,后执行echo $?
得到结果0。
#include <stdio.h>
#include <openssl/evp.h>
int main(){
OpenSSL_add_all_algorithms();
return 0;
}
后因为ubantu发生无法解决的故障,我在mac iterm中完成了接下来的实验。
-
MAC OS自带了OpenSSL,直接在命令行里输入
openssl
。 -
运行openssl后
-
第一步:输入
genrsa -out rsa_private_key.pem 2048 // 生成私钥
; -
第二步:输入
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt // 把RSA私钥转换成PKCS8格式
,提示输入密码,密码为空; -
第三步:输入
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem // 生成公钥
。
-
『任务二』
- 对实验二中的“wc服务器”通过混合密码系统进行防护: