天天看點

Linux-安全與加密算法

作者:不寐旋律

#頭條創作挑戰賽#

1 安全機制

安全機制是保護資訊和系統免受未經授權通路、損壞或篡改的方法和措施。在計算機領域,安全機制是確定資料和系統的機密性、完整性和可用性的關鍵組成部分。

Linux-安全與加密算法

1.1 墨菲定律

墨菲定律是一條經驗法則,它指出"如果有什麼可能出錯的地方,那麼它就一定會出錯"。在資訊安全領域,墨菲定律提醒我們要時刻警惕潛在的安全風險和漏洞,并采取相應的措施來預防和應對。

主要内容:

  • 任何事都沒有表面看起來那麼簡單
  • 所有的事都會比你預計的時間長
  • 事物出錯的不可預測性和不可避免性
  • 如果你擔心某種情況發生,那麼它就更有可能發生

1.2 資訊安全防護的目标

資訊安全防護的目标是確定資訊的機密性、完整性和可用性(Usability)。機密性(Confidentiality)指的是隻有授權的使用者才能通路敏感資訊,完整性(Integrity)指的是資訊在傳輸和存儲過程中不被篡改,可用性指的是資訊始終可供合法使用者通路和使用。

  • 可控制性 Controlability
  • 不可否認性 Non-repudiation

1.3 安全防護環節

  • 實體安全:各種裝置/主機、機房環境
  • 系統安全:主機或裝置的作業系統
  • 應用安全:各種網絡服務、應用程式
  • 網絡安全:對網絡通路的控制、防火牆規則
  • 資料安全:資訊的備份與恢複、加密解密
  • 管理安全:各種保障性的規範、流程、方法
Linux-安全與加密算法
  • 身份驗證和通路控制:確定隻有授權使用者能夠通路系統和資料。
  • 加密和解密:使用加密算法保護敏感資訊的機密性。
  • 審計和日志記錄:記錄系統和使用者活動,以便追蹤和分析安全事件。
  • 漏洞管理和更新檔更新:及時修補系統和應用程式的漏洞,以防止被攻擊。
  • 網絡安全和防火牆:保護網絡免受未經授權的通路和攻擊。
  • 資料備份和恢複:定期備份資料,并確定能夠快速恢複系統和資料。

1.4 常見的安全攻擊STRIDE

STRIDE 是一種常見的安全威脅模型,用于識别和分類安全攻擊

  • Spoofing(僞裝):攻擊者冒充合法使用者或系統,擷取未經授權的通路權限。
  • Tampering(篡改):攻擊者修改資料或系統配置,以達到破壞或欺騙的目的。
  • Repudiation(抵賴):攻擊者否認自己的行為,使其無法被追蹤和追究責任。
  • Information Disclosure(資訊洩露):攻擊者擷取未經授權的敏感資訊。
  • Denial of Service(拒絕服務):攻擊者通過超載系統或網絡,使其無法正常運作。
  • Elevation of Privilege(提權):攻擊者擷取比其授權級别更高的權限,進而執行未經授權的操作。

1.5 安全設計基本原則

  • 最小權限原則:給予使用者和系統的權限應限制在完成其任務所需的最低權限級别。
  • 分層原則:将系統劃分為多個層次,每個層次都有特定的功能和權限。
  • 防禦性程式設計原則:在設計和編寫代碼時,考慮可能的安全漏洞和攻擊方式,并采取相應的防禦措施。
  • 安全審計原則:系統應具備安全審計功能,記錄和監控使用者的操作行為、系統事件和安全事件。
  • 安全性與便利性的平衡原則:綜合考慮安全性和使用者便利性之間的平衡。
  • 持續更新和改進原則:定期進行安全評估和漏洞掃描,并及時修複和改進發現的安全問題。
  • 安全教育訓練和意識原則:提供安全教育訓練和意識活動,使使用者和開發人員了解安全最佳實踐和風險。
  • 安全政策和規範原則:制定明确的安全政策和規範,規定系統和使用者的安全行為準則。
  • 安全測試和驗證原則:進行系統的安全測試和驗證,確定系統在各種情況下都能保持安全。
  • 災難恢複和業務連續性原則:制定災難恢複計劃和業務連續性計劃,以應對可能的安全事件和系統故障。
Linux-安全與加密算法

1.6 常用安全技術

  • 加密技術:用于将敏感資料轉化為密文,以保護資料的機密性。常見的加密技術包括對稱加密算法(如AES)、非對稱加密算法(如RSA)和哈希函數(如SHA-256)。
  • 通路控制技術:用于限制和管理使用者對系統資源的通路權限。常見的通路控制技術包括身份驗證、授權和權限管理。
  • 防火牆技術:用于監控和過濾網絡流量,以阻止未經授權的通路和惡意攻擊。防火牆可以根據預設的規則來允許或拒絕特定的網絡連接配接。
  • 入侵檢測和防禦系統(IDS/IPS):用于監測和防禦網絡中的入侵行為。入侵檢測系統(IDS)可以檢測到潛在的入侵事件,而入侵防禦系統(IPS)可以主動阻止入侵行為。
  • 漏洞掃描技術:用于檢測系統和應用程式中的安全漏洞。漏洞掃描器可以自動掃描系統,并提供關于潛在漏洞的報告,以便及時修複。
  • 安全資訊和事件管理(SIEM):用于集中管理和分析系統和網絡中的安全事件和日志資訊。SIEM系統可以幫助及時發現和響應安全事件,并提供安全事件的可視化和報告。
  • 蜜罐技術:用于誘騙攻擊者,将其引導到特制的虛拟環境中,以便監測和分析攻擊行為。蜜罐可以幫助了解攻擊者的政策和手段,并提供有關新型攻擊的情報。
  • 安全認證和身份管理技術:用于管理使用者的身份和通路權限。安全認證技術包括多因素身份驗證和單點登入(SSO),而身份管理技術包括使用者賬号管理和權限配置設定。
  • 安全編碼和開發實踐:在軟體開發過程中采用安全編碼和開發實踐,以減少安全漏洞的出現。這包括輸入驗證、輸出編碼、錯誤處理和安全測試等。
  • 實體安全技術:用于保護實體裝置和設施的安全。實體安全技術包括視訊監控、門禁系統、生物識别和安全鎖等。

1.7 加密算法和協定

  • 對稱加密
  • 非對稱(公鑰)加密
  • 單向加密
  • 認證協定

1.7.1 對稱加密算法

Linux-安全與加密算法

對稱加密:加密和解密使用同一個密鑰

特性:

  • 加密、解密使用同一個密鑰,效率高
  • 将原始資料分割成固定大小的塊,逐個進行加密

缺陷:

  • 密鑰過多
  • 密鑰分發
  • 資料來源無法确認

常見對稱加密算法:

  • AES(Advanced Encryption Standard):是目前最常用的對稱加密算法之一,支援不同的密鑰長度(128位、192位和256位),被廣泛應用于各種安全通信和資料保護場景。
  • DES(Data Encryption Standard):是一種較早期的對稱加密算法,使用56位密鑰,已經逐漸被更安全的算法所取代,但仍然在某些遺留系統中使用。
  • 3DES(Triple Data Encryption Standard):是對DES算法的改進,通過多次應用DES算法來增加安全性。它使用3個56位密鑰,提供更高的安全性,但速度較慢。
  • RC4(Rivest Cipher 4):是一種流密碼算法,被廣泛應用于網絡通信和無線通信中。然而,由于其存在一些安全性問題,如密鑰重用和偏差攻擊,已經不再推薦使用。
  • Blowfish:是一種快速的對稱加密算法,支援可變長度的密鑰(32位到448位),被廣泛應用于各種加密應用和協定中。
  • IDEA(International Data Encryption Algorithm):是一種對稱加密算法,使用128位密鑰,被廣泛應用于電子郵件和虛拟私人網絡(VPN)等領域。

1.7.2 非對稱加密算法

1.7.2.1 非對稱加密算法介紹

非對稱加密:密鑰是成對出現

  • 公鑰:public key,公開給所有人,主要給别人加密使用
  • 私鑰:secret key,private key 自己留存,必須保證其私密性,用于自已加密簽名
  • 特點:用公鑰加密資料,隻能使用與之配對的私鑰解密;反之亦然

功能:

  • 資料加密:适合加密較小資料,比如: 加密對稱密鑰
  • 數字簽名:主要在于讓接收方确認發送方身份

缺點:

  • 密鑰長,算法複雜
  • 加密解密效率低下

常見算法:

  • RSA:由 RSA 公司發明,是一個支援變長密鑰的公共密鑰算法,需要加密的檔案塊的長度也是可變的,可實作加密和數字簽名
  • DSA(Digital Signature Algorithm):數字簽名算法,是一種标準的 DSS(數字簽名标準)
  • ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學,比RSA加密算法使用更小的密鑰,提供相當的或更高等級的安全

1.7.2.2 非對稱加密實作加密

Linux-安全與加密算法

接收者

  • 生成公鑰/密鑰對:P和S
  • 公開公鑰P,保密密鑰S

發送者

  • 使用接收者的公鑰來加密消息M
  • 将P(M)發送給接收者

接收者

  • 使用密鑰S來解密:M=S(P(M))

1.7.2.3 非對稱加密實作數字簽名

Linux-安全與加密算法

發送者

  • 生成公鑰/密鑰對:P和S
  • 公開公鑰P,保密密鑰S
  • 使用密鑰S來加密消息M
  • 發送給接收者S(M)

接收者

  • 使用發送者的公鑰來解密M=P(S(M))

1.7.2.4 RSA和DSA

RSA(Rivest-Shamir-Adleman)和DSA(Digital Signature Algorithm)是兩種常見的非對稱加密算法和數字簽名算法。

RSA算法:

  • RSA算法是一種基于大數分解的非對稱加密算法,由Rivest、Shamir和Adleman于1977年提出。
  • RSA算法使用兩個密鑰,一個公鑰用于加密,一個私鑰用于解密。公鑰可以公開,而私鑰必須保密。
  • RSA算法的安全性基于大數分解的困難性,即将一個大的合數分解為其質因數的難度。
  • RSA算法廣泛應用于資料加密、數字簽名、密鑰交換等領域。

DSA算法:

  • DSA算法是一種基于離散對數問題的非對稱加密算法和數字簽名算法,由美國國家标準與技術研究院(NIST)于1994年釋出
  • DSA算法主要用于數字簽名,用于驗證資料的完整性和身份認證。
  • DSA算法使用兩個密鑰,一個私鑰用于簽名,一個公鑰用于驗證簽名。私鑰必須保密,而公鑰可以公開。
  • DSA算法的安全性基于離散對數問題的困難性,即在有限域上找到離散對數的難度。
  • DSA算法在數字簽名領域被廣泛應用,特别是在安全性要求較高的場景,如電子商務、數字證書和身份認證等。

RSA和DSA都是非對稱加密算法,它們在加密和數字簽名方面有不同的應用。RSA算法适用于加密和密鑰交換,而DSA算法适用于數字簽名和身份認證。選擇使用哪種算法取決于具體的安全需求和應用場景。

Linux-安全與加密算法

1.7.3 使用gpg實作對稱和非對稱加密

1.7.3 1 實作對稱加密

對稱加密file檔案

gpg -c file           

在另一台主機上解密file

gpg -o file -d file.gpg           

1.7.3.2 實作公鑰加密

目标:在hostB主機上用公鑰加密,在hostA主機上解密 B ---> A

在hostA主機上生成公鑰/私鑰對

gpg --gen-key           

在hostA主機上檢視公鑰

gpg --list-keys           

在hostA主機上導出公鑰到zhang.pubkey

gpg -a --export -o zhang.pubkey           

從hostA主機上複制公鑰檔案到需加密的B主機上

scp zhang.pubkey hostB:           

在需加密資料的hostB主機上生成公鑰/私鑰對

gpg --list-keys
gpg --gen-key            

在hostB主機上導入公鑰

gpg --import zhang.pubkey
gpg --list-keys           

用從hostA主機導入的公鑰,加密hostB主機的檔案file,生成file.gpg

gpg -e -r zhangdada file 
file file.gpg           

複制加密檔案到hostA主機

scp fstab.gpg hostA:           

在hostA主機解密檔案

gpg -d file.gpg  
gpg -o file -d file.gpg           

删除公鑰和私鑰

gpg --delete-keys zhangdada
gpg --delete-secret-keys zhangdada           

1.7.4 單向雜湊演算法

雜湊演算法是一種将任意長度的資料映射為固定長度的哈希值的算法,也稱為雜湊演算法,将任意資料縮小成固定大小的“指紋”,稱為digest

特性:

  • 一緻性:相同的輸入始終産生相同的哈希值
  • 高效性:計算速度快
  • 不可逆性:無法從哈希值推導出原始資料
  • 抗碰撞性:不同的輸入具有較低的機率産生相同的哈希值

雜湊演算法的主要功能包括:

  • 資料完整性校驗
  • 密碼存儲
  • 資料索引
  • 唯一辨別

常見的雜湊演算法包括:

  • MD5
  • SHA-1
  • SHA-256
  • SHA-3

常用的雜湊演算法工具包括:

  • OpenSSL、gpg
  • Hashcat
  • John the Ripper
  • md5sum | sha1sum [ --check ] file
  • rpm -V

數字簽名

Linux-安全與加密算法
  • RPM 檔案完整性
  • rpm --verify package_name (or -V)
  • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
  • rpm --checksig pakage_file_name (or -K)

1.7.5 綜合應用多種加密算法

1.7.5.1 實作資料加密

實作資料加密,無法驗證資料完整性和來源

Linux-安全與加密算法

1.7.5.2 實作數字簽名

不加密資料,可以保證資料來源的可靠性、資料的完整性和一緻性

Linux-安全與加密算法

1.7.6 密碼交換

密鑰交換:IKE( Internet Key Exchange )

  • 公鑰加密:用目标的公鑰加密對稱密鑰
  • DH (Deffie-Hellman):生成對稱(會話)密鑰,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年發表

參看:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

DH 實作過程

A: g,p 協商生成公開的整數g, 大素數p
B: g,p
A:生成隐私資料:a (a<p),計算得出 g^a%p,發送給B
B:生成隐私資料:b,(b<p),計算得出 g^b%p,發送給A
A:計算得出 [(g^b%p)^a] %p = g^ab%p,生成為密鑰
B:計算得出 [(g^a%p)^b] %p = g^ab%p,生成為密鑰           

案例:

g=23
p=5

A:a=6
23^6%5=4

2^6%5=4

B:b=15
23^15%5=2

4^15%5

[root@centos8 ~]#echo 23^15%5|bc
2
[root@centos8 ~]#echo 23^6%5|bc
4

[root@centos8 ~]#echo 2^6%5|bc
4
[root@centos8 ~]#echo 4^15%5|bc
4           
Linux-安全與加密算法