1. 程式人生 > >加密與解密

加密與解密

加密與解密

安全與服務:

數據的加密和解密:

OpenSSL(TLS):ssl基本被淘汰,TLS取而代之

openssh:dropbear軟件

DNS:BIND軟件,功能強大,伯克利的

web server:網站服務,最重要的,工作重點

應用程序:httpd(ASF:apach軟件基金會維護)

engine x(Nginx):引擎,web服務平臺,第二,僅次於apach

--tengine (淘寶二次開發產品)

--openresty(二次開發產品)

web archive(平臺架構方式)

LAMP:linux+apach+mariaDB開源(MySQL閉源)+php(紀要會用包安裝,也要回編譯安裝)

LNMP:linux+Nginx+mariaDB(MySQL)+php(紀要會用包安裝,也要回編譯安裝)


LAMT:linux+apach+mariaDB(MySQL)+Tomcat(開源)(weblogic,websphare閉源)

LNMT:linux+Nginx+mariaDB(MySQL)+Tomcat(開源)


文件服務器: 郵件服務器:postfix,dovecot

FTP:

Samba:共享文件夾

NFS:Windows不行,內核函數不公開


DHCP,PXE,Cobbler:


防火墻:

在Linux2.6版本之前:iptables、netfilter

Linux3.0之後:nftables


SELinux:


sudo,awk,pam,nsswitch










數據的加密和解密:

進程間的通信:

同一主機內的進程間通信:

signal

shm

semaphore

message queue,MQ,RabbitMQ

不同主機之間的進程間通信:

Socket-pair,套接字對兒;


三種進程的socket:

流套接字:基於TCP

數據報套接字:基於UDP

裸套接字、原始套接字:基於底層協議


套接字:IP:PORT

進程的地址標識

一個套接字就是指某個特定主機的特定應用程序

大多數情況下都是從客戶端到服務器的通信:對於服務器來說必須有套接字監聽機制,而通常我們可以吧這個監聽進程稱為守護進程,或者叫服務進程

服務進程所監聽的套接字資源,是在其啟動之前向內核申請的,套接字資源是所有服務資源的獨占資源,具有排他性

端口號:

0:默認沒有被使用

1-1023:眾所周知的端口,固定端口

1024-49151:註冊端口:

MySQL:3306

nemcached:11211

49152-65535:動態端口,為客戶端進程提供的隨機選擇端口


安全視線的目標:

機密性:confidentiality,保證信息不泄露

完整性:intagrity,保證信息不被篡改

可用性:availability,保證信息內在價值


威脅安全的行為:

威脅機密性的攻擊行為:竊聽、嗅探、掃描、通信量分析

威脅完整性的攻擊行為:更改、偽裝、重放、否認

威脅可用性的攻擊行為:拒絕服務(DoS)


安全解決方案:

技術:加密和解密

傳統的加密算法:

替代加密算法

置換加密算法

現代的加密算法:

塊加密算法

服務:安全服務:

身份認證:

訪問控制機制:

加密方案:

加密算法和秘鑰:

加密算法:

對稱加密算法:

公鑰加密算法:

對稱加密算法:

加密和解密使用統一秘鑰

特性:相同秘鑰、分塊加密、速度較快

缺陷:保留的秘鑰數量過多、密鑰分發過於困難

主流加密算法:

DES:數據加密標準

NSA:3DES:

AES:高級加密標準:

biowfish

twofish

IDEA

RCA、RC6

公鑰加密算法:

密鑰分為私鑰和由私鑰抽取的公鑰組成

私鑰:512bit、1024、2048、4096、8192、16384bit特定工具生成

用途:數字簽名、密鑰交換、數據加密

特點:密鑰對加密、密鑰長、安全高

缺點:消耗資源時間較多,很少用來加密大數據

數字簽名:用於接收方確認身份

密鑰交換:

常用的公鑰加密算法:

RSA:加密、數字簽名

DSA:數字簽名,有時被稱為DSS(數字簽名標準)

ELgamal:

單向加密算法:只能進行加密,不能解密;從已知數據中提取密碼指紋

特性:定長輸出、雪崩效應

功能:完整性

常用算法:md5(128位定長輸出)、sha系列安全哈希算法(sha-1\sha224\sha256\sha384\sha512,160位定長輸出)用$#表示長度1,2,3,···

密鑰交換算法:IKE

公鑰加密:

DH算法:Deffie-Hellman

A:p, g

B:p, g


A:x

B:y


A:p^x%g ----> B:(p^x%g)^y == p^xy%g

B:p^y%g ----> A:(p^y%g)^x == p^yx%g


加密算法的聯合應用:

1、交換證書,CA驗證

2、某種對稱算法加密數據,加密後的數據進行單向加密記錄特征值,發送方用私鑰加密特征值以證明來源可靠發送方使用對方公鑰加密對稱秘鑰

3、接收方私鑰解密對稱秘鑰,公鑰解密特征值,在進行單向加密重新加密特征值,比較兩個特征值,解密出來的對稱密鑰解密出原始數據


國際標準化組織(ISO)定義了證書的結構和認證標準,x.509協議標準

證書裏面通常包含哪些內容:

擁有者的名稱:

擁有者所提交的公鑰:

有效期:

證書的版本號:

證書的序列號:

簽發算法ID:

簽發CA的名稱:

主體名稱:

發睜著的唯一標識:

發睜著的數字簽名:

擴展信息:


PKI:公鑰基礎設施

證書的簽證機構:CA

註冊機構:RA

證書吊銷列表:CRL

證書存取庫:CAB


CA如何發揮其作用:

1、通信雙方互相交換證書

2、雙方協商加密算法

3、雙方驗證證書的加密算法

4、用CA的公鑰去解密CA證書的簽名,能解密說明證書來源可靠

5、用同樣的算法加密證書,取得特征值,與解密出來的特征值比較,證明證書完整性可靠

6、檢查證書有效期是否合法,國企則證書不被認可

7、檢查證書的主體名稱和此次通信的目標是否能夠對應


SSL:安全套接字層協議

94年網景公司最先發明

微軟發現漏洞,不用了

TLS:傳輸層安全協議

IETF(互聯網工程項目小組):於1999年提出

分層設計:

1、最底層:實現基礎算法的原語的實現:AES、md5、sha……

2、向上一層:各種算法的基本實現

3、再向上一層:各種算法組合實現的半成品

4、最高層:用各種組件拼成的各種密碼學協議軟件


SSL/TLS握手的四個階段:

1.客戶端向服務器索要證書並驗證證書;

Client Hello發送的信息內容:

支持的協議的版本,如:TLS V1.2;

客戶端生成一個隨機數,稍後用於生成會話密鑰;

支持的加密算法,如:AES,DES,RSA等;

支持的壓縮算法;


2.雙方協商生成會話密鑰;

Server Hello發送的信息內容:

確認使用的加密協議的版本號,如:TLS V1.2;

服務器生成一個隨機數,稍後用於生成會話密鑰;

確認加密算法及壓縮算法;


3.雙方采用已經生成的會話密鑰進行安全加密的通信;

客戶端驗證服務器證書,在確認無誤後,取出其公鑰;


驗證服務器證書需要驗證下述內容:

驗證發證機構(CA);

驗證證書的完整性;

驗證證書的持有者信息;

驗證證書的有效期;

驗證證書的吊銷列表;


客戶端發送信息給服務器端:

一個隨機數,用於服務器上的公鑰加密;

編碼格式變更通知,表示隨後的信息都將用雙方已經協商好的加密算法和密鑰進行加密發送;


客戶端握手結束;


4.雙方互相通告握手結束的信息;

服務器收到客戶端發送來的此次握手階段的第三個隨機數Pre-Master_key;計算生成本次會話所用到的會話密鑰,向客戶端發送相關信息:

編碼變更通知,表示隨後的信息都將用雙方已經協商好的加密算法和密鑰進行加密發送;


服務器端握手結束;


要想實現加密的功能,依賴於應用程序;

OpenSSL,gpg


加密與解密