プラットフォームのセキュリティ
Unveilyがアプリとデータをデフォルトで保護する方法
ひと目でわかる
Unveily SDKとプラットフォームはセキュリティをデフォルトとして設計されています。以下の保護措置は自動的に適用されます — 追加設定は不要です。
SDKセキュリティ (Android & iOS)
ライセンスキーの暗号化ストレージ
初回起動時に、ライセンスキーはハードウェアバックの安全なストレージに自動移行されます。
| プラットフォーム | ストレージ |
|---|---|
| Android | AndroidKeyStoreベースのEncryptedSharedPreferences (AES256-GCM) |
| iOS | iOS Keychain (kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly) |
2回目以降の起動では、ファイルシステムを経由せずに暗号化ストレージから直接読み込まれます。
SSL証明書ピンニング + XOR難読化
すべての内部SDK API通信にSHA-256証明書ピンが適用されます。コンパイル済みバイナリ内のピン値はフィールドごとに異なるXORキーでエンコードされており、平文文字列として見えることはありません。
- ホスト名、プライマリピン、バックアップピンはそれぞれ異なるキーでエンコード
- バイナリ解析で1つのフィールドが露出しても、他のフィールドは保護されます
ルート / ジェイルブレイク検出
ルート化(Android)またはジェイルブレイク(iOS)されたデバイスではSDKの実行がブロックされます。
{
"security": {
"rootDetectionEnabled": true
}
}スクリーンショット・バックグラウンド保護
- スクリーンショットブロック: アプリ内での画面キャプチャおよび録画を防止
- バックグラウンドブラー: アプリスイッチャーでコンテンツが表示されないようにブラー処理
{
"security": {
"screenshotProtectionEnabled": true,
"backgroundProtectionEnabled": true
}
}金融・医療・決済アプリにはこのオプションを有効にすることを推奨します。
アプリ署名検証
ライセンスはパッケージ名と署名証明書ハッシュの組み合わせで検証されます。リパッケージまたは改ざんされたアプリは検証を通過しません。
APIセキュリティ
| 項目 | 方式 |
|---|---|
| 認証 | JWT(短期有効期限) |
| シークレット管理 | GCP Secret Manager — ソースコードや環境変数への平文保存禁止 |
| 通信 | すべてのエンドポイントにHTTPS強制 |
| レート制限 | 認証エンドポイントに適用 |
インフラ
| 項目 | 構成 |
|---|---|
| サーバー | GCP Cloud Run — 永続サーバーなし |
| データベース | Cloud SQL、プライベートIP(パブリックインターネット接続不可) |
| ファイル配信 | GCSプライベートバケット、署名付きURL(15分で失効) |
| コンテナ | Artifact Registry(公開Docker Hub未使用) |
依存関係の脆弱性管理
GitHub Dependabotを通じて、すべてのリポジトリの依存関係を毎週自動スキャンします。
| リポジトリ | カバレッジ |
|---|---|
| ActuallyWorks.Platform | NuGet (API)、npm (Web、BFF) |
| HybridApp Android SDK | Gradle |
| HybridApp iOS SDK | Swift Package Manager |
- Critical CVEは公開後72時間以内にパッチ適用
- 毎週月曜日 09:00 KST に自動スキャン
脆弱性の報告
セキュリティの脆弱性を発見された場合は、公開Issueではなく以下のアドレスへ非公開でご報告ください。
報告受領後48時間以内に確認のご連絡をし、7営業日以内に解決スケジュールをお知らせします。善意のセキュリティ研究者に対して法的措置を取ることはありません。