PrivacyNotesからは私のノートの何が見えますか?¶
読める形のものは何も見えません。ノート、タイトル、タグ、添付ファイルは、同期される前にあなたのデバイス上で暗号化されます。サーバーが保存するのは復号できない暗号文であり、それを変えられる鍵は当社側に存在しません。
当社に見えるのは、サービスの運営に必要な最小限の情報だけです。暗号化ストレージの使用量、リンク済みデバイスの台数、同期のタイムスタンプ。GoogleやAppleではなくフレーズでサインインしている場合は、メールアドレスすら分かりません。
なぜユーザー名とパスワードではなく、リカバリーフレーズなのですか?¶
最初は逆に感じるかもしれませんが、リカバリーフレーズ1つの方が強固な仕組みです。ユーザー名とパスワードの組では、ユーザー名は秘密ではないため(あらゆる漏えいデータのダンプに顔を出します)、安全性はすべてパスワードに懸かっています。そして人間が選ぶパスワードのエントロピーは、平均でせいぜい30から40ビット程度です。あなたの12単語のフレーズは確実に128ビットあり、デバイスが生成したもので、人間が選ぶことも、他のサイトで使い回されることもありません。
さらに、当社側には漏らすものが何もありません。パスワードログインでは、サーバーが少なくともパスワードハッシュを保存することになり、それは漏えい、解読、フィッシングの対象になり得ます。あなたのフレーズはデバイスの外へ出ることがなく、暗号鍵はローカルで導出され、サーバーが目にするのは暗号化済みデータだけです。盗まれるハッシュも、攻撃者に悪用されるパスワードリセットの仕組みも存在しません。
12単語の入力が面倒に感じるなら、ワンタップでフレーズをパスワードマネージャーに保存できます(設定 > セキュリティ > シークレットフレーズ)。そうすればサインインは普通のログインと変わらない感覚です。おなじみの方法がよければ、GoogleやAppleでのサインインも使えます。その場合も内部ではフレーズが発行されます。
利便性とプライバシーのバランスを自分で選べますか?¶
はい、それも意図的な設計です。誰もが同じ脅威に備えているわけではないため、アカウントモデルは単一の教義ではなく、段階式のはしごになっています。どの段階でもノートはエンドツーエンド暗号化されたままで、変わるのは鍵を誰が持つか、そして当社があなたについて何を知るかだけです。
便利さ寄りの端:Google、Apple、GitHubでサインインし、尋ねられたら「シンプルに使う」を選びます。当社がリカバリーフレーズを、サーバー上に保存時暗号化した形でお預かりするので、どのデバイスでもプロバイダーアカウントだけでサインインでき、バックアップするものも失うものもありません。正直なトレードオフとして、プロバイダーアカウントのメールアドレスは当社に分かり、サーバーが完全に侵害された場合には理論上、預かっている鍵が露出し得ます。現実的な脅威が標的型の侵害ではなく自分の認証情報の紛失なら、これは理にかなった選択です。
中間:プロバイダーでサインインしつつ「最大限のプライバシー」を選びます。フレーズは当社のサーバーに一切触れず、暗号化は完全にゼロ知識です。新しいデバイスには、フレーズか、サインイン済みデバイスからのQRスキャンが必要になります。プロバイダーのメールアドレスは依然として必然的に当社へ伝わりますが、たとえ強制されても、当社がノートを1件たりとも読むことはできません。
プライバシー寄りの端:プロバイダーを一切使わず、12単語のフレーズだけを使います。メールアドレスも、名前も、身元情報もなし。匿名でのPro購入と組み合わせれば、支払いをしてもどこにも名前が残りません。その代わり、鍵の管理は完全にあなたの責任です。サインイン済みのデバイスが1台も残っていない状態でフレーズを失えば、誰にも助けられません。
このラチェットは一方向にしか回りません。お預かり型から自己管理型へはいつでも移行できますが(当社が保存しているフレーズのコピーは削除されます)、こっそり元へ戻る道はありません。そしてどの段階でも、ローカルの保護層を上乗せできます。PINによるアプリロック、生体認証によるロック解除、ノートごとの保護です。
12単語のリカバリーフレーズで十分安全ですか?Bitcoinウォレットのように24単語にしないのはなぜですか?¶
はい、12単語で十分です。12単語のBIP-39フレーズは128ビットのエントロピーを符号化しています。128ビットの総当たりは「もっと大きなコンピュータが要る」という問題ではなく、「人類が生み出すエネルギーを超える」という問題です。128ビットは破れるのに256ビットは破れない、という現実的な攻撃は存在しません。
Bitcoinとの比較は、むしろ24単語が大部分マーケティングである理由を示しています。Bitcoinの鍵はsecp256k1曲線上にあり、この曲線自体が約128ビット分の安全性しか提供しません。24単語のフレーズは、破るのに約128ビット分の作業しか要らない錠前に、256ビットのエントロピーを注ぎ込んでいるのです。主要なウォレットの多くが今でも12単語を既定にしているのは、これが理由です。
PrivacyNotesは端から端まで同じ128ビットの安全性水準を目標にしています。フレーズは鍵導出関数にかけられ、それが守る暗号化(XChaCha20-Poly1305)も同じ水準に合わせて鍵付けされています。24単語にしても、書き留めて入力する量が倍になるだけで実質的な安全性は増えないため、提供する予定はありません。
あらゆるリカバリーフレーズの本当の弱点は、長さではなく、フィッシングと紙の保管場所です。フレーズそのものを守れば、12単語は私たちの誰よりも長生きします。
誰かが私の12単語を言い当てたら、アカウントにログインできてしまいますか?¶
端的に言えば、はい。フレーズは鍵そのものなので、それを持っている人は誰でもサインインできます。家の鍵を持っている人が誰でもドアを開けられるのと同じです。これは設計どおりです。フレーズはノートへの唯一のマスターキーであり、その手前により弱い仕組みは置かれていません。つまり本当の問いは、フレーズを持てばアクセスできるか(できます)ではなく、誰かがそれを言い当てられるかどうかです。そしてその答えは「いいえ」です。現存する、あるいは予見できるどんなコンピュータをもってしても不可能です。
規模感はこうです。12単語のフレーズは2^128通りのうちの1つで、これは39桁の数(3.4×10^38)にのぼります。最初の1回であなたのフレーズを当てる確率は3.4×10^38分の1。3億分の1の宝くじの1等に4回連続で当せんするよりも低い確率です。まぐれ当たりではなく総当たりの探索と考えても、状況は変わりません。毎秒10^18回(100京回。国家を含め、現実のどんなハードウェアもはるかに及ばない速度です)試したとしても、すべてを試し終えるにはおよそ10兆年、現在の宇宙の年齢の800倍近くかかります。しかもこれは空想上の数字です。現実の試行は毎回、意図的に遅くした鍵導出ステップを実行しなければならず、オンライン攻撃は当社のサーバーを経由するしかないため、実際の推測はさらに何桁も遅くなります。これは目新しい仕組みでもありません。同じ128ビットの構成が10年以上にわたってBitcoinウォレットを守り続け、言い当てられた例は一度もありません。
フレーズをパスワードのように捉えて、大文字や数字や記号を混ぜれば強くなると考えたくなりますが、リカバリーフレーズはそういう仕組みではありません。手作業で作ったり書き換えたりは絶対にしないでください。デバイスが暗号学的に安全な128ビットの乱数を生成し、それを2048語の固定された公開リストから選ばれた12単語として符号化します。この乱数こそが強度のすべてです。最後の単語には組み込みのチェックサムまで含まれているため、打ち間違えたフレーズや自作のフレーズは即座に弾かれます。単語の順序は重要ですが、大文字小文字は問いません(サインイン時に正規化されます)。記号を足せばフレーズが無効になるだけです。発行されたとおりに単語を入力してください。
二要素認証(2FA)がないのはなぜですか?¶
見落としではなく、意図的なトレードオフだからです。おなじみの2FA、つまりSMSで届くコードや認証アプリは、人間が選んだ弱いパスワードを補強するために存在し、サーバー上に保持される共有シークレットと復旧経路に依存しています。それこそ、フレーズモデルが取り除いた攻撃対象領域そのものです。あなたのデバイスはチャレンジに署名することで鍵の保有を証明するため、当社のサーバーが受け取るのは公開鍵と署名だけで、フレーズやパスワードハッシュを受け取ることは決してありません。その上にコードを重ねても、この設計が避けるために存在するサーバー側の仕組みを呼び戻すだけで、推測に対する防御は何も増えません。128ビットがその扉をすでに閉じているからです。
本当に価値を足し得る第二要素は、ハードウェアセキュリティキーやパスキーのような、フィッシング耐性のあるものだけです。残っている現実的なリスクは推測ではなく、フィッシング、マルウェア、そしてフレーズの盗難や覗き見だからです。ロックせずに放置されたデバイスに対しては、アプリロック(PIN)と生体認証によるロック解除がローカルの防波堤になります。
それ以上に、フレーズは鍵そのものです。アカウントを作成したその日にバックアップしてください。信頼できるパスワードマネージャーに保存するか、印刷または書き留めて、その控えを安全な場所に保管しましょう。アプリ本体以外の場所には決して貼り付けないでください。
Bitcoinウォレットと同じ単語リスト(BIP-39)を使っていますか?¶
はい、標準のBIP-39英語単語リストです。2048語、Bitcoinウォレットが使うものとまったく同じリストです。フレーズの生成には、監査済みのオープンソースライブラリ@scure/bip39を使用しています。独自の単語リストも自家製の暗号もありません。
このリストは手書きで書き留めることを想定して設計されています。各単語は先頭4文字が一意なので、にじんだり省略したりした単語でも曖昧になりません。見た目が似た単語は意図的に除外されています。
標準リストなので、公開されているどのBIP-39リファレンスとも自分のフレーズを照合できます。また、当社の暗号化レイヤーはオープンコアとして公開されているため、実装をご自身で確認できます。
ノートを検索すると、サーバーに何か送信されますか?¶
いいえ。検索は、デバイス上に構築・保存された全文検索インデックスに対して実行されます。クエリがデバイスの外へ出ることはなく、接続がまったくなくても結果は表示され、何を検索したかが送信されることは一切ありません。
これは、こっそり方針転換できるようなポリシー上の選択ではなく、アーキテクチャが強制している性質です。サーバーは暗号文しか保持していないため、当社側にはインデックス化したり検索したりできる読める形のデータが存在しません。ノートを読めないサーバーは、ノートを検索することもできないのです。
PrivacyNotesは私のノートにAIを使いますか?¶
いいえ。アプリにAI機能はなく、バックグラウンドで動くAI処理もなく、あなたのコンテンツでモデルを訓練することもありません。ノートはデバイスを離れる前に暗号化されるため、当社のサーバー上には、何かに与えられる読める形のデータがそもそも存在しません。
仮にこの方向の機能を出すことがあるとしても、完全にデバイス上で動作し、厳密にオプトインである必要があります。平文のノートをクラウドのモデルへ送ることはゼロ知識の約束を破ることになるため、選択肢にありません。
burn noteとは何ですか?¶
burn noteは、PrivacyNotesを使っていない相手とノートを共有するための、自動消滅する仕組みです。アプリがコンテンツを使い捨ての鍵で暗号化し、リンクを発行します。鍵はリンクのフラグメント部分に載って運ばれ、ブラウザはこの部分をサーバーへ決して送信しないため、当社のサーバーには読めない暗号文だけが保存されます。
リンクが最初に開かれた時点で、サーバーは暗号文を渡すと同時に削除します。読めるのは一度きりで、その後は消えます。開かれなかったリンクは24時間で自動的に失効します。いずれにせよ、何も残りません。
PrivacyNotesはオープンソースですか?¶
あなたを守る部分は、すでにそうです。暗号化コード、データベーススキーマ、脅威モデルはオープンコアとして公開されており、当社の言葉を信じる代わりに、ノートがどのように守られているかを誰でも監査できます。
次はアプリ本体です。全プラットフォームのネイティブアプリが出そろった時点で、クライアントコード(ウェブ、デスクトップ、モバイル)をオープンソース化します。唯一クローズドのままなのは同期バックエンドで、そこには当社が読めない暗号化データ以外は決して保存されません。バックエンドを非公開にしても、あなたのプライバシーが失うものは何もありません。一方で、サービス全体を複製して当社の成果を自分のものとして売り出す行為は防げます。あなたを守る部分はオープンに、当社を守る部分はクローズドに。