加泰罗尼亚如何绕过西班牙政府封锁
时间:2017-10-05 来源:medium 作者:chihao 条评论
评论:可惜湾湾没胆搞独立公投,不然刚好可以看看党国到底有没有依法治国。
原题:加泰隆尼亞用行星檔案系統繞過西班牙政府封鎖
正文以巴塞隆納為首府的加泰隆尼亞,是西班牙現行十七個自治社群之一。加泰隆尼亞獨立運動歷史久長,過去也曾宣布獨立。現在,多數加泰隆尼亞人希望舉行獨立公投,支持獨立人數也不容小覷,政治氣氛熱烈,不在話下。
架設在行星檔案系統上的網站
https://ipfs.io/發佈這個投票資訊網站,有幾個好處。
.io的訪客重新導向別的網站。如果是加泰隆尼亞的.cat網域結尾的網站,這就很容易了。.io網域的管理在英國境內,而這些行動必須在英國境內執行時。https網站,這讓從網路服務供應商進行中間人攻擊變的困難。政府還是可以要求網路服務供應商封鎖任何來自或前往ipfs.io的網路通訊,但沒辦法讓使用者在不被瀏覽器警告憑證失效的狀況下,看到其他政府置入的內容。ipfs.io的網路通訊,網站上的資訊還是能被存取、複製。ipfs.io只是行星檔案系統的一個代理服務,行星檔案系統本身是點對點、分散式、內容即位址的網路檔案系統。只要下載行星檔案系統的程式,任何人都可以存取系統中的任何內容。 問題:可以嗎?
靜態資料庫
[0–9]{5}[A-Z]YYYYMMDD[0–9]{5}🗳的個人鑰匙👤。
身分證字號 + 生日 + 郵遞區號 → 👤 →
lookup() → 🗳👤也都是用明碼發佈,那豈不是洩露了所有加泰隆尼亞公民的個資嗎?加密來救援
lookup()大概長成這樣。 function lookup(dni, birth, zip, callback) { var key = dni + birth + zip; var passkey = sha256_times(key, 1714); var search = sha256(passkey);
var dir = search.substring(0, 2); var file = search.substring(2, 4); var path = db_path + dir + "/" + file + ".db"; var lines = readfile(path).split("\n");
lines.forEach(function(line) { if (line.substring(0,60) == search.substring(4)) { found = true;
var plaintext = decrypt(line.substring(60), passkey); callback(plaintext.split('#')); } })
if (!found) { callback("not-found"); }}sha256、第四行的sha256_times和第十五行的decrypt。三個函式的細節如下,其中在第二行、第十六行使用的crypto就是Node.js的crypto模組,任何人都可以取得、使用。
function sha256(text) { return crypto.createHash('sha256') .update(text) .digest('hex');}
function sha256_times(text, times) { var result = text; for (var x = 0; x < times; x++) { result = sha256(result); } return result;}
function decrypt(text, key) { var decipher = crypto.createDecipher('aes-256-cbc', key); var dec = decipher.update(text, 'hex', 'utf8'); dec += decipher.final('utf8'); return dec;}
lookup()這個函式在第二行把身分證字號、生日、郵遞區號所組成的個人鑰匙👤用sha256這個函式加密1714次,生成解密密碼🎛,在第三行再用sha256一次,把解密密碼再次加密,成為查詢金鑰🔑。
👤 →
sha256 × 1714 → 🎛 → sha256 → 🔑🔑查詢資料庫🗄,找到一或多筆相對應的內容之後,再用解密密碼🎛將找到的內容解密,進而獲得投票資訊🗳。
🔑 → 🗄 → 加密的投票資訊 → 🎛 → 🗳
👤有10¹⁰×23×365×4,也就是33580×10¹⁰種組合,大概是48 bit。sha256來確認某個人鑰匙👤在資料庫裡有沒有資料,那麼,那麼檢查完所有可能的個人鑰匙👤就需要計算575897×10¹²次雜湊值。參考比特幣維基,用不同的硬體設備所需的時間如下。
👤,需要238天。
未解的問題
本文由chihao翻譯,譯文以CC0釋出。原文為《How the Catalan government uses IPFS to sidestep Spain’s legal block》。原文在《嘿喀新聞》上的討論串在這裡。
来自https://medium.com/@chihaoyo
