概要
Apple Intelligenceの生成AIモデル安全フィルターに関する暗号解除手順と構造を解説。 LLDBとPythonスクリプトを用いた鍵取得・復号化方法の説明。 安全フィルターのJSON構造と各種フィールドの役割を紹介。 手順通りに進めれば、最新の安全フィルターを取得・解析可能。 リポジトリには2025年6月28日時点の最新データも収録。
Apple Intelligence安全フィルターの復号化手順
- decrypted_overrides/ :各モデル用復号化済みオーバーライド格納ディレクトリ
- com.apple. */:Asset Specifier名を冠した安全情報用ディレクトリ
- Info.plist :オーバーライドのメタデータ格納ファイル
- AssetData/ :復号化済みJSONファイル群
- get_key_lldb.py :暗号鍵取得用スクリプト
- decrypt_overrides.py :オーバーライド復号化用スクリプト
必要なPython依存ライブラリ
- cryptography のみ必要
- インストール例:
pip install cryptography
- インストール例:
暗号鍵取得手順
- ModelCatalog.Obfuscation.readObfuscatedContents で生成される暗号鍵取得
- LLDBでGenerativeExperiencesSafetyInferenceProviderにアタッチ
/System/Library/ExtensionKit/Extensions/GenerativeExperiencesSafetyInferenceProvider.appex/Contents/MacOS/GenerativeExperiencesSafetyInferenceProvider- 必ず Xcode付属のLLDB を使用(macOS標準やLLVMのlldbは不可)
- LLDBでGenerativeExperiencesSafetyInferenceProviderにアタッチ
- 推奨コマンド :
sudo killall GenerativeExperiencesSafetyInferenceProvider; sudo xcrun lldb -w -n GenerativeExperiencesSafetyInferenceProvider /System/Library/ExtensionKit/Extensions/GenerativeExperiencesSafetyInferenceProvider.appex/Contents/MacOS/GenerativeExperiencesSafetyInferenceProvider
- Shortcutsアプリ でダミーショートカットを作成し、On-Device指定で実行
- LLDBでアタッチ確認後、リポジトリルートで
command script import get_key_lldb.pyを実行- 続けて
cを入力しプロセス継続 - コンソールに 暗号鍵表示、
./key.binにも保存
オーバーライドの復号化
- コマンド例:
python decrypt_overrides.py /System/Library/AssetsV2/com_apple_MobileAsset_UAF_FM_Overrides/purpose_auto -k key.bin -o decrypted_overrides
- decrypted_overrides ディレクトリが未作成なら自動生成
- 復号化済みオーバーライド が格納される
- 通常はリポジトリ同梱の最新版(2025年6月28日現在)で十分
Apple Intelligence安全フィルターの構造と内容
-
オーバーライド は各生成モデルの安全フィルターJSONファイル
-
モデルごとの文脈に応じたルールを定義
- 有害コンテンツのフィルタリングや安全基準準拠を担保
-
metadata.json サンプル(例:com.apple.gm.safety_deny.output.code_intelligence.base):
{ "reject": [ "xylophone copious opportunity defined elephant 10out", "xylophone copious opportunity defined elephant out" ], "remove": [], "replace": {}, "regexReject": [ "(?i)\\bbitch\\b", "(?i)\\bdago\\b", "(?i)\\bdyke\\b", "(?i)\\bhebe\\b", ... ], "regexRemove": [], "regexReplace": {} }- reject :一致した場合にガードレール違反となるフレーズ
- remove :出力から削除するフレーズ
- replace :置換対象と置換後フレーズのペア
- regexReject :正規表現で一致した場合に拒否
- regexRemove :正規表現による削除対象
- regexReplace :正規表現による置換対象
逆コンパイル・リポジトリ活用について
- Apple Intelligenceモデルの安全フィルター暗号処理(Obfuscation)を逆コンパイル
- 抽出済みデータをリポジトリで公開
- 研究や検証目的での参照推奨