Linux Services and Security
OpenSSL
OpenSSH
dns:bind
web:http,httpd(apache),php,mariadb(mysql)
lamp
nginx(tengine),lnmp
file server: ftp,nfs,samba
dhcp,pxe
iptables
OpenSSL
NIST
保密性:數據保密性;隱私性
完整性:數據完整性;系統完整性
可用性
安全攻擊:
被動攻擊:竊聽
主動攻擊:僞裝、重放、消息篡改、拒絕服務
安全機制:
加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制
安全服務:
認證
訪問控制
數據保密性
連接保密性
無連接保密性
選擇域保密性
流量保密性
數據完整性
不可否認性
密碼算法和協議
對稱加密
公鑰加密(非對稱加密)
單向加密
認證協議
Linux系統:Openssl ,gpg(pgp)
加密算法和協議:
對稱加密:加密解密使用同一個祕鑰
DES:Data Encrytion Standard,56位祕鑰。但是在2003年被攻破
3DES:
AES:Advanced Encryption Standard(128bits,192bits,258,384,512bits)
Blowfish
Twofish
IDEA
RC6
CAST5
現在常用的3DES AES
特性:
1加密解密使用同一個祕鑰
2將原始數據分割成固定大小的塊,逐個進行加密
缺陷:
1祕鑰過多
2祕鑰分發
公鑰加密:祕鑰是成對出現
公鑰:公開給所有人pubkey
私鑰:自己留存,必須保證私密性secret key
特點:用公鑰加密的數據,只能使用與之配對的私鑰解密
數字簽名:主要在於讓接受方確認發送方身份 DSA RSA
祕鑰交換 發送方用對方的公鑰加密一個對稱祕鑰,併發送給對方
數據加密 RSA 但是極少有人用來數據加密,速度太慢
算法:RSA,DSA,ELGAMAL
單向加密:只能加密,不能解密;提供數據指紋
特性:定長輸出、雪崩效應;
算法:
md5 128bits
sha1 160bits
sha224
sha256
sha384
sha512
功能:完整性
祕鑰交換:IKE
公鑰加密
DH (Deffie-Hallman) (眉眼算法)
A:p, g
B:p, g
A:x
-->p^x%g 給B
B:y
-->p^y%g 給A
A: p^y%g^x=p^xy%g
B: p^x%g^y=p^xy%g
所以公共部分就是祕鑰
PKI:public key infrastructure
簽證機構CA
註冊機構RA
證書吊銷列表CRL
證書存取庫
X.509 定義了證書的結構以及認證協議標準
版本號
序列號
簽名算法ID
發行者名稱
有效期限
主體名稱
主體公鑰
發行者唯一標識
主體的唯一標識
擴展
發行者簽名
SSL:Secure Socket Layer
安全套接字層
TSL: transport layer security
1.2用的最多目前,傳輸層安全
1995:SSL2.0 Netscape
1996: SSL3.0
1999: TLS1.0(傳輸層安全)
2006:TLS1.1 RFC4346
2008:TLS1.2 用得比較多
2015: TLS1.3
分層設計:
1最底層:基礎算法原語的實現:aes,rsa,md5
2向上一層:各種算法的實現
aes-128-cbc-pkcs7
3再向上一層:組合算法實現的半成品
4用各種組件拼裝而成的各種成品密碼學協議/軟件:tls,ssh
OpenSSL開源項目
三個組件
openssl 多用途的命令行工具
libcrypto:公共加密庫
libssl庫,實現了ssl和tls
openssl命令
openssl version 顯示版本號
標準命令、消息摘要命令、加密命令
標準命令
enc,ca,req...
對稱加密:
工具:openssl enc ,gpg
算法:3des,aes,blowfish,twofish
enc命令
eg: openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
加密
openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
輸入密碼 解密
-a 基於本文 -salt 加入雜質 -e 加密 -d 解密
其中 -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 12345678 -1(數字1表示md5)
生成隨機數:
openssl rand -base64 4
openssl rand -hex 4 字符數爲num*2 4*2=8
其中的4表示四個字節,不是長度
公鑰加密
加密:
算法:RSA ELGamal
工具:gpg,openssl rsatul
數字簽名
算法: RSA,DSAT ELGamal
祕鑰交換
算法:dh
DSA:Digital Signature Algorithm
DSS: Digital Signature Standard
RSA:
生成祕鑰對兒:
openssl genrsa -out rsakey.private 2048
生成了2048位的私鑰,
公鑰可以從私鑰中獲取
openssl rsa -in rsakey.private -pubout
還要把權限去掉
chmod og= rsakey.private og表示沒有任何權限
(umask 077;openssl genrsa -out key.pri 2048)
隨機數生成器:
熵池
/dev/random 僅從熵池返回隨機數;隨機數用盡,會發生阻塞
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數。