威脅模型

防得住什麼,防不住什麼

這頁把這本日記的安全界限全部攤開。信任應該建立在看得見的界限上,而不是形容詞上。

最後更新:2026-09-08

結構:三層怎麼運作

你的密語從不離開裝置。線上傳送的登入憑證是密語的雜湊(PH1),伺服器存放的是再雜湊一次的值(PH2)。日記內文則由另一把隨機產生的金鑰(noteKey)以 AES-GCM 加密,這把金鑰用你的密語(PBKDF2,60 萬次迭代)包裹成加密包裹後上傳。解開內文需要 noteKey;解開 noteKey 需要你的密語。兩層各自獨立。

防得住的

資料庫外洩整個資料庫被拿走,能得到的只有密文、雜湊與加密包裹。沒有任何一欄是可讀的日記。內文的閱讀需要你的密語。
被動的伺服器營運者以系統管理員身份瀏覽資料庫、讀取請求,看到的全部是密文。結構性不可讀。
自家好奇同上:我們的任何員工(現在是一個人)都無法從儲存層讀出內容。
AI 分析伺服器從頭到尾接觸不到明文,AI 分析、摘要、模型訓練在結構上不可能發生
傳輸竊聽全程 TLS。即使傳輸被截聽,截到的也是密文。
身分傳喚沒有 email、沒有姓名、沒有付款資料在伺服器上。能證明「你是你」的,只有你腦中的密語;我們也無法替任何人證明。

誠實的界限:惡意伺服器

誠實揭露

「伺服器結構上讀不了」這句話,只對被動的伺服器成立。如果營運者惡意,理論上可以送出竄改過的程式碼去摘取金鑰,或利用線上憑證嘗試猜測你的密語;密語夠強時,猜測在現實上不可行,但界限本身存在。緩解方式:加密層的程式碼公開(見〈公開驗證〉),任何人都可以用本頁的程式碼親手驗證行為;這能緩解、無法根除。需要對營運者完全零信任的寫作者,請使用純本地模式(零上傳)。

密語強度是唯一真閘門

登入憑證是未加鹽的快速雜湊(每猜一次只需一次 SHA-256),PBKDF2 的 60 萬次迭代保護的是金鑰包裹路徑,不構成登入憑證的爆破成本。這是刻意取捨(換取帳戶查詢的即時性),代價由強制強度政策支付:

三腿至少過一:A. ≥12 字且 ≥3 類字元;B. ≥16 字且 ≥2 類;C. ≥24 字日常句(演算法評分過檢)。
另有弱密語拒絕清單(客戶端與伺服器雙側)。一份 5 詞的隨機字串或一句 24 字的日常句子,對快速雜湊的離線猜測已是實質的牆;「123456」式的密語則連閘門都過不了。

選用 PIN 時,金鑰包裹改由「密語與 PIN 合鑰」保護(PIN 段 200 萬次迭代):就算密語外洩,沒有 PIN 依然解不開。

防不住的

裝置被入侵解密後的內文、以及持有中的金鑰,會存在裝置記憶體與本機儲存。惡意軟體、共用裝置、被解鎖的手機,都不在模型能防的範圍。
伺服器送毒程式見上方「誠實的界限」。開源與可驗證是緩解,不是根除。
弱密語強度政策擋掉常見密語,但擋不掉「強制規則剛好過、實際卻被猜中」的極端組合。密語的強度最終由你決定。
密語與復原套件同失密語遺失且復原套件遺失時,設計上無法復原,也沒有客服重設。套件請抄在紙上離線保存。
未綁定裝置損壞純本地模式下,資料只存在裝置上;裝置遺失 = 字消失。這是零上傳的代價,使用時會明確告知。
剪貼簿與截圖復原套件顯示一次之後,剪貼簿同步、雲端截圖備份都是外洩面。紙本是最穩的容器。

我們刻意不做的

沒有後門、沒有「合法請求解密」程序(技術上不存在)、沒有埋點統計、沒有第三方腳本、沒有廣告生態系的任何掛點。這些不是缺失,是設計。

親手驗證

以上每一句都可以被檢查:〈公開驗證〉頁讓你貼上自己的加密備份,在你的瀏覽器裡本地解開,驗證「這串東西只有你的密語能開」;過程發出的網路請求為零。程式碼與資料格式的說明同樣在該頁。