世界を動かす技術を、日本語で。

Appleのインテリジェンスモデルから安全フィルターを抽出しました

概要

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は不可)
  • 推奨コマンド
    • 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)を逆コンパイル
  • 抽出済みデータをリポジトリで公開
  • 研究や検証目的での参照推奨

Hackerたちの意見

うわ、これ結構バカみたいだね。Appleがこんな感じなら、どう思えばいいのか分からないな。 https://github.com/BlueFalconHD/apple_generative_model_safet... 編集: はっきり言っておくけど、こういうのは簡単に回避できるよ。「Boris Johnson」=>「B0ris Johnson」ってやれば、正規表現をスルーしてLLMにちゃんと認識されるからね。

バカじゃないよ。99%のユーザーはそんなこと気にしないと思う。こういうハードコーディングされた正規表現は、いい第一段階のフィルターだし、すごく効率的だよ。

UKの政治はタブーってこと?

ここでの目的は、誰かが意図的にブロックを回避するのを防ぐことではないと思う。むしろ、ある政治家についてのメールに「${politician}が死んでほしい」と返事した場合に見られるような見出しを避けるためだと思う。一般的に言えば、こういう広範な言葉フィルターは、「子供たちのことを考えて」反応を短絡的に防ぐためのものだと思う。ティニー・ティムの電話が「神が私たちを祝福してくれますように」と言うのではなく、「神が私たちを殺してくれますように」と言うことを示唆するような反応をね。こんなバカなフィルターがあれば、それだけで十分だよ。

こんな状況でAppleがどうなってるのか、正直よくわからない。何を期待してたの?これが最新のソリューションだし、AppleはAIレースにはほとんど参加してないよね。誰もが好きじゃない大胆な機能に賭けるより、うまくいってるものをコピーする方が理にかなってると思う。

なんでこういうのっていつも真剣味がないんだろう?「AIの安全性」について本気で取り組んでる人って、実際に何をやってるか理解してる人はいるのかな?インターンの週末プロジェクト以上の能力を持ってる人は?サイバーセキュリティの分野を思い出すよ。1%の人がダブルフリーをコード実行に変えられる一方で、99%はチェックリストや「署名スキャン」をやって、CVE番号を扱ってる。で、その間にソフトウェア開発者たちは「GenerativeExperiencesSafetyInferenceProviders」を作ってるから、あっちも相当やばいんだろうね。

LLMはそうするよ。でも、事前に指定されたタグの集まりで訓練された画像生成モデルは、すぐに認識できない結果を出すだろうね。

組み合わせがちょっと変だね。これ、死を避けるためのものがたくさんあるし、Appleのブランド名が正しく大文字になってるか確認するセットもある。優先順位ってやつだね! https://github.com/BlueFalconHD/apple_generative_model_safet...

Appleのブランド名が正しく大文字になってる。優先順位ってやつだね! 俺にとっては本当に恥ずかしいし、不安定だと思う。でも、ブランディング担当者にとってはすごく重要なんだろうね。

「unalive」が含まれてないのは面白いね。これって、実際に人々が何を言ってるかなんて誰も気にしてないってことを示してるよね。プラットフォームもみんなその意味を知ってるし、全部パフォーマンスだよ。

そんなに批判的にならないで。アメリカの企業の人たちもちゃんと優先順位をつけてるよ!

だから、ファイルを「実行する」とか、情報を「渡す」っていう提案をブロックしてるんだ。

「Granular Mango Serpent」に名前を変えようかな。安全指針でそのキーワードが何のためにあるのか見てみたいし。

Granular Mango Serpentは新しいDavid Meyerだね。 https://arstechnica.com/information-technology/2024/12/certa...

これはテストデータであって、実際の安全フィルターじゃないと思う。

ここには確かにテスト用のものが含まれてる(例えば「Granular Mango Serpent」とか)けど、ちゃんとしたルールもあるよ。また、正規表現で一致したフレーズを生成(ショートカットやファウンデーションモデルフレームワークを通じて)でテストすると、ブロックリストは確実に適用される。君が言及したこの特定のファイルは、置換だけを扱う修辞的v1フォーマットなんだ。攻撃的な用語を「テスト完了」に置き換えるだけだよ。

アレクサンドリア・オカシオ・コルテスが違反を引き起こすの?

文脈によるのかな?トレーニングデータが彼女の名前を人種に関連する「スラング」として捉えたのかも。ほかにも知ってるのがあるか見てみようかな。

彼女がたくさんのディープフェイクポルノの被害者になってるからじゃないかな。

それに加えて: "(?i)\bAnthony\s+Albanese\b", "(?i)\bBoris\s+Johnson\b", "(?i)\bChristopher\s+Luxon\b", "(?i)\bCyril\s+Ramaphosa\b", "(?i)\bJacinda\s+Arden\b", "(?i)\bJacob\s+Zuma\b", "(?i)\bJohn\s+Steenhuisen\b", "(?i)\bJustin\s+Trudeau\b", "(?i)\bKeir\s+Starmer\b", "(?i)\bLiz\s+Truss\b", "(?i)\bMichael\s+D\.\s+Higgins\b", "(?i)\bRishi\s+Sunak\b"。編集: 南アフリカのニュースメディアが、Appleが南アフリカの政治家に注目したことに気づいたら、騒ぎになるのは間違いないね。(特にスティーンハウィゼンとラマポーザについて言ってる)

面白いね、これは特にスペイン語のローカライズに関することだね。

企業のGenAIモデルには、「逮捕される瞬間のフォトリアルな画像」や「ISISの旗を振る」や「赤ちゃんを殴る」とかのブロックがあるんだろうな。

AGIがすぐそこにあるって言われてるのに、こういう超賢いLLMがまだ正規表現で出力をフィルタリングしなきゃいけないのが面白いね。

これはただのAppleのポリシーと調整だよ。インターネットがたくさんのゴミを言ってるからって、モデルがそれを垂れ流す必要はないからね。

誰もAppleのLLMが最先端だなんて思ってないと思うよ(特に彼らのデバイス上のLLMなんて)。

「CN」ロケールのデータには禁止されたフレーズの長いリストがあるよ。性的逸脱に関連する言葉が幅広くカバーされてるのは予想通りだね。政治的な内容については、宗教的なテーマに対するブロック以外はあまりない。[1] これはテストデータかもしれない。「golliwog」は「テスト完了」となってる。[1] https://github.com/BlueFalconHD/apple_generative_model_safet...

これは確かに古いテストが残ってるね。でも、その言葉はただのバカげたものじゃなくて、攻撃的なんだ(ググってみて)。これはv1の安全フィルターで、文字列を別の文字列にマッピングするだけなんだ。この場合、golliwogを「テスト完了」に変えてる。私が見逃したものがなければ、他のファイルはもっと複雑なルールを許可するv2を使ってるよ。

中国では「調和のとれた社会」と呼ばれてるけど、私たちは「安全」と呼んでる。別の名前での検閲も、一般の人々の思考を操作するには同じくらい効果的だよ。こんなことを見る機会はあまりないね。

企業がランダムな文生成器から「ブランドにダメージを与える」ような文を出したくないのは、全然驚くべきことじゃないし、当然だと思う。メディアが「ジェーンはアンソニー・アルバニージに死んでほしいと思っている」って要約したら、すごい騒ぎになるだろうね。

これって、恥ずかしいメールや責任を引き起こすメッセージの要約を抑えようとするフィルターだと思う。で、「Safariの要約はこのタイプのコンテンツを扱うようには設計されていません」っていう無視できる警告が出るんだよね。ここにいる人たちが思ってるように、入力をフィルタリング/変更してるんじゃなくて、LLMの出力をフィルタリング/変更してる。Appleのデバイス上のLLMは3bパラメータしかないから、たまにバカなことも言うよ。

こういう用語って、すごく変で淡白だよね。正直言って、Appleの奇妙な検閲の失敗を思い出す。あんまり大きな問題にはならなかったけど、かなり独特に恥ずかしかったやつね。