脅威モデル
防げること、防げないこと
このページは、この日記の安全の限界をすべて開示します。信頼は、形容詞ではなく、見える限界の上に築かれるべきです。
最終更新:2026-09-19
構造:三層はどう動くか
あなたのパスフレーズが端末を離れることはありません。ネットに流れるログイン資格情報はパスフレーズのハッシュ(PH1)で、サーバーが保存するのはさらに一度ハッシュした値(PH2)です。二層の鍵導出のアルゴリズムのアップグレードの現状(PH1/PH2 と包み)は、下の「KDF アップグレードの現状」の節を参照。この節は構造だけを扱います。日記の本文は、別に無作為生成された鍵(noteKey)で AES-GCM 暗号化され、この鍵はあなたのパスフレーズで包んで暗号化パッケージにして送られます。本文を開くには noteKey が、noteKey を開くにはあなたのパスフレーズが必要です。二層はそれぞれ独立しています。
防げること
データベース流出データベース全体を持ち去られても、手に入るのは暗号文・ハッシュ・暗号化パッケージだけ。読める日記の列は一つもありません。本文を読むにはあなたのパスフレーズが要ります。
受動的なサーバー運営者がシステム管理者としてデータベースやリクエストログを見ても、見えるのは暗号文だけ。構造的に読めません。
身内の好奇心同じことです。私たちの側の誰も(今は一人ですが)、保管層から本文を取り出せません。
AI 分析サーバーは最初から最後まで平文に触れません。AI 分析・要約・モデル学習は構造的に起こり得ません。
通信の盗み聞き全区間 TLS。たとえ通信を盗み取られても、取れるのは暗号文です。
身元の召喚サーバーにはメールも氏名も支払い情報もありません。「あなたはあなただ」と証明できるのは、あなたの頭の中のパスフレーズだけ。私たちには誰かの代わりに証明することもできません。支払いの引き換え後は「この身元は支払い済み」が紐づけられる可能性があります(詳細はプライバシーポリシーの「有料の時の例外」)。現時点で支払いは提供中です。
正直な限界:悪意あるサーバー
正直な開示
「サーバーは構造的に読めない」という言葉は、受動的なサーバーにだけ成立します。運営者が悪意を持てば、理論上は改ざんしたコードを届けて鍵を吸い上げたり、オンラインの資格情報でパスフレーズの推測を試みたりできます。パスフレーズが強ければ推測は現実的ではありませんが、限界そのものは存在します。緩和策:暗号層のコードは公開してあり(〈公開検証〉参照)、誰でもこのページのコードで挙動を自分の手で確かめられます。これは緩和であって根絶ではありません。運営者への完全なゼロトラストを必要とする書き手には、純ローカルモード(送信ゼロ)をお使いください。
パスフレーズの強度こそ唯一の真の門
ログイン資格情報と鍵を包む鍵(KEK)のアップグレードの現状:下の「KDF アップグレードの現状」を参照。以下は、強度こそ唯一の真の門である理由だけを扱います。
次の三つの条件のいずれか:A. 12 字以上かつ 3 種類以上の文字種。B. 16 字以上で 2 種類以上。C. 24 字以上の日常の文(アルゴリズムの採点を通す)。
さらに弱いパスフレーズの拒否リスト(クライアントとサーバーの両側、両世代の資格情報形とも拒みます)。無作為な 5 語の文字列や 24 字の日常の一文なら、Argon2id 鍵導出へのオフライン推測に対してすでに実質的な壁です。「123456」式のパスフレーズは門すら通れません。
PIN を設定すると、鍵を包む鍵は「パスフレーズと PIN の合わせ鍵」に切り替わります(新しい形は Argon2id 64 MiB の二回の鍵導出を合成。それ以前の二要素アカウントの PIN 部分は PBKDF2 200 万回で、次回ログイン後に自動アップグレード):パスフレーズが漏れても、PIN がなければ何も開きません。綴じ済みアカウントは「起動時ロック」が常にオンです:開くたびに PIN を要求し、ロック中の端末には復号鍵の平文がありません(ロック画面の PIN 封印は意図的に PBKDF2 60 万回。解錠の即時性を優先)。この設定は一つの端末にだけ効き、綴じ済みアカウントではオフにできません(純ローカルモードは対象外)。
KDF アップグレードの現状
このページの二層の鍵導出は、それぞれ一度アルゴリズムのアップグレードを経験しています。二つの経路の現状をここにまとめます。
ログイン資格情報(PH1/PH2)2026-09-10 から Argon2id で鍵導出しています(64 MiB、3 パス):それ以前のアカウントは次回のログイン一度で自動的にアップグレードし、アップグレードまでは高速ハッシュのままです。
鍵を包む鍵(KEK)パッケージの鍵導出はメモリハードな Argon2id(64 MiB、3 パス。2026-09 からの新規綴じと自動アップグレード)、それ以前の包みは PBKDF2(60 万回反復)のままで、次回ログインの成功後に自動で Argon2id へアップグレードします。本文と鍵は一切変わりません。
移行の経路2026-09-17 の一回限りの全量失効の基準時刻より前に作られたログイン資格情報。それ以降は、アップグレードが済んでいないアカウントが再ログインのたびに受け取る資格情報は最長 7 日(ログイン自体がアップグレードを起こし、アップグレード後は 180 日に戻ります。この上限は新版 App の二欄ログインが担い、旧版の一欄 App のままの端末はリクエストの形をサーバーが見分けられないため 180 日のままで、App の自動更新後に短縮されます)。なお「まだ高速ハッシュ」というログイン状態は「次に App を開くこと」で担われ、180 日の自然失効には依存しません。
二つのアップグレードが済めば、データベース流出後のオフライン推測の面は、最後まで Argon2id に守られます。アップグレードが済むまでの移行期のコストは、強制強度ポリシーが払います(上の節を参照)。
防げないこと
端末の侵害復号された本文と保持中の鍵は、端末のメモリと端末内保管に存在します。マルウェア、共用端末、ロック解除されたスマホ:これらはモデルの防衛範囲外です。緩和:綴じ済みアカウントは「起動時ロック」が常にオンで、鍵は PIN で施錠され、端末の保存領域に使える復号鍵は残りません(旧アカウントが一回目の PIN 設定を完了するまでの間は除く)。この扉は軽い覗き見を防ぐもので、マルウェアは防げません。
サーバーが毒入りコードを届ける上の「正直な限界」参照。オープンソースと検証可能性は緩和であって根絶ではありません。オフライン対応はページと同じ生成元の小さな Service Worker が担います:プログラム本体だけをキャッシュし(筆記もパスフレーズも含まない)、キャッシュされたコードはページのスクリプトと同じ生成元・同じ権限で、新しい攻撃面ではありません。ソースは全文読め、ブラウザは起動のたびに照合して更新し、毒入りの版は次にオンラインになったとき自動で置き換えられます。
弱いパスフレーズ強度ポリシーはありふれたパスフレーズを拒みますが、「規則はかすかに通った、けれど現実には推測される」という極端な組み合わせまでは拒めません。パスフレーズの強さは最終的にあなたが決めます。
パスフレーズとリカバリーキットの同時喪失両方を失くしたときは設計上復元できず、カスタマーサポートによる再設定もありません。キットは紙に書いてオフラインで保管してください。
未綴じ端末の故障純ローカルモードでは、データは端末の中にしかありません。端末を失えば、文字も失われます。送信ゼロの代償で、使用時にはっきり告げます。
クリップボードとスクリーンショットリカバリーキットを一度表示した後は、クリップボード同期やクラウドのスクリーンショット自動保存が漏えいの面になります。紙が最も安定した容器です。
私たちが意図的にしないこと
バックドアなし、「合法的な要請による復号」の手順なし(技術的に存在しません)、埋め込み統計なし、サードパーティースクリプトなし、広告エコシステムへの接点なし。これらは欠落ではなく、設計です。
自分の手で確かめる
上のどの一文も検査できます:〈公開検証〉ページでは、あなた自身の暗号化バックアップを貼り付けて、ブラウザの中で手元で復号し、「この文字列はあなたのパスフレーズにしか開けられない」を確かめられます。途中に出るネットワーク要求はゼロです。コードとデータ形式の説明も、そのページにあります。