【安全上网】用SHA-512生成身份字符串,在匿名环境下证明自己的身份

Pincong, a Reddit-like forum for Chinese geeks.

                                        ——Washington Post


考虑品葱并非人均程序员,本文主要面向不那么精通电脑的用户,因此写得比较详细。我只写了Windows上的操作方法。如果你会用Linux,那么计算哈希对你应该很简单。

问:【在匿名环境下证明自己的身份】有什么用?
答:可以用小号证明大号的身份,也可以在另一个地方证明你是品葱的某个用户。因为品葱是完全的匿名社区,不需要邮箱或手机注册,因此一旦身份丢失就无法重新证明自己的身份。举几个例子:

    1. 由于安全原因,一些葱油需要临时封禁账户。当确保安全后,可以用SHA-512字符串证明你确是某账号所有者本人。

    2. 如果品葱被橄榄(希望这不会发生),我们被迫在别的地方见面,可以用这种方法证明你是原品葱的某用户(或许还可以恢复原网站上的信息)。

    3. 如果站方提供了相应功能,可以用SHA-512找回密码。

    4. 在telegram群里,可以用这种方法证明你是品葱某用户,方便聊天(不安全)

问:SHA-512安全吗?我会不会泄露自己的个人信息?
答:SHA-512已经被许多数学家、密码学家证明是安全可靠的,即使量子计算机也无法破解SHA-512. 在制作SHA-512字符串的过程中也不需要任何真实身份信息。

问:能不能和别人提前约定暗号,证明身份的时候对暗号就可以了?
答:你和越多的人约定暗号,暗号泄露的可能性就越大。如果有十个人知道你的暗号,只要任何一个人泄露了你的暗号,这个暗号就不能用了。相反SHA512使用了单向加密,【暗号】只有你一个人知道,无需担心泄密。

问:我能不能提前注册小号,然后用大号证明自己的身份?这样就用不着什么SHA-512了。
答:很多时候由于各种意外,无法提前注册小号。如果网站被橄榄,那么大号小号一并都不能用了。


随便找一段话,称为秘密字符串。把秘密字符串用SHA-512加密,再公布加密后的文字。需要证明身份的时候拿出加密之前的秘密字符串,就可以证明你是谁。下面是具体操作步骤:


SHA-512证明身份的流程是:

1. 秘密字符串。首先你需要想出一个【秘密字符串】,这个【秘密字符串】可以是你喜欢的一句话,但不能太短,也不能让人猜到。举个例子,这里我的【秘密字符串】是
How do you deal with mice in the Kremlin? Put up a sign saying collective farm. Then half the mice will starve, and the rest will run away.


这里要注意:
(1). 【秘密字符串】在生成之后要一直【保密】,直到证明自己身份的时候再【公开】,因此其中不要包含任何真实个人信息。

(2). 不要使用容易被网警猜到的话,比如“光复香港,时代革命”。这东西和密码一样,建议至少20个字符以上。

(3). 不要使用用户名和账户密码做秘密字符串,如果你的账户被盗,那么网警就会拿到账号密码,进而知道你的【秘密字符串】

(4). 在证明你的身份之前绝对不要告诉别人【秘密字符串】,网站管理员也不行!

(5). 你可以把秘密字符串保存在你的电脑上,起个掩人耳目的名字,比如《苏联笑话全集》。只要你不说就没人知道。


2. 计算SHA-512值。打开Windows系统的PowerShell,在windows10上右击开始菜单就可以看到PowerShell

https://i.imgur.com/eLFyZc0.png


然后输入以下代码
[bitconverter]::tostring((new-object security.cryptography.sha512managed).computehash([text.encoding]::utf8.getbytes("你的秘密字符串"))).replace("-", "")


把加粗下划线的那几个字替换成你的【秘密字符串】,旁边的双引号【不要】去掉。
提示:你可以先在文本编辑器里先编辑好,然后复制这段代码,在PowerShell的窗口里右键单击就可以直接粘贴。

然后回车运行这段代码,就可以算出SHA-512字符串,我的秘密字符串算出的SHA-512是
FCC69DE7C0D6B0FB8043442ED5675DC1186D0C866E72E5E3B03FEFE8AECEE5396FF2D7B6DDD8936B43D0B3BB94005C29A6AF40C59EBB098824BA21D3D8F32322


我在PowerShell上输入并运行是这样的,底下那一串字母和数字就是SHA-512,PowerShell里鼠标选中文字然后Ctrl+C可以复制出文字。
https://i.imgur.com/9ToG3ZK.png


这里还有几个注意事项
(6). 网上有很多网站可以计算SHA-512,不要用这些网站!如果你在线计算SHA-512,你的秘密字符串就可能被加入爆破字典。

(7). 这是最重要的一步。SHA-512算法对输入文字十分敏感,如果你的【秘密字符串】什么地方多了一个空格,或者混用了中英文标点,则算出的SHA-512就会完全不同。

如果我的秘密字符串在最后的句点后面多了一个空格(这是新手容易犯的错误):
How do you deal with mice in the Kremlin? Put up a sign saying collective farm. Then half the mice will starve, and the rest will run away.



算出的SHA-512就是
72D73F2F3686F19B8072CCAAC0123D8902E0C39A465FEE03850E481FFD2135929672304C6D4EAA0A862E5ADF6223549C2E2C29F1B518068DC348288655028A33


这种错误会导致你的账号无法找回。


3. 公布SHA-512字符串。这个字符串可以完全公开,不怕泄密。哈希算法的原理保证了任何人都无法从SHA-512字符串反推出秘密字符串,只要别人不知道你的【秘密字符串】,别人就无法伪造你的身份。可以把SHA-512字符串贴到品葱上,然后用WebArchive存档。

最后一条注意事项:
(8). 你的【秘密字符串】公开以后,原来的SHA-512即作废。这时你应该重新计算一个新的SHA-512公布到网上,以备不时之需。


如何核对别人的SHA-512字符串

假设账号ABCD因安全原因封禁,但账号ABCD之前公布了她的SHA-512:
FCC69DE7C0D6B0FB8043442ED5675DC1186D0C866E72E5E3B03FEFE8AECEE5396FF2D7B6DDD8936B43D0B3BB94005C29A6AF40C59EBB098824BA21D3D8F32322


现在有某人用小号登录,声称他是某账号ABCD的所有人,而且这个小号提供了ABCD的【秘密字符串】
How do you deal with mice in the Kremlin? Put up a sign saying collective farm. Then half the mice will starve, and the rest will run away.


管理员就可以用上面的方法计算这个【秘密字符串】对应的SHA-512,如果计算值和ABCD之前公布的值完全相同(字母不区分大小写),就证明此小号是ABCD本人。
55
分享 2019-12-31

29 个评论

應該問題不大,擔心的話,可以頻繁更換密碼,再就是,非敏感信息也頻繁使用加密,用的人多了,它沒法查。因...


哈哈,主要还是不能被盯上,一旦被盯上了那肯定就是一条信息都逃不掉。可以偶尔在微信发一些当成接头信号,后面再转移到telegram这种相对安全的地方。很多telegram暴露的还是因为社工被抓,不是因为平台本身安全性差。

要发言请先登录注册

要发言请先登录注册