Dia*_*gon 8 encryption pgp digital-signature
我已经阅读了讨论我们应该先签名然后加密,还是加密然后签名?以及论文S/MIME、PKCS#7、MOSS、PEM、PGP 和 XML 中的缺陷签名和加密。我的问题与 gpg 正在做什么有关。这有点难以凭经验辨别,因为以下输出:
gpg --encrypt --sign <filename>
Run Code Online (Sandbox Code Playgroud)
每次运行时都会发生变化。(为什么?)
@Jens 解释说,部分原因是包含时间戳。有什么办法可以消除它吗?我没有看到 gpg 选项。
由于选项的顺序可能没有区别,并且由于我无法使用该--detach-sign选项(无论如何只生成一个输出文件),我怀疑输出代表:
\begin{equation}
E_r (msg\ \| \ E_s (\#msg))
\end{equation}
Run Code Online (Sandbox Code Playgroud)
其中$E_r$是用接收者的公钥$E_s$加密,是用发送者的私钥加密,$msg$是消息,$\#msg$是消息的散列,$\|$是连接。IE。这将是“签署消息然后加密”。这样对吗?
或者是它:
\begin{equation}
E_r (msg) \ \| \ E_s (\#msg)
\end{equation}
Run Code Online (Sandbox Code Playgroud)
换句话说,它是“加密然后使用纯文本签名”吗?我假设它不是“加密然后签名密文”,($E_r (msg) \ \| \ E_s (\# E_r (msg))$)因为这与上述论文中的第 1.2 节相反。
@Jens 解释说它确实是“签名消息然后加密”。那么我们如何“加密然后使用纯文本签名”,输出单个 openpgp 文件,而不是两个文件,一个是加密数据,另一个是签名?
另外,我已经阅读了论文并阅读了手册 - 除了代码本身之外,我还可以去哪里查找?
@Jens 建议运行:
echo 'foo' | gpg --recipient [key-id] --encrypt --sign | gpg --list-packets
Run Code Online (Sandbox Code Playgroud)
我运行它,对自己加密并找到下面的输出。有人能解释一下它在告诉我们什么吗?
[...]
gpg: okay, we are the anonymous recipient.
:encrypted data packet:
length: unknown
mdc_method: 2
gpg: encrypted with RSA key, ID 00000000
:compressed packet: algo=2
:onepass_sig packet: keyid C6701618143AFA1E
version 3, sigclass 0x00, digest 10, pubkey 1, last=1
:literal data packet:
mode b (62), created 1443494042, name="",
raw data: 4 bytes
:signature packet: algo 1, keyid C6701618143AFA1E
version 4, created 1443494042, md5len 0, sigclass 0x00
digest algo 10, begin of digest d7 3a
hashed subpkt 2 len 4 (sig created 2015-09-29)
subpkt 16 len 8 (issuer key ID C6701618143AFA1E)
data: [4095 bits]
Run Code Online (Sandbox Code Playgroud)
这有点难以凭经验辨别,因为以下输出:
Run Code Online (Sandbox Code Playgroud)gpg --encrypt --sign <filename>每次运行时都会发生变化。(为什么?)
这有两个原因:
签名和加密与加密和签名 - gpg 有什么作用?
GnuPG 首先对消息进行签名,然后对其进行加密。您可以使用gpg --list-packets以下方法验证这一点:
echo 'foo' | gpg --recipient [key-id] --encrypt --sign | gpg --list-packets
Run Code Online (Sandbox Code Playgroud)
正如数据包的顺序所示,它首先对消息进行签名然后加密。
根据我对RFC 4880 和 OpenPGP 的理解,两种顺序都被定义了:OpenPGP 消息可以是签名、加密、压缩和文字数据,而签名应用于 OpenPGP 消息,解密的消息也必须形成 OpenPGP 消息。
| 归档时间: |
|
| 查看次数: |
10089 次 |
| 最近记录: |