首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GnuPG是如何加密密钥的?

GnuPG是如何加密密钥的?
EN

Security用户
提问于 2016-04-01 19:46:31
回答 3查看 5.1K关注 0票数 10

使用GnuPG创建密钥时,会要求您提供一个密码来保护它。使用哪种加密算法来实现这一点?手册只说明使用了对称加密算法。

EN

回答 3

Security用户

回答已采纳

发布于 2017-01-25 09:47:27

GnuPG 2.x有一个单独的gpg-agent,它是秘密密钥的保管人,它不提供对内部密钥的加密参数的任何控制。

此外,在设置密码或导出密钥时,--s2k会被接受,但会被忽略。

在bug跟踪器上有一个问题,当跟踪邮寄名单时,答案是

不那是不可能的。现在,代理总是使用AES和S2K参数,它们需要在运行的机器上进行大约100 on的解密。

因此,我认为目前的情况是,密钥由代理持有,因为代理决定在运行的机器上实现其速度目标是最好的,没有办法控制它或以不同的方式输出。我尝试过的所有导出都得到了如下所示的关键属性:

代码语言:javascript
运行
复制
$ gpg --export-secret-key DEADBEEF | gpg --list-packets
iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: ...

这揭示了使用中的对称密钥(阿尔戈)和散列(哈希)算法,如RFC4880中所定义的。上述结果表明,algo: 7为128-bit密钥的AES,hash: 2为SHA-1.

iter+salt标记是GnuPG用来将密码(string)转换为键的串对键模式。默认值iter+salt意味着在密码中添加一个salt,并多次对字符串进行散列(一种名为键拉伸的技术,目的是增加强制口令的难度)。

因此,这说明了GnuPG是如何加密密钥的,并强调了这样一个事实:如果使用2.x版本,由于使用了gpg-agent,您无法控制它。

票数 12
EN

Security用户

发布于 2016-04-01 20:08:27

阶段1:对称密钥派生

首先,密码用于使用串键函数导出对称加密的密钥。考虑到这一点,可以在GnuPG中对几个设置进行微调,比如哈希算法和重复次数。来自GnuPG手册

--s2k-digest-algo name使用名称作为摘要算法,用于破坏对称加密的密码。默认的是SHA-1。--s2k-mode n选择如何破坏对称加密的密码。如果n为0,则将使用普通密码(一般不建议使用),1在密码中添加一个盐(不应使用),3(默认)对整个过程进行多次迭代(参见--s2k-count)。--s2k-count n指定重复进行对称加密的密码破译次数。此值可在1024至65011712之间(含)。默认情况是从gpg-代理查询的。请注意,并非1024-65011712范围内的所有值都是合法的,如果选择了一个非法值,则GnuPG将舍入到最近的合法值。只有当--s2k-mode设置为默认值3时,此选项才有意义。

第二阶段:对称加密

使用此对称密钥,私钥是对称加密的。此外,可以选择加密算法,而AES-128是GnuPG中的默认算法。

--s2k-cipher-algo name使用名称作为密码算法,如果不给出--personal-cipher-preferences--cipher-algo,则使用密码进行对称加密。默认的是AES-128.

可以通过运行gpg --version来显示受支持的密码,例如:

代码语言:javascript
运行
复制
$ gpg --version
[...]
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256

与公共私钥算法(其中GnuPG 2.1添加了椭圆曲线)不同,支持的对称算法在GnuPG的所有当前版本中都是相同的。

所有这些选项也可以在~/.gnupg/gpg.conf中设置,在这里,无需--前缀就会注意到这些选项。

票数 10
EN

Security用户

发布于 2016-04-01 19:51:20

根据这篇文章,您可以选择用于数据加密的密码(我假设其中包括密钥加密,因为它只是一个文件,对吗?)来自以下清单:

3 3DES,CAST5,河豚,AES,AES192,AES256,TWOFISH,CAMELLIA128,CAMELLIA192,CAMELLIA256

编辑:

在浏览手册页和google之后,您可以通过一些设置更改默认设置(有关详细信息:如何在Linux和GnuPG上更改默认密码?)。

我找不到任何具体提到私钥加密的东西,所以我假设它只使用任何设置为默认对称密码的密码。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/119245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档