無字天書
文:薯伯伯
中國北京市人大常委會在 2020 年 9 月通過《北京市突發公共衛生事件應急條例》,聲稱個人有權向監察機關舉報遲報、謊報、瞞報、漏報的突發公共衛生事件等,並強調是「對非惡意的不實報告不予追究責任」,要保護吹哨人,被中國網民稱之為「李文亮條款」。李文亮因在武漢肺炎爆發初期在微信上披露疫情而被要求簽下《不實消息外傳的反思與自我批評》,後來自身染疫死亡。
為了貫徹中華人民共和國首都人大常委會通過保護吹哨人條款的精神,這篇文章就談談吹哨人要注意的地方,談之前先跟大家做一個小測試。
以下有兩個網址:
一) https://pazukong.wordpress.com/
看得出以上地址有甚麼分別嗎?把第一個網址放到瀏覽器,可以打開 Google,但第二個則不能(又或按瀏覽器的設定,會輸入了搜尋引擎)。為甚麼呢?
這涉及到 Unicode 的編碼設計,當中一類字符屬於「零寬幅」(zero-width)。所謂「零寬幅」,即存在但又不能打印或顯示的文字,好像是無字天書,但有實際用途。例如這句中文:「在國安法實施後叫光復香港時代革命隨時可以犯法所以大家千萬不要隨便叫光復香港時代革命。」
如果想在分行的時候儘量選擇在「香港」之後分行,而不是在「香」「港」中間分行,那麼可以在「香港」之後加一個「零寬幅單語結合子」(zero-width word joiner,簡稱 ZWWJ,代碼 U+2060),程式在分行時,就會知道在「香港」後分行,而不會在「香」與「港」之間分裂。
以上只是大概說一下「零寬幅」字符的用處,重點是有心人可以把文字隱藏在這些「無寬幅」的字符之間,例如 Hong Kong 之間,可以變成 Hong(零寬幅隱藏文字) Kong,顯示起來還是 Hong Kong,但實際上就會有分別。
上面兩個地址雖然看似一樣,但下面那個正是隱藏了訊號,肉眼雖然看不見,但電腦知道有差別,所以就無法登錄 Google。
趕快入正題,即時示範實際應用。
大家先到這個網址: https://neatnik.net/steganographr/
在 Public message 寫下:
「誠徵作業員一名,無經驗、已婚可。」
在 Private message 則寫下:
「長夜將至,從今守望,至死方休。」
點擊 Steganographize。
之後會出現以下這句話 *** 誠徵作業員一名 ***(顯示訊息沒有星號)。
把 *** 誠徵作業員一名 *** 這句話,放回網站的 Reveal,Public message。
點擊 Desteganographize。
有沒有看到隱藏訊息?
* * *
這種隱藏訊息可以很有廣泛的用途,例如我在某購物網站留下「零寬幅」的隱藏訊息,有心人只要直接複製文字,就能得知箇中秘密。但這種溝通方式其實極不安全,一來無法加密,二來較易偵測,如果條件許可,應用更為安全的加密方式溝通,例如 Signal,有端對端加密。
但我還是有必要花時間寫這篇文章,因為「吹哨人」必須知道這種隱藏訊息的方法。舉個例子,假如你在醫院工作,收到與社稷利益相關的重大醫療機密,想學習李文亮醫生那樣吹哨,你就要注意,收到的文件,到底會否有釣魚式的隱藏訊息。
萬一你用純粹的文字複制方式,把文章對外公開,有心抓內鬼的人卻早把訊息隱藏,那麼你的身份就隨便會被公開。
所以收到機密文件,要學習北京人大保護吹哨人的立法精神,在公開文件的過程,就不要直接靠複製文字 copy and paste,而要用其他方式,諸如用 OCR 文字識別方式來獲取文字,又或者單純概括文字內容撮要。有必要時,也可以把獲取的純文字以翻譯機來回翻譯,去掉原有的文字風格,儘量不被當局追查到原有文字的出處。
這些小技巧,早晚會是生活常識。
https://www.patreon.com/posts/42477490