數碼安全指引

https://cryptpad.fr/pad/#/2/pad/view/tLA6A6v+G8ZeQHZQ-TmVFDvP5XjcQVVGB29YDquhWYI/

我們無時無刻都需要保護我們的資料和電子器材。此指引提供一些關鍵提示,助你保護流動電話器材,免受賊人、駭客和其他有可能試圖使用你的資料或電子器材的人士,作出對你和你朋友不利的行為。

數碼世界日新月異。請注意此文件的最後更新日期為2019年6月15日,而在2019年8月15日後,你應該把此建議當作過時,屆時需檢查是否有更新版本。

如有仼何疑問或回應,可電郵至digitalsafety@tutanota.com。

安全第一!保護你電子器材,慎防資料被竊

請確保前往高危環境之前,已參詳本指引內容!因​​​​在互聯網連接訊號欠佳時,無法下載某些應用程式或讀取這些指示已經太遲了。

保障你手機的資料

設定一個強而有效的PIN碼或密碼

如果​​手機被竊,當駭客試圖入侵你的手機時,你可能會失去手機中的敏感資料(如:銀行資料或個人聊天記錄)。你可以透過設定強而有效的密碼、解除生物特徵辨識解碼,及把你已上鎖的手機的資料存取降至最低限度,以預防你的資料被竊。

如果你​​​​​​​使用iPhone,請選用一個強而有效的密碼,令駭客無機可乘:使用包含字母和數字、及長度超過7位的密碼。你​​​​​​​可以透過 設定 > Face ID 與密碼(或 觸控 ID 與密碼) > 更改密碼 > 密碼選項 > 自訂英數密碼 來設定你的密碼。

如使用安卓手機,請避免使用滑動圖案解鎖屏幕,因為只需追溯你在屏幕上的指紋,或越過你的肩膊偷窺,便能輕易猜測到你的滑動圖案。請使用長度超過7位的PIN碼。

淺談密碼長度的重要性

當駭客把你的手機連上他們的電腦設備,他們可以在短時間內破解你的手機密碼。根據手機密碼長度,駭客破解一部手機需用的平均時間如下﹕

四位數密碼﹕約6.5分鐘
六位數密碼﹕約11.1分鐘
八位數密碼﹕約46日
十位數密碼﹕約4629日

iPhone使用者可以透過USB限制模式阻止駭客以電腦裝置破解你的密碼﹕設定 > Face ID 與密碼 觸控 ID 與密碼 > 將「USB 配件」關閉 (Settings > Face ID & Passcode (or Touch ID & Passcode) > turn off USB Accessories)


關閉臉部識辨及指紋識辨功能

其他人可以在你沒有意識或不願意的情況下,以你的臉部或指紋解鎖你的手機。你可以關閉這些功能而轉用PIN碼(個人識別碼)或密碼。

iPhone設有SOS緊急模式。當你覺得有人可能會偷去或奪去你的手機時,可以暫時關閉手機的臉部識辨及指紋識辨功能。要啟動此模式,同時按住側邊按鈕(開關按鈕)和其中一個音量按鈕,維持兩秒(不要維持多於五秒,不然你的手機可能會自動致電緊急服務)。不過較安全的做法仍然是預先關閉臉部識辨及指紋識辨功能。


隱藏介面通知內容

如手機被偷去或奪去,你手機的介面通知內容可能會暴露你或你交流對象的私隱。你可以更改你的手機設定,讓訊息通知不顯示訊息的內容。

  • iPhone:設定 > 通知 > 顯示預覽 > 解鎖時 Settings > Notifications > Show Previews > When Unlocked
  • 安卓:設定 > 應用程式和通知 > 通知 > 在螢幕鎖定畫面上 > 隱藏敏感內容 Settings > Apps & notifications > Notifications > On lock screen > Hide sensitive content

(你亦可以選擇只隱藏較敏感的手機應用程式的介面通知內容,例如通訊程式)

決定要否使用「尋找我的手機」功能

如決定使用,請練習使用該功能。如不,請把功能關掉。

練習遙距清除電話資料

(先開啟「尋找我的手機」功能,才能遙距清除電話資料)。請下載更多手機應用程式之前先練習,好讓自己不用重覆這些步驟。

考慮備份手機資料,讓你不會在失去或被奪去手機時失去手機數據,但請記得安全收藏你的備份。

  • 安卓用戶可以使用手機製造商提供的備份程式。如果你的手機製造商並沒有提供備份程式,你可以手動將檔案備份。
  • iOS用戶請不要使用iCloud備份,而是使用iTunes把檔案備份到你的電腦上。

使用雙重認證以確保應用程式安全

雙重認證有助減低其他人在沒有你授權下登入你的手機應用程式及帳號,例如你的電郵或Facebook。這個網站 (https://authy.com/ )為一系列較多人用的手機應用程式提供設立雙重認證的指引。相對於SMS,使用雙重認證應用程式(例如Google Authenticator)來作出雙重認證較為安全。SMS並無加密技術保護,容易被第三方入侵。


保障電話的實體安全

  • 使用貼螢幕防窺片,其他人便不能看到你在打什麼字,包括你在輸入什麼密碼。
  • 在你的電話背面使用環型支架,防止路過的賊人從你的手中搶走電話。
  • 用貼紙遮蓋電話前置鏡頭能保障你不被被惡意軟件監控。


給需要高度安全保障的人

如果你需要非常高度的個人及資訊安全,可以考慮以下措施:

iPhone:你可設置手機在多次輸入錯誤密碼後自動清除所有資料。 設定 > Face ID與密碼(或觸控ID與密碼)> 將「清除資料」開啟

如果資源許可的話,可考慮使用在特定情況使用的手機。這種手機是一個沒有載有任何聯繫到你個人資料的手機。這個手機只用作重要及緊急的通訊(例如求助)。這個手機不應該有任何個人帳戶、聯絡電話或其他個人資料。這個電話應該使用以現金購買的SIM卡,也就是說在購買SIM卡的過程中毋須出示身分證。 可以的話,也應該使用現金購買這個在特定情況使用的手機。

如無法擁有一個在特定情況使用的手機,使用家中的舊電話算是這個情況下最安全的方法。如你選擇這個方法,請確定你在進入一個有危險的情況前更新舊手機的作業系統。更新作業系統需要連接無線網絡,但請不要連接你家裡的無線網絡。

如果你打算用自己平常使用的手機,而亦身處在一個非常有機會被奪走手機的環境,可考慮卸載或移除手機上任何敏感的應用程式、照片、影片、短訊和資料。如果你必須使用這些應用程式,可以考慮開設一個和你個人帳戶分開的新帳戶 (請參考建設一個安全身分的部分)。

不要連到私人的無線網絡,並移除任何連接你家或你朋友無線網絡的私人網絡連結。

當不使用數據或無線上網時,請關掉手機或開啟飛行模式,因為這些連結能讓你不小心透露自己的位置記錄。


減少被追蹤的風險

使用虛擬私人網路(VPN)
當在使用公共無線上網時,可使用虛擬私人網路防止你的網上活動被監控。一些安全及免費的VPN包括Lantern及Psiphon。你應該把虛擬私人網路設定為斷線後自動再連線。


變更手機器材的名稱

你的手機的默認設置是以你的名字命名。罪犯或跟蹤者可以透過藍芽或AirDrop 看到你的名字,從而得知你的身份和與他們的距離。請把手機的名字改掉以保護自己。

  • iPhone:設定 > 一般 > 關於本機 > 名稱Settings > General > About > Name   
  • 安卓:設定 > 關於手機 > 手機名稱Settings > About phone > Device name   

關掉位置記錄

你的手機以及地圖應用程式可能在記錄你的定位。把記錄關掉以減少被跟蹤的風險。

  • iPhone:設定 > 私隱 > 定位服務 > 系統服務(在清單下方)> 重要位置 > 將「重要位置」關閉 Settings > Privacy > Location Services > System Services (located at the bottom) > Significant Locations > turn off Significant Locations
  • 安卓:設定 > Google > Google 帳戶 > 資料和個人化 > 定位記錄 > 將「使用定位記錄」關閉Settings > Google > Google Account > Data & personalization > Location History > Manage setting > Your account & all your devices > turn off Use Location History
  • Google地圖:設定 > 地圖記錄 > 將「網路和應用程式活動」關閉 Settings > Maps history > turn off Web & app activity

刪除過往的定位記錄

安全溝通及協作

當使用通訊應用程式,例如WhatsApp、Signal、 或電報(Telegram)是,請記住你的帳戶是跟你的手機號碼連載一起的。如果你想跟新的朋友通訊而不希望他們能辨識到你的身分,請使用一張不需要出示身分證明文件並以現金購買的SIM卡。

端到端加密(End-to-end encryption)能防止其他人監控你的信息。WhatsApp和Signal默認開啟端到端加密,但電報(Telegram)則須使用Secret Chat才會開啟。

如果像使用安全且不需要使用你電話號碼的通訊人用程式, 請使用Wire: https://app.wire.com/auth/#createaccount

請不要在你跟陌生人交流的社交平台上用自己的照片作頭像。

令敏感消息消失:

你可能想某些敏感的訊息在某段時間後消失 (就像IG story 一樣)

  • Signal: 在對話視窗裡,點選頂部的人名或群組名稱以進入對話設置,開啟「Disappearing Messages​​​​​​​」(讓訊息消失), 然後設置信息時限。
  • Telegram(電報): 在秘密對話(Secret Chat)的視窗裡,點選計時器/ 時鐘圖標(iPhone的圖標在輸入信息欄旁的; 安卓的在人名旁),然後設置信息時限。
  • Wire: 在對話視窗中,點選在輸入信息欄旁的時器/ 時鐘圖標,然後設置信息時限。

關掉備份

如果你的通訊應用程式(例如WhatsApp)有備份功能, 記住備份是駭客或想取得你資料的人的其中一個目標。你可以在WhatsApp中關掉備份功能 : 
設定 > 對話 > 對話備份 > 自動備份 > 關閉 

電報(Telegram)貼士

如果你在電報跟很多人通訊,使用頻道(Channel)會比較安全, 因為你發放的信息是以頻道的名字和頭像發出,而不是你帳戶的名字和像。另外,群組有人數上限,頻道則沒有。

防止陌生人在電報上得知你的身份:

  • Settings > Privacy and Security > Data Settings > 關掉 Sync Contacts
  • Settings > Privacy and Security > Phone Number > 調至 Nobody
  • Settings > Privacy and Security > Forwarded Messages > 調至 Nobody

語音通話​​​​​​​

一般電話對話很容易被第三方監聽。如果你自己有被監聽的風險,可考慮通過WhatsApp,Telegram或Signal等應用程序進行端到端加密(End-to-end encryption)的語音通話。​​​​​​​​​​​​​​

圖片及影片

如果你想分享照片及影片,請先刪除它們的元數據。照片及影片的元數據(Metadata) 通常包括拍攝手機的型號、地點、以及在你拍攝照片及影片自動記錄下來的其他數據。

刪除照片的元數據:

影片可上載到Vimeo,它會刪除影片的元數據,並防止你在手機被盜是失去影片。你可以把Vimeo上的影片設為私人或以密碼保護。

如要直播影片,請使用Twitch。

如果想進行加密的視像通話,你應該下載JitsiMeet。你可以不需要開設任何帳戶就能進行視像通話


為通訊軟件、社交應用程式和其他網上帳戶創建一個安全的身分

如果你有理由擔心有跟蹤者或其他人正在監控你,你可能要創建一個網上身分保護私隱。

你通常需要電話號碼及電郵地址開設網上帳戶。使用你平常用的電話和電郵能令其他人容易跟蹤到你。 你可以以新的電話號碼及電郵創建新的網上身分,讓其他人有困難(但不是不可能)追蹤到你。

如何會你的Whatsapp及Telegram等的帳戶取得新的電話號碼:

  • 選擇1:買一張新的SIM Card
    去實體店舖,在不需要你出示身分證明文件的情況下以現金購買一張新的SIM 卡,並只使用這張SIM 卡開設網上帳戶。
  • 選擇2:使用Twilio.com 創建一個新的電話號碼 https://medium.com/p/deb4cd8c7f46/ 

如何為你的帳戶(例如Twitter, Twitch等)開設新的電郵地址?

Tutanota 是一個安全的電郵服務:https://tutanota.com   
記得要給你自己一個新的身分(例如把自己命名為你最愛的球隊或名人,如你喜歡的話,用 DeniseHo@tutanota.com 也沒問題)。

不要跟任何人分享你的新電話號碼及電郵。當你登記這些新電話號碼及電郵時,請使用虛擬私人網路(VPN),以防止服務供應商得知你的位置。


參與需保密的活動後

確保你在所有器材及帳戶上刪除了自己的行動記錄,例如搜尋記錄、聊天記錄、發帖記錄、你拍的照片及圖片等。

如果你有重要的照片,請以安全的方法備份(例如備份到一個加密並且有密碼保護的硬碟)。

需要更多協助?

如果你是公民記者、人權捍衛者或NGO工作者,而你需要個人化的器材保安意見,你可以聯繫Access Now的數碼安全救助熱線(help@accessnow.org)。這熱線為全世界的民間社運人士提供全天候的免費直接技術支援。這個熱線能在你失去手機權限時幫你保持社交帳戶的安全。

注意: 熱線有審批程序,你可能需要提供自己的資料, 例如你的名稱、工作及過往的人權工作。熱線只提供給超過18歲的人。 熱線提供英語、西班牙語、法語、德語、葡語、俄語、菲律賓語、亞拉伯語及義大利語服務。

如果你正在面對數碼攻擊或緊急情況,你可以向Open Technology Fund Rapid Response Fund 尋求財政及技術上的服務支援。詳見 https://www.opentech.fund/funds/rapid-response-fund/

用 Firewalld + systemd.slice + redir 實現 TCP + UDP 透明代理

https://matters.news/@whisper/%E7%94%A8-firewalld-systemd-slice-redir-%E5%AF%A6%E7%8F%BE-tcp-udp-%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86-bafyreig5keicgrjoall54ujagzxkd6ocmdoekbnoov7d3rzeicq3xcqv3y

现在网上已经有不少用 iptables 或 nftables 实现透明代理(Tproxy)的例子了。绝大多数关于透明代理的教程都是通过 iptables 实现的,也有少量使用新一代的 nftables 内核防火墙前端来实现。然而,消费级电脑上通常会装有更简化的防火墙程序,例如 Fedora/CentOS/SUSE 自带的 Firewalld,或 Ubuntu 的 UFW。在用这些简化前端的同时,直接操作 nftables 和 iptables 的话可能会造成冲突,更好的解法是全部工作都由 firewalld/ufw 来做。

本文就以 firewalld 为例,用它的 direct rules 来实现透明代理(没错,firewalld 并不提供关于透明代理的抽象,所以并不比 iptables 有优势)。

想要实现的效果

  • TCP 和 UDP 流量自动转给 Clash(或 shadowsocks 等)
  • Clash 本身不会把流量转发给自己
  • 可以让某些 程序 不转发给 clash,直接联网

Get started

先来设置变量,指向 clash 的 redir-port

export proxy_port=7892 # 按你 clash 的设置修改

接着设置 firewalld 和 ip route。 Firewalld 的 direct rules 语法几乎等同于 iptables(因为实际上就是调用 iptables 来执行 direct rules)。所以这里直接照抄 systemd.slice + iptables + redir:如何在 Arch Linux 上配置透明代理 的规则,稍有修改:

#tcp
sudo firewall-cmd --direct --add-chain ipv4 nat clash
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -m cgroup --path "clash.slice" -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 0.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 10.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 127.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 169.254.0.0/16 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 172.16.0.0/12 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 192.168.0.0/16 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 224.0.0.0/4 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -d 240.0.0.0/4 -j RETURN

sudo firewall-cmd --direct --add-rule ipv4 nat clash 2 -p tcp -j REDIRECT --to-port "$proxy_port"

sudo firewall-cmd --direct --add-rule ipv4 nat OUTPUT 1 -p tcp -j clash

#udp
sudo ip rule add fwmark 1 table 100
sudo ip route add local default dev lo table 100
sudo firewall-cmd --direct --add-chain ipv4 mangle clash
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -m cgroup --path "clash.slice" -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 0.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 10.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 127.0.0.0/8 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 169.254.0.0/16 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 172.16.0.0/12 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 192.168.0.0/16 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 224.0.0.0/4 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 1 -d 240.0.0.0/4 -j RETURN
sudo firewall-cmd --direct --add-rule ipv4 mangle clash 2 -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark 1
sudo firewall-cmd --direct --add-rule ipv4 mangle OUTPUT 0 -p udp -j clash # 这里可能有错(`failed: iptables-restore: line 3 failed`),欢迎指正
sudo firewall-cmd --direct --add-chain ipv4 nat CLASH_DNS
sudo firewall-cmd --direct --remove-rules ipv4 nat CLASH_DNS 
sudo firewall-cmd --direct --add-rule ipv4 nat CLASH_DNS 1 -p udp -j REDIRECT --to-port 1053
sudo firewall-cmd --direct --add-rule ipv4 nat OUTPUT 0 -p udp --dport 53 -j CLASH_DNS

其中,sudo firewall-cmd --direct --add-rule ipv4 nat clash 1 -m cgroup --path "clash.slice" -j RETURN 将放到 clash.slice 下的 service 给绕过 clash 了。

Clash 要以 systemd unit 的形式 来运行。为了让 clash 不把自己的流量循环转回给自己,给它的 unit 分配给 clash.slice

[Service]
Slice=clash.slice

其它不想走 clash 的程序也可以以类似方式分配给 clash.slice。

隔离+圈养:被GFW与微信毁掉的兲朝科普翻译

https://matters.news/@smog_again/%E9%9A%94%E7%A6%BB-%E5%9C%88%E5%85%BB-%E8%A2%ABgfw%E4%B8%8E%E5%BE%AE%E4%BF%A1%E6%AF%81%E6%8E%89%E7%9A%84%E5%85%B2%E6%9C%9D%E7%A7%91%E6%99%AE%E7%BF%BB%E8%AF%91-bafyreigrtg5hj36qq3abolvo2tbnoeo5kwkz7y3ji5akmc547h4gdmkzgy 

很偶然地读到一位网名“三蝶纪”的科普作者写的文章《从新型冠状病毒源头谈基础分类学的重要性》,文中力陈分类学不受重视导致的恶果,说得非常中肯。

但是我想在这里换一个角度,从科普翻译方面探讨一下这个问题。

三蝶纪老师文中提到的那种蝙蝠“Rhinolophus sinicus”,虽然本人不懂,以前也没听说过,无法从分类学上加以辨别。但要搞清楚这种蝙蝠的中文俗名,是非常简单的。

刚刚试了一下,在google上组合搜索其学名加中文俗名关键词,即“Rhinolophus sinicus”+“蝙蝠”,一下子就可以搜出比较靠谱的中文俗名。

根据搜索结果,排在第一位的,是中国疾控中心那篇含有丢人现眼、望文生义式误译的文章,《Nature Medicine|突破,袁国勇团队首次得到了新冠病毒可以感染蝙蝠的直接证据》。一个“国级”机构网站上发表的文章,居然连一个本国物种的中文俗名都译错了,真是丢脸丢到举国震惊了。

因为,在搜索结果中紧跟其后,排在第二和第三位的文章,即维基百科和百度百科上的词条“中华菊头蝠”,都给出了这个物种正确的中文俗名和拉丁文学名。

这不是我第一次发现中文科普翻译中存在的类似问题。以前阅读一些中国引进翻译出版的科普书时,就多次发现,译者在翻译书中的一些物种名称时,明明有现成的中文俗名,他们却不用,偏要望文生义地另外翻译一个。我曾经尝试着向编辑指出这个问题,可是一些编辑却找借口,说那是什么外国物种云云——可是根据我在google上搜索到的结果,有一些物种在中国也是有分布,而且在中国墙内的网站上就有中文俗名和拉丁文学名,为什么从译者到编辑都查不出来呢?

我琢磨了一下,造成这种现象的原因,很可能是共匪利用GFW将google隔离到墙外,禁止绝大多数兲朝网民使用这个网站。

根据我的使用经验,在搜索物种名称以及其他专有名词方面,google是全球最好的搜索引擎,没有之一。

个中原因,除了Google搜索引擎本身的强大功能,例如可以组合搜索不同语言的关键词,主要还是因为Google本身是不受防火墙限制的,不管是兲朝防火墙以内的网站,还是世界其他地方的网站,它都能搜出来(当然暗网上的网页可能除外)。而这是墙内搜索引擎如“百毒”、搜狗,或者那些虽然来自墙外却在墙内自宫的搜索引擎如“病”,都不具备的全球“视野”。

不幸的是,一二十年的隔离,已经让很多墙内用户,包括部分科技工作者,不知不懂如何使用Google这个强大的搜索工具。有时我甚至会在中国科学院及其相关网站上,读到一些明显搞错中文俗名的翻译文章,具体例子我就不举了。

微信微博的圈养式自我隔离,或许也在一定程度上加剧了这种中国人不知中国物种中文俗名的状态。

最近拍到一个我不认识的物种,在墙外网站上有人帮我鉴定出来了。然而,当我用他们给出的学名去搜索其中文俗名时,却碰到一个很大的障碍:Google能够搜出含有那个物种学名的微信公信号文章,可是当我试图打开那篇文章时,却遭遇了一个令人尴尬的403错误:“部分用户不加限制地使用程序抓取,导致网站经常性崩溃或者超时,因此将禁用所有来自云服务器(主要是 AWS) ip 的请求。如果你有数据合作需求,请邮箱联系 wempissue#gmail.com 开通付费 API 服务。”

我看不懂这条说明里那些技术术语,不知道微信是否真的如它讲的那样“经常性崩溃或者超时”,如果事实果真如此,只能说微信太烂了。

我怀疑微信的真实目的,是把用户创作分享的知识当作公司的私有财产,其他人和机构(非微信用户)如果想阅览这些资料,就必须接受微信的绑架,成为微信用户,或者向微信付费。

这也是我铁了心拒绝使用微信的原因。如果说,过去的一二十年里我在某些方面的知识更加丰富了,那在很大程度上得益于互联网,以及那些慷慨地在互联网上分享知识的网友。

不管是共匪利用GFW强行将本国国民隔离在开放的全球互联网之外,还是微信圈养用户,禁止圈(juan4)外互联网使用者浏览其用户分享的知识,都与互联网的开放承诺背道而驰。

中国人不知也不懂如何查询中国物种的中文俗名,不过是GFW与微信这两大害兽危害墙内知识界知识人的一个小小表现。它们导致兲朝知识界知识人逐渐丧失了探索墙外圈(juan4)外浩渺知识的兴趣与能力,逐渐在知识人的脑子里竖起一道道隔离与自我审查之墙,这才是对一个国家知识界最大的戕害。它们把文革后逐渐恢复健康的知识人重新阉割成了脑残。

当一个国家的知识界变成脑残之后,最终受害的必定是整个国家的国民,以及那个实施阉割的政府。习瘟猪上台以来,被造假大师易富贤之流荒唐可笑、漏洞百出的“人口学研究”骗得团团转,就是一个典型的例子。

IPFS 官方中文 Wikipedia 使用指南

https://www.v2ex.com/t/764965#reply11

 

什么是 IPFS ?

星际文件系统InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址对等超媒体分发协议。在 IPFS 网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自 2014 年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。

用最简单的话来说 IPFS 是个 P2P 网络,和我们日常可能会使用的 BT 下载的原理类似,但是 IPFS 相比于 BT 来说做了非常多的改进,使得 IPFS 的性能和扩展性都有很大的提升。

在 IPFS 网络中每一个文件都有一个独特的 CID,当你把一个文件放入 IPFS 网络中,其他的用户就可以通过 CID 来获取到这个文件而不必考虑这个文件存放在何处。此外任何用户可以选择 pin 住一个文件的 CID,从而帮助 IPFS 网络长期的保存某个文件。

什么是 Distributed Wikipedia Mirror ?

Distributed Wikipedia Mirror 是 IPFS 官方团队维护的一个项目。这个项目旨在将 Wikipedia 带入 IPFS 网络,以及最终构建出一个纯分布式的 Wikipedia 。目前该项目已经提供了:英语、土耳其语、缅甸语和中文的 Wikipedia 镜像。

如何使用?

本文将介绍如何使用中文版的 Wikipedia IPFS 镜像。

镜像的地址为:

请注意本项目的 CID 地址会随着分发的 Wikipedia 镜像版本更新而改变,你可以通过访问此地址或者使用 ipfs name resolve zh.wikipedia-on-ipfs.org 获取到最新的 CID

我接下来会介绍 3 种不同的方式来访问本镜像。


公共网关

公共网关是目前访问 IPFS 网络上内容最简单的方式,但这也是最容易被封锁的方式。我将以官方的网关为例来演示如何使用公共网关来访问 IPFS 网络上的内容。

官方公共网关地址: https://ipfs.io

使用 CID 访问镜像

如果你决定使用 CID 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

https://ipfs.io/ipfs/<CID>

在我们的例子里就是:

https://ipfs.io/ipfs/bafybeiazgazbrj6qprr4y5hx277u4g2r5nzgo3jnxkhqx56doxdqrzms6y

使用 DNSLink 地址访问

如果你决定使用 DNSLink 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

https://ipfs.io/ipns/<DNSLink>

在我们的例子里就是:

https://ipfs.io/ipns/zh.wikipedia-on-ipfs.org

Brave 浏览器

如果你在使用最新版的 Brave 浏览器,你可以直接使用 Brave 内置的 IPFS 节点来访问 IPFS 网络上的内容。你在第一次使用 Brave 浏览器访问 IPFS 内容时,Brave 浏览器可能会询问你是否要启用本地 IPFS 节点,建议选择启用,如果没有启用,Brave 会自动使用公共网关来访问 IPFS 网络上的内容。此外你可以通过 Brave 设置页面中 IPFS 相关的选项和内置的 IPFS-Companion 插件中的选项来调整 IPFS 节点类型。

使用 CID 访问镜像

如果你决定使用 CID 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

ipfs://<CID>

在我们的例子里就是:

ipfs://bafybeiazgazbrj6qprr4y5hx277u4g2r5nzgo3jnxkhqx56doxdqrzms6y

使用 DNSLink 地址访问

如果你决定使用 DNSLink 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

ipns://<DNSLink>

在我们的例子里就是:

ipns://zh.wikipedia-on-ipfs.org

IPFS Desktop

IPFS Desktop 对于是目前普通用户使用本地 IPFS 最容易的方法,你可以在这里下载最新版的 IPFS Desktop 。在启动成功之后,IPFS-Dekstop 会默认在你本地地址的 8080 端口启动一个网关服务器,之后我们就可以使用这个本地的网关服务来访问 IPFS 网络上的内容了。

当然你可以通过修改 IPFS-Desktop 中的 Gateway 项,来修改默认的端口地址。

使用 CID 访问镜像

如果你决定使用 CID 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

http://127.0.0.1:<port>/ipfs/<CID>

在我们的例子里就是:

http://127.0.0.1:8080/ipfs/bafybeiazgazbrj6qprr4y5hx277u4g2r5nzgo3jnxkhqx56doxdqrzms6y

使用 DNSLink 地址访问

如果你决定使用 DNSLink 地址来访问镜像的话,你需要在浏览器地址栏按照如下格式输入:

http://127.0.0.1:<port>/ipns/<DNSLink>

在我们的例子里就是:

http://127.0.0.1:8080/ipns/zh.wikipedia-on-ipfs.org

电子邮件自我保护指南

https://zhuanlan.zhihu.com/p/34632920

巴伐利亚啤酒馆

同其他网络协议一样,电子邮件被发明时,也是以明文在网络上传输的。与其他协议不同的是,虽然电子邮件也已经有了相关的加密协议,但是由于电子邮件依赖于个人的特点,这些加密协议并没有得到广泛的使用。

对于明文传输邮件带来的安全问题,各大邮件服务商并没有选择加密邮件本身,而是加密了邮件的传输过程,使之无法被中间人窃听。对于邮件服务商自己来说,邮件是明文的。

"安全性"一项显示为TLS加密,只是加密了传输的过程

除此之外,一些邮件服务商还提供了“加密邮件”服务——给邮件设置一个密码,输入密码才能打开。然而这种“加密”仍然是在邮件服务器上完成的,对于提高邮件的加密性没有任何帮助。这种“加密邮件”充其量只能称作“加了密码的邮件”。

QQ邮箱的加密邮件只是给邮件加密码
QQ邮箱的加密就是把原文变成一个加密的压缩文件

基于PKI的电子邮件加密——S/MIME

对邮件本身的加密和解密应该由用户自己来进行,安全多用途网际邮件扩充协议(S/MIME)就是这样一种加密协议。

在S/MIME中,接收者将自己的S/MIME证书告知发送者,其中包含了接收者的公钥。发送者通过验证根证书来确认真实性后,使用公钥加密邮件。接收者使用私钥解密。

在这个过程中,邮件服务商不参与邮件的加密与解密过程,只负责进行邮件的传输,也无法对邮件进行解密。

但是由于S/MIME依赖PKI来验证证书的真实性,所以必须向CA机构申请邮件证书才可以使用。

巴伐利亚啤酒馆:公钥基础设施
zhuanlan.zhihu.com图标

基于信任网络的电子邮件加密——PGP

由于PGP使用信任网络来信任证书,用PGP加密电子邮件可以免去证书验证的限制。

巴伐利亚啤酒馆:信任网络,PGP,GPGzhuanlan.zhihu.com图标

Gmail和ProtonMail安全吗?

Gmail支持S/MIME加密,ProtonMail支持PGP加密,很多人认为这两家邮箱的加密都足够安全。但是他们支持的方式显然有问题:加密电子邮件的初衷就是避免邮件服务商知道邮件的内容,而Gmail对S/MIME加密的支持方式是让用户上传自己的S/MIME证书,

当您向联系人发送邮件时,如果该收件人与某一公钥关联,Gmail 会自动加密邮件。

也就是说,用户实际上还是把邮件内容交给了Gmail进行加密,而不是用户自己进行了加密。

Gmail要求用户上传公钥甚至私钥

更奇怪的是,Gmail甚至要求用户上传私钥——解密也是由Gmail完成的,Gmail自然也就可以把邮件的内容看得一清二楚。

ProtonMail的做法就更加大包大揽了——至少Gmail的证书还是让用户自己生成的(当然,这可能是因为申请S/MIME证书是个麻烦事),而ProtonMail则自己帮用户生成了密钥。更加令人不解的是,ProtonMail只允许用户下载自己的公钥,而不能下载自己的私钥——也就是说,只有ProtonMail能够解密邮件;如果用户自己想要解密别人发到他ProtonMail邮箱的邮件,由于没有自己的私钥,是无法解密邮件的。

Protonmail只能下载公钥

ProtonMail的另一个缺点是不支持跨域的PGP邮件,而ProtonMail的对外的“加密”邮件和QQ邮箱差不多,也是“加了密码的邮件”,而且还必须要到ProtonMail的网站上输入密码才能解密,从一点上来说甚至还不如QQ邮箱,至少QQ邮箱是真的把加了密码后的信息附在邮件里发到了收件人那里。

当然,这并不是说现在使用Gmail或者ProtonMail就是不安全的,只不过这种安全性是始终依赖于邮件提供商的。只有依赖自己的安全才是最为可靠的,即使使用QQ邮箱,我们也有办法保证自己的安全。

谷歌参加了棱镜计划,而邮件是棱镜计划的目标之一

使用Mailvelope在网页端加密电子邮件

只有把邮件服务商排除在加密和机密的过程外,才能避免邮件服务商看到邮件的原文,对电子邮件进行真正的加密。

使用浏览器插件Mailvelope在网页端上加密自己的电子邮件就是这样一种方法。

Mailvelope

Mailvelope是Chrome和Firefox的扩展插件,在这两个浏览器的插件商店里都可以找到。

Mailvelope - Firefox 附加组件addons.mozilla.org图标https://chrome.google.com/webstore/detail/mailvelope/chrome.google.com

插件安装完成之后,点击Mailvelope的插件图标进入设置页面。

Mailvelope的密钥管理页面

如果已经有了密钥,可以通过导入密钥将其导入。如果没有密钥,要先生成密钥。

生成Mailvelope需要输入一个密钥名,该密钥对应的电子邮箱(只有送往这个邮箱的邮件才会被该密钥加密),以及密码。(其实密码不是必须的,但是Mailvelope生成密钥时要求必须输入密码)

Mailvelope生成密钥

最后一项是“上传公钥到Mailvelope密钥服务器”,其实用处不大,毕竟没人会信任从服务器上下载的密钥。


发送加密电子邮件

安装Mailvekope后,在网页端写邮件的时候,右上角会出现一个按钮

Mailvelope加密按钮

点击后会打开邮件加密窗口,如果拥有关联了这封邮件的收件人的公钥,收件邮箱就会显示为绿色。可以使用自己的密钥为邮件签名。(不过邮件签名对于网页端没什么用)

Mailvelope加密窗口

点击加密,就会回到写邮件的界面,但是内容都变成了密文。

邮件内容变成了密文

这说明邮件内容已经完成加密,可以发送了。


接收者解密电子邮件

打开一个加密的邮件,加密的内容上会出现一把锁,此时鼠标指上去会出现一把钥匙。

这是个QQ邮箱

如果你拥有加密这封邮件所用的公钥对应的私钥,输入密钥的密码之后就可以解密这封邮件。

解密后的信息

添加网站支持

Mailvelope默认支持网站数量有限,QQ邮箱和Outlook都不在其默认支持列表上,需要在插件设置中将这些网站的邮箱域名手动添加到选项->List of Email Providerh中来启用支持。

添加对QQ邮箱的域名支持

在邮件客户端加密电子邮件

除了在网页端,邮件客户端也可以进行电子邮件的加密。在这里介绍Thunderbird客户端上的电子邮件加密。

Thunderbird是Mozilla开发的一款邮件客户端,支持使用Enigmail插件进行PGP加密。

Enigmail的密钥管理

Enigmail和Mailvelope的密钥是可以通用的。(所有PGP密钥都可以通用)

在Enigmail上创建密钥可以不用密码。只能为已经使用Thunderbird登陆的邮箱创建密钥。

Enigmail创建密钥

对于使用哪个密钥来加密邮件可以通过收件人规则来设置——加密使用的密钥所对应的邮箱可以不与收件人的邮箱相同。

收件人规则

在写邮件的窗口中可以用Enigmail进行加密和签名,加密所使用的密钥由收件人规则决定,签名使用发件人的密钥。

在Thunderbird中写加密邮件

收到加密邮件时,如果有对应的私钥,就会自动进行解密。如果有对方的公钥,可以对签名进行验证。

收件人解密邮件

点击右上角的锁图标可以查看安全信息

包括签名信息,算法和加密信息

微博上看到的,你的详细上网记录营业厅就能看到。那么翻墙的话也能看到?

https://twitter.com/funkhttps://twitter.com/funky_fishbone/status/1335086085114720257?s=20y_fishbone/status/1335086085114720257?s=20
 
 
 
Image
 
https://twitter.com/funky_fishbone/status/1335086085114720257?s=20


1. 这里的域名具体代指的是SNI(Server Name Indication),TLS 1.3引入了E(Encrypted)SNI。 由于目前ESNI没有普及,GFW会直接Drop掉用ESNI的TLS流量。 https://solidot.org/story?sid=65185 2. HTTP协议是明文传输的,这正是HTTPS要解决的问题。 要是担心供应链攻击,可以自建梯子。
https://twitter.com/funky_fishbone/status/1335086085114720257?s=20

 https://www.solidot.org/story?sid=65185

防火墙被发现开始屏蔽 ESNI(加密服务器名称指示)。TLS1.3 引入了 ESNI(尚未成为正式规格),用加密的 SNI 阻止中间人查看客户端要访问的特定网站。因为不知道用户使用 ESNI 访问的网站,审查者要么不封锁任何 ESNI 连接,要么封锁所有的 ESNI 连接。防火墙选择了后者。测试发现,防火墙通过丢弃从客户端到服务器的数据包来阻止 ESNI 连接。此外,ESNI 封锁不仅会发生在 443 端口,也会发生在 1 到 65535 的所有端口。在阻断 ESNI 握手后,防火墙会继续阻断与(源IP,目标IP,目标端口) 3 元组相关的任何连接一段时间。 

https://blog.twnic.tw/2020/09/03/14886/

中國政府已經更新了名為「防火長城」(Great Firewall,GFW)的網路審查工具,以阻止加密的HTTPS連線,根據iYouPort、馬里蘭大學及Great Firewall Report這三個追蹤中國審查制度的單位在今(2020)年8月初聯合發布的報告,此項禁令已經實施一周。

中國目前封鎖了使用TLS 1.3及ESNI等新技術建立的HTTPS連接,因為這使得中國當局對其人民的網路監控更形困難。若人民使用舊版的連線協議,審查人員便能透過伺服器名稱指示(Server Name Indication,SNI)推斷出用戶嘗試連接的網域名稱。

該報告中指出,研究團隊已經找到6種在使用者端內建應用程式與軟體,以及4種在伺服器與應用程式後端可以運用的規避技術,藉以繞過GFW的封鎖。然而,目前的策略並非長久之計,所謂「道高一尺,魔高一丈」,GFW終究會提高其審查能力。

GFW是中國的強制立法行動,與資安技術結合,在中國境內達到審查網路言論的效果,並同時阻止人民瀏覽某些外國網站,除此之外,GFW還透過培育國內企業,降低國外的網路服務業者在國內的發展,形成類似保護主義的效果。

原文連結:https://www.zdnet.com/article/china-is-now-blocking-all-encrypted-https-traffic-using-tls-1-3-and-esni/

自己構建完全免費的VPN Server(冀Oracle Cloud + Google Outline 使用教學)

https://ithelp.ithome.com.tw/articles/10226812

目錄

  1. 註冊與登入Oracle cloud
  2. 第二部分: 設置Oracle Cloud
  3. 第三部分:Oracle 防火牆設定(14,Oct,2019 updated)
  4. 第四部分:SSH
  5. 第五部分:Outline VPN
  6. 第六部分:使用VPN
  7. 結語
  8. 附錄:暴力開Port 大法

第一部分:註冊與登入Oracle cloud

  1. 去Oracle 官網:https://www.oracle.com/cloud/free/?source=:ow:o:p:nav:0916BCButton&intcmp=:ow:o:p:nav:0916BCButton

  2. Click Start for free

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557YKnX1pfbDj.png

  3. 之後寫電郵地址(要記得)和位置,位置可以隨便寫,不是Server位置。

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557TUDa4tMAx8.png

  4. 下一步最重要既就係填寫Account Name(要記得),Home Region 同 tel number,其他可以隨便寫

    https://ithelp.ithome.com.tw/upload/images/20191020/201205577A2itWCXVB.png

  5. 選擇home region要注意,得呢3個地方有免費Server 用

    https://ithelp.ithome.com.tw/upload/images/20191020/201205579UmE356LDP.png

  6. click Next既時候要等一陣,如果佢話你錯要寫翻岩個地址

    https://ithelp.ithome.com.tw/upload/images/20191020/201205572Wr5MD9ljP.png

  7. 寫Password要符合咁多個要求(都係要記得Password的)

    https://ithelp.ithome.com.tw/upload/images/20191020/201205575FNj6UloQj.png

  8. 之後就係填信用卡資料

  9. 入呢個Link:https://cloud.oracle.com/sign-in ,寫Account 名

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557l0E9H6XdPu.png

  10. 跟著打Email Address 同埋 Password

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557opP3rLJoVc.png

第二部分: 設置Oracle Cloud

  1. 進入到Oracle 帳號頁面,之後,選Create a VM instance

    https://ithelp.ithome.com.tw/upload/images/20191020/201205574h27itckAZ.png

  2. 為你的VM改一個名字,然後按change image source

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557LYlGqWOcE2.png

  3. 選Ubuntu或者CentOS都可以,我選Ubuntu 18.04 Minimal

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557G3XTAZ7DD0.png

  4. 記得在最底按 Select Image

  5. 下一步就係SSH Key,你們可以看以下Website

    1. https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html
  6. 在File Browser打開 ~/.ssh文件夾 (Windows 是 %userprofile%/.ssh

  7. id_rsa.pub 拖到黃圈位置,然後按 create

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557IKmKYvb4jI.png

  8. 之後你應該會見到以下頁面

    https://ithelp.ithome.com.tw/upload/images/20191020/201205574lJqG1NYVI.png

  9. 滾到下面,當看到下面的情況,選Attached VNIC

    https://ithelp.ithome.com.tw/upload/images/20191020/201205578nNUUN721F.png

  10. 選這個,不同人有不同名字

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557GRen0BAYM6.png

  11. 選IP Address

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557sCTIFTzy5N.png

  12. 選Edit!!

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557BcSgXW1waj.png

  13. 選EPHEMERAL PUBLIC IP和Update

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557eApr5LWIDa.png

  14. 然後你就可以在同一頁得到Public IP了。把Public IP 複製儲存

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557c6hwad0M2K.png

第三部分:Oracle 防火牆設定(14,Oct,2019 updated)

https://ithelp.ithome.com.tw/upload/images/20191020/20120557pBwsVo4H5z.png

https://ithelp.ithome.com.tw/upload/images/20191020/20120557YdbeeTPK6J.png

https://ithelp.ithome.com.tw/upload/images/20191020/20120557B5hl2bFTSO.png

https://ithelp.ithome.com.tw/upload/images/20191020/20120557h4QWaE7M5Z.png

https://ithelp.ithome.com.tw/upload/images/20191020/20120557CycNuT5KdE.png

https://ithelp.ithome.com.tw/upload/images/20191020/20120557jLggffKfCc.png

第四部分:SSH

  1. 打開terminal

  2. 把以下代碼貼進去

     ssh ubuntu@"你的Public IP Address" -i ~/.ssh/id_rsa
     yes
    
  3. Windows 打開Powershell

     ssh ubuntu@"你的Public IP Address" -i %userprofile%/.ssh/id_rsa
     yes
    
  4. 你可以發現你應該登入了那個Oracle Server,如果你見到 ubuntu@"你的server名字" 那麼就成功了。

  5. 不要把Terminal關掉

第五部分:Outline VPN

  1. 去這個網頁https://getoutline.org/en/home下載與安裝Outline Manager 和Outline

  2. 打開Outline Manager,選anywhere

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557GDaU35eVhI.png

  3. 複製這些代碼到terminal中,然後enter

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557lQebAnliJN.png

  4. 然後打以下代碼

     Y
    
  5. 安裝完成你會見到這兩個message

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557qHPy8hQpOH.png

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557Y6qNxvUDB7.png

  6. 然後我們要打以下代碼,記得要將 29775 轉換成Management Port。25931 轉換成你的Access Key Port

     sudo iptables -I INPUT -p tcp -m tcp --dport 29775 -j ACCEPT
     sudo iptables -I INPUT -p tcp -m tcp --dport 25932 -j ACCEPT
     sudo iptables -I INPUT -p udp -m udp --dport 25932 -j ACCEPT
     sudo netfilter-persistent save
     sudo netfilter-persistent reload
    
  7. 把你的Terminal綠色Output部分(圖上被黃色覆蓋的部分)複製到Outline的第二部分

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557gZhlw3gb0L.png

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557tU1On0olx1.png

  8. 按Done,大功告成

第六部分:使用VPN

  1. Key 1 旁邊有個share icon,按他會得到 ss開頭的Link(在 "1. copy your access Key"下面 )

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557XgCPZQ39th.png

  2. 在手機上點 +

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557XN6lIS41P1.png

  3. 複製ss key到這裏

    https://ithelp.ithome.com.tw/upload/images/20191020/20120557jTaFMaCbax.png

結語

大功告成,現在你已經擁有了一個VPN Server了。非常感謝你看完這個很長的教學。

附錄:暴力開Port 大法

以下操作可以用來處理第五部分 iptables 的異常情況,例如Outline的無法連結你的Server.
Outline

解決辦法如下

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

但此舉將大幅增加你的資安風險,務必嘗試過其他辦法後再試過。