内容简介:网络通信安全基础OpenSSL
OpenSSL:
NIST:
保密性:
数据保密性
隐私性
完整性:
数据完整性
系统完整性
可用性
安全攻击:
被动攻击:窃听
主动攻击:伪装、重放、消息篡改、拒绝服
安全机制:
加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证
安全服务:
认证
访问控制
数据保密性
连接保密性
无连接保密性
选择域保密性
流量保密性
数据完整性
不可否认性
密码算法和协议:
对称加密
公钥加密
单向加密
认证协议
Linux 系统: OpenSSL, gpg(pgp)
加密算法和协议:
对称加密:加密和解密使用同一个密钥;
DES : Data Encryption Standard
3DES :
AES : Advanced (128bits, 192bits, 258, 384, 512bits)
Blowfish
Twofish
IDEA
RC6
CAST5
特性:
1 、加密、解密使用同一个密钥;
2 、将原始数据分割成固定大小的块,逐个进行加密;
缺陷:
1 、密钥过多;
2 、密钥分发;
公钥加密:密钥是成对儿出现
公钥:公开给所有人; pubkey
私钥:自己留存,必须保证其私密性; secret key
特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
数字签名:主要在于让接收方确认发送方身份;
密钥交换:发送方用对方的公钥加密一个对称密钥,并发送给对方;
数据加密:
算法: RSA, DSA, ELGamal
单向加密:只能解密,不能解密;提取数据指纹;
特性:定长输出、雪崩效应;
算法:
md5: 128bits
sha1: 160bits
sha224
sha256
sha384
sha512
功能:
完整性;
密钥交换: IKE
公钥加密:
DH (Deffie-Hellman)
A: p, g
B: p, g
A: x
–> p^x%g
p^y%g^x = p^xy%g
B: y
–> p^y%g
p^x%g^y = p^xy%g
PKI: Public Key Infrastructure
签证机构: CA
注册机构: RA
证书吊销列表: CRL
证书存取库
X.509 :定义了证书的结构以及认证协议标准
版本号
序列号
签名算法 ID
发行者名称
有效期限
主体名称
主体公钥
发行者惟一标识
主体的惟一标识
扩展
发行者签名
SSL: Secure Socket Layer
TLS: Transport Layer Security
1995 : SSL 2.0, Netscape
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 RFC 4346
2008 : TLS 1.2
2015: TLS 1.3
分层设计:
1 、最低层:基础算法原语的实现, aes, rsa, md5
2 、向上一层:各种算法的实现
3 、再向上一层:组合算法实现的半成品
4 、用各种组件拼装而成的种种成品密码学协议 / 软件:
tls, ssh,
OpenSSL :开源项目
三个组件:
openssl: 多用途的命令行工具;
libcrypto: 公共加密库;
libssl: 库,实现了 ssl 及 tls ;
openssl 命令:
openssl version :程序版本号
标准命令、消息摘要命令、加密命令
标准命令:
enc, ca, req, …
对称加密:
工具: openssl enc, gpg
算法: 3des, aes, blowfish, twofish
enc 命令:
加密:openssl enc -e -des3 -a -salt -in anaconda-ks.cfg -out anaconda-ks.ciphertex 解密: openssl enc -d -des3 -a -salt -in anaconda-ks.ciphertex -out anaa.cfg
-des3
openssl ?
单向加密:
工具: md5sum, sha1sum, sha224sum, sha256sum,…, openssl dgst
dgst 命令:
openssl dgst -md5 /PATH/TO/SOMEFILE
MAC: Message Authentication Code ,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:
CBC-MAC
HMAC :使用 md5 或 sha1 算法
生成用户密码:
passwd 命令
openssl passwd -1 -salt SALT
例一:生成密码
[root@localhost ~]# openssl passwd -1 -salt 123456789
生成随机数:
openssl rand -base64|-hex NUM
NUM: 表示字节数; -hex 时,每个字符 4 位,出现的字符数为 NUM*2;
公钥加密:
加密:
算法: RSA, ELGamal
工具: gpg, openssl rsautl
数字签名:
算法: RSA, DSA, ELGamal
密钥交换:
算法: dh
DSA: Digital Signature Algorithm
DSS : Digital Signature Standard
RSA :
生成密钥对儿:
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
例一:生成密钥私钥
[root@localhost ~]# openssl genrsa -out rsakey.private 2048 Generating RSA private key, 2048 bit long modulus .+++
# (umask 077; openssl genrsa -out key.pri 2048)
提取出公钥:
# openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout
例一:提取出公钥
[root@localhost ~]# openssl rsa -in rsakey.private -pubout
随机数生成器:
/dev/random :仅从熵池返回随机数;随机数用尽,阻塞;
/dev/urandom :从熵池返回随机数;随机数用尽,会利用软件生成伪随机数;非阻塞;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Python
Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99
Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!