KutunaCoのセキュリティモデル

最終更新:

このページの内容

KutunaCoは、iOSとAndroid向けの、オフラインで動作するアカウント不要のパスワードマネージャーです。このページでは、KutunaCo 1.12.0が何を保護するのか、データがどこに保存され、どのような脅威から守られるのかを説明します。KutunaCoにできないことも、はっきりと記載しています。

概要

  • ボックスと設定は、スマートフォン上でAES-256により暗号化されます。キーは、そのデバイスのiOSキーチェーンまたはAndroid Keystoreにのみ保存されます。
  • アカウント、サーバー、同期、広告、分析はありません。Android版にはインターネットの権限すらありません。アプリがネットワークリクエストを送信することはできません。
  • バックアップは、バックアップのパスワードからArgon2idで導出したキー(新しいバックアップでは64 MiBのメモリを使用)により、AES-256-GCMで暗号化されます。
  • アプリのロックは、生体認証、デバイスのパスコード、または4〜8桁のアプリのPINで解除できます。

なぜオフラインなのですか?

クラウド型のパスワードマネージャーは、何百万もの保管庫を同じサーバーで管理しており、そのサーバーは1つの巨大な標的になります。KutunaCoには、流出しうる中央のデータベースも、攻撃対象となるサーバーも、乗っ取られるアカウントもありません。ボックスが存在するのは、スマートフォンの中と、作成したバックアップの中だけです。

その代わりに失うものも、同じくはっきりしています。デバイス間の自動同期はありません。別のスマートフォンに移行するときは、暗号化されたバックアップを作成し、新しいスマートフォンでインポートします。

データの保存場所

  • ボックスの項目と設定:アプリ専用のフォルダに保存され、ランダムに生成された256ビットのキーを使ってAES-256で暗号化されています。
  • ボックスのキー:iOSでは「このデバイスのみ」の保護設定でキーチェーンに保存されます(iCloudに送信されることも、別のデバイスに復元されることもありません)。Androidでは、Keystoreによってラップ(暗号化)されています。
  • アプリのPIN:PIN自体は保存されず、ソルト付きのPBKDF2-HMAC-SHA256ハッシュ(反復回数210,000回)だけが保存されます。5回目の誤入力以降は、30秒から最大1時間まで段階的に長くなる待ち時間が適用されます。
  • 自動入力用のコピー:引き渡されるのは、ゴミ箱にないパスワード項目だけです。2FAキー、メモ、カードやAPIキーのデータが自動入力用の保存領域に書き込まれることはありません。
  • バックアップ:選択した場所にのみ保存されます。一時ファイルは共有後に削除されます。
  • 2FAのQRコードのスキャン:カメラの映像が保存されることはありません。選択したスクリーンショットの一時コピーは読み取り後に削除され、Google Authenticatorの移行用QRコードからスキャンしたコードは、インポートするまでメモリ上に保持されます。

ロックと認証

  • ロックは、生体認証(Face ID、指紋)、デバイスのパスコード、またはアプリのPINで解除できます。Androidでは、強力な(クラス3)生体認証またはデバイスのパスコードのみを受け付けます。
  • ロックがPINのみの場合、生体認証ロックをオンにすると、最初にPINの入力を求められます。
  • 自動ロックの選択肢:すぐに、30秒、1分、5分、15分、なし。タイマーは、デバイスの時計を戻しても回避できない方法で計測されます。
  • エクスポート、すべてのデータの削除、ロックのオフ、PINの変更などの重要な操作では、もう一度本人確認を求められます。
  • PINを忘れた場合は、デバイスの画面ロックまたは生体認証で本人確認をして、新しいPINを設定します。この方法は、デバイスのロックでPINのリセットを許可がオン(デフォルト)のときに使えます。この設定をオフにすると、デバイスのパスコードを知っている人が新しいPINを設定できなくなります。その場合、PINを忘れたときは、画面ロックのないデバイスと同じく、すべてのデータを削除してバックアップを復元するしかありません。

自動入力

  • Android:項目が候補として表示されるのは、入力を求めているアプリのパッケージ名と署名証明書がリンクしたアプリと一致する場合、または署名が検証された既知のブラウザでドメインが一致する場合だけです。入力のたびに本人確認が求められ、ロックがPINのみの場合はアプリのPINも求められます。復号されるのは、入力するパスワードだけです。安全な画面ロックが設定されていない場合、自動入力は機能しません。
  • iOS:デバイス所有者の認証(Face ID、Touch ID、またはパスコード)なしに項目が一覧表示されることはありません。システムに伝えられるのはドメインとユーザー名だけで、パスワードが伝えられることはありません。
  • 2FAリンク:ウェブサイトやほかのアプリから開かれたotpauth://リンクは警告付きで表示され、確認した後にのみ保存されます。既存の2FAキーが置き換えられることはありません。

クリップボードと画面

  • コピーしたパスワードは機密情報としてマークされます。Android 13以降ではプレビューやキーボードのクリップボード履歴に表示されず、iOSではユニバーサルクリップボードを通じてほかのデバイスに送られることはありません。
  • クリップボードは、選択した時間(30秒、60秒、90秒。「なし」も選択可能)が経過したときと、アプリがロックされたときに消去されます。コピーした2FAコードも機密情報としてマークされます。
  • Androidでは、スクリーンショットと画面録画がブロックされます。iOSでは、アプリがバックグラウンドにある間と画面収録中は、内容が非表示になります。
  • 機密性の高い入力欄では、キーボードの学習と自動修正がオフになります。

バックアップ

  • キーは、バックアップのパスワードからArgon2idで導出されます(64 MiBのメモリ、3回の反復、4レーン:RFC 9106の推奨設定)。各ファイルには使用したパラメータが記録されているため、1.8.0より前に19 MiB / 2回の反復で作成されたバックアップも引き続き開けます。内容はAES-256-GCMで暗号化され、ヘッダーも認証されるため、改ざんされたファイルは開けません。
  • バックアップのパスワードは10文字以上にする必要があります。「Password123!」のような推測されやすいパスワードは拒否され、製品名のKutunaCoも同様に拒否されます。
  • パスワードを忘れると、開発者を含め、誰もバックアップを開けません。
  • 暗号化なしのエクスポートは、明示的に確認した場合にのみ行われます。そのファイルを開いた人は誰でも、項目の内容を読むことができます。

既知の制限事項

  • アプリのロックはUIレベルのロックです。ボックスのキーは生体認証に紐づいていません。ボックスは、デバイスの最初のロック解除後に利用可能になるキーで暗号化されています。
  • 生体認証ロックは、デバイスのパスコードも受け付けます。パスコードを知っている人は、ボックスを開くことができます。
  • ボックスは、iCloudやGoogleによるデバイスのバックアップでは新しいスマートフォンに移行されません。機種変更やスマートフォンのリセットの前に、KutunaCoの暗号化されたバックアップを作成してください。
  • パスワードの漏えいチェック(Have I Been Pwnedなど)はありません。アプリはインターネットに接続しないため、外部のリストを照会できません。パスワード診断のレポートは、すべてデバイス上で作成されます。
  • パスキーには対応していません。
  • iOSの自動入力拡張機能はアプリのPINを求めず、デバイス所有者の認証のみを求めます。そのため、ロックがPINのみでPINのリセットがオフの場合、iOSの自動入力にパスワードは渡されず、iOSでは自動入力を使用できません。
  • 本人確認の前でも、自動入力の候補には項目のタイトルとユーザー名が表示されます(iOSのQuickType、Androidのロック中の候補)。Androidでは、「設定 › セキュリティ › 候補でユーザー名を非表示」でユーザー名を非表示にできます。
  • AndroidのQRコードリーダーは、Google Play開発者サービスに含まれています。選択したスクリーンショットも、このリーダーで読み取ります。Google Play開発者サービスがない場合は、セットアップキーを入力するか貼り付けてください。Google Play開発者サービスは、リーダーが使用されるたびに、匿名の診断情報(イベントの種類、処理にかかった時間、エラーコード、スマートフォンの機種やアプリのバージョンなどのデバイスおよびアプリに関する情報)をGoogleに送信することがあります。画像、QRコードの内容、ボックス内の項目が、この診断情報に含まれることはありません。
  • 新しいバージョンが出たことをお知らせするため、Android版アプリは、起動時に毎回、またアプリに戻ったときには最大で1時間に1回、スマートフォンのPlayストアアプリにアップデートの有無を問い合わせます(Google Play In-App Updates)。これに答えるため、Playストアが機種やアプリのバージョンなどの端末情報とアプリ情報をGoogleに送信することがあります。ボックス内の項目がこれに含まれることはなく、アプリ自体は引き続きネットワーク通信を一切行いません。iPhoneでは、アプリは何も確認しません。「設定 › このアプリについて」からApp StoreのKutunaCoのページが開きます。
  • root化や脱獄がされたデバイス、またはマルウェアに感染したデバイス上のデータを、完全に保護できるアプリはありません。

脆弱性の報告

セキュリティ上の問題を見つけた場合は、support@kutuna.coまでメールでご連絡ください。影響を受けるバージョン、プラットフォーム、再現手順を記載してください。実際のボックスのデータやパスワードは、絶対に送らないでください。連絡先はsecurity.txtにも記載されています。