我有一些 PDF 文件需要安全地存储在我的 Mac(MacBook Air 2011、OSX Lion)上。我快速搜索了一下加密软件,结果让我产生了几个疑问。首先是关于加密软件:它似乎使用一种选择的算法来加密你的文件,我想知道哪种是最安全的?安全程度如何是真的吗?因为我对加密(PHP 密码加密等)的(基本)理解告诉我,如果加密文件可以再次解密,那么从定义上讲它就不那么安全(算法可以“逆转”)。那么最安全的方法是什么?
还有一件事。我发现有些人使用终端隐藏文件,方法是在文件名前加一个点,这样它就不会显示在正常的用户界面上。这对我来说很奇怪,因为它还是显示在终端上。如果你们能给我指明正确的方向,我将不胜感激!
答案1
正如您所说,最好的选择是同时进行,即加密文件,然后隐藏它。最好的选择是使用磁盘映像,它可以用作 Finder 中的目录,以便于访问(安装时)。
使用“磁盘工具”创建 DMG 映像(位于 /Applications/Utilities/,或使用 Spotlight)。为此,单击文件 > 新建 > 空白磁盘映像。然后您可以选择大小(选择足够大以满足您的需求)和加密(128 位或 256 位 AES)。为其命名并指定存储位置,就可以了。
使用终端,您可以使用以下命令重命名文件(假设图像保存在您的文档文件夹中)
mv ~/Documents/myImage.dmg ~/Documents/.myImage
每次你需要访问你的图像时,你可以从终端执行
open ~/Documents/.myImage
系统将提示您输入密码,然后您就可以像往常一样在 Finder 中使用磁盘映像。您可以使用任何您想要的名称。
为了更安全,你需要清除历史记录,这样就没有人能看到你输入的打开图像的命令(这会显示其位置)
history -c && rm -f ~/.bash_history
此外,当卸载映像时,请确保在“磁盘工具”左侧窗格中删除其链接。
答案2
隐写术是一种糟糕的安全保护方式。虽然它可以增加一层保护,保护计算机上的文件不被非技术用户获取,但它对其他人来说毫无安全性。大多数取证应用程序会搜索原始数据中的文件头并分析文件大小等。因此,例如,如果您要将 pdf 文件隐藏在 jpg 中,这对于搜索 pdf 标题的人来说毫无用处。(如果图片大小为 25MB,尺寸为 320px x 320px,那么它可能也会被注意到……)从本质上讲,在现代计算中,速记技术对于现代取证技术来说是无用的。此外,在文件前添加“.”并不能隐藏它,它只允许过滤掉点文件的过滤器将其过滤掉。如果您专门要求,您仍然可以找到这些文件。
至于 AES、Blowfish、Rijndael 或其他算法的强度,它们的安全性有限。无论别人怎么说,这些算法都不是牢不可破的,也从未被设计成牢不可破。你说得对,加密(通常)依赖于一种可以逆转的算法;然而,要逆转它们需要大量的处理工作——比目前可能或可能计算素数并检索原始密钥的工作量还要多。
思考加密的一个好方法是问自己,“我的数据值多少钱?”和“别人会付出多少努力来获取它?”。
如果您想隐藏核发射代码,那么将它们弹出到受密码保护的 zip 文件中的文本文件中是不够的。
这仅有的被许多人认为不可破解的加密是一次性垫。
那么,我该如何隐藏我的东西?
我建议你下载Truecrypt创建一个大容器,适合存放所有想要隐藏的文件 - 然后添加 30%-50%。创建容器后,将 30%-50% 的文件放入其中,这些文件可能被别人认为很重要,但实际上毫无价值。这些文件将充当您的转移文件 - 如果您被迫透露密码,它们将是一个诱饵。
设置完成后,创建另一个隐第一个容器内。这是您将放置超级秘密文件。(请参阅 Truecrypt 文档以了解如何执行此操作 - 这很容易。)
最后,用不同的文件扩展名重命名文件,以迷惑人们。OS X 上的 .dmg 扩展名就很适合这种用途 - 甚至 .iso 也是如此。同样,这种方法用处有限,但会让一些人感觉好一些。
现在,您有一个非常安全的容器,可以隐藏您的文件,如果您遇到需要泄露密码的情况,您可以向诱饵分区透露密码,而没有人能够证明不是这样。有传言称FBI 两年来一直未能破解 Truecrypt 容器。
现在,如果你真的想把事情提升到一个新的水平。获得一个带密码的 USB,并使用 FileVault2 加密您的 USB,并将您的 Truecrypt 容器放在 USB 上。
我也有一条有狂暴鲨鱼的护城河,但YMMV......
答案3
隐藏文件与加密无法相比。
目前,AES 是标准加密算法,非常安全,它和您使用的密码一样安全。只有通过猜测您的密码才能解密。确保您不使用 ECB 模式,但没有哪个严肃的程序甚至提供这种加密模式。
在 MacOSX 中,使用带有“新映像”的“磁盘工具”可以轻松创建加密的 DMG 文件。
答案4
关于隐藏文件
文件名前加点的技巧只是标准的 Unix 惯例:以点开头的文件名是隐藏文件,不应通过用户界面显示。但是,在大多数用户界面中,都有一种方法可以让这些文件可见。使用这个技巧可能会让大多数人看不到文件,但可能会让计算机专家更容易发现它。
关于加密
现代加密基于数学假设,即除非您确切知道某类操作是如何进行的,否则无法轻易撤消它们。这可以防止逆向工程和密码分析。因此,加密算法可以标准化并公开供公众审查。
为了保护您的数据,算法中的步骤接受从加密密钥派生的参数。还将提供解密算法,该算法仅在提供原始加密密钥时才有效。如果使用错误的密钥,解密后的文本将是乱码。大多数这些加密算法套件还附带数学证明,即在不知道加密密钥的情况下,无法使用其他实用算法来解密数据。
关于 hasing
安全哈希函数是单向函数,即不可逆,但对其属性有一些额外的保证。它们实际上不是用于“加密”,而是用于“证明”。
您在 PHP 中用于“加密”密码的方法可能是哈希函数,但它并不是真正的加密,因为您知道,关键是哈希数据无法解密。
人们常常混淆这两者,因为 a) 许多密码可以用作散列函数,并且 b) 散列也用于加密套件中以使其更安全。
更多关于 b):散列法最常用于处理加密密钥,以使输入统一并避免已知的弱点。因此,在更专业的加密软件中,您通常会在加密算法(AES、RC4 等)和散列算法(MD5、SHA 等)上做出选择。
但是,您显然不能使用哈希函数来加密内容,因为有用的加密的目的在于您可以取回明文。
让这些知识变得实用
... 您必须仔细考虑您想向谁隐藏数据,他们的计算机技能有多好,以及这些数据是否值得他们去找专家。
如果您可以接受人们找到加密文件但仍然无法打开它们,那么任何加密软件可能都可以。如果您想要否认存在,即人们无法证明您拥有加密文件,除非您放弃这一信息,那么您可以研究一下 TrueCrypt。