資料的加密和解密初識
加密是讓資料從明文變成密文,傳輸過程中是密文,傳送過去之後對方接收到的也是密文。
可以理解為密文就是亂碼,看不出內在的任何意義,通常也都是逐位對應的。
在接收方接收到密文之後只有把它還原為原來的樣子才可以理解對方說的具體是什麼,此過程就叫做解密。
1.不同主機之間的程式間通訊:Socket-pair,套接字對
套接字Socket的三種型別:
流套接字(Socket_Stream):基於TCP協議通訊的套接字
資料包套接字(Socket_Dgram):基於UDP協議通訊的套接字
裸套接字,原始套接字(Socket_Ram):基於底層協議通訊的套接字
2.威脅安全的行為:
威脅機密性的攻擊行為:
竊聽、嗅探、掃描、通訊量分析
威脅完整性的攻擊:
更改、偽裝、重放、否認
威脅可用性的攻擊:
拒絕服務(DoS)
3.安全實現的目標:
機密性:confidentiality,保證資訊不洩露
完整性:integrity,保證資訊不被篡改
可用性:availability,保證資訊內在價值
4.安全解決方案:
技術:加密和解密
傳統的加密方法:替代加密演算法
現代的加密方法:塊加密方法:
服務:安全服務
身份認證、訪問控制機制
5.加密方案:
加密演算法和金鑰
加密演算法
四種加密演算法:
對稱加密演算法
公鑰加密演算法(非對稱加密)
單向加密演算法
金鑰交換演算法
1)對稱加密演算法:
加密和解密使用同一金鑰
特性:
1.每對通訊主機都需要保有一個相同的金鑰,用於加密和解密
2.將原始的資料分隔成固定大小的塊,逐個加密
3.加密和解密的速度比較快
缺陷:
1.加密解密所需要保有的金鑰數量過多
2.金鑰分發過於困難
主流加密演算法:
DES:Data Encryption Standard,資料加密標準
56bit金鑰,64bit塊
3DES:triple DES
AES:Advanced Encryption Standard高階加密標準
AES128bit,AES192bit,AES256bit
Blowfish
Twofish
IDEA
RC
RC4,RC6
2)公鑰加密演算法:
金鑰分為私鑰和私鑰抽取生成的公鑰組成
私鑰:512bit,1024bit,2048bit,4096bit,8192bit,16384bit
特點:
1.使用金鑰對來加密和解密,使用私鑰加密的資料必須用從中抽取出的公鑰解密,同樣如果使用公鑰加密必須使用與之相對的私鑰進行解密
私鑰:通過特定的工具建立生成,由使用者自己留存,務必保證其私密性,secret key,或者private key
公鑰:從私鑰中提取產生,公鑰可以公開給所有人使用public key
2.金鑰長度比較長,加密後的資料安全等級較高
缺陷:
加密資料的時候,消耗的系統資源和時間都較多,很少用來加密大批量資料
用途:
數字簽名:主要用於讓接收方確認傳送方的身份,使用傳送方的私鑰傳送資料,到了接收方之後,使用傳送方的公鑰解密資料
金鑰交換:傳送資料的一方使用接受方的公鑰加密對稱金鑰,將加密後的對稱金鑰傳送給對方
資料加密:通常用於加密小資料
常用的公鑰加密演算法:
RSA:加密,數字簽名
DSA:數字簽名演算法,Digital signature Algorithm,數字簽名演算法,只能實現數字簽名的功能,有時候該演算法被稱為DSS,Digital Signature Standard
Elgamal:
3)單項加密:
只能進行加密,不能進行解密,從已知資料中提取密碼指紋
特性:
1.定長輸出
2.雪崩效應
功能:
保證資料的完整性
常用的演算法:
md5:massage digest version 5 ,資訊摘要演算法的第五版
128bit定長輸出
sha系列:
sha-1:secure hash algorithm,安全雜湊演算法,160bit定長輸出
sha224
ssh256
ssh384
ssh512
4)金鑰交換演算法:IKE(Internet key exchange)
公鑰加密
DH演算法:deffie-hellman
金鑰
國際標準化組織(ISO)定義了證書的結構和認證標準:X.509協議標準
證書裡面包括的:
擁有者的名稱
擁有者所提交的公鑰資訊
有效期
證書的版本號
證書的序列號
簽發演算法ID
簽發CA的名稱
主體名稱
簽發機構的唯一標識
簽發機構的數字簽名
擴充套件資訊
PKI:public key infrastructure,公鑰基礎設施
證書的簽證機構:CA
序號產生器構:RA
證書吊銷列表:CRL,certification Revoke List
證書存取庫:CAB,certification Access Base
CA如何發揮其作用:
1.通訊雙方互相交換證書,
2.雙方協商加密演算法
3.雙方驗證證書的真偽
4.CA的公鑰解密證書的CA的簽名,能解密說明證書來源可靠
5.同樣的加密演算法加密證書,取得特徵值,與解密出來的特徵值比較,如果相同說明證書完整性可靠
6.檢查證書的有效期是否在合法範圍內,如果過期則證書不被認可
7.檢查證書的主體名稱和此次通訊的目標是否能夠對應
SSL:Secure Socket Layer,安全的套接字層
TLS:Transport Layer Security,傳輸層安全
IETF:Internet Engineering Task Force,網際網路工程專案小組
分層設計:
1.最底層:實現基礎演算法的原語的實現,AES,md5,sha…
2.向上一層:各種演算法的基本實現
3.再向上一層:各種演算法組合實現的半成品
4.最高層:各種元件拼裝而成的各種成品密碼學協議軟體
SSL/TLS的handshake(握手)的四個階段:
1.客戶端向伺服器索要證書,並驗證證書是否合法
Client Hello傳送的資訊內容
支援的協議版本,如:TLS V1.2
客戶端生成一個隨機數,稍後使用者生成會話金鑰
支援的加密演算法,如:AES,DES,RSA等
支援的壓縮演算法
2.雙方協商生成會話金鑰
Server Hello傳送的資訊內容
確認使用的加密協議的版本號,如 TLS V1.2
伺服器生成一個隨機數,稍後用於生成會話金鑰
確認加密演算法及壓縮演算法
3.雙方採用已經生成的會話金鑰進行安全加密的通訊
客戶端驗證伺服器證書,在確認無誤後取出其公鑰
驗證伺服器證書需要驗證下述內容:
驗證發證機構(CA)
驗證證書的完整性
驗證證書的持有者資訊
驗證證書的有效期
驗證證書的吊銷列表
客戶端傳送資訊給伺服器端
一個隨機數,用於伺服器上的公鑰加密
編碼格式變更的通知,表示隨後的資訊都將用雙方已經協商好的加密演算法和祕鑰進行加密傳送
客戶端握手結束
4.雙方互相通告握手結束的資訊
伺服器收到客戶端傳送來的此次握手階段的第三個隨機數Pre-Master-key,計算生成本次會話所用到的會話金鑰,向客戶端傳送相關資訊
編碼變更通知,表示隨後的資訊都將用雙方已經協商好的加密演算法和金鑰進行加密傳送,
伺服器端握手結束
本文轉自 Runs_ 51CTO部落格,原文連結:http://blog.51cto.com/12667170/1953488,如需轉載請自行聯絡原作者
相關文章
- Flutter 的加密和解密資料Flutter加密解密
- win10加密資料夾如何解密_win10已加密的資料夾如何解密Win10加密解密
- php和.net 的加密解密PHP加密解密
- java使用DES加密方式,實現對資料的加密解密Java加密解密
- dbms_obfuscation_toolkit(資料加密解密)加密解密
- java實現DES資料加密與解密Java加密解密
- 淺談貝貝遊戲資料加密解密方式遊戲加密解密
- 後臺對Json資料加密、解密JSON加密解密
- 初識大資料大資料
- 在PHP中使用AES加密演算法加密資料及解密資料PHP加密演算法解密
- AES實現財務資料的加密解密儲存加密解密
- 如何在Python中加密和解密資料Python加密解密
- Oracle對資料進行加密&解密處理Oracle加密解密
- 資料結構初識資料結構
- 【mySql資料庫初識】MySql資料庫
- MySQL資料庫初識——初窺MySQLMySql資料庫
- 加密解密加密解密
- 小程式加密資料解密演算法java版加密解密演算法Java
- iOS中使用RSA對資料進行加密解密iOS加密解密
- 初識時序資料庫資料庫
- 初識達夢資料庫資料庫
- 三、資料型別初識資料型別
- 資料庫介紹--初識資料庫資料庫
- 影像的加密與解密加密解密
- PHP加密解密PHP加密解密
- js加密解密JS加密解密
- Unity 加密解密Unity加密解密
- Java加密解密Java加密解密
- Oracle ----加密解密Oracle加密解密
- AES 加密&解密加密解密
- AES加密解密加密解密
- 資料加密(對稱加密和非對稱加密)加密
- JavaScript前端和Java後端的AES加密和解密JavaScript前端後端加密解密
- python實現aes加密解密,RSA簽名和驗籤,RSA加密解密,並呼叫介面Python加密解密
- Java中的加密與解密Java加密解密
- JAVA和C# 3DES加密解密JavaC#3D加密解密
- php mcrypt 加密 解密PHP加密解密
- RSA加密與解密加密解密