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秒以内にスキャン」などの補助案内
Repository
参考リポジトリ
このページは GitHub の Anigma-kt リポジトリにある Android(Kotlin)向け技術仕様書を元に構成しています。
実装フェーズでは、仕様準拠に加えてセキュリティ監査の実施が推奨されます。