密码学 - 文件



文件加密是指对文件(包括其中包含的任何敏感数据)进行编码以安全传输的过程。编码可防止恶意行为者未经授权访问和篡改。它可以防止除预期接收者以外的任何人查看文件。

例如,如果您在生命科学领域工作,您可能需要可靠的方法来防止创新新设计或突破性药物专利落入竞争对手手中。或者,您可能在媒体领域工作,需要一种可靠的技术来保密最受欢迎的新剧本,以免任何人泄露细节。有时您在法律、银行或其他专业领域工作,您的客户期望您将他们的个人信息保密和安全。

文件加密提供了一种有效的解决方案。它允许您使敏感数据对除授权接收者以外的任何人不可访问。

文件加密如何工作?

文件加密是通过一组复杂的算法完成的。加密文件包含使用加密算法加密的数据。文件在加密后变得不可读,但这只是暂时的。数据使用发送方提供的密钥进行加密。此密钥通常采用密码或口令的形式,例如一串字母数字,允许解密。

只有被授权访问数据的用户才会获得解密密钥。当授权接收者输入正确的密码或口令时,文件再次变得可读。大多数操作系统和文件系统默认允许文件加密。系统安全地保存重要文件,解密密钥允许访问它们。

它经常使用公钥加密,其中密钥对是使用某些难以破解的数学过程生成的。这些密钥对仅分发给预定义的接收者和发送者,从而形成一种用于加密和解密传输中、使用中和静止状态下的数据的锁和钥匙方法。

通过互联网或到便携式设备(如 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。

广告