首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GnuPG:为什么我的Ed25519签名144个字节而不是64字节?

GnuPG:为什么我的Ed25519签名144个字节而不是64字节?
EN

Security用户
提问于 2021-02-26 11:55:22
回答 1查看 406关注 0票数 2

根据https://www.rfc-editor.org/rfc/rfc8032

代码语言:javascript
复制
EdDSA uses small public keys (32 or 57 bytes) and signatures (64 or 
114 bytes) for Ed25519 and Ed448, respectively;

但是,如果我在GPG中使用Ed25519签名,则签名的长度为144个字节:

代码语言:javascript
复制
$ gpg --list-keys
/c/Users/John/.gnupg/pubring.kbx
------------------------------------
pub   ed25519 2021-02-26 [SC] [expires: 2024-02-26]
      5D36E7C775DD890CC342A38EAA05320C465CBDC8
uid           [ultimate] John Doe
sub   cv25519 2021-02-26 [E] [expires: 2024-02-26]

$ echo "test" | gpg --sign -a --default-key 5D36E7C775DD890CC342A38EAA05320C465CBDC8 
gpg: using "5D36E7C775DD890CC342A38EAA05320C465CBDC8" as default secret key for signing
-----BEGIN PGP MESSAGE-----

owGbwMvMwCG2itWIxy1m7wnG09xJDAkW9z1LUotLuDpKWRjEOBhkxRRZYs2eHy+9
28lz2GlxH0wxKxNIJQMXpwBMpLqMkeHRubiENY5d012eXfJuLpnk8byifbVzrkCW
5VrhhcL/LY0YGV5/i3jWzSo4k1Fia6EEo4DZ+X+zD8yfbtP74NchS89NbpwA
=9T7d
-----END PGP MESSAGE-----

解码后的base64字符串对应于144个字节。我估计会有64个字节。我遗漏了什么?

EN

回答 1

Security用户

回答已采纳

发布于 2021-02-26 13:02:28

OpenPGP不生成原始的Ed2519签名。它包括关于已签名的内容、用于预散列数据的散列、用于签名的键以及其他信息的其他数据。例如,如果在签名文件上使用gpg --list-packets,则会得到以下内容:

代码语言:javascript
复制
# off=0 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=2 ctb=90 tag=4 hlen=2 plen=13
:onepass_sig packet: keyid AA05320C465CBDC8
        version 3, sigclass 0x00, digest 8, pubkey 22, last=1
# off=17 ctb=cb tag=11 hlen=2 plen=11 new-ctb
:literal data packet:
        mode b (62), created 1614339913, name="",
        raw data: 5 bytes
# off=30 ctb=88 tag=2 hlen=2 plen=117
:signature packet: algo 22, keyid AA05320C465CBDC8
        version 4, created 1614339913, md5len 0, sigclass 0x00
        digest algo 8, begin of digest 7b 76
        hashed subpkt 33 len 21 (issuer fpr v4 5D36E7C775DD890CC342A38EAA05320C465CBDC8)
        hashed subpkt 2 len 4 (sig created 2021-02-26)
        subpkt 16 len 8 (issuer key ID AA05320C465CBDC8)
        data: [256 bits]
        data: [256 bits]

这表示存在一个压缩数据包、一个单向签名包(用于指定用于允许实现计算签名而不需要查找的参数)、一个文字数据包(带有数据"test\n")和一个签名包。签名包表明这是一种使用散列算法8 (SHA-256)的0x00 (二进制数据)签名,由密钥5D36E7C775DD890CC342A38EAA05320C465CBDC8创建。结尾有两个256位的值,它们是Ed25519签名本身.

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

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

复制
相关文章

相似问题

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