保護個人隱私資料很重要 !!!
今晚回顧了一下2018年科技界關於資料洩露而引發的個人隱私問題,特別是網際網路產業大佬們的一些言論,讓我對於中國使用者的隱私資料有一種被過度使用的擔憂,如果你也遇到了如下的幾個問題,那麼說明你的個人資料已經被賣了,哪裡還有隱私可言。
- 收到很多放款的簡訊
- 郵箱裡收到很多垃圾郵件
- 時不時的接到一些銷售的電話,有賣保險的,有賣車的
- 做為大資料的因子,你被很多網際網路服務分析來分析去,這些網際網路服務可能比你自己還要了解自己
- 如果你經常被人騷擾,有沒有想過是不是你的個人資訊被洩露了
我想我的個人隱私資料肯定被洩露了,因為上述幾種情況經常出現,有時候真的很煩。 為了今後不再洩露,那麼只能從自己做起,怒而追隨大佬創業開發了一款工具,它的很多設計都是被安全工程師們反覆斟酌而得出的結論,它- 祕跡 就是為保護個人隱私資料而生。我相信這一款產品,也能重新開始把我個人的隱私資料保護起來。
讓我來為大家介紹它們:
- 祕跡搜
- 祕跡App
當然,接下來我也會從技術方案上為大家闡述明白:
- 為什麼祕跡App是安全的
- 我們的價值觀和邏輯是什麼
- 我們選擇了什麼樣的密碼學體系方案來保證你的資料安全性
祕跡搜

如果你在搜尋結果頁面裡使用匿名代理訪問,由於一些技術限制性的問題,可能會丟失一些樣式,看起來訪問的頁面會是這樣:

不過,這是暫時的,後期我們會想辦法解決匿名代理引發的一些頁面缺失問題。
在Web的世界裡追蹤的技術既有Cookie也有你搜索關鍵字服務端的存留,以及訪問瀏覽網頁時被第三方網頁標記的資料。我們提供的隱私搜尋完完整整地實現了幾項非常重要的指標,讓你能放心安全得在這裡搜尋你想搜尋的資源。
瀏覽器的隱私模式並不能防止你使用搜索時被追蹤和資料洩露
我們採用瞭如下的方式來保證你不被追蹤:
- 不記錄Cookie 和 localStorage
- 服務端不存留任何搜尋關鍵字
- 搜尋專案開源
- https:// github.com/entropage/mi jisou 接受同行的安全評審
- 提供匿名代理訪問第三方網頁


祕跡App
祕跡App 是我們推出的組合拳中最重要的解決方案,在這個解決方案中我們實現了兩個功能來著重保護你的資料,保險箱和悄悄話。在保險箱中你可以建立管理你的賬號密碼,使用悄悄話功能時利用公鑰加密你想傳送的訊息。
產品使用傳送門:
如果用一個很形象的比喻來描述 祕跡App 的資料儲存方式,那麼比特幣錢包就是一個很好的參照,在 祕跡App 中你的全部資料使用 AES-256 加密 keepass 2.x 格式資料庫檔案的方式來儲存,在這個資料庫檔案中不僅儲存著你的賬戶密碼,也儲存著你使用悄悄話加密明文生成的CMS。為了能讓大家明白,用一張很形象的圖來表述我們是如何建立你的加密資料庫:

之所以隨機生成16位元組金鑰的原因,那是因為 AES 的安全性取決於你金鑰的複雜度,我們隨機生成了一個16位元組128位的資料塊,它有2的128次方的組合可能,如果你想暴力破解,則需要8.8億億年。但對於產品來說,這16位元組的金鑰還是不能被直觀的使用。
因此我們參考比特幣錢包,設計了記助詞,對於記助詞來說它才是你真正需要記住的金鑰( 寫於紙上 )。在比特幣錢包的設計思路上,一大長串的S並不好記憶,於是人們開始提出S可以透過12組記助詞來產生,而這一份提案被稱為 bip-0039,它的改進對於使用者而言則大大降低了記憶成本。
[引用了一張網路上的圖]

https:// github.com/bitcoin/bips /tree/master/bip-0039 開源了詞典,任何人都可以獲取詞典來完成 bip-0039 的設計,我們也選擇了bip-0039來實現面向使用者可直觀使用的金鑰,這也是為什麼在第一次啟動 祕跡App 時,會有一種建立比特幣錢包的感覺:

假設有一天你需要更換裝置,這12組記助詞就是你恢復資料的關鍵鑰匙,因此它很重要。你用筆記錄下來的12個漢字,永遠只會留存在你手中。
對於備份和恢復的功能,並沒有你看見生成ID那麼簡單,我們會處理很多步驟,比如對這個 Key 進行多次 Hash 計算。如果你瞭解過單向雜湊函式,那麼就會明白它是多麼的重要。

在上述的圖中並沒有顯示全部的技術細節,更多技術細節可以閱讀我們釋出的 《 祕跡安全白皮書(v1.0.0) 》。
單向雜湊函式(英語:Hash function)又稱雜湊演算法、雜湊函式,是一種從任何一種資料中建立小的數字“指紋”的方法。對於前端的同學來說,在設計你的 Web 應用系統時也應該多加考慮,防止資料被篡改。在這裡我引用 google crypto-js 為前端的同學展示一下該如何使用 Sha256 和 Hmac。
Sha256:
import * as CryptoJS from "crypto-js"; const sha256 = CryptoJS.algo.SHA256.create(); sha256.update("Message Part 1"); sha256.update("Message Part 2"); sha256.update("Message Part 3"); const hash = sha256.finalize();
Hmac:
const signStr = `Hello icepy-123456789`; const signKey = CryptoJS.HmacSHA1(signStr, "ICEPY").toString(); const signature = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(signKey));
因此我建議使用 祕跡App 的同學們,先用 保險箱 功能把你的賬戶密碼管理起來,將密碼修改為不同的強密碼,儘可能的減少被人撞庫的可能性,試想一下如果你使用的一個服務因為被拖庫,正好你使用的另一項服務比如隱私相簿使用了相同的密碼,並且儲存了你和你女朋友羞羞的圖片,很遺憾同學們,你的 隱私照片 肯定被洩露了。
閱讀到這裡你可能要問,如果我的賬戶密碼都儲存在 祕跡App 裡,我想在 Mac 上登入網站該怎麼辦?豈不是每次都要開啟手機複雜貼上再想各種辦法傳送到Mac上。
現在我可以為你介紹另外一種方式來處理這個問題。
在我們的世界觀裡,資料都不應該離開安全區域,這個安全區域不僅是在本地,而且有一套加密儲存的體系,資料只要離開了安全區域,都有可能提高被洩露的概率,因此我們的哲學邏輯是不讓資料離開安全區域,通過其他技術方式來輔助你完成一些操作。
你需要去下載我們為 祕跡App 開發的輔助工具 Chrome 外掛並安裝在你的 Chrome 瀏覽器裡,在 祕跡App 中使用自動登入功能,將登入所依賴的關鍵 Cookie 傳送給 Chrome 外掛,Chrome 外掛會利用 chrome.cookies API 輔助你在Mac上完成登入。
這個資料互動的通道和資料本身是安全的嗎?
我可以很肯定的和大家說,這個資料互動的通道不僅是 HTTPS ,而且你傳送的資料塊也會被 AES 加密之後將密文傳送給外掛。只不過在互通之前,你需要使用祕跡App 和 外掛 完成一個連線的動作。它的邏輯是由外掛生成臨時二維碼,這個二維碼中包含了 AESKey ,祕跡App 通過掃碼獲得 AESKey,這個步驟不會經過網路,只有你和你才能獲取,於是祕跡App 和 外掛就能完成對稱加密/解密。
你看,這就是我們使用對稱加密的一個經典場景。

為了你能方便遷移至祕跡App,在我們在 Chrome 外掛中也貼心提供了賬戶密碼遷移功能,你可以匯入已經匯出的.csv檔案:

對稱金鑰演算法又稱為對稱加密,這類演算法在加密和解密時使用相同的金鑰,或是使用兩個可以簡單地相互推算的金鑰。事實上這組金鑰成為在兩個或多個成員間的共同金鑰,以便維持專屬的通訊聯絡。與公開金鑰加密相比,要求雙方獲取相同的金鑰是對稱金鑰加密的主要缺點之一。
在對稱加密中最經典的要屬AES-256了,它非常適合在本地儲存資料時來處理你想加密的資料塊或維持雙方特定場景下的通訊資料互動,在這裡我引用 google crypto-js 為前端的同學展示一下該如何使用AES。
AES:
import * as CryptoJS from "crypto-js"; export function aesDecrypt(text, originKey){ const bytes = CryptoJS.AES.decrypt(text, originKey); return bytes.toString(CryptoJS.enc.Utf8); } export function aesEncrypt(text, originKey){ const c = CryptoJS.AES.encrypt(text, originKey); return c.toString(); }
如果你對開發 Chrome 外掛感興趣,不妨閱讀一下我們為此寫的一本小書,《Chrome Extension 入門指南》。
https:// github.com/welearnmore/ chrome-extension-book
Chrome 外掛和內部專案都使用 TypeScript 開發,如果你對 React + TypeScript 感興趣,不妨閱讀一下我們為此寫的一本小書,《淺談TypeScript》。
https:// github.com/welearnmore/ typescript-book接下來我為大家介紹另一種場景,如果你想將你重要的賬戶密碼分享給你在美國的女朋友,但經過網路傳輸,這都有可能被擷取洩露。如果你和你的女朋友在聊私密的話題,聊天的記錄無意中洩露了出去,這會讓你很尷尬和不適。
在我們 祕跡App 中提供了悄悄話功能,使用它,你可以大膽的將重要的賬戶密碼分享給你在美國的女朋友,通過端到端的加密你的聊天記錄只有你和她才能解開和看見。
如果你瞭解非對稱加密,那麼就能明白在網際網路的基礎設施中,PKI用非對稱密碼演算法原理和技術實現了現今我們所依賴的通用性網際網路安全基礎。
用一句科普的話來講非對稱加密又被稱之為公開金鑰密碼學,就是說這種演算法將金鑰分成了兩個部分,加密的部分是公開的這俗稱為公鑰,解密部分是需要隱藏的這俗稱為私鑰。因此,一般來說公鑰加密計算的部分相當複雜,比之對稱加密在效能上要稍遜一籌,但它的優勢在於這樣的設計極其的適合於網際網路的通訊,公鑰因為公開性,任何人都可以使用你的公鑰加密訊息併發送給你,而這段密文只有你擁有私鑰的人才能解密。
在上文的引用中提到了 PKI,而我們的 祕跡App 就實現了PKI,為你建立,驗證,管理公私鑰,PKI是一個很龐大的體系,它包括了很多不同的技術和知識,非對稱加密也僅僅是其中的一個技術。
在這裡我引用開源的 JavaScript PKI 庫為前端的同學展示一下該如何使用:
const asn1js = require("asn1js"); const pkijs = require("pkijs"); const Certificate = pkijs.Certificate; const buffer = new Uint8Array([ // ... cert hex bytes ...]).buffer; const asn1 = asn1js.fromBER(buffer); const certificate = new Certificate({ schema: asn1.result });
它的 example 中包含了一份如何建立 certificate 的過程,大家如果有興趣不妨研究一下。
https:// github.com/PeculiarVent ures/PKI.js/blob/master/examples/CertificateComplexExample/es6.js
真的朋友,在個人資料被嚴重洩露的今天,個人隱私的保護,沒有任何人能幫助你。只能依賴你自己的行動,你自己的意識。學習保護個人隱私資料相關的知識,學習和掌握保護個人隱私資料相關的工具。就像我們提供了這樣的解決方案,如果你不用起來,你還能談你在意自己的 個人隱私資料 嗎?
我們所有技術方案的設計都遵循一個原則,如果有一天我們的伺服器被黑,我們的工程師被買通,這都不會洩露你的個人隱私資料,因為開啟門的鑰匙只有你才擁有。
祕跡App 就是因此而生,這是我們的一小步也是我們的第一步,或多或少在使用體驗上有不少瑕疵,產品會繼續迭代優化,因為看見,所以存在,希望你們能喜歡;