我开始有大量需要安全存储的密码。我正在查看 LastPass 之类的密码管理器,但这些管理器似乎总是成为黑客的目标,并且以前曾被入侵过。
将密码存储在使用 AES 256 加密自己的文本文档中会丢失任何东西吗?然后在我想要密码的时候解密?
我开始有大量需要安全存储的密码。我正在查看 LastPass 之类的密码管理器,但这些管理器似乎总是成为黑客的目标,并且以前曾被入侵过。
将密码存储在使用 AES 256 加密自己的文本文档中会丢失任何东西吗?然后在我想要密码的时候解密?
考虑到您提到的那些妥协,您认为自己加密文件会容易吗?你怎么知道你不会陷入导致密码管理器受损的相同陷阱?
AES 256 被认为是计算安全的。每台计算机从一开始就同时工作以暴力破解密钥,因此找到加密密钥的概率几乎可以忽略不计。
然而:一个安全的算法并不能保证一个安全的实现。举个例子,这里有几个问题你应该问自己:
密码管理器的设计考虑了这些(也许还有许多其他)问题。第一次自己做时几乎不可能把所有事情都做好,尤其是如果你不是安全专家的话。
您将失去通过单击按钮生成随机密码的能力,这可能意味着您由于缺乏便利性而倾向于使用较弱的密码 - 密码管理器应用程序的好处之一,无论是在线还是离线,都是生成长随机字符串。
但是,如果您丢失了文件的副本,假设您正确使用了加密方法,您将确保密码的安全性。
根据您的操作方式,您可能会引入一个新问题 - 对于大多数密码管理器,只会显示您要使用的密码。如果您的文本文件包含多个密码,您可能会在查看特定密码时将它们全部公开。我想,您可以通过拥有多个文件或单个文件在密码之间存在很大差距来避免这种情况。
您可能也无法确保解密的数据不会写入磁盘 - 密码管理器应用程序往往会非常小心地将解密的密码保存在内存中,但您必须确保您自己的解密处理也是如此.
将密码存储在使用 AES 256 加密自己的文本文档中会丢失任何东西吗?
安全方面,没有。方便,是的。这取决于您如何保存密码以及密钥的长度。但是,是的,你绝对可以自己做。
就您而言,最好将密码本地存储在您自己的应用程序中,而无需购买商业产品。因为您不知道这些产品中存在哪些漏洞以及有多少黑客针对这些应用程序。
如果您要构建自己的工具,以下是您需要关注的事项。
如果我们以Java为例(我不知道你对它有多熟悉),以下是你需要考虑的事情。
将密码存储在文本文档中会丢失任何东西吗
不,如果您使用正确的算法,您不会。
AES 256?
如果您使用的是 Java,这是不可能的,因为在 Java 的 Cipher 类中实现了密钥大小限制。您需要依赖Bouncycastle Cryto 库或使用无限强度的 JCE文件。但是,如果您打算导出加密数据,则需要在使用此之前检查您的司法管辖区法律。
我的建议是继续使用 AES 128,因为它有点像现在行业中的事实标准。
在您的上下文中保护您的加密数据的最佳方法是使用Java 的SealedObjects 对象加密,因为我认为使用数据库来存储您的加密数据是一个额外的负担。
将您的密钥存储在Javakey 存储中,因为它是存储和分发加密密钥的最佳方式之一。
您可以创建一个 Java 应用程序,其中除了您的 Keystore 的密码并进行加密和解密。您可以简单地创建一个如下所示的类并管理您的密码。解密对象数组/列表后进行密钥搜索。
public class PasswordStore {
private String Key;
private char[] passwd;
private Date Updated;
public String getKey() {
return Key;
}
public void setKey(String Key) {
this.Key = Key;
}
public char[] getPasswd() {
return passwd;
}
public void setPasswd(char[] passwd) {
this.passwd = passwd;
}
public Date getUpdated() {
return Updated;
}
public void setUpdated(Date Updated) {
this.Updated = Updated;
}
您最终可以加密一个对象,如下所示。
private List<PasswordStore> passwords;
请记住使用其他安全编程技术,例如不要将密码存储在字符串变量中,因为字符串是不可变的并且容易受到内存劫持攻击。