gpg -c file.txt 的最小安全长度是多少?

gpg -c file.txt 的最小安全长度是多少?

我想使用 gpg -c 和用户生成的密码,以便于我记住。16 个字符够吗?例如,类似于“我拥有 32 栋房子。”的密码是否可以被暴力破解?

答案1

如何生成密码很重要。您为示例选择了三个单词和一个小数字,我猜这三个单词是从数百个单词(也许两千个)的列表中选择的。(至少我似乎认为“2000”是普通人的日常词汇量。)

从 2000 个单词中随机选择一个单词会给你大约 11 位的熵。三个这样的单词将是 33 位。你的数字 32 是五位长,所以让我们假设它贡献了全部五位。在一些非常慷慨的假设下,这是 38 位的熵。现代 GPU 可以在一秒钟左右的时间内解决这个大小的问题,尽管我不知道 GPG 的-c选项是否包含在现有工具中。无论如何,我认为你的示例密码对任何重要的事情都没有用处。

这是我从朋友 Aaron Toponce 那里得到的一个工具。我可能对它做了一些扩展,因此任何剩余的错误都应该视为我的错误:

gen-pass(){
        echo "Generating passwords with 80-bits of entropy"
        [[ $(echo "$1" | grep -E '[0-9]+') ]] && NUM="$1" || NUM=1
        for I in $(seq 1 "$NUM"); do
                strings /dev/urandom | grep -o '[a-hjkmnp-z2-9-]' | head -n 16 | tr -d '\n'
                echo # blank string
        done | column
}

你可以像这样使用它:

$ gen-pass 
Generating passwords with 80-bits of entropy
fx6kycwsktr8v5gq
$ gen-pass 10
Generating passwords with 80-bits of entropy
re784jv4ha9-sxmn    ju68qfwwtc88p4cu    9s-m5fv7rg34fgnt    3vazc9hqs2ypk8wr    ncceast25bv972h9
gemaq873n7funqnr    jj6sq5zwkbmnh9jt    s2whnmzv435gdvd6    sctxjk97tb4bar6q    3qvtkg9-d32cd8ch
$ 

grep -o跳过像这样的“困难”字符很复杂。i1l o0因为选择了 32 个字符,所以每个字符提供 5 位安全性:16 个字符乘以 5 位,总共提供 80 位安全性。这比通常的 AES 密钥(具有 128 位安全性)要低得多,但对于人们来说这是一个可以接受的大小。您可以修改示例中的“16”以达到您需要的任何安全范围。(最好也更新输出,以确保您知道使用它时会得到什么。)

使用这个或类似的工具,使用专门设计用于输出具有指定属性的密码的算法来生成密码,比自己尝试随机生成密码要安全得多。

相关内容