【安全上网】用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 个评论

很好的方法,需要推广。

注意:
1.一定不要使用任何在线的随机数生成工具;
2.一定不要使用任何在线的散列值计算工具;
3.一定要注意选择合适的离线断网计算工具;
4.可以适当的利用多轮散列计算增加安全性。
為什麼不用GnuPG呢?
用hash的話,當你要證實自己身份而公開secret key時
不就把你的secret key給了其他人(比如說,管理員)
管理員就可以假扮你的身份了
很好的方法,需要推广。注意:1.一定不要使用任何在线的随机数生成工具;2.一定不要使用任何在线的散列...

我推荐离线计算散列最好用系统自带工具,不要额外安装软件。网上那些XX软件站下载的工具可能带木马。编程随想这里有一个案例:
https://program-think.blogspot.com/2016/08/Trojan-Horse-DCM.html
為什麼不用GnuPG呢?用hash的話,當你要證實自己身份而公開secret key時不就把你的se...

对于程序员验证身份有很多方法,不过很多葱油不一定特别精通电脑。我觉得还是普及性第一,技术性第二。hash的缺陷是只能一次性使用,私钥公布后即作废。不过当限于品葱这一个网站时,hash作为恢复身份的凭据就足够了。
為什麼不用GnuPG呢?用hash的話,當你要證實自己身份而公開secret key時不就把你的se...

GPG更好,稍有门槛,hash是一次性的,门槛稍低。
建议使用bcrypt算法
sha256安全性并不是很高,对于掌握其他网站数据库的共匪来说,rainbow table容易建立
sha256撞库成功率还是有不少的
使用某段字符的SHA-256或CRC-64作为秘密字符串是否有安全风险?
使用某段字符的SHA-256或CRC-64作为秘密字符串是否有安全风险?

SHA256 只是暂时安全,大概能用十年左右。
建议使用bcrypt算法sha256安全性并不是很高,对于掌握其他网站数据库的共匪来说,rainbo...

BCrypt 没那么安全了,不如 SCrypt,PHP 7.3 换成了 Argon2,这个算法更安全。
GPG 更安全,支持多种【非对称加密算法】,支持身份验证和文本/文件加密,还有【跨平台】的 GUI 客户端,用起来比较方便。
哈哈哈…给自己盖个猪肉戳,感觉没必要。覆巢之下焉有完卵,大难临头各自飞好一些。
SHA256 只是暂时安全,大概能用十年左右。

我是指在获得某字段的SHA-256值后再使用其SHA-256值的SHA-512值......
(6). 网上有很多网站可以计算SHA-512,不要用这些网站!如果你在线计算SHA-512,你的秘密字符串就可能被加入爆破字典。


開源的網站是可以信任的,譬如:
響應最新密碼法的精神及號召,分享一個開源、免安裝的加密小工具 CDEncrypt」:
https://pincong.rocks/article/7508

想實現樓主功能的話,只需要加密一句話,譬如:「我是 twin」,然後用一個密碼加密,把生成的密文提交。日後需要證明的話,提供只有你知道的密碼即可。

不過,做證明,還是建議用證書簽名工具。
吼啊!
我是指在获得某字段的SHA-256值后再使用其SHA-256值的SHA-512值......

多重散列更好一些,不过懂程序的人还不如用bcrypt或者GPG。
SHA-512最大的好处是容易普及,安全性也足够了,不熟悉电脑的人可能不会操作多重散列。
不错的文章。这实际上就是把本来用软件做的自动身份验证变成手工验证了,原理是一样的。

楼上 @twin 的CDEncrypt也很不错,可以实行一下。不过如果在微信发大量乱码,特征太明显会不会很容易被发现?
不错的文章。这实际上就是把本来用软件做的自动身份验证变成手工验证了,原理是一样的。楼上 的CDEn...

應該問題不大,擔心的話,可以頻繁更換密碼,再就是,非敏感信息也頻繁使用加密,用的人多了,它沒法查。
因爲頻繁更換密碼,萬一某一天被查,你可能自己都不知道當時的密碼了,就算知道,因爲你非敏感信息也加密了很多,隨便解密一些吹水的內容給對方看。
擋的話也很困難,因爲很多網址都會跟一堆亂碼,譬如我剛測試淘寶,搜尋結果頁面的網址已經占滿電腦地址欄了。
如果 CDE 工具生成的數據過長,也可以考慮導出文件,然後傳輸文件。

前不久,我喜歡的女生在微信朋友圈曬結婚證,我給她公開留言就是加密的鏈接,並附上提示:密碼是我和她首次相識的日期,6 位數 YYMMDD 格式。
币持,,,

我以前也写过如果生成SHA512的教程,可以猛戳此处查看,,,
不过你写的比我详细,还特殊照顾Windows用户,话说Powershell真麻烦,就生成一串字符的哈希值就要敲一大坨指令,最后外面还套了个去除中间横杠的代码,可见Windows有多蛋疼,,,
不过,这下子Windows、MacOS、Linux三系统总算全部支持UTF-8了,秘密字符串可以包含中文字符了,这事ao的,,,
應該問題不大,擔心的話,可以頻繁更換密碼,再就是,非敏感信息也頻繁使用加密,用的人多了,它沒法查。因...

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


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


是的,我自己比較喜歡用 matrix 協議的 IM 工具 Riot,可惜沒幾個朋友用。

我主要用 CDE 這個工具給國內家人分享一些時事。偶爾和朋友之間聊一些稍微敏感的話題,譬如討論翻牆。

一條信息都逃不掉也不至於,勤換密碼,用隨機密碼,自己都不記得,酷刑都沒用。
我是指在获得某字段的SHA-256值后再使用其SHA-256值的SHA-512值......

不建议多次 hash,未必更安全。
币持,,,我以前也写过如果生成SHA512的教程,可以查看,,,不过你写的比我详细,还特殊照顾Win...

PowerShell支持的是UTF-8 BOM,而且没有办法改成纯UTF-8,不是所有软件都支持BOM的。不过好在Win10五月更新支持WSL2了,直接用Linux的terminal就行了,PowerShell我真是一秒也不想用。
哈哈,主要还是不能被盯上,一旦被盯上了那肯定就是一条信息都逃不掉。可以偶尔在微信发一些当成接头信号,...

回复这个帖子的应该都是码畜出身,这就是社工需要的信息,好在这个群体翻墙人数本来就很大,而且在海外的也很多。
包子 观察
sha-512生成的东西放在哪里呢? 在自己的品葱签名处?
另外,这个字符串可以是中文的吗?如果不可以,我就可以改成汉语拼音
感谢,学到了楼主
个人感觉还有另一个思路——AES-256,可以杜绝撞库的问题。
将自身ID进行加密,公布密文
需要证明的时候,再公布加密时使用的密码,如果密码能够正确解密出原本的ID,则密码为真
>>sha-512生成的东西放在哪里呢? 在自己的品葱签名处?另外,这个字符串可以是中文的吗?如果不可以...

字符串随意,中英文、日文、韩文都可以。

生成的字符串,可以签名,可以发帖。品葱签名一个问题是,以后品葱出问题了,大家看不到你的签名,你就无法在其他地方证明你的身份。最好是发帖,然后用WebArchive存档,帖子请管理员转水。
帖子写得很好啊~不过有一点缺陷就是需要泄露密钥【which, in this case is the so called secret string】,其实验证身份这件事情我觉得还是【非对称加密】的方式更好;具体来说是和【数字签章】类似的方式;至于GPG,站内好像有人写过类似方法了,不过那篇帖子理论有些欠缺。

要发言请先登录注册

要发言请先登录注册