勲この1~2年の間に機械学習を使用したサービスやプロダクトが数多くリリースされています。Attacks」と呼ばれる機械学習モデルに対する攻撃手法の一例を紹介します。Tree等)を「複製」する攻撃です。adversary)がブラックボックスアクセスを行い、MLモデル「f」を複製(赤い波線部分)している様子を表しています。f(xq)」を得ます。複数の入力値と出力値を手掛かりに、モデル内部のロジック(方程式)を解いていくことで、MLモデルの複製を行います(詳細は後述)。ownerにとって以下の問題が生じます。課金回避による収益悪化(MLモデルに対する)利用者からの入力(クエリ)単位に課金し、MLモデルの訓練コストの回収、および、収益を得るビジネスモデルを展開している場合、MLモデルが複製されることで正規のMLモデルに対するクエリ数が減少し、収益が悪化する。訓練データからの情報漏えいMLモデルの訓練に使用した訓練データが漏えいする。訓練データに機密情報が含まれている場合は、機密情報が漏えいする。振る舞い検知の回避MLモデルがスパム検知・マルウエア検知・N/W異常検知等に使用されている場合、攻撃者にMLモデルが複製され、検知ロジックが明らかにされることで、これらの検知機構が回避される。Attacksを実現する手法として、MLモデルの種類や振る舞いに応じて以下に示す複数の攻撃手法を提案しています。Attacks」の紹介と、実際に検証した結果を示します。その他の手法は、次回以降のブログで順次紹介していく予定です。“?????”」を複製する攻撃です。y」を2クラス分類するために、以下の方程式を使用しているとします。Regression」に記載。ownerのみ知り得る情報であり、攻撃者を含む利用者にとってはブラックボックスになります。方程式の係数(1.4150971、3.3421481等)は知る由もありません。Regression」であると推測することができます。この事実から、係数は未知であるものの、以下の方程式の形までは容易に推測することができます。w2」を特定していく作業を行います。方程式を解いていきます。w2」を一つずつ特定していくことで、MLモデルがデータ分類に使用している方程式を複製します。Regression」を検証対象とします。Attacksを検証するために、今回は検証用のMLモデルを構築しました。検証用のMLモデルは、PRMLに収録されているテスト用のデータセット「ex2data1」を使用して学習を行いました。このデータセットには以下のような2種類のデータ(赤丸、青丸)が含まれています。この訓練データを基にMLモデルを学習させると、2クラス分類を行うための方程式として以下が得られます(小数点4位以下は省略)。boundaryの右上の領域はクラス「positive」、左下の領域はクラス「negative」というように、データを2クラスに分類できるようになります。この検証用MLモデルの利用イメージは以下の通りです。x2」をMLモデルに入力します。negative)と、そのクラスに所属する確率「P」を応答します。x2」を入力すると、その結果としてクラス「negative」・確率「94.5%」(1-P)が応答された様子を示しています。x2」はほぼ間違いなくクラス「negative」であると判断することができます。xq2」を入力すると、結果としてクラス「positive」・確率「99.6%」(P)が応答されます。xq2」はクラス「positive」であると判断することができます。このように、利用者は分類させたい手元のデータをMLモデルに入力することで、データの「分類結果」とその「確率」を得ることができます。次に、攻撃者(adversary)がMLモデルを「複製」する様子を下図に示します。xq2)と、それに対してMLモデルから応答されるクラスに所属する確率「P(0.055)、P(0.996)」を手掛かりにして方程式を解いていきます。以下、攻撃の流れを具体的に説明します。攻撃者がMLモデルに対して複数のデータを入力した場合、以下のような情報がMLモデルから応答されたとします。x2」のみが特定されます(上図の赤字部分)。w2」は依然として未知のままです。x2)」の値を特定する必要があります。negative)と、そのクラスに属する確率(P)のみであるため、このままでは左辺を特定することはできません。x2)」をロジスティック関数で0-1空間の値に写像したものとなります。x2)」に変換することができます。この変換は、ロジスティック関数の逆関数であるロジット関数を使用することで簡単に行うことができます。下図は、ロジット関数に確率「P」を代入し、方程式の左辺を特定した様子を示しています(赤字部分)。w2」を求めることができます。本例で求めた係数は以下の通りです。この特定した係数を方程式に当てはめることで、攻撃対象のMLモデルが分類に使用している方程式を以下のように求めることができます。これで、MLモデルの複製は完了です。Regression」を複製できることが分かりました。正しくMLモデルが複製できたのかを確認するために、複製したMLモデルを使用し、オリジナルモデルと同じように2クラス分類が行えるのか検証します。検証は、テスト用の分類対象データ(100個)に対し、オリジナルモデルと複製モデルでそれぞれ2クラス分類結果を求め、結果の一致度合を求めます。参考情報として、オリジナルモデルと複製モデルで分類に使用する方程式を以下に示します。オリジナルのモデル複製したモデル以下、二つのモデルを使用した分類結果を示します。分類対象のデータ数は多いため、一部の結果のみ抜粋して掲載しています。この結果から分かる通り、オリジナルモデルと複製モデルは分類結果が完全に一致していることが分かります。今回は100個のテストデータを分類しましたが、分類結果は100%一致することを確認しました。Regression」に近似したモデルを複製できることが分かりました。confidences」という対策を提案しています。Attacksの精度を下げるというものです。rounding)の複製精度を示しています。グラフの縦軸(Rtest)は、オリジナルモデルと複製モデルの分類精度の一致度合を表しており、下に行くほど分類誤差が少ない(精度が近似している)ことを示しています。Factor)は複製の試行コストを示しています。decimalsは、試行の早い段階でオリジナルモデルと精度が近似することが分かります。roundingよりも劣るものの、試行の早い段階でオリジナルモデルに近似していることが分かります。Factor「50」あたりから横ばいになっていることが分かります。これは、ある程度はオリジナルモデルと近似するものの、一定以上の精度は出ないことを意味しています。valuesを丸めることで攻撃の影響を緩和できることが分かりました。Attacksへの耐性を高めることができると言えます。Attacksを実行し、簡単な計算でMLモデルを複製できることを示しました。TreeのPathを特定する手法等が提案されています。他の論文では、MLモデルに与える入力データを細工することで、MLモデルのデータ分類結果を誤らせるといった、別の攻撃手法も提案されています。このように、機械学習モデルに対する攻撃手法は日々生み出されています。機械学習を使用したサービスやプロダクトの開発を検討されている方は、機械学習モデル特有の脆弱性を把握した上で、脆弱性を作り込まないように、正しく設計されることを推奨します。y」を2クラスに分類するアルゴリズムです。同時にそのクラスに所属する確率を求めることができます。本アルゴリズムは、患者の生体データ(体温、血圧等)を基に、病気の有無とその確率を求める場合等に利用されています。Regressionを使って分類した結果を表しています。boundary)となります。boundaryを境に右上の領域は「positive」、左下の領域は「negative」と見なすことができます。boundaryから離れるにつれて、positiveまたはnegativeに所属する確率は高くなっていきます。x2)」は以下のように表すことができます。(当然ですが、訓練データが異なれば方程式も異なります)。方程式の出力が0より大きい場合はクラス「positive」、0より小さい場合はクラス「negative」と分類します。y)」を、下図に示すロジスティック関数に代入することで求めることができます。a」に対して、0から1の間の値を返します。y)」の値を0-1空間に写像します。この特性から、ロジスティック関数が返す値は、そのまま確率と見なすことができます。boundary上の点)、ロジスティック関数の出力「P」は「0.5」になります(確率は50%)。P」(確率は50%より小さい)となります。boundaryの右上/左下(positive/negative)どちらのクラスに属するのか、また、その時の確率「P」を求めることができます。