Protocol-Design
對匿名消息使用 crypto_sign 然後 crypto_box_seal
如果您有一條消息 M,並且您希望發件人 (alice) 對除收件人 (bob) 以外的所有人都是匿名的,可以這樣做嗎?
crypto_box_seal(crypto_sign(M, alice), bob)
(愛麗絲在資訊上簽名,然後封箱給鮑勃。)
crypto_box_seal
那麼這個答案表明crypto_sign
,我想知道相反的順序是否可以。謝謝!
不它不是!。
如果您之前給某人簽名了一條消息,那麼他們可以使用它向 Bob 發送一條匿名消息,並且 Bob 可能會認為它來自 Alice。
解決方案很簡單,使用
crypto_box
(經過身份驗證的 NaCl 加密)生成消息並使用crypto_box_seal
.$$ \text{crypto_box_seal}(\text{crypto_box}(m)). $$這裡我們使用的是盒子的縮寫形式,沒有細節。
外層為所有人提供匿名性,內層提供身份。由於只有 Bob 可以透露
crypto_box_seal
,那麼只有 Bob 可以透露crypto_box
並且會明白消息來自誰;愛麗絲。請注意,Bob 可能不知道其中有一個
crypto_box
,crypto_box_seal
在 crypto_box` 中添加一條附加消息以進行指示。$$ \text{crypto_box_seal}(\text{After the columns there is a crypto box:}||\text{crypto_box}(m)) $$