密碼學 - 檔案



檔案加密是指對檔案(包括其中包含的任何敏感資料)進行編碼以安全傳輸的過程。編碼可防止惡意行為者未經授權訪問和篡改。它可以防止除預期接收者以外的任何人檢視檔案。

例如,如果您在生命科學領域工作,您可能需要可靠的方法來防止創新新設計或突破性藥物專利落入競爭對手手中。或者,您可能在媒體領域工作,需要一種可靠的技術來保密最受歡迎的新劇本,以免任何人洩露細節。有時您在法律、銀行或其他專業領域工作,您的客戶期望您將他們的個人資訊保密和安全。

檔案加密提供了一種有效的解決方案。它允許您使敏感資料對除授權接收者以外的任何人不可訪問。

檔案加密如何工作?

檔案加密是透過一組複雜的演算法完成的。加密檔案包含使用加密演算法加密的資料。檔案在加密後變得不可讀,但這只是暫時的。資料使用傳送方提供的金鑰進行加密。此金鑰通常採用密碼或口令的形式,例如一串字母數字,允許解密。

只有被授權訪問資料的使用者才會獲得解密金鑰。當授權接收者輸入正確的密碼或口令時,檔案再次變得可讀。大多數作業系統和檔案系統預設允許檔案加密。系統安全地儲存重要檔案,解密金鑰允許訪問它們。

它經常使用公鑰加密,其中金鑰對是使用某些難以破解的數學過程生成的。這些金鑰對僅分發給預定義的接收者和傳送者,從而形成一種用於加密和解密傳輸中、使用中和靜止狀態下的資料的鎖和鑰匙方法。

透過網際網路或到行動式裝置(如 USB 驅動器)傳送檔案時,檔案加密非常有用。它在傳輸過程中保護檔案,而檔案在傳輸過程中通常最容易受到攻擊。

加密方法

在開始加密檔案之前,您必須選擇正確的加密方法。您可以從多種選擇中進行選擇 -

  • 檔案級加密 - 使用這種型別的保護,您可以加密單個檔案以更具體地保護它們。此策略非常適合需要額外安全性的檔案或包含敏感資訊的檔案。加密單個檔案使您可以更好地控制訪問許可權,並確保即使一個檔案遭到破壞,其他檔案仍保持受保護狀態。
  • 資料夾級加密 - 加密所有資料夾以及儲存在其中的所有資料是一種更全面的方法。此方法可用於同時保護大量相關檔案。加密資料夾簡化了加密過程,因為它允許您同時保護多個檔案,同時保持其結構和順序。
  • 完整磁碟加密 - 加密整個儲存裝置(如硬碟驅動器或 SSD)會快速加密其上的所有資料和檔案,從而提供全面保護。完整磁碟加密對於行動式裝置(如筆記型電腦)尤其有用,因為它即使在裝置丟失或被盜時也能保護儲存在其上的所有資料。

流行的檔案加密標準

加密檔案共享有很多加密方法。某些方法在特定組織中常用,而其他方法則非常適合特定資料庫。流行的加密標準如下 -

  • AS2、AS3 或 AS4
  • Open PGP
  • PeSIT
  • HTTPS
  • 帶 AES 的 ZIP
  • FTPS(透過 SSL 的檔案傳輸協議)
  • SFTP(SSH 檔案傳輸協議)

為了隱藏訊息,大多數加密演算法會透過替換、置換和其他過程多次過濾資料。

如何加密檔案?

正如我們之前所見,加密通常使用公鑰加密來執行,但需要注意的是,還有幾種不同的型別,每種型別在特定的應用場景中都有其自身的優勢。第一種是非對稱加密,它使用提供給使用者的公鑰和私鑰來確保安全和加密的通訊。公鑰加密檔案,而私鑰(每個使用者不同)則解密那些有意傳送給他們的檔案。非對稱加密通常用於公共網路和網際網路連線上的活動,例如,當用戶使用 WhatsApp 等即時通訊應用程式向朋友傳送圖片時。

而對稱加密則使用單個私鑰對使用者之間傳送的資料進行加密和解密。這會產生一個安全漏洞,因為被盜的私鑰可以快速輕鬆地訪問敏感資料。但當需要一次加密大量資訊時,對稱加密非常有用,例如,當組織將所有資料從一個軟體應用程式或裝置傳輸到另一個時。

用於加密檔案的演算法取決於軟體程式,但常見的方法包括:

  • PGP 和 OpenPGP − PGP 代表“相當好的隱私”(Pretty Good Privacy),由菲爾·齊默曼(Phil Zimmermann)於 20 世紀 90 年代建立,是首批加密通訊方法之一。它使用非對稱加密。由於專利權的原因,PGP 只能透過賽門鐵克的許可才能使用。為了使 PGP 更易於訪問,齊默曼將其原始碼 OpenPGP 公開,供所有組織使用和修改,以建立自己的加密系統。
  • 安全外殼協議 (SSH) − SSH 在其開源版本中也稱為 ssh-keygen 程式。它使用非對稱和對稱加密將 SSH 客戶端連線到 SSH 伺服器。非對稱加密用於初始身份驗證和連線建立,而對稱加密用於維護和保護後續的通訊。SSH 支援多種常用演算法,如 RSA、DSA、ECDSA 和 ED25519。
  • 使用 AES 的 ZIP − 使用 AES 的 ZIP 並非使用對稱加密,而是透過替換置換網路 (SPN) 技術壓縮和加密檔案。根據美國國家標準與技術研究院 (NIST) 的法律規定,SPN 建立的金鑰至少為 128 位長,這使得攻擊者需要遍歷無限數量的變體,可能需要數百萬年才能破解。使用 AES 的 ZIP 提供了當今最強大的加密選項之一。

檔案傳輸加密的作用是什麼?

每個加密標準都為公司資料的隱私和完整性提供了一些不同的保護。例如:

  • Open PGP 加密用於加密、解密和驗證檔案。它透過雜湊、資料壓縮、對稱私鑰加密和非對稱公鑰加密來保護資料。PGP 加密使用軟體工具執行,將普通可讀文字轉換為複雜的不可讀字元程式碼。
  • GPG (GnuPG) 是 Open PGP 標準的替代實現,可以開啟和解密由 PGP 或 Open PGP 加密的檔案。
  • SFTP 使用加密演算法安全地將資料傳輸到您的伺服器,在此過程中保持檔案不可讀。此外,SFTP 還需要身份驗證,以防止在傳輸過程中未經授權訪問檔案。

實現檔案加密和解密

現在我們將藉助 Python 程式語言及其庫來加密和解密加密檔案。我們將使用 Python 的 Cryptography.fernet 模組。此模組用於建立加密金鑰。基本上,我們將使用金鑰實現對稱加密。

要使用 cryptography 模組,我們需要首先使用“pip install cryptography”進行安裝。請參閱下面的程式碼:

from cryptography.fernet import Fernet

def generate_key():
   return Fernet.generate_key()

def encrypt_file(key, input_file, output_file):
   with open(input_file, 'rb') as f:
      data = f.read()

   cipher_suite = Fernet(key)
   encrypted_data = cipher_suite.encrypt(data)

   with open(output_file, 'wb') as f:
      f.write(encrypted_data)

def decrypt_file(key, input_file, output_file):
   with open(input_file, 'rb') as f:
      encrypted_data = f.read()

   cipher_suite = Fernet(key)
   decrypted_data = cipher_suite.decrypt(encrypted_data)

   with open(output_file, 'wb') as f:
      f.write(decrypted_data)

# Function execution
key = generate_key()
input_file = 'plain_text.txt'
encrypted_file = 'encrypted_file.txt'
decrypted_file = 'decrypted_file.txt'

encrypt_file(key, input_file, encrypted_file)
decrypt_file(key, encrypted_file, decrypted_file)

首先建立一個文字檔案,我們將在其中建立明文,並將其命名為 plain_text.txt。要執行上述程式碼,請轉到儲存程式和 plain_text.txt 檔案的目錄,然後使用“python file_encryption.py”執行程式。此處 file_encryption.py 是我們的檔名。因此,執行程式碼後,您將在 Python 程式所在的同一資料夾中看到兩個已建立的文字檔案。第一個檔案是 encrypted_file.txt,第二個檔案是 decrypted_file.txt。

輸入

#plain_text.txt 
Cryptography - Image
Cryptography - File
Steganography - Image

輸出

#encrypted_file.txt 
gAAAAABmOK54sMc5plvajOUICbeR5OCGfC7C_2ZWZVOYwU0SSWM1V4qkZcYR4kWpE4u1HvsQmbjkCwLOBGbrs0gIt6s4eXnSP06xsjryhD1CqhylQaFsWiFQ8K78uOb8DPSAIF2Aw3vFrPbIviO29b6LPFjBz39_MQ==
Output

檔案加密的未來

檔案加密將越來越依賴於無密碼和無金鑰身份驗證,這有幾個好處。首先,它透過消除使用者記憶複雜密碼或手動管理金鑰的需要來提高可用性。這允許無限訪問資訊。其次,它透過消除處理密碼和金鑰的需要為 IT 部門節省資金和精力。無密碼身份驗證最大程度地減少了管理任務和成本。第三,它透過降低密碼或金鑰落入惡意之手的可能性來提高安全性。總的來說,無密碼和無金鑰身份驗證將在未來提供一種更高效、更具成本效益和更安全的檔案加密方法。

哪些檔案可以加密?

幾乎所有型別的檔案都可以加密,例如文字檔案、電子郵件、資料檔案、目錄,甚至磁碟分割槽。加密軟體可以在各種平臺上使用,包括基於雲的和本地部署的,例如 Windows、VMware、Linux、Azure、IBM i、AIX、UNIX 和 Mac OS。

廣告