ろーでぃんぐ

Development

Anigma

Anigma-kt の技術仕様をもとに整理した、時間同期型のデータ移行システム構想です。 TOTPとPINを組み合わせた鍵導出で、ネットワークに依存しない移行体験を目指しています。

Android (Kotlin) Docs AES-256-GCM TOTP + PIN QR Transfer
Overview

コンセプト

アプリ間のデータ移行を、時間ベースの認証情報とPINで鍵導出して安全に実施する構成です。 暗号鍵は短時間のみ有効で、メモリ上で扱い、保存しない方針を採用しています。

Core Spec

主要な暗号仕様

暗号ライブラリ Google Tink
暗号方式 AES-256-GCM
鍵導出 SHA3-256 + Argon2
認証要素 TOTP (30秒) + PIN
Key Lifecycle

鍵生成とライフサイクル

鍵は「PIN + 現在のTOTP」をもとに導出し、TOTP更新(30秒ごと)で再生成します。 古い鍵は破棄し、復号成功後は生成ループを停止する運用が推奨されています。

鍵はストレージ保存せずメモリ上のみで扱い、短い有効期間でリプレイ耐性を高める設計です。
Flow: Sender

移行元デバイス

1. PIN設定と監視開始 TOTPの30秒周期にあわせて鍵更新を監視。
2. 暗号化とQR生成 データをAES-GCMで暗号化し、Base64化してQR表示。
3. 30秒ごとに更新 鍵とQRを更新し、古い鍵を即時破棄。
Flow: Receiver

移行先デバイス

1. 同一PIN入力 移行元と同じPINを使用して鍵導出条件を一致。
2. QRスキャン 暗号化データを読み込み、復号処理を実行。
3. 完了判定 復号成功でインポート完了。失敗時は再試行と時刻確認。
Security

セキュリティ考慮事項

  • PINは8文字以上を推奨
  • 時刻同期は±30秒以内を前提
  • 鍵は保存せず使用後に破棄
  • ネットワーク非依存の物理転送(QR)
  • GCM認証タグで改ざん検知
UX

UI/UXの推奨

  • QR更新までの残り時間カウントダウン表示
  • 「暗号化中」「復号化中」の進捗表示
  • 日本語での明確なエラーメッセージ
  • 「30秒以内にスキャン」などの補助案内