免費工具

給消息簽名

加密回答的是“誰能讀”。簽名回答的是另一個問題:“這真的是他寫的嗎”。用你的密鑰給文字簽名——任何拿到你公鑰的人都能確認這條消息出自你,而且沒有被改動。密鑰不會離開標籤頁。

公鑰可以給任何人,私鑰永遠不給任何人。

沒有密鑰?在“密鑰”標籤裏生成一對——那裏也能從口令推導出密鑰。

密鑰、文字和簽名都不會發往任何地方:全部在這個標籤頁裏計算。

在聊天裏是什麼樣

簽過名的消息就是你的文字,底下多了一行這樣的東西: --404SIG1 密鑰.簽名。文字依然可讀:簽名什麼都不藏,它只證明作者身份。收件人把整塊複製下來,開啟本頁的“驗證”標籤,貼進去。

要複製的是整塊,而不是單獨的文字。簽名是逐字節計算的:多一個空格、換行符不同、引號被自動替換——驗證就對不上,儘管看上去完全一樣。

簽名不能證明什麼

它證明文字出自某個密鑰的主人,並且此後沒有改動。它 不能 證明這個密鑰屬於自稱的那個人:這要靠別的途徑得知——網站、頻道的置頂消息、名片。如果密鑰和簽名是同一條消息裏發來的,驗證就毫無意義:兩樣可以一起偽造。

相關工具: 用密碼加密文字, 加密檔案把秘密拆成幾份.

密鑰和文字我們都不保存

就像 VPN 本身不保存訪問日誌一樣:真要交,也沒有什麼可交。

原理 →

常見問題

guest@404vpn:~$ cat sign-faq.md
[01] $ 簽名和加密有什麼不同?
> 加密把內容藏起來:只有拿到密鑰的人能讀。簽名什麼都不藏——文字仍然是公開的——但它一次證明兩件事:寫的人確實是密鑰的主人,而且簽名之後文字一個字符都沒變。這是兩件不同的事,而常常需要的正是後者。
[02] $ 發件人的公鑰從哪裏拿?
> 從已經用別的方式得到過確認的地方拿:公司網站、頻道的置頂消息、名片。簽名證明的是文字出自某個密鑰的主人——至於這個密鑰屬不屬於你要找的那個人,不是從簽名裏得知的。如果公鑰和簽名是同一條消息裏一起發來的,驗證就毫無意義。
[03] $ 文字明明一樣,為什麼簽名對不上?
> 那就説明文字其實不一樣。簽名是逐字節計算的:末尾多一個空格、換行符不同、聊天軟件自動替換了引號——驗證就會老老實實地失敗。所以要連簽名行一起整塊複製,而不是隻複製文字。
[04] $ 可以不保存私鑰嗎?
> 可以從一段口令推導出來——這樣就沒什麼需要保存的,記住口令就行。但那樣鹽對所有人都是一樣的,否則密鑰就無法重現:也就是説,弱口令直接等於可偽造的簽名。用一段由互不相干的詞組成的長口令——或者保存一個隨機密鑰,別依賴記憶。
[05] $ 你們會保存密鑰嗎?
> 不會。密鑰、文字、簽名都不保存:頁面工作時不發任何網絡請求。丟失的私鑰我們也無法找回——它從來沒在我們這裏。