モ バ イ ル エ ー ジ エ ン トシ ス テ ムAgentSphereの
た め の マ イ グ レー シ ョ ン
お よ び セ キ ュ リテ ィ に 関 す る コ ア シ ス テ ム の 強 化
デ ィ ダ
ベ サ リ*1,甲
斐
宗 徳*2
Improvements
in Security
and Code Migration
Related
Core System
Functionality
for Mobile
Agent
System
AgentSphere
Besar
Dida * 1, Munenori
Kai* 2
ABSTRACT : We at the software laboratory at Seikei University are developing a platform that enables
parallel and distributed processing in an autonomous manner. This platform is called AgentSphere and one
of its main traits is a strong code migration which henceforth shall be referred to as "Strong Migration".
Through this migration, autonomous code which is referred to as "Agent" migrate between the platform
while retaining its previous run state. In this paper, we talk about two main improvements to this system.
First, the current serialization was using unoptimized java serialization which was slow and had overhead.
We solve this problem by implementing a customizable serializer which serializes in Json format and is
much faster than the default one. Second, we close off security gaps created by the unorthodox usage of our
Strong Migration which accepts unknown classes and deserializes them inside the runtime.
Keywords
: parallel and distributed
systems, mobile agent, strong migration,
autonomous
system, security
(Received November 30, 2018)
1 は じめ に
近 年 で は 並 列 処 理 や 分 散 処 理 に 対 す る ニ ー ズ が 上 昇 し て い る。 し か し な が ら 、 す べ て の ユ ー ザ が 並 列 処 理 や 分 散 処 理 を 行 うた め の 専 門 的 な 知 識 お よ び そ れ ら の 環 境 を 有 し て い る わ け で は な い 。 筆 者 ら は そ の よ うな ユ ー ザ で も 手 軽 に 並 列 処 理 や 分 散 処 理 を 行 え る プ ラ ッ トフ ォ ー ム 、 AgentSphereを 開 発 し て い る。 こ れ は モ バ イ ル エ ー ジ ェ ン トシ ス テ ム で あ り、AgentSphereを 動 か した 複 数 の マ シ ン が 接 続 さ れ た ネ ッ トワ ー ク 上 の 他 のAgentSphere間 で モ バ イ ル エ ー ジ ェ ン トを 移 動 さ せ 、 そ れ に よ っ て 並 列 分 散 処 理 を 可 能 と す る。AgentSphereは 並 列 に 動 作 す る 様 々 な モ バ イ ル エ ー ジ ェ ン トを 活 用 す る こ と を 想 定 して お り、 エ ー ジ ェ ン トの モ ビ リテ ィ に は 強 マ イ グ レ ー シ ョ ン を 可 能 に す る こ と が 重 要 な 技 術 で あ る と 考 え て い る 。 *1:理 工 学 専 攻 博 士 後 期 課 程 学 生 *2:理 工 学 専 攻 教 授(kai@st .seikei.ac.jp) こ の 強 マ イ グ レ ー シ ョ ン で は 、 マ シ ン 間 で 実 行 時 の コ ー ド、 ス タ ッ ク 領 域 、 ヒ ー プ 領 域 の 移 動 が 必 要 で あ り、 実 行 中 の モ バ イ ル エ ー ジ ェ ン トの 処 理 の 中 断 、 移 動 、 移 動 先 で の 処 理 の 再 開 が 出 来 る 限 りス ム ー ズ に 行 く こ と が 必 要 で あ る 。 す な わ ち 高 性 能 な 並 列 分 散 処 理 の た め に は 、 強 マ イ グ レ ー シ ョ ン に 伴 うオ ー バ ヘ ッ ドは 極 力 小 さ く し な け れ ば な ら な い 。 モ バ イ ル エ ー ジ ェ ン トの コ ー ドが 移 動 先 で 再 コ ン パ イ ル を 必 要 と す る の で は 、 そ の 分 オ ー バ ヘ ッ ドが か か る こ と に な る た め 、移 動 先 で そ の ま ま 実 行 で き る コ ー ド と な るJavaを 開 発 言 語 に し た 。た だ し、 Java が 持 つ シ リ ア ラ イ ズ 機 能 は 移 動 で き る デ ー タ構 造 に 制 約 が あ る と と も に 、 弱 マ イ グ レ ー シ ョ ン し か サ ポ ー ト さ れ な い と い っ た 問 題 を 持 っ て い る。 AgentSphereに お け る 強 マ イ グ レ ー シ ョ ン の 実 現 方 法 と し て 、筆 者 ら は い くつ か の 手 法 を 試 み て き た 。初 期 は 、 Javaの シ リア ラ イ ズ 機 能 を 利 用 す る が 、 ソー ス コ ー ド変 換 を 行 っ て 擬 似 的 に 強 マ イ グ レ ー シ ョ ン を 実 現 し た 。 他 に もJavaflowを 用 い た 方 式 も 実 現 し た が 、 い ず れ も移 動可 能 な デ ー タ構 造 に 制 約 が 残 り、 ま た マ イ グ レー シ ョン
に 伴 うオ ー バ ヘ ッ ドも大 き く、 モ バ イ ル エ ー ジ ェ ン トの
レス ポ ンス 時 間 が 大 き くな る問題 点 が 明 らか とな っ た 。
そ こ で 本 論 文 で はJavaの シ リア ラ イ ズ 方 式 で は な く、
Json形 式 で の シ リア ラ イ ズ を可 能 とす る変 換 方 式 を用 い
た 新 た な 強 マ イ グ レー シ ョン方 式 を提 案 す る。 この 方 式
に よ り改 善 され るオ ー バ ヘ ッ ドの 評 価 を示 し、 他 の 実 装
方 式 と比 べ て そ の 有 用性 を 示 す 。
2.既
存 の 直 列 化
マ イ グ レ ー シ ョ ン の 技 術 はAgentSphereの 核 と な る 技 術 で あ る。AgentSphereが 並 列 分 散 処 理 を 行 うた め に は エ ー ジ ェ ン トが 同 一 ネ ッ ト ワ ー ク 内 の ほ か のAgentSphere に 移 動 す る 必 要 が あ る 。 た だ し、 コ ー ドの み を 移 動 さ せ る と 再 開 を す る と き に 常 に 先 頭 か ら 開 始 しな け れ ば な ら な い 。 こ れ は 処 理 の 種 類 に よ っ て は 問 題 な い が 、 移 動 前 の 処 理 を 無 駄 に し て い る こ と に な る 。 一 方 、 エ ー ジ ェ ン トが 現 在 の 実 行 状 況 を 保 存 し 、 移 動 先 で 今 ま で の 処 理 の 続 き か ら 再 開 す る た め に は コ ー ドだ け で は な く 、 ス タ ッ ク 領 域 、 ヒ ー プ 領 域 も 移 動 し 復 元 す る 必 要 が あ る 。 前 者 の コ ー ドの み の 移 動 を 弱 マ イ グ レ ー シ ョ ン 、 後 者 の ス タ ッ ク 領 域 、 ヒ ー プ 領 域 も 併 せ て 移 動 さ せ る の を 強 マ イ グ レ ー シ ョ ン と 呼 ぶ 。AgentSphereに 採 用 さ れ て い る の は 強 マ イ グ レ ー シ ョ ン で あ る。 3.JavaFlowマ イ グ レ ー シ ョ ン Javaflowと は 、 ∫VM上 に 実 行 さ れ て い る オ ブ ジ ェ ク ト の 現 在 の 実 行 状 況 を 保 存 す る た め のAPIで あ る 。Javaflow を 使 用 す る よ う に ビ ル ド さ れ たAgentSphere上 で は Continuation.suspend()メ ソ ッ ド に よ り現 在 の プ ロ グ ラ ム の 実 行 を す べ て 中 断 しContinuationデ ー タ が 作 成 さ れ る 。 こ の 中 に は 現 在 の ス タ ッ ク 領 域 、 ヒ ー プ 領 域 お よ びJVM の プ ロ グ ラ ム カ ウ ン タ が 含 ま れ る こ と と な る 。 こ れ を シ リア ラ イ ズ し た の ち 、 同 じJVMに お い て デ シ リア ラ イ ズ さ れ る とContinuation.startWithOメ ソ ッ ド を 使 用 し て Continuationデ ー タ か ら 中 断 さ れ た プ ロ グ ラ ム を 再 開 す る こ と が で き る 。 た だ し 、 再 開 は 同 一JVM上 に 限 定 さ れ て お り、 シ リア ラ イ ズ 後 の 直 列 化 デ ー タ を 他 のJVMに 移 動 し た 場 合 に は 、 そ こ で は 未 知 ク ラ ス と な り、 実 行 を 再 開 す る こ と が で き な い 。 しか しAgentSphereと の 組 み 合 わ せ で は 、 前 述 の 階 層 型 ク ラ ス ロ ー ダ の 働 き に よ り、 移 動 先 で も こ の ク ラ ス を 実 行 す る こ と が 可 能 と な る 。 JavaflowのContinuationデ ー タ に 入 る デ ー タ 構 造 の 中 に は シ リ ア ラ イ ズ で き な い も の も あ り、 移 動 可 能 な エ ー ジ ェ ン トの 制 約 に な っ て し ま う 問 題 が 生 じ る. Javaflowを 利 用 した 強 マ イ グ レ ー シ ョ ン の 実 現 に は い くつ か の 問 題 点 が あ り 、AgentSphereを 運 用 す る 上 で は 変 更 し な け れ ば な ら な い と こ ろ が あ っ た 。 強 マ イ グ レ ー シ ョ ン を 可 能 と す る シ リ ア ラ イ ザ はAgentSphereで 運 用 す る た め に 想 定 さ れ て い な い 問 題 が 存 在 し て い る 。 JavaFlow強 マ イ グ レ ー シ ョ ン を 用 い た 既 存 の 直 列 化 に は AgentSphereに と っ て 不 必 要 な ど う さ。(JDK1.8現 在) オ ー バ ヘ ッ ドの 要 因 の 一 つ と な る の がJava既 存 の シ リ ア ラ イ ザ が ク ラ ス を 直 列 化 ・復 元 す る と き に す べ て の ク ラ ス 階 層 を た ど り な が ら複 数 の 読 み 書 き 込 み の シ ス テ ム コ ー ル を 行 っ て い る こ と で あ る。 こ れ ら の シ ス テ ム コ ー ル は シ リ ア ラ イ ズ を 行 う 際 のRead/Writeで あ り、 マ イ グ レ ー シ ョ ン の 移 動 先 に も す で に 存 在 し て い る す べ て の AgentSphereが 有 し て い る と こ ろ も 参 照 し て い る 。 次 に 、直 列 化 を 行 う と き に リ フ レ ク シ ョ ン[2]を 用 い て コ ー ド内 の 互 換 性 を 確 認 し て い る 。 し か し な が ら Javaflowを 用 い た 強 マ イ グ レ ー シ ョ ン のAgentSphereは JRE1.6ま で しか 動 作 を 保 証 しな い た め こ れ 以 前 の バ ー ジ ョ ン の 互 換 性 を 確 認 す る こ と 自 体 は 不 要 と な る。 Javaの 直 列 化 はJDKの 変 更 な ど に も 弱 い 。Javaの 既 存 の 直 列 化 を 使 用 した 場 合 、 同 じJDK内 で 直 列 化 され て い な い と シ リ ア ル バ ー ジ ョ ン の 食 い 違 い が 発 生 し 、 復 元 が 不 可 能 と な る 。 従 来 の 直 列 化 を 用 い る こ と に よ っ て 発 生 し た 上 記 の 手 法 をAgentSphere用 に 改 良 す れ ば よ りオ ー バ ヘ ッ ド の 少 な いAgentSphereと な る 。4.新
た な 直 列 化 方 式
本 論 文 で は 直 列 化 の 問 題 点 お よ び 今 後 のAgentSphere の 拡 張 性 を 確 保 す る た め に 直 列 化 方 式 に 新 た な 手 法 の 実 装 し た 。 直 列 化 さ れ た デ ー タ は 従 来 の バ イ トデ ー タ で は な くJson デ ー タ ベ ー ス フ ァ イ ル と し て 出 力 し 、 こ の 時 に 用 い る ラ イ ブ ラ リ はGoogleの オ ー プ ン ソ ー スgoogle-gson[1]を 用 い た 。4.1新
た な 直 列 化 方 式 の 必要 性
AgentSphereの シ リア ライ ザ お よ び 現 状 の ビル ドに含
まれ て い る 問題 点 を解 決 す るた め に は い くつ か の 案 を考
慮 した。
Javaの 既 存 シ リア ラ イ ザ に お け る 上記3章
で の 問題 点
を解 決 す る に はJava既 存 シ リア ライ ザ の独 自実 装 が 求 め
ら れ る。AgentSphereに 不 必 要 な メ ソ ッ ドや シ ス テ ム コ ー ル を 削 除 す れ ば よ り レ ス ポ ン ス タ イ ム の 早 い マ イ グ レー シ ョ ン が 実 装 で き る。 し か し 、 こ れ に はJavaの 既 存 シ リ ア ラ イ ザ に 付 随 す る す べ て の ラ イ ブ ラ リ も す べ て 変 更 さ せ る 必 要 が あ り、 本 来 の 想 定 さ れ て い る 並 列 分 散 処 理 を 行 う専 門 的 な マ シ ン や 知 識 を 持 た な い ユ ー ザ に と っ て 望 ま し く な い も の で あ る 。 加 え て 、 こ れ ら の ラ イ ブ ラ リの 変 更 は す べ て のJVM上 に お い て 均 一 で 行 わ れ る 必 要 が あ る た め 、実 装 方 法 と して はAgentSphereを 複 雑 化 さ せ る も の で あ る。 次 に 考 慮 され た 方 式 は 、Javaの 既 存 シ リ ア ラ イ ザ で は な く カ ス タ ム 性 の 高 い 、 公 開 さ れ て い る も の を AgentSphereに 見 合 う よ うに 組 み 込 む こ と で あ る 。高 い カ ス タ ム 性 の シ リ ア ラ イ ザ を 使 用 す れ ばAgentSphere専 用 の 設 定 を 行 うだ け でJVMに お け る 大 掛 か りな 変 更 を せ ず に 済 む 。 こ れ に よ り、 レ ス ポ ン ス の 向 上 だ け で は な く よ り一 貫 と し たAgentSphereが 実 現 で き る の で は な い か と い う点 に 着 目 し た 。 こ れ ら の 実 装 方 式 を 踏 ま え た う え で 筆 者 ら は 高 い カ ス タ ム 性 を 保 ち な が ら オ ー プ ン ソ ー ス で 今 で も 開 発 が 続 け ら れ て い るGoogle-Gsonを 用 い る こ と に し た 。他 の 類 似 し た シ リア ラ イ ザ も あ る が 、AgentSphereが 必 要 と す る シ リ ア ラ イ ズ を 行 うに は こ れ が よ り適 任 だ っ た 。 既 存 のJavaFlowを 用 い た 直 列 化 さ れ た デ ー タ は 基 本 的 にAgentSphereお よ びJava環 境 で し か 読 み 込 み を 行 え な い 。 こ れ を 、Google-Gsonの シ リア ラ イ ザ でJsonデ ー タ ベ ー ス の 形 に す る こ と で 将 来 の 拡 張 性 を 確 保 す る と と も に 後 述 の 先 読 み を 用 い た セ キ ュ リテ ィ の 実 装 を 容 易 に す る こ と が で き る。 Json形 式 に し た こ と で 本 来 直 列 化 で き な い フ ィ ー ル ド や ク ラ ス が 直 列 化 可 能 と な る 。Google-Gsonの 直 列 化 で は 専 用 の イ ン ス タ ン ス ク リエ イ タ を シ リア ラ イ ザ 内 部 で 記 述 す る こ と が 可 能 と な り、 例 外 に 対 す る 対 応 が 柔 軟 で あ る 、 さ ら に 、 未 知 の ク ラ ス やPrivateフ ィ ー ル ドを 受 け 入 れ る こ と が 可 能 で あ る 。Privateフ ィ ー ル ドの 場 合 は デ ー タ が 保 存 さ れ な い が 、 こ れ ら は 外 部 で そ れ ぞ れ の ク ラ ス に 対 応 す るAgentSphere内 部 の 専 用 ク ラ ス が 保 管 す る 。 こ れ に よ り直 列 化 の 方 式 が 改 良 さ れ て い な い 現 状 で は 直 列 化 不 可 能 だ っ た ク ラ ス の 直 列 化 が 行 え る よ う に な っ た 。 こ うい っ た ク ラ ス ら の 主 な 問 題 点 と し て は 自 身 の 実 行 状 態 を 記 述 す る フ ィ ー ル ドが プ ラ イ ベ ー トで あ る た め 直 列 化 で き な い 。 本 研 究 で はThreadク ラ ス が 直 列 化 で き な い ク ラ ス の 類 で あ っ た た め 、AgentSphereに 追 加 実 装 さ れ て い るAgentThreadク ラ ス が 直 列 化 寸 前 の 時 に そ れ ら の 情 報 を 保 存 す る こ と に よ りJson形 式 で 直 列 化 し た 時 に ア ペ ン ドす る 。 受 け 取 り側 のAgentSphereは こ の 方 法 でPrivate フ ィ ー ル ド を 再 構 築 す る こ と が で き る 。 現 状 で はThread ク ラ ス の み を 考 慮 し た が 同 じ 手 法 で あ れ ば 他 の 直 列 化 不 可 能 な 記 述 お よ び ク ラ ス も 直 列 化 可 能 と な る。 4.2Gsonと は こ こ で 用 い るGoogleのgoogle-gsonはJavaオ ブ ジ ェ ク ト の シ リ ア ラ イ ズ をJson形 式 で 行 うオ ー プ ン ソ ー ス の 中 で も よ りオ ー バ ー ヘ ッ ドが 少 な い 方 式 で あ る 。Json形 式 に し た こ と で 本 来 直 列 化 で き な い フ ィ ー ル ドや ク ラ ス が 直 列 化 可 能 と な る 。Google-gsonの 直 列 化 で は 例 外 に 対 す る 対 応 が 柔 軟 で あ り未 知 の ク ラ ス やPrivateフ ィ ー ル ド を 受 け 入 れ る こ と が 可 能 で あ る 。Privateフ ィ ー ル ドの 場 合 は デ ー タ が 保 存 され な い が 、 こ れ ら は 外 部 で そ れ ぞ れ の ク ラ ス に 対 応 す るAgentSphere内 部 の 専 用 ク ラ ス が 保 管 す る 。 これ に よ り 直 列 化 の 方 式 が 改 良 さ れ て い な い 現 状 で は 直 列 化 不 可 能 だ っ た ク ラ ス が 専 用 の イ ン ス タ ン ス ク リ エ イ タ を 記 述 す る こ と に よ り可 能 と な っ た 。 直 列 化 不 可 能 な ク ラ ス の 主 な 問 題 点 と し て は 自 身 の 実 行 状 態 を 記 述 す る フ ィ ー ル ドがSerializableを イ ン プ リ メ ン ト し て い な い た め 直 列 化 で き な か っ た 。 こ れ ら の 場 合 はAgentSphere に 追 加 実 装 され て い るAgentThreadク ラ ス が 直 列 化 寸 前 の 時 に そ れ ら の 情 報 を 保 存 す る こ と に よ りJson形 式 で 直 列 化 し た 時 に ア ペ ン ドす る。 受 け 取 り側 のAgentSphereは こ の 方 法 でPrivateフ ィ ー ル ド を 再 構 築 す る こ と が で き る。 ・Javaオ ブ ジ ェ ク ト ム い カ 一 な 出 リ さ 田 ト 介 ぬ ス を 図1.Gsonを 用 い た 直 列 化 フ ロ ー ・Java入 力 ス トリー ム以 外 で も読 み 込 め る Gsonで は 既 存 の シ リ ア ラ イ ズ と 大 ま か な 流 れ は 同 じ だ が 、 直 列 化 と復 元 に 関 す る と こ ろ だ け が 変 更 さ れ て い る 。 ま ず 、 新 た なGsonの た め の イ ン ス タ ン ス を 作 成 し 、 現 在 の エ ー ジ ェ ン トの 型 で あ るAbstractAgentが 何 な の か を 学 習 さ せ る た め に(Jsonと し て ど の よ う に 出 力 させ る た め に)Typeト ー ク ン と し てAbstractAgentを 与 え る 。
こ れ に よ りGsonは エ ー ジ ェ ン ト を ど の よ う に 記 述 す れ ば よ い の か を 学 習 しGson.toJsonで そ れ を 実 際 にJson形 式 に 変 換 させ る。本 来 こ こ でNetworkSenderに 直 列 化 さ れ た バ イ トデ ー タ が 対 象 の マ イ グ レ ー シ ョ ン 先 に 運 ば れ る の だ が 代 わ りにJson形 式 の デ ー タ が 運 ば れ る 。 4.3機 倉旨言平イ面 AgentSphereを 拡 張 す る 平 均 的 な500行 ぐ ら い の 単 純 ク ラ ス で 試 し て み た 結 果 が 下 記 の 表 の 通 りだ っ た 。 シ リ ア ラ イ ズ 時: ∼103ms デ シ リア ラ イ ズ 時: ∼32ms ∼123ms∼30ms 異 な る フ ァ イ ル サ イ ズ の 場 合 の 実 験 も 行 っ た 。 場 合 に よ っ て は 、Continuationデ ー タ が 莫 大 で あ りオ ー バ ー ヘ ッ ド が 余 計 に か か っ て し ま うの で は な い か と い う問 題 も 残 っ て い る た め 、 そ れ に つ い て も 測 定 を 行 っ て み た 。 フ ァ イ ル サ イ ズ を1KBか ら 開 始 し、10倍 ほ ど 増 加 さ せ っ っ 上 記 と 同 じ 方 法 で マ イ グ レ ー シ ョ ン を 行 っ た 結 果 が 下 記 の グ ラ フ の と お り と な っ た