NTTドコモビゞネスのブログ - TECH PLAY

TECH PLAY

NTTドコモビゞネス

NTTドコモビゞネス の技術ブログ

å…š632ä»¶

こんにちは。むノベヌションセンタヌ Generative AI チヌムの安川です。今回はrokadocのパブリックベヌタ版 https://rokadoc.ntt.com/ が公開されたため、その玹介ず解説をしたす。 本蚘事では「ドキュメント倉換技術」であるrokadocの抂芁を説明した䞊で、実際の䜿い方や結果を玹介したす。 䜿い方の郚分では、WebUIを甚いお簡䟿にドキュメント解析を行う方法や、解析結果が実際にRAGRetrieval-Augmented generation、怜玢拡匵生成で有甚なのかを瀺したす。たた、手元のRAGぞ組み蟌むためにAPI経由で凊理を実行する方法に぀いおも玹介したす。 rokadoc抂芁 倚様なファむルぞの察応 高い怜玢粟床 オンプレミス察応 利甚方法 WebUIからの利甚方法 ドキュメントの解析 RAGの実行 APIを甚いた利甚方法 前提 解析の実行 おわりに rokadoc抂芁 「AIの力で埋もれた情報を䟡倀あるものに」 ずいうコンセプトの元、rokadocは開発されおいたす。 そしお、生成AIで取り扱うには難解なドキュメント類を効果的に利掻甚可胜なデヌタぞ倉換するための技術ずしお、2025/2/19 にパブリックベヌタ版が公開されたした。 昚今、LLMLarge Language Modelをはじめずした生成AIは爆発的なブヌムを迎えおいたす。しかし、実際にLLMを䜿ったものの、必芁な情報を粟床高く埗るこずができず悩んだ方や、RAGをいざ構築したは良いものの、ドキュメントからうたく情報を抜出できずにもどかしく感じた方はいるず思いたす。 rokadocは、このような問題を解消するために䜜られ、以䞋の特城を持っおいたす。 倚様なファむルぞの察応 ファむル圢匏は、PDFに加え、Microsoft Word、Excel、PowerPointを利甚可胜です。 高い怜玢粟床 倉換埌のテキストを甚いお行った怜玢では他瀟補品に比べお高い粟床を瀺したした。 rokadocは耇数の機械孊習モデルず、それらの機械孊習モデルに合わせたアルゎリズムを甚いおおり、倚数の芁玠を持った耇雑なドキュメントが察象であっおも粟床高く倉換したす。 たた瞊曞きなどの日本語特有の芁玠を含むドキュメントであっおも察応が可胜です。 オンプレミス察応 私たちは、オンプレミスで動く粟床の高いモデルの開発も行なっおいたす。 公開したパブリックベヌタ版ずは異なる構成で、オンプレミスで動く圢での提䟛も今埌行っおいく予定です。 こちらを利甚すれば、むンタヌネットに接続するこずなく、自瀟のネットワヌク環境に閉じた状態で rokadoc を利甚できたす。 利甚方法 ここからは、具䜓的な䜿い方に぀いお玹介しおいきたす。 rokadocはWebUIずAPIの2぀の利甚手段がありたす。 WebUIからの利甚方法 ここではWebUIから利甚する手順を瀺したす。 今回は぀い先日行われた蚀語凊理孊䌚第31回幎次倧䌚(NLP2025)ぞ、圓チヌムのメンバヌが投皿した「chakoshi: カテゎリのカスタマむズが可胜な日本語に匷い LLM 向けガヌドレヌル」 *1 ずいう論文を察象にrokadocを䜿っおみたす。 ドキュメントの解析 以䞋が、WebUIからログむンした堎合のホヌム画面です。このペヌゞの巊偎から、解析したいファむルをアップロヌドしたす。 アップロヌドを行うず、右偎に解析状況が衚瀺されたす。進捗が”Succeeded”ぞ切り替わった埌にファむル名をクリックするず解析結果が衚瀺されたす。 察象ずした論文 を芋るずわかりたすが、このPDFは二段組か぀フッタヌも存圚し、衚や図が文章䞭に登堎するずいう耇雑な構造のものになっおいたす。今回は、 文章の読み取り 衚の読み取り 図の読み取り の䞉点に焊点を圓お、解析結果の䞀郚を䟋瀺したす。 1. 文章の読み取り このドキュメントは、以䞋のようにベヌスが二段組ずなっおおり、フッタヌが存圚する耇雑な構成ずなっおいたす。 しかしpage 3の解析結果を芋るず、 前略 4.1 有害性刀定に関する評䟡実隓 本実隓の目的は、日本語の有害衚珟に察する, chakoshi の刀定粟床の評䟡である. 既存の代衚的なモデレヌション API やガヌドレヌルを比范察象ずし,3.2 節で構築したデヌタセットを甚いおファむンチュヌニングした chakoshi モデルの性胜を評䟡する. 4.1.1 実隓手続き 䞭略 4.2 カテゎリ远埓性胜の評䟡実隓 本実隓の目的は, chakoshi のカテゎリカスタマむズ機胜の評䟡である. 医療盞談や金融盞談など, chakoshi が元々察応しおいない新芏カテゎリを自然蚀語で远加し,それらぞの远埓性胜を怜蚌する. This work is licensed by the author(s) under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). –– 2805 –– ず、テキストを正確に読み取るだけではなく二段組であるこずを理解し、「4.1 有害性刀定に関する評䟡実隓」の途䞭で段組が倉わっおいる郚分に察しおも問題なく繋げるこずができおいたす。たた末尟にはフッタヌずしお衚瀺されおいるものも正確に出力できおいたす。 2. 衚の読み取り page 3には以䞋の衚が掲茉されおいたす。 この衚は結合したセルが存圚した䞊で眫線が匕かれおいない郚分が存圚しおいるなど、耇雑な構造を持぀衚ずなっおいたすが、解析結果を芋るず、 衚1 ベヌスラむンず chakoshi モデルの比范結果 < table border = "1" > < caption > 衚1 ベヌスラむンず chakoshi モデルの比范結果 </ caption > < tr > < th rowspan = "2" ></ th > < th colspan = "2" > XSTest </ th > < th colspan = "2" > RTP-LX </ th > </ tr > < tr > < th > F1 </ th > < th > F2 </ th > < th > F1 </ th > < th > F2 </ th > </ tr > 䞭略 < tr > < td > gemma-2-9b-it-chakoshi </ td > < td > 0.835 </ td > < td > 0.884 </ td > < td > 0.966 </ td > < td > 0.964 </ td > </ tr > </ table > ず、セル内郚のテキストを正確に取埗した䞊で、列及び行方向に結合したセルも正確に構造を取埗できおいたす。 3. 図の読み取り page 2には以䞋の図が掲茉されおいたす。 アむコンを甚いお凊理に登堎する芁玠を、矢印で凊理の流れを衚珟しおいたす。 たたアむコンや矢印に察応する文字も蚘茉されおいたす。 このように倚数の芁玠が含たれたすが、解析結果を芋るず、 **画像の説明:** 1. むラストは「chakoshiの抂念図」ず題されおおり、ナヌザヌが入力するテキストを基に、システムがその安党性を評䟡するプロセスを瀺しおいたす。図の䞭倮には「chakoshi」ずいう名称が蚘茉されおおり、矢印を䜿っおプロセスの流れが説明されおいたす。 2. 巊偎には「ナヌザヌ」のアむコンが描かれおおり、ナヌザヌが入力するテキストが「入力が安党だず考えられるケヌス」「入力に害があるケヌス」「出力に害があるケヌス」の3぀のケヌスに分類されるこずが瀺されおいたす。 3. 右偎には「LLMLarge Language Model」のアむコンが描かれおおり、システムがテキストを評䟡する際にLLMを掻甚するこずが瀺されおいたす。 4. 矢印の先には「刀定の䟋瀺むメヌゞ」ずしお、以䞋の具䜓的な数倀が蚘茉されおいたす - 「刀定結果safe」 - 「unsafeスコア0.13」 - 「刀定結果unsafe」 - 「unsafeスコア0.89」 - 「カテゎリ暎蚀」 5. 図の䞋郚には「※1 入出力はどちらもテキスト圢匏」ずの泚釈が蚘茉されおおり、入力たたは出力がテキスト圢匏であるこずを補足しおいたす。 このむラストは、chakoshiがどのようにテキストの安党性を刀定するかを芖芚的に説明しおおり、プロセスの流れや具䜓的な刀定䟋が詳现に瀺されおいたす。 ず、グラフに぀いおの情報を正確に出力するだけではなく、各図がキャプションに察しおどのように察応しおいるかも含めお解析ができおいたす。 以䞊のように、耇雑な構成や倚皮倚様なコンテンツを含むものでも、正確に解析できたした。 RAGの実行 以䞋のドキュメント解析結果の画面䞊郚にある「チャット」ボタンからチャット画面ぞ遷移できたす。ここでは論文の解析結果に基づいた回答が可胜か詊しおみたす。 䟋えば「chakoshiは画像も察応できたすか」ず入力するず、以䞋の内容が返っおきたす。 いいえ、chakoshiは画像や音声ずいったマルチモヌダルな入出力には察応しおいたせん。関連情報によるず、chakoshiはテキストベヌスの入出力に特化しおおり、シンプルか぀確実な有害性の怜出を目指しおいたす。この蚭蚈方針により、ナヌザヌ固有の環境でのテキストチャットでの利甚を想定しおおり、画像や音声などの非テキスト圢匏のデヌタは察象倖ずなっおいたす。したがっお、chakoshiはテキスト圢匏のデヌタに限定しお動䜜するガヌドレヌルモデルです。 たた「chakoshiの性胜に぀いお端的に教えおください」ず聞くず、以䞋のように解説しおくれたす。 chakoshiは、日本語特有のニュアンスや衚珟に察応した軜量なLLM向けガヌドレヌルモデルであり、以䞋の特城を持っおいたす 1. 高い刀定粟床 - 有害性刀定においお、既存のモデルを䞊回る性胜を瀺し、XSTestでF1スコア0.835、RTP-LXでF1スコア0.966を達成したした。 2. カテゎリカスタマむズ機胜 - 防ぎたい話題を自然蚀語で指定できる柔軟性を持ち、新芏カテゎリ䟋: 医療盞談、金融盞談でも高い怜知率を達成したした医療盞談87.1%、金融盞談93.1%。 3. 日本語特化 - 日本語特有の遠回しな嫌味やハラスメント衚珟にも察応可胜で、文化的背景を考慮した蚭蚈がされおいたす。 党䜓ずしお、chakoshiは日本語に匷く、ナヌザヌ固有の芁件に応じた安党性確保が可胜なモデルです。 このように論文の内容を螏たえた正確な回答ができおいたす。 APIを甚いた利甚方法 自身の環境で構築したRAGにrokadocの解析結果を甚いたい堎合、WebUIから1぀ず぀ファむルをアップロヌドしおいくのではなく、CLIから操䜜したい堎合もあるず思いたす。そのような堎面を想定しお、APIを甚いおドキュメント解析を行う䟋を提瀺したす。 前提 たずAPIキヌを確認しおおく必芁がありたす。APIキヌは以䞋のホヌム画面の䞊郚にある「ナヌザ蚭定」の「APIキヌの確認/切替」から確認ができたす。 たた利甚方法の詳现はAPIリファレンスから確認が可胜です。同様にホヌム画面の䞊郚にある「ナヌザ蚭定」をクリックし、「APIキヌ発行」をクリックするず以䞋の画面に遷移したす。 その埌䞊郚の「APIリファレンス」をクリックするず、各APIの䜿い方や挙動を確認できたす。 解析の実行 1. 倉換凊理 以䞋のコマンドを実行するこずで、察象のドキュメントの解析ができたす。 api-key には先皋確認した APIキヌ を蚭定したす。 upload_file には察象のドキュメントを指定したす。今回は察象の論文ファむルである @NLP2025_P7-7.pdf を指定しおいたす。 curl -X POST "https://beta-api.rokadoc.ntt.com/v1/api/conversions" \ -H "Cache-Control: no-cache" \ -H "api-key: {YOUR_API_KEY}" \ -F "upload_file=@NLP2025_P7-7.pdf" \ -F "from_page=1" \ -F "to_page=6" ここでfrom_page及びto_pageはそれぞれ、察象のドキュメントの䞭で解析するペヌゞの範囲を遞択するために䜿甚したす。 こちらを実行するず、 { " code ": 202 ," status ":" Pending "," conversion_id ":" {conversion_id} " } のようなメッセヌゞが返华されたす。このconversion_idを甚いおファむルの解析結果を確認できたす。 2. ゞョブ䞀芧の確認 以䞋のコマンドを実行するこずで、これたで行ったゞョブの状況が確認できたす。 curl -X GET "https://beta-api.rokadoc.ntt.com/v1/user/conversions" \ -H "Cache-Control: no-cache" \ -H "api-key: {YOUR_API_KEY}" こちらを実行するず、 { " code ": 200 ," total_count ": 1 ," last_page_number ": 1 ," data ": [{ " status ":" Running "," conversion_id ":" {conversion_id} "," document_name ":" NLP2025_P7-7.pdf "," created_date ":" 202503021710 "," updated_date ":" 202503021711 " }]} のようなメッセヌゞが返华されたす。ここでstatusがSucceededになっおいれば解析凊理が完了しおいたす。䞊蚘のようにRunningになっおいる堎合は実行䞭ですのでお埅ちください。 3. ゞョブ結果の衚瀺 以䞋のコマンドを実行するこずで、察象のゞョブの実行結果が確認できたす。 curl -X GET "https://beta-api.rokadoc.ntt.com/v1/user/conversions/{conversion_id}/document" \ -H "Cache-Control: no-cache" \ -H "api-key: {YOUR_API_KEY}" 長くなるため実行結果は省略したすが、これで各ドキュメントに察するAPIでの凊理が実行できたした。この結果をRAGの怜玢デヌタベヌスに栌玍するこずで、お手元の環境にあるRAGでrokadocの解析結果を甚いるこずができたす。 おわりに この蚘事では、2025/2/19にパブリックベヌタ版を公開した rokadoc に぀いお玹介したした。 利甚回数に䞊限はありたすが無料で利甚可胜ですので、気になった方は是非ずもお詊しください。 利甚䞊限なしで䜿いたい方向けに個別盞談も可胜です。もっず䜿いたいず思っおいただけた方は、 rokadocお問い合わせフォヌム からお問い合わせください。 それでは皆さん、お読みいただきありがずうございたした。 *1 : 新井䞀博, et al, "chakoshi: カテゎリのカスタマむズが可胜な日本語に匷い LLM 向けガヌドレヌル", 蚀語凊理孊䌚 第31回幎次倧䌚, 2025
こんにちは、むノベヌションセンタヌの加藀です。この蚘事では、倧芏暡蚀語モデル(LLM)にJSONや゜ヌスコヌドを正しく出力させるための生成手法であるStructured Generationに぀いお玹介したす。 Structured Generationずは パヌサヌを甚いた制玄手法 正則蚀語ずは 正則蚀語のStructured Generation 文脈自由蚀語ずは 字句解析に぀いお 正則蚀語+文脈自由蚀語のStructured Generation たずめ Structured Generationずは 倧芏暡蚀語モデル(LLM)はよくチャットボットずしおの掻甚が目立ちたすが、LLMの入出力を倖郚のプログラムに繋ぎ蟌むこずでより高床な自然蚀語凊理システムを䜜るこずができたす。 䟋えばOpenAIのCode Interpreter 1 はLLMをPythonの実行環境ず接続するこずで、ナヌザヌに芁求された耇雑な情報凊理をたずPythonコヌドに曞き起こし、その実行結果を䜿っお応答するシステムです。 たた、Meta瀟によるアシスタントロボットの取り組み 2 ではナヌザヌの音声入力をテキストに曞き起こし、LLMがその文章からプログラムが解釈可胜な呜什列に倉換するこずで自然蚀語ずプログラムの橋枡しを行なっおいたす。 このように、特定のスキヌマに沿ったJSONや特定のプログラミング蚀語での゜ヌスコヌドずいった構造化デヌタをLLMに出力させるStructured Generationが最近泚目されおいたす。 しかしながらこのようなナヌスケヌスではLLMの出力圢匏がブレるずシステムが動䜜しなくなるため、ファむンチュヌニングやプロンプトの工倫だけでは䞍十分です。 䞋図のようにJSONの出力を䟋にずるず、プロンプトで「JSONのみを出力しおください」ず指定しおいおも、関係のない文章やコヌドスニペットの蚘法を混入させおしたうこずが倚々ありたす。 そこで、プロンプトのような確実性のないものに頌るのではなく、出力ずしお遞択されるトヌクンの候補をコントロヌルするこずで、目的のフォヌマットに必ず埓わせる制玄付き文章生成の手法が広く研究されおいたす。 パヌサヌを甚いた制玄手法 LLMなどの文章生成モデルは、これたでの単語列から次に珟れそうな単語を自信床の圢で予枬し、䜕らかの戊略のもずで出力する単語を決定したす。䞀般的に䜿われおいる戊略は貪欲法で、毎回最も自信床の高い単語を出力するこずを繰り返すこずで文章を生成しおいき、文章の終了を衚すトヌクン(よく EOS ずしお衚されたす)を出力した時点で停止したす。 Structured Generationでは以䞋の画像のように、遞択前に奜たしくない単語の自信床を党お0にするこずで文法的に正しくない文章の出力を防いでいたす。 そしおどの単語が文法的に奜たしくないかを刀定するために、その文法に察応したパヌサヌが䜿われたす。 パヌサヌは基本的に入力文章を頭から読み取っおいき、文法的に正しくない文字列が珟れたずころで゚ラヌが発生するようになっおいたす。Structured Generationではこの性質を利甚しお、LLMが予枬する次の単語をパヌサヌに入れおみお、゚ラヌが起こるようならその単語を陀倖するこずで文法的に正しい出力を実珟しおいたす。 しかし、この方法では1単語生成するたびに数䞇近くあるLLMの語圙を走査しおパヌサヌに刀定させる必芁があるため、蚈算時間が非垞にかかっおしたいたす。 そこで、パヌサヌの動䜜を利甚しお刀定を効率化するテクニックがいく぀か研究されおいたす。 本蚘事ではStructured Generationでよくサポヌトされる正則蚀語ず文脈自由蚀語の皮類のパヌサヌに察しお効率的な制玄付き生成手法を玹介したす。 正則蚀語ずは 正則蚀語は埌方参照を甚いない正芏衚珟で衚珟可胜な蚀語のこずで、䟋えば「敎数」は /0|(-?[1-9][0-9]*)/ ずしお衚珟できたす。 正則蚀語のパヌサヌは決定性有限オヌトマトン(DFA)で実装できるこずが知られおいたす。DFAずは入力文章を頭から読み取っおいき、入力文字ず珟圚の状態から定たる次の状態ぞ遷移するこずを繰り返す機械のこずで、前述の「敎数」を刀定するDFAは以䞋のように構成できたす。 この䞞が状態で矢印が読み取った文字に察応する遷移先を衚しおおり、文字を党お入力しお最終的に二重䞞の状態受理状態に移動しおいればOKずいう刀定がなされたす。 䟋えば「敎数」を刀定するDFAに「-16」ずいう文章を入力するず次のように状態が遷移し、「-16は敎数である」ず刀定されたす。 䞀方で、䟋えば「0-1-1」ずいう文章は途䞭で遷移に倱敗したす。たた、「-」ずいう文章は最終的に受理状態に到達したせん。そのためこれらは敎数ずは刀定されたせん。 正則蚀語のStructured Generation このようなパヌサヌをStructured Generationに掻甚する堎合は、「文法的に正しくない文字列が珟れる」ずいう珟象を「この先受理状態ぞ到達し埗ない状態に遷移しおしたう」ず読み替えるこずができたす。 䟋えばLLMに敎数を出力させようずしおおり、珟状の䞭間出力が䜕もない堎合、「090」や「apple」ずいう単語は出力できたせんが、「0」や「-」ずいう単語は受理状態もしくはこの先受理状態ぞ到達可胜な状態に遷移可胜なので出力しおも良いず刀定されたす。 そうした状態ず単語の組み合わせの数は有限であるこずを利甚するずうたく刀定を効率化できたす。 各状態 q から各語圙 t を入力した時に「この先受理状態に到達可胜な状態」に遷移するかを前蚈算しおおき、 dict[q][t] ずしお保存しおおきたす。この結果をマスク凊理で利甚するこずにより、状態数 Q ずLLMの語圙数 T に察しおサむズ Q*T のメモリ消費のもず、長さ T のマスク凊理だけで各単語の出力可吊を刀定できたす 3 。 これにより、LLMの遞択肢に挙がった単語を毎回DFAに入力しおいたこずで発生する蚈算時間を枛らすこずができたす。 文脈自由蚀語ずは 文脈自由蚀語は正則蚀語よりも衚珟力の高い蚀語で、JSONのようにネスト構造を持぀蚀語もこれに属しおいたす。 文脈自由蚀語を衚珟する文法の定矩は少し耇雑で、以䞋の4぀をたずめたものになっおいたす。 終端蚘号の集合 (文を構成する最小単䜍) 非終端蚘号の集合 開始蚘号ず呌ばれる特別な非終端蚘号 1぀の非終端蚘号から0個以䞊の蚘号列ぞの倉換芏則 そしおこの文法が衚珟する蚀語は開始蚘号から倉換を繰り返しお生成可胜な終端蚘号列の集合ずなりたす。䟋ずしお次のような文法を考えおみたす。 終端蚘号 a , b 非終端蚘号 S , E 開始蚘号 S 倉換芏則 S→aE , E→Sb , E→b S から適圓に倉換芏則を遞んでいくず、䟋えば S→aE→aSb→aaEb→aabb ず繰り返しお aabb が生成されたす。 そのため aabb はこの文法で衚珟された蚀語に含たれおいるこずが蚀えたす。 実はこの文法は「任意の正敎数Nに察しお、 a をN個䞊べ、その埌 b をN個䞊べた蚀語」を衚しおいたす。 このように正芏衚珟では䜜れないような蚀語も衚珟できるこずが文脈自由文法の特長です。 よくプログラミング蚀語などの定矩で珟れるBNF(バッカスナりア蚘法)やEBNF(拡匵BNF)はこの文脈自由文法を簡易的に蚘述するための蚘法です。 䟋えば先ほどの文脈自由文法に察応するBNFは次のようになりたす。 <S> ::= "a" <E> <E> ::= <S> "b" | "b" "" で囲われおいる単語は終端蚘号、 <> で囲われおいる単語は非終端蚘号ず芋なすず、これが文脈自由文法のいち蚘法に過ぎないこずがわかりやすいかず思いたす。 こういった文脈自由蚀語を解析するずきは、基本的には䞎えられた文章を生成するための倉換の過皋を特定できれば解析できたこずになりたす。 この過皋は構文朚ず呌ばれるもので衚珟でき、䟋えば先ほどの文法に察しお aabb ずいう文章は S→aE→aSb→aaEb→aabb ず倉換されたわけですが、これを以䞋のような朚で衚珟できたす。 文脈自由蚀語のパヌサヌはこの構文朚を䜜成するのが最終目的ですが、解析手法にはさたざたなものがありたす。 䞀般的にパヌサヌで広く䜿われおいるのはLALR(1)法ず呌ばれおいるもので、文頭から1単語ず぀読み出しおいき、構文朚を右の葉偎から特定しおいく手法です。 䟋えば前述の文法に察しお「a a b」たでを入力するず次のように䜜りかけの構文朚が出来䞊がりたす。 字句解析に぀いお 䞀般的なプログラミング蚀語のパヌスにおいおは、文脈自由文法での解析を行う際の耇雑さを枛らすために、文字レベルでは無くある皋床たずたった文字列にたずめおから分析を行いたす。 䟋えばJSONでは以䞋のように文字列がたずめられお終端蚘号に倉換されたす。 文字列リテラル ("John" など) → STRING 数倀リテラル (-3, 1.2 など) → NUMBER 配列甚の開きカッコ [ や閉じカッコ ] → LBRACK, RBRACK 配列内のカンマ → COMMA 蟞曞甚の開きカッコ { や閉じカッコ } → LBRACE, RBRACE 蟞曞内のコロン → COLON 真停倀やnull → TRUE, FALSE, NULL このルヌルにもずづくず、䟋えば {"temperature": 25.7} ずいうJSON文字列は LBRACE STRING COLON NUMBER RBRACE ずいう終端蚘号列に倉換されたす。 このように文字列から終端蚘号の列ぞの倉換を字句解析ず呌び、正則蚀語などの比范的シンプルなルヌルで解析が行われおいたす。 正則蚀語+文脈自由蚀語のStructured Generation 前節で説明したように、䞀般的なプログラミング蚀語にLLM出力を制玄したい堎合はDFAによる字句解析ずLALR(1)による文法解析を行うパヌサヌを利甚したす。 このパヌサヌには次に珟れるべき終端蚘号の候補がわかるずいう特城があり、これをLLMの出力制玄に甚いるこずができたす。 具䜓的には次のようにLLMの語圙に制玄を䞎えられたす。 LLMの䞭間出力をパヌサヌに䞎えお途䞭たで字句解析させる 䟋 {“key”: [ → LBRACE({) STRING(“key”) COLON(:) LBRACK([) 確定した終端蚘号をパヌサヌに䞎えお途䞭たで文法解析させる 次に続くこずができる終端蚘号を列挙する 䟋 {"key": [ に続く終端蚘号は文字列 STRING , 数倀 NUMBER , 蟞曞の開きカッコ LBRACE , 配列の開きカッコ LBRACK , 配列の閉じカッコ RBRACK 各終端蚘号を刀定するDFAから、前蚈算しおおいた語圙マスクを取り出す 語圙マスクの和集合を取り、次に続くこずができるLLMの単語を列挙する これにより、文脈自由文法の終端蚘号の皮類数に比䟋した蚈算量でStructured Generationを行うこずができたす。この終端蚘号の皮類数はLLMの語圙よりもずっず少なく、䟋えばPythonでも94皮に抑えられるこずが知られおいたす 4 。 たずめ 今回はLLMにJSONの出力やプログラムの゜ヌスコヌドの出力などを安定させたい堎合に有甚なStructured Generationに぀いお玹介し、 語圙に制玄を䞎えるための具䜓的な手法ず効率化のアルゎリズムに぀いお解説したした。 https://platform.openai.com/docs/assistants/tools/code-interpreter ↩ https://languageguidedskillcoordination.github.io ↩ Willard and R. Louf, "Efficient Guided Generation for Large Language Models", https://arxiv.org/abs/2307.09702 ↩ Ugare et al., "SynCode: LLM Generation with Grammar Augmentation", https://arxiv.org/abs/2403.01632 ↩
この蚘事では、ドコモグルヌプで実斜したむベント “dcc Engineer Day 25” においお、Telegramを䜿ったワヌクショップを開催した様子を玹介したす。 はじめに 泚意 dcc Engineer Dayに぀いお ワヌクショップの様子 Telegramずは䜕か Telegramの掻甚・悪甚事䟋 アカりント蚭定ずプラむバシヌ メッセヌゞングチャット APIずBot 参加者の声 ワヌクショップを開催しおみお おわりに はじめに みなさんこんにちは、むノベヌションセンタヌの遠藀です。Network Analytics for Security (以䞋、NA4Sec) プロゞェクトのメンバヌずしお掻動しおいたす。 NA4Secプロゞェクトは「NTTはむンタヌネットを安心、安党にする瀟䌚的責務がある」を理念ずしお、攻撃むンフラの解明、撲滅を目指すプロゞェクトです。 NTT Comむノベヌションセンタヌを䞭心ずしおNTTセキュリティ・ゞャパンや゚ヌ・゚フ・ラボラトリヌズからもメンバヌが参画し、日倜攻撃むンフラを远跡しおいたす。 泚意 この蚘事はTelegramの仕様やワヌクショップの内容を玹介する目的で曞かれおいたす。Telegram自䜓は適切に利甚する分には問題ありたせんが、残念ながらTelegramコミュニティの䞭には特殊詐欺や犯眪行為に利甚されおいるものが存圚したす。興味本䜍でそういったコミュニティを芗いたり、玠性のわからない人ずのやり取りに利甚したりするず意図せず犯眪に巻き蟌たれる危険性があるため、泚意しおください。 dcc Engineer Dayに぀いお dcc Engineer Dayは、NTTドコモ・NTTコミュニケヌションズ・NTTコムりェア3瀟の瀟員が技術を軞に亀流を深める堎ずしお開催しおいるむベントです。2022幎から幎に1床開催され、今幎は4回目ずなりたす。むベントは珟地オンラむンのハむブリッドで開催され、今幎は珟地ずオンラむンを合わせお459人が参加したした。 我々NA4Secプロゞェクトは、今幎から新たに始たったワヌクショップ枠の講垫ずしお、本むベントに参加したした。 ワヌクショップの様子 ワヌクショップは「Telegramの危険性を正しく理解し、安党に䜿うための実践ワヌクショップ」ず題しお、ハンズオンを含む以䞋の構成で行いたした。 Telegramずは䜕か 日本、海倖での掻甚悪甚事䟋 むンストヌルずアカりント蚭定 メッセヌゞングチャットの利甚 APIの玹介 お昌時の開催だったので、参加者のみなさんにはピザを぀たんでもらいながら、ハンズオンを進めたした。 Telegramずは䜕か 初めに、Telegramに぀いお座孊方匏で孊びたした。 Telegramは2013幎にリリヌスされたマルチプラットフォヌム察応のメッセヌゞングアプリケヌションです。その高速性やシンプルさ、透明性オヌプン゜ヌスから海倖を䞭心に人気で、珟圚のアクティブナヌザ数は党䞖界で9億人を超えおいたす。 *1 たた明確なプラむバシヌポリシヌやセキュリティ、衚珟の自由に重きを眮く考え方 *2 から、むンタヌネット怜閲の厳しい囜々においお、怜閲されおいない情報の発信・取埗に利甚されおいたす。 Telegramの掻甚・悪甚事䟋 次に、日本や海倖におけるTelegramの掻甚・悪甚事䟋を玹介したした。 日本におけるTelegramのむメヌゞは、䞋蚘のような特殊詐欺や闇バむト・犯眪などの連絡手段に䜿われる事䟋から、「危ない」や「怖い」ずいった声が倚いのではないでしょうか。 逮捕されるたで蟞められない闇バむトの勧誘方法の実態 東京郜 特殊詐欺加害防止 特蚭サむト 正芏の求⌈サむトに掲茉されおいる有害求人情報に泚意!! 譊察庁 䞀方で海倖では先述の通り、情報統制䞋においおも自由床の高い情報を発信できるツヌルずしお利甚されおいたす。䟋えばNew York Times誌はTelegramを通じお、玛争地域に向けお ロシア・りクラむナ戊争に関する囜際ニュヌスを発信するチャンネル を運営しおいたす。たたりクラむナ政府が運営するWebメディア UkraineNOW は、Webサむトのほか、Telegramのオフィシャルチャンネル @UkraineNow を通じお、戊況をリアルタむムに䞖界ぞ発信しおいたす。 これらのようにTelegramの特城や優䜍性が掻甚されおいる事䟋ず、残念ながら悪甚されおしたった事䟋を孊んだうえで、Telegramを安党に利甚するためにはどのようなポむントに気を぀ければ良いかを、次に玹介するハンズオンで孊んでいきたす。 アカりント蚭定ずプラむバシヌ ここからは参加者の皆さんに、実際に手を動かしおもらいながらワヌクショップを進めおいきたした。 たずは実際にTelegram公匏アプリケヌションをむンストヌルしおもらいたす。続いおアカりントを䜜成しお、各自でプロフィヌルを䜜成したした。 Telegramはプロフィヌル蚭定ずは別に、自分の情報を盞手がどの範囲たで芋るこずができるかを蚭定可胜です。ワヌクショップでは実際に参加者同士で蚭定の差による芋え方の違いを芋せ合いながら、蚭定によっおは自分の名前や写真、電話番号を第䞉者が参照可胜な状態になるこずを䜓隓したした。 メッセヌゞングチャット ここでは䜜成したアカりントを利甚し、チャットの閲芧・発蚀を䜓隓したした。チャットは倧きく分けお以䞋の4皮類が存圚したす。 チャンネル管理者のみが発蚀可胜な耇数人チャット グルヌプチャット管理者・参加者ずも発蚀可胜な耇数人チャット 個人チャット1察1のチャット シヌクレットチャットE2EE(End-to-End Encryption)の1察1チャット なかでもシヌクレットチャットは秘匿性が高く、通信内容ぱンドツヌ゚ンドで暗号化されおいたす。゚ンドツヌ゚ンド暗号化が有効なチャットにおいおは、メッセヌゞなどの通信デヌタがすべお暗号化された状態で扱われたす。送信者ず受信者のみがデヌタを埩号しお閲芧できるため、セキュリティの高い通信方匏です。 このほか、シヌクレットチャットでは独特な機胜も提䟛されおいたす。ワヌクショップでは参加者間でシヌクレットチャットを開始し、Self-destruct Timer自動消去機胜を数秒皋床に蚭定するこずで、䌚話した内容が数秒で自動消去される様子を䜓隓しおもらいたした。たた端末でスクリヌンショットを取埗するず自動でプロテクションが動䜜し、スクリヌンショットが無効化されるうえで、取埗した事実が䌚話盞手に通知される様子を確認したした。 APIずBot 最埌にAPIの玹介ず、チャットBotに察しお䌚話をする䜓隓をしたした。Telegramはいく぀かの開発者向けAPIが提䟛されおおり、倧きく以䞋の3皮類が存圚したす。 Bot API Telegram API & TDLib Gateway API 今回の䜓隓では、講垫偎が䞊蚘のBot APIを利甚しお準備したチャットBotず䌚話をしおもらいたした。 参加者はチャットBotに察しお、準備されたいく぀かのコマンドを䜿っお自由に䌚話をしたす。それらのコマンドのうちいく぀かには、端末の電話番号や䜍眮情報など個人情報を送信させるスクリプトを講垫が仕蟌んでいたした。参加者には、取埗可胜な情報範囲の理解ず、意図しない情報開瀺のリスクを䜓感しおもらいたした。 Telegram API、及びTelegramクラむアントはオヌプン゜ヌスのため柔軟性や拡匵性が非垞に高い反面、利甚する際にはこれらの動䜜仕様に぀いお十分に泚意するこずが必芁です。 参加者の声 ワヌクショップ埌に実斜したアンケヌトを芋るず、参加者党員がTelegramを初めお利甚したずいう結果でしたが、利甚埌のTelegramの印象を聞くず「怖くない」「どちらかずいうず怖くない」ずいう回答を倚くの参加者からいただきたした。たた「実際に觊りながら孊ぶこずができ楜しかった」、「面癜かった」ずいう声や、ワヌクショップを他の方に勧めたいかずいう問いに察しおも党員からポゞティブなリアクションをいただき非垞に嬉しく思いたした。 䞀方で「せっかくなので自己玹介を亀えお亀流を深めたかった」、「ボリュヌムが少なかった」、「サヌビスの背景など座孊的な郚分を深く知りたかった」ずいうフィヌドバックもあり、今埌を考えるうえで非垞に参考になりたした。 Telegramを闇雲に怖がるのではなく、実際に䜓隓するなかで泚意すべきポむントを知っおもらうこずができ、ワヌクショップを開催した意味があったのではないかず思いたす。 ワヌクショップを開催しおみお 私自身初めおのむベント参加、ワヌクショップ講垫で至らぬ点が倚くありたしたが、むベントを䞻催しお䞋さった皆さん、䞀緒に講垫をした同プロゞェクトの鮫嶋さんやプロゞェクトメンバヌに支えおいただき、無事開催に至るこずができたした。ありがずうございたす。 開催前は1時間半ずいう時間枠のなかで終えるこずができるのかずいう䞍安であったり、アプリケヌションのむンストヌルやSMS利甚に抵抗感があるのではないかずいう心配もありたしたが、いざ始めおみるず時間はやや䜙るくらいで、ハンズオンもスムヌズに進めるこずができたした。 再床開催する機䌚があった際は、アンケヌトで頂いた意芋を盛り蟌みながら、より良いワヌクショップを目指しおいきたいず思っおいたす。 ワヌクショップに参加しお䞋さった皆さんにも、改めお感謝いたしたす。 おわりに Telegramは挠然ずしたむメヌゞで「危ない」ず蚀われるこずが倚いですが、具䜓的にどのようなリスクがあるのか、どのような動䜜をするのかを䜓隓を通じお孊んでもらいたした。 繰り返しずなりたすが、特に日本においおは詐欺や犯眪に利甚されるこずが倚く、Telegramぞの誘導や利甚の匷芁があった堎合は利甚せず䞋蚘の盞談先ぞの連絡を怜蚎しおください。 闇バむト 譊察の呌びかけ匷化以降 応募者など保護のケヌスも 匿名通報ダむダル 読んで頂いた方にずっお、本ブログの内容がTelegramに぀いお「正しく知っお正しく恐れる」こずに繋がれば幞いです。 *1 : Telegram FAQ *2 : Telegram Privacy
こんにちは、むノベヌションセンタヌの鈎ヶ嶺です。普段は AI/ML システムに関する業務に埓事しおいたす。 本蚘事では、CUDA 12.8 から远加された Checkpoint API の抂芁に぀いお解説したす。 たず、Checkpoint のナヌスケヌスやこれたでの NVIDIA CUDA における Checkpoint の詊みなどの背景を説明し、新たに远加された CUDA Checkpointing に぀いお解説したす。 さらに実際に実装し、torchvision や transformers などの CUDA アプリケヌションに察しお、Checkpoint の怜蚌をしおいたす。 背景 CUDA Checkpointing 実装ず怜蚌 cu_check tool 怜蚌 Pytorch Counter torchvision transformers たずめ 背景 Checkpoint は蚈算途䞭の内郚状態メモリなどをディスクなどに保存し、任意のタむミングで蚈算を再開できる技術です。 想定されるナヌスケヌスずしお「障害発生時のバックアップ」、「ラむブマむグレヌション」、「長時間実行される蚈算の途䞭結果保存」、「タスクスケゞュヌリングにおけるプリ゚ンプション」、「フォレンゞック分析における蚌拠保党」などが挙げられたす。 特に GPU 分野では、昚今の倧芏暡蚀語モデルに代衚される長期間にわたる孊習凊理の䞀時保存や、リ゜ヌス最適化の䞀環ずしお、䞀郚の GPU プロセスを別の GPU サヌバぞ移行するずいった甚途が考えられたす。 しかし、これたでの NVIDIA CUDA における Checkpoint 手法ずしおさたざたな詊みはありたしたが、アプリケヌションの実行環境自䜓に倉曎を加えお、CUDA Driver API の呌び出しを傍受しおいるため完党に透過的なものではありたせんでした。 1 2 3 4 5 6 7 8 9 10 䞀方、2024 幎 7 月 NVIDIA の Technical Blog においお、 CUDA Driver API ずしお version 555 から Checkpoint が実隓的に実装されたこずが発衚されたした。 オヌプン゜ヌスな Checkpoint utility の CRIU (Checkpoint/Restore in Userspace) ずの組み合わせに぀いおも説明されおいたす。 https://developer.nvidia.com/blog/checkpointing-cuda-applications-with-criu/ 以䞋にそのツヌルである cuda-checkpoint が公開されおいたす。リポゞトリにはツヌルのバむナリしか眮いおおらず、バむナリの文字列を調べるず cuGetExportTable 11 以倖の API 呌び出しが存圚しおおらず、おそらくドキュメント化されおいない関数を利甚する圢で実装されおいたした。 https://github.com/NVIDIA/cuda-checkpoint git clone https://github.com/NVIDIA/cuda-checkpoint.git cd cuda-checkpoint strings ./bin/x86_64_Linux/cuda-checkpoint | grep cu # libcuda.so.1 # cuDriverGetVersion # cuGetExportTable 他にも、 MemVerge 瀟は早期にこの API を利甚した AI の孊習 PoC を実斜しお GTC24 などで発衚しおいたす。 CUDA 12.x driver enhancements will enable the open-source CRIU project to checkpoint and restart a GPU-based compute node. We'll provide a technical overview and demonstrate this new capability. https://www.nvidia.com/en-us/on-demand/session/gtc24-p63184/ www.youtube.com そしお、2025 幎 3 月の珟時点では Driver version 570 および CUDA 12.8 から CUDA Checkpointing ずしお正匏に API が公開されたした。 先ほどの check-checkpoint のリポゞトリにも䞀郚その API を利甚するコヌドが公開されおいたすが、 cuda-checkpoint ず䜵甚されおおり、新たに仕様公開されたものに眮き換わっおいないず思われたす。 12 13 そのため、珟圚 CUDA 12.8 で新たに公開された API を利甚したサンプルコヌドが芋圓たらない状況になっおいるず思われたす。 次の章で公開されおいる Checkpoint API を調査し、どのように利甚するのかを確認したす。 CUDA Checkpointing CUDA Checkpointing の API 䞀芧が以䞋になりたす。 https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__CHECKPOINT.html CUresult cuCheckpointProcessGetState ( int pid, CUprocessState* state ) CUDA プロセスの珟圚の状態( CU_PROCESS_STATE_RUNNING , CU_PROCESS_STATE_LOCKED , CU_PROCESS_STATE_CHECKPOINTED , CU_PROCESS_STATE_FAILED )を取埗したす。 CUresult cuCheckpointProcessLock ( int pid, CUcheckpointLockArgs* args ) CUDA プロセスを lock しお、以降の CUDA API 呌び出しをブロックしたす。 CUresult cuCheckpointProcessCheckpoint ( int pid, CUcheckpointCheckpointArgs* args ) GPU メモリの内容を host memory に保存し、CUDA プロセスを checkpoint したす。 CUresult cuCheckpointProcessRestore ( int pid, CUcheckpointRestoreArgs* args ) CUDA プロセスをリストアしたす。状態は CU_PROCESS_STATE_CHECKPOINTED である必芁がありたす。 CUresult cuCheckpointProcessUnlock ( int pid, CUcheckpointUnlockArgs* args ) CUDA プロセスの lock を解陀しお、CUDA API Call を再開できるようにしたす。 CUresult cuCheckpointProcessGetRestoreThreadId ( int pid, int* tid ) CUDA プロセスの Thread ID を取埗する。 匕甚: https://arxiv.org/abs/2502.16631 14 䞊図を参考にするず、実行䞭のプロセスの Checkpoint は次のように実行したす。 cuCheckpointProcessLock cuCheckpointProcessCheckpoint CRIU dump たた、保存したものを Restore するには次のように実行したす。 CRIU restore cuCheckpointProcessRestore cuCheckpointProcessUnlock 次の章で実際にこれらを動䜜するコマンドツヌルを実装しお、Pytorch などのアプリケヌションの Checkpoint が可胜かを確認したす。 実装ず怜蚌 cu_check tool 次のようにそれぞれの Checkpoint API をサブコマンドずしお、特定のプロセス ID に実行するツヌルを実装したす。 cu_check.c #include <cuda.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define CHECK_CU (func) \ do { \ CUresult res = (func); \ if (res != CUDA_SUCCESS) { \ const char *errName = NULL ; \ const char *errDesc = NULL ; \ cuGetErrorName (res, &errName); \ cuGetErrorString (res, &errDesc); \ fprintf ( stderr , " %s failed: %s %s\n " , #func, errName, errDesc); \ return - 1 ; \ } \ } while ( 0 ) const char * getCUprocessState (CUprocessState state) { switch (state) { case CU_PROCESS_STATE_RUNNING: return "CU_PROCESS_STATE_RUNNING" ; case CU_PROCESS_STATE_LOCKED: return "CU_PROCESS_STATE_LOCKED" ; case CU_PROCESS_STATE_CHECKPOINTED: return "CU_PROCESS_STATE_CHECKPOINTED" ; case CU_PROCESS_STATE_FAILED: return "CU_PROCESS_STATE_FAILED" ; default : return "OTHER_STATE" ; } } int main ( int argc, char **argv) { if (argc < 3 ) { fprintf ( stderr , "usage: %s [state|lock|checkpoint|restore|unlock] <pid> \n " , argv[ 0 ]); return - 1 ; } const char *subcommand = argv[ 1 ]; int pid = atoi (argv[ 2 ]); CHECK_CU ( cuInit ( 0 )); if ( strcmp (subcommand, "state" ) == 0 ) { CUprocessState state; CHECK_CU ( cuCheckpointProcessGetState (pid, &state)); printf ( "state: %s\n " , getCUprocessState (state)); } else if ( strcmp (subcommand, "thread" ) == 0 ) { int threadId = 0 ; CHECK_CU ( cuCheckpointProcessGetRestoreThreadId (pid, &threadId)); printf ( "thread id: %d\n " , threadId); } else if ( strcmp (subcommand, "lock" ) == 0 ) { CUcheckpointLockArgs args = { .timeoutMs = 600000 // 10min timeout }; CHECK_CU ( cuCheckpointProcessLock (pid, &args)); printf ( "locked successfully \n " ); } else if ( strcmp (subcommand, "checkpoint" ) == 0 ) { CHECK_CU ( cuCheckpointProcessCheckpoint (pid, NULL )); printf ( "checkpointed successfully \n " ); } else if ( strcmp (subcommand, "restore" ) == 0 ) { CHECK_CU ( cuCheckpointProcessRestore (pid, NULL )); printf ( "restored successfully \n " ); } else if ( strcmp (subcommand, "unlock" ) == 0 ) { CHECK_CU ( cuCheckpointProcessUnlock (pid, NULL )); printf ( "unlocked successfully \n " ); } else { printf ( "unknown subcommand: %s\n " , subcommand); return - 1 ; } return 0 ; } gcc -I /usr/local/cuda-12. 8 /include cu_check.c -o cu_check -lcuda # install sudo mv cu_check /usr/local/bin # Usage cu_check state < pid > cu_check lock < pid > cu_check checkpoint < pid > cu_check restore < pid > cu_check unlock < pid > 怜蚌 事前に CRIU をむンストヌルしたす。 curl -LO " http://github.com/checkpoint-restore/criu/archive/v4.0/criu-4.0.tar.gz " tar xvfz criu-4. 0 .tar.gz cd criu-4. 0 / make -j sudo make install Pytorch Counter CUDA Memory 䞊に保存し、 1 秒ごずに inc される Counter コヌドでたず怜蚌したす。 torch_counter.py import torch, time counter = torch.tensor( 0 , device= 'cuda' ) while True : print (counter) counter.add_( 1 ) time.sleep( 1 ) 次のように実行したす。 1 秒ごずに Counter が継続しお出力される様子が確認できるず思いたす。 pip install torch python torch_counter.py & sleep 5 PID = $( pgrep -f ' python torch_counter.py ' ) # checkpoint rm -rf tcnt && mkdir -p tcnt cu_check lock $PID cu_check checkpoint $PID sudo criu dump -j -D tcnt -t $PID du -sh tcnt # 755M # restore sudo criu restore -j -D tcnt & while ! pgrep -f ' python torch_counter.py ' > /dev/null 2 >& 1 ; do sleep 1 ; done sudo cu_check restore $PID sudo cu_check unlock $PID sleep 5 kill -9 $PID torchvision 次に、torchvision の ResNet で怜蚌したす。 孊習途䞭の状態が Checkpoint され、再開埌に孊習途䞭から実行される様子が確認できるず思いたす。 git clone https://github.com/pytorch/examples.git cd examples/imagenet/ pip install -r requirements.txt python main.py -a resnet152 --dummy -j 0 & sleep 20 PID = $( pgrep -f ' python main.py -a resnet152 --dummy -j 0 ' ) # checkpoint rm -rf resnet && mkdir -p resnet cu_check lock $PID cu_check checkpoint $PID sudo criu dump -j -D resnet -t $PID du -sh resnet # 50G # restore sudo criu restore -j -D resnet & while ! pgrep -f ' python main.py -a resnet152 --dummy -j 0 ' > /dev/null 2 >& 1 ; do sleep 1 ; done sudo cu_check restore $PID sudo cu_check unlock $PID sleep 20 sudo kill -9 $PID transformers 最埌に、transformers で怜蚌したす。 こちらも同様に継続しお孊習可胜である様子を確認できたした。 train_bert.py # ref: https://huggingface.co/docs/transformers/training from datasets import load_dataset from transformers import ( AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer, ) dataset = load_dataset( "yelp_review_full" )[ "train" ].select( range ( 10000 )) tokenizer = AutoTokenizer.from_pretrained( "google-bert/bert-base-cased" ) def tokenize_function (examples): return tokenizer(examples[ "text" ], padding= "max_length" , truncation= True ) small_train_dataset = dataset.map(tokenize_function, batched= True ) model = AutoModelForSequenceClassification.from_pretrained( "google-bert/bert-base-cased" , num_labels= 5 ) trainer = Trainer( model=model, args=TrainingArguments(num_train_epochs= 10000 ), train_dataset=small_train_dataset, ) trainer.train() 次のように実行したす。 pip install transformers datasets accelerate python train_bert.py & sleep 60 PID = $( pgrep -f ' python train_bert.py ' ) # checkpoint rm -rf bert && mkdir -p bert cu_check lock $PID cu_check checkpoint $PID sudo criu dump -j -D bert -t $PID --tcp-established du -sh bert # 5.5G # restore sudo criu restore -j -D bert --tcp-established & while ! pgrep -f ' python train_bert.py ' > /dev/null 2 >& 1 ; do sleep 1 ; done sudo cu_check restore $PID sudo cu_check unlock $PID sleep 20 sudo kill -9 $PID たずめ 本蚘事では CUDA 12.8 で導入された Checkpoint API に぀いお解説したした。 たた実際の実装を通しお、昚今の倧芏暡蚀語モデルのデファクトなラむブラリである transformers などの CUDA アプリケヌションに察しお、Checkpoint が動䜜するこずを確認したした。 今埌これらの技術が掻甚されるこずで、長期間にわたる孊習凊理の䞀時保存や、効率的なリ゜ヌス最適化が行われるこずを期埅しおいたす。 Takizawa, Hiroyuki, et al. "CheCUDA: A checkpoint/restart tool for CUDA applications." 2009 International Conference on Parallel and Distributed Computing, Applications and Technologies. IEEE, 2009. ↩ Nukada, Akira, Hiroyuki Takizawa, and Satoshi Matsuoka. "NVCR: A transparent checkpoint-restart library for NVIDIA CUDA." 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Phd Forum. IEEE, 2011. ↩ Jiang, Hai, et al. "A checkpoint/restart scheme for cuda programs with complex computation states." International Journal of Networked and Distributed Computing 1.4 (2013): 196-212. ↩ Garg, Rohan, et al. "CRUM: Checkpoint-restart support for CUDA's unified memory." 2018 IEEE International Conference on Cluster Computing (CLUSTER). IEEE, 2018. ↩ Jain, Twinkle, and Gene Cooperman. "CRAC: checkpoint-restart architecture for CUDA with streams and UVM." SC20: International Conference for High Performance Computing, Networking, Storage and Analysis. IEEE, 2020. ↩ Shukla, Dharma, et al. "Singularity: Planet-Scale, Preemptive and Elastic Scheduling of AI Workloads. arXiv. org (February 2022)." arXiv preprint arXiv:2202.07848. ↩ Eiling, Niklas, et al. "Cricket: A virtualization layer for distributed execution of CUDA applications with checkpoint/restart support." Concurrency and Computation: Practice and Experience 34.14 (2022): e6474. ↩ Nukada, Akira, Taichiro Suzuki, and Satoshi Matsuoka. "Efficient checkpoint/Restart of CUDA applications." Parallel Computing 116 (2023): 103018. ↩ Eiling, Niklas, Stefan Lankes, and Antonello Monti. "Checkpoint/Restart for CUDA Kernels." Proceedings of the SC'23 Workshops of the International Conference on High Performance Computing, Network, Storage, and Analysis. 2023. ↩ Yang, Yanning, et al. "On-demand and Parallel Checkpoint/Restore for GPU Applications." Proceedings of the 2024 ACM Symposium on Cloud Computing. 2024. ↩ https://forums.developer.nvidia.com/t/cugetexporttable-explanation/259109/2 ↩ https://github.com/NVIDIA/cuda-checkpoint/blob/6ec728aff032c18c9fb0794a272d94c6adcce508/src/r570-features.c ↩ https://github.com/checkpoint-restore/criu/blob/4b099510b35f98a1f1d6589b1660470402fc1fef/plugins/cuda/cuda_plugin.c ↩ Stoyanov, Radostin, et al. "CRIUgpu: Transparent Checkpointing of GPU-Accelerated Workloads." arXiv preprint arXiv:2502.16631 (2025). ↩
こんにちは、゜リュヌションサヌビス郚の田䞭です。 玄半幎間、むノベヌションセンタヌのNetwork Analytics for Security以䞋、NA4Secプロゞェクトに、瀟内ダブルワヌク制床を通しお、参画しおいたした。 今日は、タむトルにもある通り、営業系キャリアを歩んできた私がアナリスト/゚ンゞニア業務をしお孊べたこずや感じたこずに぀いお玹介したす。 営業系出身の方で、アナリスト業務に興味がある方向けに、今埌のキャリア参考になればず思いたす。 RemcosずいうRATファミリヌに぀いお、机䞊調査をしたしたので、そちらもご興味あれば どんなキャリアを歩んできたか なぜ瀟内ダブルワヌクに申し蟌んだのか NA4Secプロゞェクトの玹介 埓事した業務「RATファミリヌの机䞊実態調査」 Remcosの机䞊実態調査特城 Remcosの机䞊実態調査事䟋/感染チェヌン Remcosの机䞊実態調査掚奚察策 個人的にぶち圓たった壁 ダブルワヌクを通しお、孊べたこず どんなキャリアを歩んできたか 珟圚入瀟6幎目になりたす。 初期配属は、補造業向けのアカりント営業をしおおりたした。 4幎目のタむミングで、䞀床郚眲異動しおたしお、今はセキュリティ領域のプリセヌルス゚ンゞニアを担圓しおいたす。 普段はSASEやセキュリティオペレヌション(SOC/SOAR)領域を提案するこずが倚いです。 ずいうこずで、構築や運甚経隓は皆無であり、机䞊知識のみで少しセキュリティをかじっおいる系の人です。 LinuxやPython等のプログラミングも党く觊ったこずがありたせん。。。 なぜ瀟内ダブルワヌクに申し蟌んだのか 䞀蚀でいうず、「実務経隓を積みたい」です。 構築や運甚の実務経隓がなく、机䞊ベヌスだず提案時の発蚀の重みがなかったり、説埗力を出し切れなかったり、課題を持っおいたした。 たた、セキュリティアナリスト業務がどんなものかシンプルに興味もありたした。 そんな時、未経隓者でもOKずいうNA4Secプロゞェクトの瀟内ダブルワヌクの募集芁項を芋お、ポチっず申し蟌みをしたした。 なんずか無事、面談も実斜しお、採甚しおいただけたした。 NA4Secプロゞェクトの玹介 「Network Analytics for Security」 通称NA4Secなよせず呌ばれおいたす。 「NTTはむンタヌネットを安心・安党にする瀟䌚的責務がある」ずいう理念に基づき、攻撃むンフラの解明、撲滅の実珟を目指しお掻動しおいるむノベヌションセンタヌのプロゞェクトです。 埓事した業務「RATファミリヌの机䞊実態調査」 私がダブルワヌク䞭に埓事した「RATファミリヌの机䞊実態調査」に぀いお、ご玹介したす。 RATずは、Remote Access Trojanの略で、リモヌトアクセス型のトロむの朚銬です。 攻撃者はRATを利甚しおコンピュヌタに䞍正に䟵入し、遠隔操䜜を可胜にしおナヌザヌの個人情報を盗み芋たり、端末内のりむルス察策゜フトを停止させ別の攻撃を仕掛けるための螏み台に悪甚したす。 RATの䞭でも特に日本での攻撃被害が倚いものをピックアップしお、汎甚RATの実態に぀いお調査をしたした。 Remcosの机䞊実態調査特城 Remcos, Xworm, NjRATずいう3぀のRATファミリヌを察象に机䞊調査を始めたしたが、今回はRemcosにフォヌカスしお簡単にご玹介したす。 Remcosは、2016幎7月に最初のバヌゞョンがドむツのBreakingSecurity瀟から販売されたリモヌトアクセスツヌルです。 珟圚もリモヌトアクセスツヌルずしお公匏販売されおいたすが、攻撃者たちにRATずしお悪甚されおいる実態がありたす。 YouTubeでもRemcosの蚭定動画が公開されおいたり、非垞に身近なツヌルです。 Check Point Software Technologies瀟によるず、2023幎7月にマルりェアファミリヌランキングで3䜍入っおおり、党䞖界で悪甚が芳枬されおいたす。 そんなRemcosの特城ずしおは、倧きく3点ありたす。 特暩の昇栌 感染したシステムの管理者暩限を取埗し、ナヌザヌアカりント制埡(UAC)等を無効にするこずが可胜になりたす。 攻撃者は管理者暩限を利甚し、悪意のある機胜を実行しやすくなりたす。 防埡回避 プロセスむンゞェクションを䜿甚しお正圓なプロセスに自身を埋め蟌み、怜出を困難にしたす。 Windows OSのパむプ方匏を掻甚し、デヌタ転送のための秘密チャネルを䜿い、EPPやEDRによる怜出を回避するこずも可胜です。 デヌタ収集 キヌストロヌクを蚘録し、スクリヌンショット、オヌディオ、クリップボヌド等の内容をキャプチャし、感染したシステムからパスワヌドの収集も可胜にしたす。 Remcosの机䞊実態調査事䟋/感染チェヌン 今回は、2023幎にコロンビア䌁業を暙的ずする攻撃で、Remcosが利甚されたケヌスを芋おいきたす䞋蚘添付に本ケヌスの感染チェヌンをたずめおいたす。 本ケヌスでは、 たずはフィッシング経由で、添付されおいる圧瞮ファむルをダりンロヌドさせたす。 栌玍されおいたBATファむルからPowershellを実行し、2぀の.NETモゞュヌルをメモリに読み蟌たせたす。 この2぀の.NETモゞュヌルで、Remcos本䜓をダりンロヌドする前に、りむルス怜知/開始の回避や蚌跡削陀を詊みたす。 1぀目の.NETモゞュヌルで、Kernel32.dllやntdll.dllのフックを倖し、監芖を回避。そしおamsi.dll AmsiScanBuffer関数にパッチを適甚し、りむルススキャンも回避したす。さらに、ntdll.dll EtwEventWrite関数にパッチを適甚し、むベントトレヌスログが残らないように、蚌跡を消したす。 2぀目の.NETモゞュヌルで、デバッガがあるのか確認。PowerShellを䜿甚し、メむンモゞュヌルファむルを削陀し、ステルス性を確保したす。 䞊蚘のりむルス怜知/監芖を回避、蚌跡を可胜な限り消したのち、Remcos本䜓をダりンロヌドしたす。 セキュリティ初心者からも私からするず、ただ単にRemcosがダりンロヌドされるのみかず思っおいたのですが、本䜓ダりンロヌド前にこれだけのプロセスがあったのは非垞に驚きでした。 Remcosの机䞊実態調査掚奚察策 Remcosのようなマルりェアを察策するには以䞋のような倚局防埡が掚奚ずなりたす。 メヌルフィルタリング゜リュヌションを利甚しお、ナヌザヌがメヌル受信する前にスパムメッセヌゞを排陀するこず。 電子メヌルの怪しいハむパヌリンクをクリックしたり、添付ファむルを開いたりしないように、ナヌザヌトレヌニングを実斜するこず。 OSや゜フトりェアの脆匱性察応を迅速に実斜するこず。 ネットワヌクセキュリティ(SASE, NGFW等)を利甚しお、脅嚁に関連する悪意のあるアクティビティを怜出するこず。 EDRを利甚しお、゚ンドポむントで発生する異垞な振る舞いを怜出するこず。 個人的にぶち圓たった壁 プログラミングがわからない マルりェアや攻撃者を調査する際も、ワヌクフロヌツヌル等を組み合わせお、自動化しお情報収集するケヌスが倚いです。その時には最䜎限のプログラミングスキルが必芁でした。 たた、すでにデプロむされおいる分析内容/マルりェア解析等の海倖ドキュメントを正確に理解する䞊でもPythonやC++を理解できおいないず非効率的でした。 䞀朝䞀倕で、身に぀くスキルでもないので、日々の勉匷が重芁だなず実感。䞀方で、即時的な打ち手ずしおは、ChatGPTさんに聞くずプログラミングの意味をクむックに回答しおくれるので非垞に重宝しおいたした。スゎむ䟿利。。。 ダブルワヌクを通しお、孊べたこず 孊ぶこずができた点ずしおは、以䞋3点になりたす。 郚眲異動や転職ずいう倧きな決断を䞋す前に、業務が自分にマッチしおいるか事前怜蚌できる点です。 営業ずアナリスト業務の間には、非垞に倧きなGAPがあるず思いたす。倧きな決断前に業務むメヌゞを䞀郚でも把握できるこずは、今埌のキャリア遞択をする際の倧きな材料になりたした。 本業では埗られない知識・スキルを実践で孊ぶこずができる点です。 RATファミリヌの調査で海倖ドキュメントを読み蟌んでみたり、簡単な分析環境を構築しおみたり、実際に手を動かすこずで、新しい知識の定着ができたした。 わからないこずがわかるGAPがわかる点です。 想像はしおいたしたが、セキュリティアナリスト業務に埓事するには、プログラミングやLinuxが觊れお圓たり前等の自分ずのGAPがわかる点は、非垞によい孊びでした。 普段からSOC等で、アナリスト実務されおいる方は、改めお倧尊敬する機䌚になりたした。 このような孊びがあるため、セキュリティ領域の営業系の方にも、アナリスト実務をぜひお勧めしたいです
こんにちは、むノベヌションセンタヌの加藀です。この蚘事では、Transformerベヌスの蚀語モデルで利甚可胜な高速化技術である投機的デコヌディング(speculative decoding)を甚いお、音声認識モデルのWhisperの高速化を怜蚌したのでその結果を玹介したす。 投機的デコヌディングずは Whisperずは 実隓 英語音声 (LibriSpeech) の結果 日本語音声 (Common Voice 17.0 日本語サブセット) の結果 たずめ 投機的デコヌディングずは 倧芏暡蚀語モデル(LLM)をはじめずするTransformerベヌスの蚀語モデルは、これたでの単語列から次に珟れそうな単語を予枬するこずを繰り返しお文章生成を行なっおいたす。 これに察し、元のモデルよりも軜量な蚀語モデルの出力を䞋曞きずしお利甚するこずで、元のモデルの出力を完党に再珟しながら文章生成を高速化する投機的デコヌディング(speculative decoding)ず呌ばれる手法がありたす。これは䞋図のように、軜量なモデルで数単語先たで予枬しおから元の倧きなモデルでその予枬を怜蚌するこずで、元の倧きなモデルの掚論回数を節玄しながら文章を生成する手法です。ちょうど人間が予枬倉換を掻甚しながら文章を入力するのず䌌た流れになっおいるのがわかるず思いたす。 投機的デコヌディングの詳现は 過去の蚘事 を参照しおください。 䞋曞きずしお利甚される蚀語モデルはLLMのようなTransformerベヌスである必芁はなく、これたでの単語列から次に珟れそうな単語をなんらかの圢で予枬できれば十分です。 投機的デコヌディングでよく䜿われる䞋曞きモデルは元モデルの蒞留モデルであったり、同じアヌキテクチャでパラメヌタ数の少ないLLMであったりしたすが、芁玄タスクやRetrieval Augmented Generation (RAG)などプロンプトから文蚀を抜き出すこずの倚いナヌスケヌスでは、プロンプトから収集したN-gramを参照しお次に珟れそうな単語を予枬する Prompt Lookup が掻甚されるこずもありたす。今回の実隓ではこのPrompt Lookupの実装を少し倉曎しお採甚しおいたす。 Whisperずは Whisper はTransformerベヌスの音声認識モデルであり、音声から特城を抜出するEncoderず、察応するテキストを出力するDecoderからなりたす。 このDecoderでは文章生成タスク甚の蚀語モデルず䌌た動䜜をしおおり、音声の特城ずこれたで出力したテキストから次に珟れそうな単語を予枬するこずを繰り返しおいたす。そのため、投機的デコヌディングをWhisperのDecoder郚分にも適甚できたす。たた、䞀般的な文章生成タスクず異なり出力文章の正解が倧䜓決たっおいるため、䞋曞きを䜜成する際に元モデルの途䞭たでの出力を参照しなくおも十分な正確性が期埅できたす。 そこで、性胜が高いがモデルサむズの倧きいWhisperモデルに察しおたず軜量な音声認識モデルで文章を出力し、これを䞋曞きずしお参照するこずで、粟床を維持したたた高速化する手法を実装しおみたした。掚論の流れを䞋図に瀺したす。 各時点での曞き起こしの続きを䞋曞きから抜き出す際はPrompt Lookupず同様の手法を䜿い、䞋曞きのN-gramから䞀臎床の高いものを遞択しおいたす。䟋えば䞊図の䟋では The man worked の時点で元モデルの予枬が䞋曞きから乖離しおいたすが、䞋曞きから a に続く文字列である security guard. を抜き出し、先読みに再床成功しおいたす。 実隓 今回は元モデルずしおwhisper-large-v3を䜿い、軜量モデルずしおwhisper-tinyを䜿いたした。評䟡デヌタセットは英語音声の LibriSpeech ASRコヌパス ず日本語音声の Common Voice 17.0 日本語サブセット の2぀を甚意したした。音声認識の粟床は認識に倱敗した単語数ず関連が深い Word Error Rate (WER) を甚いお評䟡し、その際日本語デヌタに察しおは MeCab で単語分割を行なっおいたす。 凊理速床はReal Time Factor (RTF)で算出したす。これは1秒のデヌタを凊理するのにかかった秒数を衚し、小さいほど良い結果であるこずを瀺しおいたす。 結果は以䞋の衚のようになりたした。 英語音声 (LibriSpeech) の結果 モデル WER RTF tiny (参考) 0.089 0.013 large-v3 0.032 0.085 large-v3 + tiny䞋曞き 0.032 0.072 参考ずしおtinyモデル単䜓で音声認識した結果も瀺しおいたすが、large-v3よりも6.5倍速い代わりにWERが悪化しおいるこずがわかりたす。 たた、speculative decodingは元モデルの出力を完璧に再珟するため、large-v3単䜓で動かした時ず先読みを぀けた時どちらもWERが0.032ずなっおいたす。 そしお先読みを぀けた堎合は実行速床が18%向䞊したした。参考ずしお各モデルの曞き起こし䟋を以䞋に瀺したすが、large-v3ずtinyの出力の䞀臎率が高く、うたく先読みを圓おられおいるこずがわかりたす。 Ground Truth (原皿) large-v3 tiny HURSTWOOD WALKED THE FLOOR MENTALLY ARRANGING THE CHIEF POINTS OF HIS SITUATION Hurstwood walked the floor, mentally arranging the chief points of his situation. First would walk to the floor mentally arranging the chief points of his situation. HE ALSO THOUGHT OF HIS MANAGERIAL POSITION He also thought of his managerial position. He also thought of his managerial position. FORTUNATELY THERE WAS NOTHING FROM HIS WIFE EITHER Fortunately, there was nothing from his wife, either. Fortunately, there was nothing from his wife either. HE AROSE FROM HIS CHAIR AND WENT AND LOOKED OUT INTO THE STREET He arose from his chair and went and looked out into the street. He rose from his chair and went and looked out into the street. HURSTWOOD ALMOST EXCLAIMED OUT LOUD AT THE INSISTENCY OF THIS THING Hurstwood almost exclaimed out loud at the insistency of this thing. Herstwood almost explained out loud at the insistence of this thing. 日本語音声 (Common Voice 17.0 日本語サブセット) の結果 モデル WER RTF tiny (参考) 0.844 0.017 large-v3 0.143 0.108 large-v3 + tiny䞋曞き 0.143 0.120 䞀方で日本語音声では実行速床が改善せず、元のlarge-v3単䜓で動かした方が速いずいう結果になりたした。そもそも党䜓的にWERが高く音声認識に苊戊しおいるこずもあり、品質の高い先読みを提䟛できおいないようです。 各モデルの曞き起こし䟋を以䞋に瀺したす。 Ground Truth (原皿) large-v3 tiny セリヌンティりスは、瞄打たれた。メロスは、すぐに出発した。初倏、満倩の星である。 セリノンティりスは瞄打たれた ネラスはすぐに出発した 初倏満倩の星である セリナンティヌズは奪われたネラズはすぐにしようっぱいずした、そこは満転の抌すである。 僕らは䜕かを求めおゎミの山を持っおいた 僕らは䜕かを求めおゎミの山を持っおいた。 僕らは䜕かを求めお説明をさっおいた ブラシを板の䞊に眮くや吊や、 ブラシを板の䞊に眮くや吊や では、教えおおいおは、お家に行きたいな。 私はポピュラヌ音楜を聞きたい。 私はポピュレア音楜を聎きたい 私はポフリアヌを仲眮きたい 倧事なものじゃないのず君はきいた 倧事なものじゃないの?ず君は聞いた 倧事なものじゃないの?ず、君が聞いた たずめ 本皿ではLLMの文章生成に䜿われおいる高速化手法のspeculative decodingを音声認識モデルに適甚するずどれくらい高速化できるのか怜蚌したした。 結果、䞀郚の条件䞋では速くなるこずがわかりたしたが䞇胜ではなく、認識粟床が確保できないケヌスでは先読みの恩恵が受けられないようでした。 たた、Whisperはturboモデルずいうlargeモデルの軜量化版を提䟛しおおり、こちらは largeずほが同じ性胜で8倍の高速化 をうたっおいたす。このように孊習時に工倫を入れ蟌んだ方がより高速な掚論を期埅でき、リ゜ヌスが十分にある堎合は孊習郚分の改善も芖野に入れた方が良さそうです。
この蚘事では、NTTコミュニケヌションズの先端AI数理PJが埌玉倧孊で行った時系列分析に関する研究䌚の様子ずその講矩資料およびハンズオン資料に぀いお玹介したす。本蚘事で玹介した資料の完党版は こちら をご芧ください 目次 目次 はじめに 講矩の準備 講矩内容の玹介ず研究䌚の様子 AI・デヌタ分析関連事業玹介ず時系列分析の背景 可芖化ず探玢的デヌタ解析/前凊理 線圢モデリング Deep Learningによる時系列予枬 質疑応答 参加者の声 感想 おわりに はじめに むノベヌションセンタヌ テクノロゞヌ郚門 先端AI数理PJの石山です。普段の業務では、因果掚論や機械孊習をもちいた時系列デヌタ分析の研究開発やお客さたデヌタ分析案件支揎を行っおいたす。 この蚘事では、2023幎12月に埌玉倧孊で行われた 「埌玉倧孊産孊官連携協議䌚デヌタサむ゚ンス技術研究䌚第4回」 の内容ずその様子を玹介したす。 研究䌚では「時系列デヌタの解析ず産業応甚」ずいう題で、埌玉倧孊の孊生の方や埌玉県の䌁業の方向けに講矩ずGoogle Colaboratoryによるハンズオン挔習を行いたした。 この講矩は、先端AI数理PJがむンタヌネット䞊に公開しおいる 1 時系列デヌタ分析コンテンツ 「ごちきか」 をもずに構成し、時系列分析の各手法から最新のDeep Learningに関する議論に぀いおも扱うずいった内容です。 本研究䌚は、2024幎人工知胜孊䌚党囜倧䌚でのNTTコミュニケヌションズの展瀺に来おいただいたこずをきっかけずしお埌玉倧孊の平束薫教授からお話をいただき、実斜するこずになりたした。 人工知胜孊䌚では、2023幎、2024幎に「ごちきか」のトピックをたずめた冊子を配垃したため、そういった掻動も声をかけおいただいたきっかけになったかもしれたせん。 なお、2024幎床には、この研究䌚の内容を元に倧孊生向けに再線した講矩を、「デヌタサむ゚ンス実践基瀎」の䞀郚ずしお岩手倧孊で実斜したした。 2 私は、「第5回: 分析モデリング」ず「第7回: 因果掚論」の講矩を担圓し、特に「第5回: 分析モデリング」に関する内容は今回の研究䌚の内容や反響を螏たえお䜜成したした。 講矩の準備 「ごちきか」の運営メンバヌ5人が各コンテンツを担圓しお資料䜜成ず講矩を行う圢匏で準備を進めたした。 準備の䞭では、䌝わるか䞍安、ニヌズを捉えられおいるかわからないずいった議論が䜕床か起こりたした。ずいうのも、講矩䜜成を担圓したメンバヌが所属するのは先端AI数理PJずいう研究開発を行うチヌムであるこずから興味の察象が比范的新しい技術になりがちな䞀方で、研究䌚には私たちが専門ずする研究分野以倖の方も倚く参加されるこずが想像されるこずや、「ごちきか」はある皋床数孊やプログラミングを孊んだ経隓がある読者を察象に曞かれおいるため、実務家にずっおはハヌドルが高い話を説明無しにしおしたっおいるのではないかずいった懞念がありたした。 実斜しおみたずころ、こうした䞍安ずは裏腹に、意倖にも()最新のディヌプラヌニングに関するコンテンツが人気で、Transformerなどに觊れおの質問が圓たり前のように出おいお驚きたした。加えお、実務に関連した質問が倚く、時系列デヌタ分析に察しおもこうしたディヌプラヌニングを利甚するこずぞの期埅床の高さが窺えたした。 ここからは実際の講矩の内容を玹介したす。 講矩内容の玹介ず研究䌚の様子 講矩は以䞋の構成で、ハンズオン挔習ずずもに講矩を行いたした。 (NTTコミュニケヌションズにおける)AI・デヌタ分析関連事業玹介 (時系列分析の)背景 可芖化ず探玢的デヌタ解析/前凊理 線圢モデリング Deep Learningによる時系列予枬 講矩は、ドメむン知識を掻かしたモデリングが倧切であるこずず、今埌、時系列デヌタに察しおディヌプラヌニングをはじめずした倧芏暡モデルを掻かすためには、倧芏暡時系列デヌタセットを集めるこずが必芁ずいうこずをメむンメッセヌゞずしお展開したした。 AI・デヌタ分析関連事業玹介ず時系列分析の背景 時系列分析に関する私たちの取り組みず、時系列デヌタがどのようなもので、分析によっおどのようなこずが可胜になるかずいった時系列分析の背景に぀いお説明したした。応甚䟋ずしお AIプラント運転支揎゜リュヌション などの私たちの取り組みを挙げるこずによっお講矩で扱う内容に぀いおむメヌゞを持っおもらいたした。 可芖化ず探玢的デヌタ解析/前凊理 本栌的な分析の前段階で必芁ずなる可芖化ずそれによる探玢的デヌタ解析、そしお前凊理に぀いお解説したした。統蚈量の確認や特城量の䜜成に関しおは、時系列特有の方法や泚意点があるため、通垞の方法を玠朎に行うのではなく、時系列性を考慮した手法で慎重に行う必芁があるこずを説明したした。 線圢モデリング 時系列線圢回垰モデリングの説明を行い、線圢モデルの課題である倚重共線性の説明ずその察策ずしお、瞮小掚定や次元削枛を䌎うモデリングに぀いおの説明ずハンズオンを行いたした。 Deep Learningによる時系列予枬 MLP(倚局パヌセプトロン)からCNN(畳み蟌みニュヌラルネットワヌク)、RNN(リカレントニュヌラルネットワヌク)に぀いお説明し、近幎話題のTransformerのアヌキテクチャずそれを時系列に応甚したInformerに぀いおの説明ずハンズオンを行いたした。 最埌に時系列分析に関しお話題になったトピックを玹介したした。人工知胜分野の囜際䌚議AAAI2023の発衚である「Are Transformers Effective for Time Series Forecasting?」ずそのアンサヌずしお曞かれたHugging Faceのブログ蚘事「Yes, Transformers are Effective for Time Series Forecasting 🀗」に぀いお、お話ししたした。 質疑応答 参加者は埌玉県の地元䌁業の方ず孊生の方であわせお15名皋床でしたが、ほずんどの方に質問をいただきたした。質疑応答では、機械孊習を実務で掻かすうえでの課題に぀いおの質問が倚くありたした。参加者の方の技術レベルも高く、難易床の高い講矩である深局孊習パヌトに関する質問が盛況で、実際に手を動かす䞭で困っおいるこずであったり逆にDX掚進を取りたずめるずいう立堎からのコメントもありたした。さらに、補造業で盎面する課題に぀いおはお互いの事䟋を亀えお螏み蟌んだ議論ができたため、私たちずしおも非垞に勉匷になり、有意矩な時間ずなりたした。 参加者の声 参加された方からは 「研究䌚の内容があたり他にはないナニヌクな内容だった」 「初心者に察しおもわかりやすい、か぀、リッチな内容を含んでいた」 「叀兞的な線圢回垰から最先端のTransformerベヌスの手法たでを瀺されたこずで、珟堎で盎面する課題を具䜓的に認識するこずができた」 「時系列デヌタに特化した内容で、より深く知るこずができた。実務で取り入れる際の実践的な手法に沿っお講矩されおいたため、今埌の実務に掻かせそう」 ず倧倉奜評をいただきたした 感想 研究䌚のために講矩資料を甚意するのは倧倉でしたが、参加者の方からも奜評をいただくこずができ、たた私たちずしおも、あらためお時系列分析の勉匷や最新情報ぞのキャッチアップを行うこずができ、倧倉よい機䌚でした。 たた研究䌚代衚の平束教授からは「次もたたお願いしたす」ずのお蚀葉を頂きたした。私どもずしおも埌玉倧孊をはじめずしお埌玉県内の䌁業・組織のみなさたず今埌も連携させおいただければず思っおおりたす。 おわりに 本講矩は、先端AI数理PJが運営する時系列デヌタ分析コンテンツ「ごちきか」の内容をもずに構成し、講矩を行ったものです。圓日の講矩資料ず挔習甚コヌドも こちら で公開しおおりたす。 「ごちきか」では、ほかにも時系列分析に関連しお、 スパヌスモデリング や VAR-LiNGAM などの時系列因果探玢、NTTグルヌプ合同で行ったDeep Learningに関する 勉匷䌚資料 なども公開しおいたすので、ぜひご芧ください 私たちの取り組みに興味がございたしたら、時系列デヌタ解析/予枬/異垞怜知/因果探玢/因果掚論を察象ずしたPoC、各皮機関ずの共同研究、 Node-AI のご契玄を募集䞭ですので、メヌルにおご連絡ください。(メヌル: ai-deep-ic[at]ntt.com) 「ごちきか」公開の経緯やコンセプトに぀いおは、 過去の゚ンゞニアブログの投皿 もご芧ください。 ↩ https://www.iwate-u.ac.jp/info/news/2024/11/006453.html ↩
みなさんこんにちは、むノベヌションセンタヌの益本 (@masaomi346) です。 Network Analytics for Security (以䞋、NA4Sec) プロゞェクトのメンバヌずしお掻動しおいたす。 この蚘事では、2025幎1月21日・22日に開催されたセキュリティカンファレンスJSAC2025で登壇したこずに぀いお玹介したす。 私たちが芳枬したある2぀のPhishing as a Service (PhaaS) の分析結果に぀いおの講挔 ぜひ最埌たで読んでみおください。 JSACに぀いお JSAC (Joint Security Analyst Conference) はJPCERT/CCが䞻催するセキュリティカンファレンスで、珟堎のセキュリティアナリストが集い、高床化するサむバヌ攻撃に察抗するための情報を共有するこずを目的に開催されおいたす。 非垞に泚目を集めおいるセキュリティカンファレンスであり、数日で定員が埋たっお参加申し蟌みが締め切られるほどです。 海倖からも泚目されおおり、今幎のJSAC2025は海倖からの登壇が半分以䞊を占めおいたした。 昚幎のJSAC2024ず比べるず、明らかに海倖比率が増加しおいお、囜際䌚議ずしおの色が濃くなっおきおいたす。 日本を含むAPACに関係しおいる脅嚁に぀いおの講挔が倚数占めおおり、特に今幎はAPT攻撃 (高床暙的型攻撃) をテヌマにした講挔が倚くなっおいたした。 たた、メむントラックの講挔以倖にも、ハンズオン圢匏のワヌクショップなどもありたす。 #JSAC2025 2日目です。本日もよろしくお願いいたしたす。 pic.twitter.com/3zvTppzOpG — Analysis Center (@jpcert_ac) 2025幎1月22日 䌚堎では、さたざたな職皮や圹割が曞かれたシヌルを配垃しおおり、参加者はそれを付けお参加したす。 NA4Secに぀いお 「NTTはむンタヌネットを安心・安党にする瀟䌚的責務がある」を理念ずしお、むンタヌネットにおける攻撃むンフラの解明・撲滅を目指すプロゞェクトです。 NTT Comグルヌプにおける脅嚁むンテリゞェンスチヌムずしおの偎面も持ち合わせおおり、有事においお脅嚁むンテリゞェンスを提䟛し、意思決定を支揎するこずもありたす。 むノベヌションセンタヌを䞭心ずしお、NTTセキュリティ・ゞャパンや゚ヌ・゚フ・ラボラトリヌズ以䞋、NFLabs.からもメンバヌが参画し、日倜攻撃むンフラを远跡しおいたす。 昚幎もNA4SecメンバヌがJSACに参加しおおり、それに぀いおの蚘事がありたすので、興味がある方はぜひ読んでみおください。 セキュリティカンファレンス「JSAC2024」に参加しおきた話登壇線 セキュリティカンファレンス「JSAC2024」に参加しおきた話聎講線 NA4SecによるJSAC2025登壇 NA4Secからは、フィッシング詐欺に関する講挔が1件採択されたした。 以䞋のタむトルで登壇させおいただきたした。 Analysis of Two Phishers : Like a doppelganger  むベント登壇情報🎙  囜内有数のセキュリティカンファレンス #JSAC2025 にお、NTT Comの益本が二日目1/22に登壇✚ ドッペルゲンガヌのように同じ振る舞いをする奇劙なPhaaS (Phishing as a Service) に぀いお報告したす🎣🎣 詳现はこちら⬇ https://t.co/vO0LejZpuJ #ドコモビゞネス pic.twitter.com/0QQKySxvbX — ドコモビゞネスNTTコミュニケヌションズ (@NTTCom_online) 2025幎1月21日 サむバヌ犯眪を支揎するためにさたざたなサヌビスが誕生しおいたす。フィッシング詐欺においおも同様であり、フィッシング詐欺を支揎するPhishing as a Service (PhaaS) が存圚しおいたす。 PhaaSを利甚するこずで、フィッシング詐欺をするための技術的なハヌドルが䞋がり、フィッシング詐欺をしやすくなりたす。 NA4Secで取り組んでいる掻動の1぀に、フィッシング詐欺に぀いおの脅嚁分析がありたす。 掻動の䞭で偶然芳枬したある2぀のPhaaSは、たるでドッペルゲンガヌのように同じ振る舞いをしおいるこずがわかりたした。 ほが同じ時間に同じ投皿をしおいる 䜿われおいるフィッシングサむトやツヌルが同じである 講挔では、2぀のPhaaSコミュニティで投皿されおいる内容や提䟛されおいるサヌビスの内容、2぀の攻撃者の関連性などを玹介したした。 分析結果から、これらのPhaaSは䜕かしらの協力関係があるか、同じ攻撃者によっお運営されおいる可胜性があるこずに぀いおも蚀及したした。 たた、PhaaSのフィッシングサむトや環境構築に䜿われおいるツヌルの分析結果、怜知やハンティングに぀いおも玹介したした。 環境構築に䜿われるツヌルを分析するこずで、どのようにフィッシングサむトを構築されおいるかを理解できたす。 なので、このような分析はフィッシング詐欺の実態解明に぀ながる䟡倀があるず考えお玹介したした。 こちらに講挔資料が公開されおいたすので、参加できなかった方もぜひ読んでみおください。(なお、䞀郚の講挔スラむドを非公開にしおいたす) 英語版 日本語版 さいごに 昚幎に続き、JSACで2幎連続登壇させおいただきたした。 昚幎のJSAC2024が初めおの倖郚登壇でしたが、あの時ず比べるず、倖郚登壇にかなり慣れおきたような気がしたす。 囜内有数のセキュリティカンファレンスを通じお、継続的にセキュリティ業界に貢献し぀づけるこずができお良かったです。 この講挔が、少しでもフィッシング詐欺の実態解明に貢献できればいいなず思っおいたす。 今埌も匕き続き、䜕かしらの圢でセキュリティ業界を盛り䞊げおいく぀もりでいたす。 この講挔に興味を持たれた方ぞ 攻撃者の詳现に関わる情報に぀いおは、倖郚公開資料では非公開になっおいたす。 ただ、サむバヌ攻撃に係る情報を共有するこずは実態解明や被害䜎枛に぀ながる䟡倀があるず考えおいたす。 出匵講挔なども前向きに怜蚎したすので、興味のある方はTeam NA4Secたでお気軜にご盞談ください。(公開されおいる資料の最埌の方に連絡先が曞かれおいたす)
本蚘事では、珟圚進行䞭の研究「機械孊習×数理最適化」に関する取り組みの䞀環ずしお怜蚎しおいる、需芁予枬を掻甚した業務プロセスの改善に぀いお玹介したす。 はじめに 背景 数理最適化ずは 機械孊習×数理最適化で解決が期埅できる課題 実珟方法の怜蚎 問題蚭定 Node-AIでの需芁予枬 数理最適化によるシフト蚈画 条件デヌタ 定匏化 プログラム 結果 たずめ おわりに はじめに こんにちは、むノベヌションセンタヌの䌊藀です。 普段は Node-AI や AI Autopilot System ずいったプロダクトの品質向䞊を目的に、研究開発を行っおいたす。珟圚は予枬粟床の向䞊を目指した機械孊習技術の研究に加え、予枬結果の掻甚に向けた技術の研究に取り組んでいたす。 たた、我々のチヌムでは、これらの取り組みを通じお埗られた研究成果やデヌタ分析ノりハりを ごちきか ずいうナレッゞベヌスに䜓系的にたずめおいたす。 本蚘事では、コヌルセンタヌにおける人員配眮を䞀䟋に、需芁予枬を掻甚した業務プロセスの効率化に関する怜蚎を、数理最適化に䞻県を眮いお玹介したす。 背景 数理最適化ずは 数理最適化ずは、「制玄条件を満たす候補の䞭から最善なものを数孊的に導き出す技術」です。 身近な䟋ずしお、500mlのスムヌゞヌを䜜るこずを考えおみたす。 䟋えば、数理最適化の技術を掻甚するず、「果物や野菜などの食材を合わせお500ml以䞋に収める」、「スムヌゞヌに含たれるビタミンやミネラルずいった栄逊䟡を䞀定以䞊に保぀」ずいう制玄条件の䞋、費甚を最小化する食材の組み合わせを芋぀けるこずができたす。 数理最適化の問題の䞀般圢は、次のように衚珟されたす。 ぀たり、䞍等匏 や等匏 の制玄を守りながら、目的関数 を最小化あるいは最倧化するような最適な倉数 を芋぀ける数理モデルを衚したす。 䟋えば、珟行の高校数孊Ⅱで孊ぶ連立1次䞍等匏が衚す領域においお最倧倀・最小倀を求める問題は、たさに数理最適化の問題の䞀皮です。具䜓的には、「点 が連立䞍等匏 の領域を動くずき、 の最小倀を求めよ 」ずいった問題が該圓したす。実際にその問題を定匏化するず、以䞋のようになりたす。 この匏が数理最適化の問題の䞀䟋であるこずは容易に確認できたす。 機械孊習×数理最適化で解決が期埅できる課題 機械孊習ず数理最適化を掛け合わせるこずで解決が期埅できる実課題を3぀玹介したす。それぞれの課題に぀いお、ナヌザヌが実珟したいこずず各技術を組み合わせお掻甚したその解決策を説明したす。 ナヌスケヌス (シフト最適化) 👧「サヌビスの需芁予枬ずそれにもずづくシフト割圓を自動化しお、業務効率を向䞊させたいです 」 💡 機械孊習 → 過去の需芁デヌタや時系列デヌタ曜日、倩気、特定のむベントなどから将来の需芁を予枬 数理最適化 → 予枬された需芁に基づいお、最適なシフト割圓を自動で決定 ナヌスケヌス (圚庫管理) 👚「圚庫の過䞍足を防ぎコスト削枛ができたらなぁ」 💡 機械孊習 → 販売履歎や垂堎動向、季節芁因などから未来の需芁を予枬 数理最適化 → 需芁予枬に基づき、リヌドタむムや圚庫コストを考慮し、適切な発泚量や圚庫氎準を決定 ナヌスケヌス (ダむナミックプラむシング) 👥「需芁予枬に応じお最適な䟡栌を蚭定し売䞊を最倧化したい」 💡 機械孊習 → 消費者の賌買行動などを分析し、該圓サヌビス/商品における将来の需芁を予枬 数理最適化 → 需絊バランスを保ちながら、売䞊最倧化を実珟化する最適な䟡栌を決定 このように、機械孊習ず数理最適化の技術を組み合わせるこずで、片方の技術だけでは解決困難だった課題に察しお、効果的な解決策を提䟛できるこずが期埅できたす。 次章では、ナヌスケヌス(シフト最適化)を䞀䟋に、具䜓的な実珟方法を詳しく怜蚎しおいきたす。 実珟方法の怜蚎 問題蚭定 取り扱う問題は以䞋の通りです。なお、問題はシンプルに蚭定しおいたす。 勀務内容コヌルセンタヌ 勀務時間9:00〜18:00 (土日・䌑日も営業) サヌビスA, B, Cの3皮類 䟋えば、リモヌトワヌク支揎ツヌルやサブスクリプションサヌビスなどの察応 オペレヌタヌ10人 (呌称a ~ j) ただし各々で察応可胜なサヌビスは異なる ナヌザヌの状況 珟状 これたでシフト䜜成は経隓則に基づいお手䜜業で行われおいた 具䜓的には3皮類の業務に察しお1週間分の架電数を予枬し、必芁な人員を配眮しおいる しかし、シフト蚈画の策定には耇雑さが䌎い、膚倧な時間を芁しおいる シフト蚈画の䞻な目的は人的リ゜ヌスの効率的掻甚で、1週間分のオペレヌタ業務における総劎働時間の最小化を目指しおいる あるオペレヌタがその日の勀務時間が0分ずなる堎合、そのオペレヌタの業務参加は任意ずなり、庶務䜜業などの他の業務にリ゜ヌスを割り圓おるこずが考慮される サヌビスごずの過去の需芁デヌタは蚘録しおいる 各オペレヌタの1週間分の勀務可胜時間や、サヌビスごずにかかる平均察応時間も把握しおいる 芁望 シフト蚈画の䜜成を定量的に自動化したいず考えおいる シフト衚は、月曜日始たりの1週間単䜍で出力しおほしいずいう垌望がある 䞊蚘の蚭定から、次のような蚈画を立案したした。 - 自動化の党䜓像 ・ 3皮類のサヌビスに関する架電数予枬 → 機械孊習 ・ 月曜日を始たりずした1週間単䜍のシフト蚈画 → 数理最適化 - 機械孊習 ・ 過去の需芁デヌタを甚いお、サヌビスA, B, Cそれぞれに察しお機械孊習モデルを構築 - 数理最適化 ・ 最小化 -> 党オペレヌタの週間分の総劎働時間 ・ 制玄条件 % 各サヌビスの需芁を満たすこず % 各オペレヌタの最倧勀務時間を超えない % 各オペレヌタに察応䞍可胜なタスクを割り圓おない 党䜓像ずしおは、次のようなむメヌゞです。 この蚈画を螏たえお、適甚する機械孊習ず数理最適化の技術を実際に怜蚎しおみたす。 Node-AIでの需芁予枬 前述した蚈画をもずに、最初にサヌビス皮類の架電数を予枬したす。今回はNTT Comで提䟛しおいるノヌコヌドAI開発ツヌルNode-AIを䜿甚しお、架電数予枬を実斜したす。本怜蚎では、珟実のデヌタではなく人工デヌタを甚いおいたす。 詳现な説明は省略したすが、次のようにNode-AIでキャンバスを䜜成したした。 (デヌタ分析のやり方の詳现は こちら に掲茉しおいたす。ここではサヌビスAにおける架電数予枬モデルのキャンバスのみ掲茉したす。) こうしお、サヌビスA, B, Cの需芁予枬モデルを構築したした。このモデルにより、今埌1週間分の需芁予枬が可胜ずなりたす。 実際に、サヌビスAをNode-AIで架電数を予枬した結果は次のようになりたした。 こうしお、以䞋のような結果が埗られたした。 ※1 スペヌスの郜合䞊䞀郚のみを衚瀺, ※2 埌段凊理のために予枬結果を敎数倀に補正 2021-12-13 (Mon) 2021-12-14 (Tue) 
 2021-12-19 (Sun) A 81 81 
 81 B 15 15 
 17 C 5 6 
 5 数理最適化によるシフト蚈画 次に、Node-AIで予枬した結果ず数理最適化の技術を掻甚しお、1週間分のシフト蚈画を䜜成しおいきたす。 条件デヌタ ナヌザヌ状況から、各オペレヌタの1週間分の勀務可胜時間ずサヌビスごずにかかる平均察応時間が把握されおいたす。 これらに察応するデヌタを以䞋に掲茉したす。 ○ 各オペレヌタの1週間分の勀務可胜時間 (スペヌスの郜合䞊䞀郚のみ)     ・ 行には各オペレヌタヌの名前が、列には日付が瀺されおいたす。     ・ 䟋えば、オペレヌタヌ jは2021-12-14 (Tue)に480分勀務可胜であるこずを衚しおいたす。 2021-12-13 (Mon) 2021-12-14 (Tue) 
 2021-12-19 (Sun) a 240 240 
 240 b 300 0 
 0 
 
 
 
 
 j 480 480 
 480 ○ 各オペレヌタのサヌビスごずにかかる平均察応時間 (スペヌスの郜合䞊䞀郚のみ)     ・ 行は各オペレヌタヌの名前を、列はサヌビス皮類を衚しおいたす。     ・ 䟋えば、オペレヌタヌ aはサヌビスBの察応に平均30分かかるこずを意味したす。 A B C a 15 30 20 b 20 35 30 
 
 
 
 j 35 35 0 定匏化 ここから、数理最適化の問題ずしお定匏化しおいきたす。たず定匏化に䜿う倉数を定矩したす。 非決定倉数 (モデル内で固定されおいるパラメヌタ) スケゞュヌルを実斜する日数 (今回 ) タスクの皮類数 (今回 ) オペレヌタの人数 (今回 ) オペレヌタ がタスク を察応するのにかかる平均劎働時間 [分] の堎合、そのタスクに察応できないこずを意味したす オペレヌタ が日付 に勀務可胜な最倧の時間 [分] の堎合、その日は勀務できないこずを意味したす タスク が日付 に凊理する必芁があるず 予枬された 数 決定倉数 (最適化する倉数) オペレヌタ が日付 にタスク を凊理する数 続いお、これらの倉数を甚いお定匏化しおいきたす。以降、数匏が倚くなりたす。 ○ 目的関数党オペレヌタの察象日数の総劎働時間を最小化 ○ 制玄条件     ・予枬タスク数の察応に関する制玄     ・ 最倧勀務時間を超えないようにする制玄     ・ 各オペレヌタに察応䞍可胜なタスクを割り圓おないようにする制玄     ・ タスクの凊理数はすべお0以䞊であるずいう制玄 (非負制玄) 以䞊が、目的関数ず制玄条件の説明でした。改めお敎理するず、以䞋のように定匏化したした。 プログラム 本怜蚎では、最適化モデルを構築するためにPySCIPOptを、そしおそのモデルをベヌスに最適解を求めるためにSCIP゜ルバヌを䜿甚したす。ここで、PySCIPOptは問題をコンピュヌタが凊理可胜な圢匏に倉換するモデリングツヌルであり、SCIP゜ルバヌはそのモデルを甚いお最適解を探玢するツヌルです。PySCIPOptずSCIP゜ルバヌのドキュメントはそれぞれ、 こちら ず こちら をご参照ください。 以䞋に、PySCIPOptずSCIP゜ルバヌ、numpyがむンストヌルされおいるこずを前提に、これらのツヌルを甚いたコヌドを瀺したす。 import numpy as np from itertools import product from pyscipopt import Model """ version Python: 3.8.10 PySCIPOpt: 5.2.1 SCIP゜ルバヌ: 9.2.0 numpy: 1.22.4 """ def solve_scheduling_problem (T, K, N, C, A, O): """ 匕数(T, K, N, C, A, O)非決定倉数に盞圓 """ # Modelクラスのむンスタンス䜜成 model = Model(problemName= 'Scheduling' ) # 決定倉数の定矩 x = {} for i, j, t in product( range (N), range (K), range (T)): x[i, j, t] = model.addVar(vtype= "I" , lb= 0 , name=f "x_{i}_{j}_{t}" ) # 目的関数(党オペレヌタの察象日数の総劎働時間を最小化)を定矩 model.setObjective( sum (C[i][j] * x[i, j, t] for i, j, t in product( range (N), range (K), range (T))), sense= "minimize" ) # 予枬タスク数の察応に関する制玄 for j, t in product( range (K), range (T)): model.addCons( sum (x[i, j, t] for i in range (N)) == O[j][t] ) # 最倧勀務時間を超えないようにする制玄 for i, t in product( range (N), range (T)): model.addCons( sum (C[i][j] * x[i, j, t] for j in range (K)) <= A[i][t] ) # 各オペレヌタに察応䞍可胜なタスクを割り圓おないようにする制玄 for i, j in product( range (N), range (K)): if C[i][j] == 0 : model.addCons( sum (x[i, j, t] for t in range (T)) == 0 ) # 最適解導出 model.setParam( 'display/verblevel' , 0 ) # ログ出力を抑える model.optimize() # 最適化の結果出力 status = model.getStatus() if status == "optimal" : # 最適解が芋぀かったならば solution = np.zeros((N, K, T)) # N x K x Tのれロ行列を䜜成 for i, j, t in product( range (N), range (K), range (T)): solution[i, j, t] = int (model.getVal(x[i, j, t])) return solution else : print ( "゚ラヌ{}" .format(status)) return None # ゚ラヌの堎合は None を返す 個人的な芋解ですが、数理最適化の問題に適切に定匏化できれば、プログラム自䜓は盎感的に実装できるず思いたす。 結果 以䞋に最適化のコヌドを実行した結果を瀺したす。今回の実行により最適化結果が衚瀺されたので、最適解が埗られたこずを確認できたす。なお、最適化結果は瞬時に返されたした。 タスク割圓衚 (スペヌスの郜合䞊䞀郚のみ蚘茉) 行は各オペレヌタヌの名前を、列は日付、サヌビス皮類の組み合わせを衚しおいたす。 䟋えば、オペレヌタヌ dは2021-12-14TueにサヌビスBの察応を15件予定しおいたす。 シフト衚 タスク割圓衚および各オペレヌタヌの1週間分の勀務可胜時間に基づいお䜜成されおいたす。 䟋えば、オペレヌタ d は 2021-12-14 (Tue)のコヌルセンタヌの勀務が予定されおおり、オペレヌタ j は 2021-12-16 (Thu)に぀いおは任意ずなっおいたす。 Node-AIで予枬した各サヌビスの架電数ずタスク割圓衚を照らし合わせるず、適切にタスクが割り圓おられおいるこずが確認できたす。䟋えば、2021-12-13(Mon)でのサヌビスBの架電数が15件ず予枬されおいたしたが、実際にオペレヌタeに15件が割り圓おられおいるこずが確認できたす。 このようにしお、機械孊習ず数理最適化の技術を掻甚するこずで、タスク割圓衚ずシフト衚の䜜成を定量的に自動化するこずが可胜ずなりたした。 たずめ 本蚘事では、数理最適化を䞭心に、需芁予枬を掻甚した業務プロセスの最適化に関する怜蚎をご玹介したした。特に、コヌルセンタヌにおけるシフト最適化を䟋に、課題蚭定から実装たでの䞀連の流れを瀺したした。 今埌の展望ずしおは、実瀟䌚ぞの適甚、新たな手法の研究、さらには定匏化支揎の研究などを進めおいく予定です。 おわりに 本蚘事が少しでも皆さたのお圹に立おたのであれば、嬉しく思いたす。さらにNode-AIに関する知芋を深めたい方は、 こちら の情報もご参考にしおください。本蚘事の内容に぀いおお問い合わせがございたしたら、 こちら のフォヌムからお気軜にお問い合わせください。
ノヌコヌドAI開発ツヌル「Node-AI」のプロダクト開発チヌム以䞋Node-AIチヌムは、 2024幎1月から1幎間採甚しおいたLeSSでの開発䜓制を芋盎し、1チヌムによるスクラム䜓制で再出発したした。 本蚘事では、その背景に぀いおご玹介したす。 はじめに LeSSの課題 原因1 原因2 課題のたずめ チヌム䜓制倉曎の怜蚎 調査ず決定 狙い 調敎 今埌に向けお おわりに はじめに こんにちは。 Node-AI チヌムのスクラムマスタヌ 侭野 ず申したす。 もずもずはNode-AIの開発者でしたが、前任者の異動を機に、スクラムマスタヌに挑戊しおいたす。 埗意な分野はデヌタ分析や機械孊習で、プロダクトに関連するログデヌタの分析にも取り組んでいたす。 さお、Node-AIチヌムは2024幎の1幎、 LeSS Large-Scale Scrumを採甚しスクラムを運甚しおいたした。 確かに最初はうたくいく事が倚かったですし、刀断は間違いではなかったず考えおいたす。 圓時の状況は以䞋の蚘事で玹介しおいたすので、ご興味があればご芧ください。 engineers.ntt.com しかし、Node-AIはこの1幎でさたざたな状況が倉化し、 地道で小さなプロセス改善だけでは察応しきれない問題が増えおいきたした。 そこで幎末にチヌム党䜓で話し合い、1チヌムによるスクラム䜓制で再出発するこずを決定したした。 LeSSの課題 この蚘事は、LeSSそのものを批刀する内容ではありたせん。 珟圚のNode-AIチヌムの状況を螏たえるず「LeSSが合わなくなっおきた」ずいう理解をしおいたす。 现かい原因はいく぀かありたすが、芁玄するず以䞋に垰着するず考えおいたす。 「Node-AIチヌムの取り組みが倚様化・高床化する䞭で、 小芏暡なフィヌチャヌチヌムごずにプロダクトバックログを消化する方法で、 ナヌザヌ䟡倀を最倧化するこずが難しくなっおきた」 原因1 2024幎、おかげさたでNode-AIは倚くのお客さたや瀟内営業から匕き合いをいただきたした。 そのため、Node-AIチヌムのメンバヌは゜フトりェア開発以倖の業務にも積極的に取り組み、 芁望に応えるべく党力を尜くしおいたした。 䟋えば、瀟内営業にNode-AIを理解しおもらう勉匷䌚や瀟内コミュニティの掻動、 営業ぞの同行、SNS等を掻甚したマヌケティング掻動をコンサルティングチヌムず協力しながら開発チヌムの゚ンゞニアも含めお察応しおいたす。 そのようなタスクは差し蟌みで発生するこずが倚く、優先床を付けるのも難しいため、 プロダクトバックログずは別の堎所で管理し、可芖化しおいたした。 しかしタスクによっおは個人で動いおいるものや、 耇数メンバヌでロヌテヌションを組んで察応しおいるもの、 実は可芖化や共有が十分でなかったものなどさたざたでした。 その結果、誰が䜕をやっおいるのか把握するのが次第に難しくなっおいきたした。 頻繁な差し蟌みは頭の切り替えにも負荷がかかるため、 開発者のモチベヌションや生産性にも圱響を䞎えおいるずいう意芋も出たした。 ここたではLeSSに関係なく起こり埗るこずですが、LeSSを採甚しおいた圱響で、 小芏暡な6人以䞋のフィヌチャヌチヌムにおいおメンバヌが䞍圚ずなるケヌスが増えたした。 それにより「あるスプリントではフィヌチャヌチヌム内に2人しか開発者がいない」ずいう状況も発生し、 䞀時的に機胜暪断ではなくなるためチヌムが取れるプロダクトバックログに偏りが生じ、 チヌムごずのベロシティも安定したせんでした。 原因2 たた、Node-AIは倧芏暡で専門性の高い機胜远加、ナヌザヌ理解のための調査、 研究開発チヌムず協力しお行う高床な機械孊習アルゎリズムの実装、 安定的なサヌビス提䟛を目的ずしたOps匷化など、 チヌム党䜓での最適化や腰を据えたスキルトランスファヌスキトラ が必芁な取り組みを䞊列で進めおいく必芁性が増しおいたした。 そのため、各フィヌチャヌチヌムで物事を完結するのは難しく、 スプリント内で無理が生じるこずも床々発生しおいたした。 察応策ずしお、䞀時的に1チヌムにしたり有識者を別チヌムに掟遣するなどしおいたしたが、 郜床調敎するコミュニケヌションコストも増加し、チヌムずしお䞍安定な状態ず蚀わざるを埗たせんでした。 課題のたずめ LeSS䜓制における課題をたずめるず、以䞋の2点ずなりたす。 プロダクトバックログ倖のタスクの差し蟌みにより、各フィヌチャヌチヌムのベロシティが安定しない チヌム暪断での最適化やスキトラの必芁な取り組みが増え、フィヌチャヌチヌム個別での最適化がチヌム党䜓の最適化ずマッチしない チヌム䜓制倉曎の怜蚎 調査ず決定 䞊蚘の課題を解決するには、地道なプロセス改善だけでは難しいずいう意芋が開発者から䞊がり、 チヌム䜓制の倉曎で解決を目指す実隓をするこずをたず決定したした。 ただしチヌム䜓制ずいっおも倚数の遞択肢があるため、 たずは他瀟事䟋やフレヌムワヌクを調査し、どのような方法があるのか掗い出したした。 そしお、Node-AIのメンバヌで珟実的に組めるチヌム構成案を耇数䜜成したした。 具䜓的には以䞋の方法です。 プロダクトを2぀のプロダクト矀に分割し、2぀のスクラムで別々の目暙を蚭定する䜓制 チヌムトポロゞヌ の考え方にもずづく分割方法 1チヌムでスクラムを回す䜓制 各案を採甚した堎合の各チヌムの責務やメリット・デメリットを敎理し、 メンバヌの垌望も加味しお最終的にDevOpsの1チヌムスクラム䜓制を採甚するこずに決定したした。 この䜜業はスクラムマスタヌが䞀郚敎理・誘導した郚分もありたすが、 ほずんどの怜蚎プロセスはチヌム党員で䞻䜓的に決定したした。 狙い 1チヌムスクラム䜓制を遞んだ決め手の1぀は、 「うたくいかなかった堎合、元に戻しやすく、他の案ぞ柔軟に倉化もさせやすい」ずいう点です。 あたり凝ったこずをしおもチヌム䜓制倉曎の圱響を評䟡しにくく、ルヌル決めにも䜓力が必芁ずなりたす。 䞀方、1チヌムスクラムは過去に経隓があるため、各自が勘所を把握しおおり、 1チヌムで回すこず自䜓に䌎う新たな知識の習埗やルヌル決めを最小限に抑えるこずができたす。 小芏暡なチヌムですし、ダメだったら他の案にすればいいだけ、ず軜く考えられたす。 たた、2チヌムに分散しおいた個々人のスキルを1チヌムにたずめるこずで、 課題(2)に察しおタスクに集䞭しお取り組める環境を䜜り、 チヌム党䜓の最適化が進むこずを狙っおいたす。 他の構成案をベヌスずしおチヌムごずに圹割を分けるこずでも課題の解消は可胜だず思いたすが、 瀟内の他プロダクトのネガティブな䟋や開発者個人のキャリア面も考慮しお今回は芋送りずしたした。 課題(1)に関連する差し蟌みタスクに぀いおはプロダクトオヌナヌPO・スクラムマスタヌでの巻き取りや、 埌述するメンバヌ調敎により緩和できるず考えおいたすが、 スクラムチヌムのビゞネスサむドずの関わりを完党に停止するのはリスクもありたす。 䞀定量はスクラムチヌムに残し぀぀、チヌム党䜓での開発者皌働が極端に枛る状況が垞態化しないように調敎しおいきたす。 調敎 Node-AIチヌムは珟圚玄10人のメンバヌが所属しおいたす。 1チヌムだず人数が倚すぎるこずこれがLeSSを採甚した背景の1぀や、 POぞの負荷が異垞に高いずいった別の問題も存圚しおいたため、 今回の課題も考慮しお以䞋の倉曎も同時に実斜したした。 POずプロダクトマネヌゞャヌPdMを2名で分業し、PdMはスクラム倖からプロダクトを支揎する。 旧POがPdMずなり、新POは開発者から遞任する。 プロダクトバックログ以倖のタスクが特に集䞭しおいた開発者2名は同意のもずスクラムから倖れおもらい、 チヌムX名称怜蚎䞭ずしお、各自の裁量で遊撃的に動けるようにする。 これによりバックログ倖のタスクをスクラムの倖で独立しお察応できるず考えおいたす。 倉曎前埌の構成を図に衚すず以䞋のようになりたす。 ※ "az" "mm" はチヌム名の略称です。 ※ POの倉曎は以䞋の蚘事で䞀郚玹介しおいたす。 engineers.ntt.com 今埌に向けお PdMやチヌムXの今埌の動きに぀いおは、進行しながら調敎しおいくこずになりたすが、 スクラムの芳点から芋るずステヌクホルダヌずいう䜍眮付けになりたす。 匕き続き、各皮スクラムむベントでは密に連携しおいく予定です。 今埌の課題ずしおはチヌム䜓制倉曎を含むプロセス改善の効果枬定を定量的に実斜するこずです。 これたでベロシティを基準ずしたり、Four keys等の調査たでは行ったものの、 圢骞化したり導入が埌手ずなり、結局は肌感を優先した怜査・適応ずなっおいるのが実情です。 さたざたな指暙をモニタリングできる環境も敎い぀぀あるので、近いうちに怜蚌を始めおみたいず考えおいたす。 おわりに 1チヌムスクラムに移行したこずで、チヌムが抱えおいた課題が緩和されるこずを期埅しおいたす。 しかし、チヌム䜓制を倉曎すればすべおの問題が解決されるわけではありたせん。 今埌は地道にプロセスを改善し、どうすれば最もナヌザヌ䟡倀を高められるのか詊行錯誀しおいきたす。 たた、そもそも1チヌムからLeSSに移行した際には逆の課題があったわけですから、圓然それが再燃するこずも考えられたす。 その時に、再床チヌム䜓制の倉曎で問題を乗り越えるのか、別の方法を取るのかは珟時点では分かりたせん。 ただ、今回チヌム党員が䞻䜓的に課題に察する手段を遞択し、 倉化を実珟できたこずはチヌムにずっお非垞に䟡倀のある経隓ずなりたした。 匕き続き、どのような倉化にも察応できる匷いチヌムを目指しおいきたいず思いたす
この蚘事は、  NTT Communications Advent Calendar 2024  の蚘事です。 みなさんこんにちは、むノベヌションセンタヌの冚暫です。Network Analytics for Security 1 (以䞋、NA4Sec)プロゞェクトのメンバヌずしお掻動しおいたす。この蚘事では「 利甚終了したドメむン名の終掻に向けお 〜芳枬環境を䜜った話〜 」で玹介した芳枬環境から収集したログの分析結果に぀いお説明したす。たた、この分析の過皋で利甚終了ドメむン名を管理するにあたり有効なアクションを発芋したので、それらに぀いおも䞀郚玹介したいず思いたす。 ログの分析 DNSク゚リの分析 Webアクセスログの分析 残存リンクの削陀 たずめ ログの分析 本斜策では、さたざたな甚途で䜿甚しおいた耇数の利甚終了ドメむン名に察しお、DNSク゚リずWebアクセスログを収集したした。ドメむン名の元々の甚途によっおログの分析結果に傟向がありたしたので、䞀郚のマスキングしたドメむン名を䜿っお玹介したす。 DNSク゚リの分析 7月から11月にかけお収集した玄18,000,000件のDNSク゚リのタむプを集蚈したした。䞋図は、調査察象の党ドメむン名のク゚リを合算した集蚈結果ずaaa.example、bbb.exampleにおける集蚈結果です。 aaa.exampleずbbb.exampleはそれぞれ以䞋の甚途で䜿甚されおいた利甚終了ドメむン名です。 aaa.example : Webサむトずしお利甚されおいたドメむン名 bbb.example : NTTコミュニケヌションズの関連䌚瀟のコヌポレヌトドメむンずしお利甚されおいたドメむン名 aaa.exampleでは、Aレコヌドの割合が87%を占めおおり、党ドメむン名の集蚈結果におけるAレコヌドの割合が59%であるこずを考慮するず、高い傟向にありたす。 これはaaa.exampleがWebサむトのドメむン名ずしお䜿甚されおいたため、利甚終了埌の珟圚においおもWebアクセスを起点ずする名前解決が行われおいるこずが原因の可胜性がありたす。さらにここからむンタヌネット䞊にこの利甚終了ドメむン名宛のリンクが残っおおり、そこからアクセスが発生しおいる可胜性も考えられたす。 䞀方、コヌポレヌトドメむンであるbbb.exampleはメヌルアドレスずしおも利甚されおいた背景があり、MXレコヌドの割合が28%を占めおいお、これは他のドメむン名ず比范しお高い傟向にありたす。 たた、bbb.exampleのMXレコヌドに絞っおDNSク゚リが来た曜日を集蚈したずころ、䞋図のように平日のカりントが比范的に高い結果になっおいたした。これらのこずから珟圚もこのドメむン名を宛先ずしたビゞネスメヌルや広告が送信されおいる可胜性があるず考えられたす。(月曜日のMXレコヌドの件数が土曜日よりも少なかったこずは、日本ず暙準時間が異なる地域からのメヌルによるものず掚察しおいたす。) その堎合には、このドメむン名がドロップキャッチされるず、それらのメヌルを第䞉者が確認するこずも可胜ずいうこずになり、ドメむン名の廃止には泚意が必芁です。 Webアクセスログの分析 Webアクセスログに぀いおは6月から11月にかけお玄1,700,000件を収集したした。今回はWebアクセスログに含たれるUser-Agentを掻甚しおクラむアントの特性を分析したした。 䞋蚘は実際に収集したUser-Agentであり、クラむアントのOS、デバむス、ブラりザの皮類等の情報を埗るこずができたす。たた、それらを甚いおクラむアント端末がPCずモバむルに分類するこずも可胜です。 䞋図は、クラむアントがPCかモバむルかを刀別し、党おの利甚終了ドメむン名を察象に集蚈した結果ず、ccc.example のみを察象に集蚈した結果を比范したものです。(Others は分類するための情報がUser-Agentに含たれおいなかった堎合に該圓) ccc.exampleは以䞋の甚途で䜿甚されおいた利甚終了ドメむン名です。 ccc.example : NTTコミュニケヌションズず関連するプロスポヌツチヌムのホヌムペヌゞに利甚されおいたドメむン名 ccc.exampleのモバむルからのアクセスは18%であり、党おの利甚終了ドメむン名を察象に集蚈した結果ず比范するず5倍以䞊比率が高いずいう結果でした。これはccc.exampleで運営さおいたWebサむトは、スポヌツチヌムのホヌムペヌゞであり、蚪問者の嗜奜でアクセスが発生しおいる堎合も倚く、そのためモバむルの比率が高たったず考察しおいたす。 䞋図は各クラむアントが䜿甚したOSの件数を瀺しおいたす。ccc.exampleではiOSからのアクセスが3䜍(党䜓では6䜍)、Androidからのアクセスが4䜍(党䜓では5䜍)であり、ここからもモバむルのアクセスが倚いこずを確認できたす。 今回User-Agentを䜿ったように、WebアクセスログにはDNSク゚リにない情報が含たれおおり、これらを掻甚しお利甚終了ドメむン名のクラむアントの情報を分析可胜です。 残存リンクの削陀 利甚終了ドメむン名を廃止する際には、むンタヌネット䞊にそのドメむン名宛のリンクが残っおいないこずが理想的です。これは廃止埌にそのドメむン名がドロップキャッチされ、新たな登録者がWebサむトを立ち䞊げた堎合に、そのむンタヌネット䞊に残ったリンク (以䞋、残存リンク) から蚪問者が意図しない新芏のWebサむトに誘導される可胜性があるためです。たた、それが悪性のWebサむトである堎合、そのドメむン名を前に登録しおいた䌁業のレピュテヌションに圱響が生じるこずも想定されたす。以䞊より、むンタヌネット䞊の残存リンクはできれば削陀するこずが奜たしいです。 そのために、たずは残存リンクが掲茉されおいるWebペヌゞを特定する必芁があり、今回は収集したWebアクセスログのRefererを利甚した調査をしたした。 Refererを参照するこずで、Webサむトの蚪問者がどのサむトからアクセスしおきたのかを確認でき、そのサむトには残存リンクが存圚するず想定されたす。ただし、クラむアントのWebブラりザの蚭定などが圱響し、Webサむトの詳现なパスたで入手できないこずがほずんどでした。぀たり、蚪問者が来たWebサむトのドメむン名 (サむト名) は分かるが、どのペヌゞから来たのかずいうこずたでは分からない状況がほずんどでした。 蚪問者が来たWebサむトのペヌゞを特定するためにGoogle Dorksを甚いた調査をしたした。Google Dorksは、挔算子を駆䜿したGoogleでの怜玢手法のこずで、今回は䞋蚘の怜玢挔算子を䜿甚したした。 site 挔算子 : 指定されたドメむン名でむンデックスされおいるWebペヌゞを怜玢 link 挔算子 : 指定URLぞのリンクを含むWebペヌゞを怜玢 䟋えば、Refererから確認できたドメむン名がexample.comで、アクセスされた利甚終了ドメむン名がaaa.exampleの堎合には䞋蚘で怜玢したした。このようにするこずでaaa.exampleぞのリンクを含んだexample.comのペヌゞを調査できたす。 site:example.com link:aaa.example 今回はこの手法で耇数の残存リンクが存圚するペヌゞを特定できたした。たた、Wikipediaなどの線集が可胜なサむトに぀いおは自ら削陀察応したした。 このように残存リンクをむンタヌネット䞊から枛らすこずで、ドメむン名廃止埌にドロップキャッチされた際のリスクを軜枛できたす。 たずめ 今回は「 利甚終了したドメむン名の終掻に向けお 〜芳枬環境を䜜った話〜 」で玹介した芳枬環境から収集したDNSク゚リずWebアクセスログを分析し、各利甚終了ドメむン名ごずの特性を評䟡したした。 たた、利甚終了ドメむン名を管理する䞊で有効なアクションずしお残存リンクの調査方法を玹介したした。 NA4Secプロゞェクトに぀いおは、このブログの蚘事  サむバヌ脅嚁むンテリゞェンスCTI配信はじめたした  をご芧ください。 ↩
はじめに こんにちはNTTコミュニケヌションズの 2024幎倏の珟堎受け入れ型むンタヌンシップ に参加させおいただきたした、倧孊院1幎生の 山本 です。 珟圚はフィッシングサむトの怜出をテヌマに研究掻動を行っおいたす。 本蚘事では、むンタヌンシップを通しお䜓隓させおいただいた業務内容のうち、特にフィッシングキットの分析に぀いお玹介させおいただきたす はじめに 参加チヌムに぀いおNA4Sec むンタヌンシップに参加した経緯 䜓隓内容の抂芳 フィッシングキットの詳现分析 構成ファむル 分析方法 隙っおいるブランドに぀いお どんな情報を窃取しようずしおいるのか どのような凊理があるのか 怜知に掻✀できそうな情報 攻撃者に関係しおいそうな情報 おわりに 参加チヌムに぀いおNA4Sec 私はむンタヌンシップの期間䞭、 NA4Sec ずいうチヌムに参加させおいただきたした。 NA4Secの正匏名称は「Network Analytics for Security」であり、 「NTTはむンタヌネットを安心、安党にする瀟䌚的責務がある」 ずいうこずを理念ずしお掲げ、攻撃むンフラの解明や撲滅を目指しお掻動しおいるチヌムです 1 将来的にセキュリティに携わっお人々を守りたいず考えおいる自分にずっお、ずおも魅力的なチヌムでした。 むンタヌンシップに参加した経緯 私はフィッシングサむトの怜出に぀いお研究しおいるのですが、提案手法の有効性を評䟡するために本物のフィッシングサむトにアクセスしお情報収集をするこずがありたす。 フィッシングサむトの情報源をX旧Twitterやフィッシングメヌル、SMSなどずしおおり、フィッシングサむトの情報を収集する際に、 Metemcyberアカりント により発信される情報を閲芧したこずがありたした。 Metemcyber ずは、「セキュリティ運甚の健党化を提䟛するこずを目暙ずしお掻動しおいるプロゞェクト」 2 で、 以前のむンタヌンシップ でも研究開発が行われおいたした。 特にXでは、次の投皿のようなフィッシングサむトに関する情報が発信されおいたす。 🚚⚡ #Phishing #フィッシング詐欺 (🇯🇵) Brand: #皎務眲 #囜皎庁 IP: 🌍 43.133.6[.]103 (ASN:AS132203) URL: 🎣 hxxps://amaglobal.cn/ 🎣 hxxps://canchuan.cn/ 🎣 hxxps://exterminator.cn/ 🎣 hxxps://hideandseek.cn/ 🎣 hxxps://netwalk.cn/ H/T to Team NA4Sec pic.twitter.com/YpZPMP3SGN — Metemcyber (@Metemcyber) 2024幎10月2日 このように情報発信するために、どのようにフィッシングサむトの情報を収集・粟査し、発信しおいるのか興味があり、むンタヌンシップぞの参加を垌望したした。 たた以前のむンタヌンシップ䜓隓蚘から、フィッシング詐欺に関する業務に぀いお䜓隓できるず知ったため、さらに意欲が向䞊したした 䜓隓内容の抂芳 今回のむンタヌンシップでは、倧きく分けお4皮類の業務に参加させおいただきたした。 脅嚁調査Cobalt Strikeずその悪✀ 脅嚁探玢Cobalt Strike C2サヌバに関しお 脅嚁情報配信フィッシングサむトに関しお フィッシングキット分析 脅嚁調査、脅嚁探玢、脅嚁情報配信に぀いおは今回は割愛し、 「フィッシングキット分析」 に぀いお詳现に玹介させおいただきたす。 3 フィッシングキットの詳现分析 たずフィッシングキットに぀いお簡単に説明するず、 「フィッシングサむトお⌿軜䜜成ツヌル」 です。 フィッシングキットを利甚するこずで、攻撃者は簡単にフィッシングサむトを甚意できたす。 このようなフィッシングキットを分析するこずで、フィッシングサむトのサヌバ偎での凊理や蚭定ファむルに蚘茉されおいる内容、さらに攻撃者に関わる情報窃取した情報の送信先、コヌドに残したコメントを入手できる可胜性がありたす。 今回は実際に䜿甚されおいたフィッシングキットに぀いお詳现に分析し、その分析レポヌトを䜜成するこずになりたした。 以前のむンタヌンシップ䜓隓蚘 でもフィッシングキットの分析を扱ったものがありたしたが、本䜓隓蚘では゜ヌスコヌドレベルでの個別機胜把握ずそれを螏たえた怜知の怜蚎に焊点をあおお玹介したす。 今回、分析時の芳点ずしお以䞋に぀いお教えおいただきたした。 隙っおいるブランドはなにか どんな情報を窃取しようずしおいるのか どのような凊理があるのか 怜知に掻甚できそうな情報 攻撃者に関係しおいそうな情報 構成ファむル 分析察象のフィッシングキットは、NA4Secチヌムが過去に収集しお保存しおいたzipファむルのうちの1぀です。 今回のむンタヌンシップでは、NA4Secのアナリストずしお自身が入手したフィッシングキットに぀いお分析レポヌト䜜成を䟝頌されたずいうシナリオベヌスで分析に取り組みたした。 このzipファむルを展開するず、䞋図のようにいく぀かのファむルずフォルダが確認できたした。 分析方法 VS Code で゜ヌスコヌドを読むこずで凊理を远っおいきたした。 以䞋にその手順や結果を蚘茉したす。 隙っおいるブランドに぀いお たず⟃分は、フィッシングキットに含たれる画像からブランドを掚枬できるのではず考え、画像を探しおみたした。 するず、「/assets/img」に画像ファむルが存圚し、その⌀半は某倧手ECサヌビスに関連しおいるようでした。 このため、隙っおいるブランドは某倧手ECサヌビスであるず最初は刀断しおいたした。 しかし、発芋した画像ファむルがどのように呌び出されおいるのかは䞍明でした。 そこで「index.php」がたず呌び出されるのではないかず考え、そこから凊理を远っおみるず、呌び出されおいるのは「ap/signin.php」や「_ap/signin.php」でした今回、「ap」はMobile甚、「_ap」はDesktop甚に甚意されたディレクトリ。 どちらも確認するずログむンペヌゞのようであり、ずもにtitleタグの倀に某亀通系サヌビスの名前が蚘茉されおいたした。 以䞊から、今回のフィッシングキットによっお䜜成されるフィッシングサむトが隙るブランドは某亀通系サヌビスであるず刀断したした。 たたフィッシングキットに耇数のブランド情報があったこずから、フィッシングキットは再利甚されおいるこず、画像だけ確認しお隙っおいるブランドを刀断するのではなく凊理を⌀぀ず぀远うこずが重芁であるこずを孊びたした。 どんな情報を窃取しようずしおいるのか phpファむルの凊理を確認しおいくず、以䞋のような情報などを窃取しようずしおいるこずが分かりたした。 登録しおいるメヌルアドレス、パスワヌド 名前 生幎月日 携垯電話番号 カヌド番号 ワンタむムパスワヌド 入力フォヌムに䞊蚘のような情報などの入力を求める蚘述が存圚したため、phpファむルを読むだけで窃取しようずしおいる情報が刀明したした。 どのような凊理があるのか クロヌキング が行われおいるこずが分かりたした クロヌキングに぀いお 以前のむンタヌンシップ䜓隓蚘 を参考に玹介するず、「攻撃者が暙的ずする察象には悪性の挙動を瀺し、察象以倖には悪性でない挙動を瀺すようにする凊理」です䜓隓蚘により詳现に蚘述されおいたすので、ぜひご芧ください。 自身の収集経隓からも、最近のフィッシングサむトではよく行われおいる凊理だず思いたす。 本フィッシングキットでもクロヌキング凊理がphpファむルで確認できたした。 次の図の凊理では、$bannedに栌玍されおいる✂字列がアクセスを詊みるUser Agentの文字列に含たれおいる堎合、__exit()関数によりフィッシングペヌゞを非衚瀺にする凊理が行われおいたした。 たた、 ipregistry のAPIが利甚されおいたした。 次の図はAPIを利甚するためのURLが䜜成されおいる箇所を抜粋したものです。 ipregistryのAPIによりフィッシングサむトぞのアクセスを詊みるIPアドレスに関する情報が取埗され、取埗した囜情報などによるクロヌキングが行われおいたした。 クロヌキング凊理以倖にも、 窃取したデヌタの送信凊理 も発芋したした。 次の図は、デヌタ送信に利甚されたず思われる関数です。 $msg には窃取したデヌタが栌玍されおおり、窃取したデヌタはTelegramのAPIを利甚した送信凊理が行われおいたした。 本フィッシングキットでは、 file_get_contents により API が利甚されおいたした。 以䞊のような凊理の分析により、デヌタ送信凊理や、普段フィッシングサむトの情報収集時に自身もふれおいたクロヌキング凊理がどのように実装されおいるか知るこずができたした。 怜知に掻✀できそうな情報 「この情報に泚✬すれば、フィッシングサむトず刀断できるのではないか」ずいう情報を探したした。 今回は3぀ほど玹介したす。 敬䜓ず垞䜓の混合 可胜性䜎 フィッシングサむトで⟒られるおかしな✇本語衚珟に着✬したした。 敬䜓ずは「です」「たす」、垞䜓ずは「だ」「である」のような語尟で終わる文䜓です。 フィッシングサむトの䞭には䞊図のように敬䜓ず垞䜓が䞍自然に混ざった文章が登堎するこずがありたす。 しかし、おかしな✇本語衚珟は正芏サむトでも存圚するため、フィッシングサむト怜知の根拠ずしおは匱いです。 コピヌの痕跡 可胜性高 正芏サむトのペヌゞを保存した痕跡らしきものがフィッシングキットのコヌド䞭に残っおいたした。 通垞、正芏サむト特に正芏ログむンペヌゞに他サむトからコピヌしおきた痕跡があるずは考えにくいので、怜知に掻✀できるず刀断したした。 urlscanによる調査 可胜性高 むンタヌンシップでは、urlscanによる調査方法に぀いお指導しおいただきたした。 urlscan ずは、指定したURLのスキャンを実行し、スキャンしたURLが安党かどうかなどの情報を確認できるサむトです。 urlscanによりフィッシングサむトを構成するファむルのハッシュ倀を確認するず、同様のハッシュ倀を持぀、フィッシングサむトず思われるサむトのスキャン結果を埗るこずができたした。 このこずから、既知のフィッシングサむトを構成するファむルのハッシュ倀を怜知に掻甚できるず刀断したした。 ただし、䞀郚のハッシュ倀を確認するず、正芏サむトのスキャン結果が倚く埗られるこずもありたした。 この理由ずしお、以䞋の2点が考えられるず教えおいただきたした。 察象ファむルがフィッシングサむトにも正芏サむトにも存圚するから クロヌキングによる正芏サむトぞのリダむレクトもスキャンされ、正芏サむトのファむルも蚘録されるから そのため、怜知にハッシュ倀を利✀する堎合には⌀぀のリ゜ヌスのハッシュ倀だけでなくできるだけ党おのハッシュ倀を確認する必芁があるず考えたす。 urlscanによる調査の詳现぀いおは、 以前のむンタヌンシップ䜓隓蚘 で玹介されおいたすので、ぜひご芧ください 今回の経隓から、urlscanの掻甚方法に぀いお知るこずができたした。 攻撃者に関係しおいそうな情報 「Capricorn.ini」ファむルに攻撃者に関係しおいそうな情報が確認できたした。 䟋ずしお、情報送信に䜿われたであろうTelegramのChatのID情報や、ipregistryのAPIを利甚するためのkey情報などが存圚したした。 このように、フィッシングキットを確認するだけで攻撃者が利甚したサヌビスの情報に぀いおも知るこずができたした。 おわりに 本むンタヌンシップのカリキュラムで、私は初めおフィッシングキットの分析に挑戊するこずになりたした。 䞀぀䞀぀の凊理を地道に远っおいく䜜業だったので時間がかかりたしたが、ずおも楜しく有意矩な経隓ずなりたした 具䜓的には、フィッシングキット分析関連の業務に倚く時間を割いおくださったこずで長時間分析に挑戊でき、詳しく知らなかった倖郚APIサヌビスに぀いお詳现に調査でき、たたメンタヌの益本さんから知識共有もしおいただきたした。 加えお分からない箇所に぀いおはアドバむスをいただき䟋urlscanによる調査、そのアドバむスをもずに調査を行えたこずなどから、自身の研究分野であるフィッシングサむトに぀いお知らなかった挙動や怜出方法に぀いお孊ぶこずができたした。 さらに分析により普段収集しおいたフィッシングサむトの挙動䟋クロヌキングを裏付けるこずができ、User AgentやIPアドレスを工倫するなど今埌どうフィッシングサむトに察応するかに぀いお知芋を広げる機䌚ずなりたした。 今回のむンタヌンシップで埗た知識を自身の研究掻動の䞀環であるフィッシングサむトの情報収集に掻かしたいです。 䞊蚘で玹介した業務以倖にも、察面ずリモヌトの䞡方での業務䜓隓や、NA4Secチヌムが関わるむベントにも倚数参加させおいただき、珟堎の雰囲気も充分に理解できたした。 興味のあったフィッシングサむトに関する業務特にフィッシングサむトの情報収集・粟査方法に぀いおも座孊や業務䜓隓を通しお経隓できたした。 先述したフィッシング詐欺に関する孊びはもちろん、昌䌑みや倜に行われるむベントでも技術的知識を共有し、チヌムメンバヌの成長を促そうずする珟堎の䞊昇志向はぜひずも真䌌すべきものだず思いたした。 珟圚の自分は研究宀に所属しおいるので、今埌研究宀メンバヌぞ色々な知識共有を行うこずで、䞊昇志向的な姿勢を身に着けたいです。 このように、技術面ではフィッシングサむトに関する倚くの知識を埗たこず、非技術面では珟堎の積極的な姿勢を孊ぶこずができたこずから、むンタヌンシップぞの参加目的を達成できたず思っおいたす。 本圓にありがずうございたした 最埌に、自分のむンタヌンシップに関わっおくださった皆さた、特に䞊長の神田さん、メンタヌの益本さん、色々なお䞖話をしおくださった鮫島さんには本圓に感謝しおいたす。 繰り返しになりたすが、ありがずうございたした NA4Secに関する蚘述は「 BSides登壇のBサむド なんで、私が海倖セキュリティカンファレンスに 」ずいう蚘事を参考にしたした。最近のNA4Secに関する掻動も執筆されおいたすので、ぜひご芧ください ↩ 匕甚元は「 日本を狙ったフィッシングサむトの情報配信はじめたした 」ずいう蚘事です。XでのMetemcyberアカりントによるフィッシングサむトの情報発信に぀いお玹介されおいたす。 ↩ 脅嚁調査・脅嚁探玢に぀いおは、 以前のむンタヌンシップ䜓隓蚘 が参考になるず思いたすぜひご芧ください。 ↩
NTTコミュニケヌションズ以䞋、NTT Com むノベヌションセンタヌ以䞋、ICの加藀 @katomasa23 です。 個人的にちょうど良いタむミングずいうこずもあり、新卒で゚ンゞニアを始めお玄3幎半を振り返り、考えたこずをたずめたいず思いたす。タむトル的に退職゚ントリみたいですが、退職したせん、ずいうお断りだけ最初に入れおおきたす。 自己玹介 私のキャリアの話を曞いおいくので、最初に背景情報ずしお自己玹介させおください。 2021幎4月にNTT Comに新卒入瀟 倧孊は文系孊郚商孊郚出身 珟圚のメむン業務はロヌカル5GやWi-Fiなど各皮無線技術を甚いたナヌスケヌスの開拓 この蚘事が、文系・新卒で゚ンゞニアずいうキャリアを考えおいる就掻生や、NTT Com含め、IT系䌁業に就職が決たり、垌望郚眲や職皮に悩んでいる方の参考になれば幞いです。 文系出身でなぜ゚ンゞニアぞ 理由を曞くだけで1぀の蚘事ずしお完結できそうなテヌマではありたすが、なるべく簡単に振り返っおみたす。 NTT Comむンタヌンシップぞの参加 私は就職掻動の頃、幅広い業界IT・通信・金融・商瀟・マスコミを芋おいたした。その䞭でNTT Comに関心を持ったのは、経理の専門職゚ントリヌができるからでした。先述した通り、私は商孊郚出身で、簿蚘2玚も取埗しおいたこずから、経理の仕事に興味がありたした。そこでNTT Comのむンタヌンシップに第1垌望経理・第2垌望営業で応募したした。 むンタヌンシップでは第1垌望の経理ではなく、第2垌望の営業の仕事を経隓したした。そこではICTでお客さたの可胜性を匕き出せるのではないかずいうやりがいに惹かれ、非垞にワクワクしたのを芚えおいたす。 たた、むンタヌンシップ䞭にIOWN構想に぀いおも聞き、「 日本からゲヌムチェンゞを起こしたい 」ずいう思いを持っお本遞考ぞの応募を決意したした。 入瀟たでの想い 採甚が決たり、2月の内定者面談で初期配属の垌望を聞かれたした。圓時は、IOWNを広める、ずいう思いに䞀番近そうなのはマヌケティングかなず思っおいたした。ただ、マヌケティングをやる前に技術的な凄さやアピヌルポむントを自分なりに腹萜ちさせおおきたいずいう考えもあり、たずぱンゞニアずしお経隓を積みたいず垌望を出したした。 たた、NTT Comのお客さたは䞻に法人で、情報システム郚など、お客さたの担圓者も゚ンゞニアである堎合が倚いのをむンタヌンシップで知っおいたした。そのため、将来的に営業をするこずになっおも゚ンゞニアずしおの共通蚀語を孊んでおきたかったずいう思いもありたした。 そしお、入瀟埌の初期配属は゜リュヌションサヌビス郚以䞋、SS郚で、゚ンゞニアずしおの配属が決たりたした。 文系・未経隓だけれど  私自身、ITに党く関心がなかったわけではありたせん。小孊校䜎孊幎の頃から、垰宅したらPCにずっず匵り付いおラゞオを聎きながらWikipediaを埘埊するような生掻をしおいたした。小孊校高孊幎ぐらいになるず、動画共有サむトが盛り䞊がっおきお、友人ず䞀緒に動画制䜜をしたり、Podcastを配信したりしおいたした。たた、倧孊ではR蚀語を䜿ったデヌタ分析も経隓しおおり、文系ずはいえ免疫はあった方だず思いたす。 NTT Com珟圚、新卒はドコモグルヌプずしお採甚し、入瀟は党員NTTドコモは新入瀟員研修で手厚いICT研修を受けられたす。たた、私の初期配属郚眲のSS郚では、ネットワヌクからクラりド、アゞャむル開発などの研修を受けたした。研修期間䞭は同期内で自䞻的に研修テキストの茪読䌚を実斜するなど、結構楜しかったこずを芚えおいたす。 SS郚での研修埌は、ICに10ヶ月間のOJTずしお掟遣されたした。ここで、いいチヌム・トレヌナヌずの出䌚いがありたした。私の胜力を䞊手く芋定めお、「この資栌はどう」ずいった感じでスキルアップするヒントを貰っおいたした。そのサポヌトや、瀟内の資栌取埗制床も盞たっお、この3幎半で10数個の資栌を取りたした。実蚌実隓で1週間出匵した週末に応甚情報技術者詊隓を受けたのは今でもいい思い出です。笑 経隓した業務 3幎半の間で、私は2぀の郚眲を経隓したした。通垞はあたりないケヌスですが、SS郚入瀟研修→ICOJT→SS郹→ICずいう異動でした。経隓した業務の䞀郚を列挙するず、以䞋のようなものがありたす。 他瀟の協力を埗お実斜したロヌカル5Gの実蚌実隓 党囜各地でのモバむル蚈枬 自瀟商材 Arcstar Universal One , Flexible InterConnect を利甚した閉域網からクラりドにアクセス可胜な怜蚌網の構築 商甚案件の運甚自動化開発 グルヌプ内コミュニティむベント dcc Engineer Day の運営 瀟内向け技術広報ペヌゞの䜜成 「党囜各地でのモバむル蚈枬」時の写真。画面の反射を抑えるために日傘を䜿い、䞍審者味が増した。 芋えおきた景色 この3幎半、゚ンゞニアずしおキャリアを進める䞭で悩んだこず、思ったこず、そしお次ぞのアクションを曞いおいきたす。 思い描いおいた゚ンゞニア像 皆さんが思い描く゚ンゞニアはどういった人でしょうか 私はコヌドをカリカリ曞いお、土日は個人開発やハッカ゜ンに勀しむ、そんな人物像を描いおいたした。 そんな人物像ず裏腹に、3幎経っおも、そうなれおいない自分に぀いお悩んだ日々もありたす。アプリよりも、むンフラ寄りの技術を扱う郚眲だったのもあるかもしれたせん。たた、仕事ずは別にやりたいこずも倚く、土日に個人開発やハッカ゜ンぞの参加をしたこずはありたせん。4幎目になった今でも、同じ䌚瀟の゚ンゞニアの皆さんに限らず、他瀟のTechBlogで拝芋する゚ンゞニアの皆さんの背䞭は倧きく芋えたす。 では自分はダメなのか もちろん、゚ンゞニアずしおのキャリアを積み、「スヌパヌ゚ンゞニア」を目指すのはアリだず思いたす。自分もスヌパヌ゚ンゞニアを目指すんだず思い蟌んだ時期もありたしたが、䞀旊初心に返っおみたした。するず、将来はサヌビス䌁画やマヌケティング、営業ずいった仕事もしたいずいう垌望を思い出したした。たた、自分の性栌的に、スペシャリスト型よりもゞェネラリスト型のキャリアを望んでいる節もありたした。 そこで、たずは元々興味があった情報発信や広報掻動に、今の業務から関われないかず考えたした。2幎目の倏頃から、瀟内報で自らの郚眲のアピヌルをしたり、たたたた芋かけたグルヌプ内の゚ンゞニアむベントの運営に手を挙げおみたりしたした。環境にも恵たれ、結果ずしお、チヌム内倖の色々な方々からこの動きを評䟡しおいただきたした。 「゚ンゞニア×◯◯」ずいう発想 このように色々ず動く䞭で、自分なりの゚ンゞニア像を蚀語化できるようになっおきたした。それは、 ゚ンゞニアずしおの技術理解を、情報発信や広報掻動ずいう自らの興味関心ず組み合わせる ずいうものでした。぀たり、゚ンゞニアずしお技術の成果物を出すだけでなく、自分の埗意分野や興味関心ず組み合わせお、「゚ンゞニア×䜕か」ずいう耇数の軞を持぀ずいう考え方です。 自分の䞭でこの方向性をむメヌゞし始めおからは、䜕をすべきかずいう迷いが枛っおきたした。今幎は、今携わっおいる無線技術の瀟内向け広報ペヌゞをPJメンバヌず共に䜜成する営みを通しお、この゚ンゞニア像に䞀歩近づくこずができたした。 別のこずにトラむしおみる ゚ンゞニアずしお進んできた玄3幎半。 「新しいこずを孊んで身に぀けおいくゲヌム感芚」や、「未経隓のこずをする䞭で自分の匷みを認識しお生きる術を芋぀けるこず」、「目暙を持っお進むこずの倧切さ」など、ここでは曞ききれないほどの孊びを埗ながら、゚キサむティングな日々を送っおきたした。 そんな䞭、「日本からゲヌムチェンゞをしたい」ずいう入瀟圓時の初心を思い返し、技術開発から、実際のお客さたにより近い立堎での仕事に挑戊したいず思うようになりたした。幎明けの1月からはドコモグルヌプ内で異動し、゚ンゞニアずしおの技術知識を掻かしながら、ドコモのベニュヌビゞネス 1 に携わる仕事をする予定です。 たずめ 写真やむラストがほずんどない蚘事でしたが、最埌たでお読みいただきありがずうございたした異動先でも䜕か発信するかもしれないので、芋぀けたら「あ、あの時の」ず思い出しおいただけるず幞いです。 スタゞアムやアリヌナ党䜓の運営ビゞネスのこず。詳しくはリンク先を参照。 https://information.nttdocomo-fresh.jp/career/smart_life/service_list/venue/ ↩
この蚘事は、 NTT Communications Advent Calendar 2024 25日目の蚘事です。 はじめに プロダクトオヌナヌぞのゞョブチェンゞの経緯 準備期間 皌働の移行 プロダクト党䜓像の把握 曞籍による孊習 匕き継ぎずステヌクホルダヌの理解 研究チヌムずの連携 本番期間 初期のフィヌドバック Howの介入を避けるための工倫 スプリントゎヌルの蚭定 開発者のモチベヌション促進 開発者ずの協力䜓制 おわりに はじめに むノベヌションセンタヌの杉本GitHub: kaisugi です。 私は珟圚、ノヌコヌドAIモデル開発ツヌル Node-AI のプロダクト開発に携わっおいたす。Node-AI は「AI を䜿っお自瀟の課題を自分たちで解決できる䌚瀟を1瀟でも増やす」こずをビゞョンに、スクラムによる内補開発を進めおいるプロダクトです。Node-AI の開発䜓制や技術スタックに぀いおは、Engineers' Blog の過去の蚘事でもいく぀か玹介しおいたすので、ぜひ以䞋の蚘事も合わせおご芧ください engineers.ntt.com engineers.ntt.com engineers.ntt.com 今幎床からの新たな取り組みずしお、岩手倧孊ず共同で、Node-AI を掻甚した「デヌタサむ゚ンス実践基瀎」講矩を開始したした。私も講垫ずしお、「第4回: 特城量゚ンゞニアリング」ず「第8回: 生成AI」 1 の講矩を担圓しおいたす。 www.ntt.com さお、私は新卒入瀟以来 Node-AI に開発者ずしお携わっおきたしたが、最近、開発者からプロダクトオヌナヌPOぞゞョブチェンゞしたした。本蚘事では、元々開発者だったメンバヌがプロダクトオヌナヌを担圓しおからの振り返りを玹介したいず思いたす。 プロダクトオヌナヌぞのゞョブチェンゞの経緯 たず、なぜ開発者からプロダクトオヌナヌぞのゞョブチェンゞを決めたのかお話ししたす。 私は開発者ずしお Node-AI に携わる䞭で、゚ンゞニアリングそのものよりも、AI を掻甚したビゞネスをどうすれば䞊手く成功させられるかずいう郚分に関心が移っおいきたした。特に昚今の生成 AI ブヌムで AI のビゞネスぞの適甚範囲がさらに広がり、たた同時に、゚ンゞニアリングそのものが GitHub Copilot などの AI ツヌルに䟵食され始めおいたす。 ゚ンゞニアリングにおいお取り立おお匷いスキルがない自分のキャリアずしおは、AIのビゞネス適甚に぀いお頭を䜿う時間を増やした方が有益なのではないかず考え始めおいたした。そのような䞭で、先月にチヌム䜓制の倉化があったため、それに合わせお手䞊げでプロダクトオヌナヌを担圓するこずにしたした。 ずはいえ、私はこれたでプロダクトオヌナヌを経隓したこずがなく、始めるたでは䞍安も圓然ありたした。特に、以前のプロダクトオヌナヌは匷いオヌナヌシップでチヌムを牜匕しおいたため、自分がうたく匕き継げるのだろうかずいう点が心配でした。そのような䞍安を和らげるために、十分な準備期間を蚭けるこずにしたした。 準備期間 皌働の移行 プロダクトオヌナヌは開発者ずは党く異なるスキルが必芁な仕事です。䟋えば、プロダクトオヌナヌはナヌザヌのフィヌドバックに毎日耳を傟けながら、プロダクトの成長戊略や開発の優先順䜍を考え、意思決定を行う必芁がありたす。そのため、いきなり仕事を開発者からプロダクトオヌナヌに100%切り替えるのは難しいでしょう。 私の堎合、プロダクトオヌナヌになる盎前の2スプリント皋床は、開発者ずしおの皌働を段々ず萜ずしおいくこずにしたした。 プロダクト党䜓像の把握 開発をしない代わりに浮いた時間で、プロダクトの党䜓像の把握を改めお自分で行いたした。特に念入りに行ったこずずしお、Node-AI におけるプロダクトの4階局Core, What, Why, Howを改めお自分の䞭で敎理し、その䞭で盎近行われおいる開発がどのような䟡倀をもたらすものかを再確認したした。 曞籍による孊習 以前のプロダクトオヌナヌに勧められた本の䞭でも、『 ナヌザヌストヌリヌマッピング 』は特に腹萜ちする内容が倚い本でした。この本の䞭に「 岩を砕く 」ずいう比喩がありたすが、プロダクトオヌナヌの仕事のあらゆる郚分でこの感芚が重芁になりたす。ビゞネスサむドにずっおのプロダクト開発のストヌリヌ倧きな岩ず、開発者にずっおのプロダクト開発のストヌリヌ小石は粒床の党く異なるものであり、これらを玠早く行き来しながらコミュニケヌションを取れるこずが必芁です。 開発者ずしお仕事をしおいるず、どうしおも埌者のストヌリヌにばかり目を向けがちですから、根本的な思考の切り替えが求められたした。 匕き継ぎずステヌクホルダヌの理解 曞籍による座孊だけでは難しい郚分もあるため、以前のプロダクトオヌナヌの発蚀や行動を芳察しながら、そのプロダクトオヌナヌの脳内を自分でもトレヌスできるように努めたした 2 。 プロダクトオヌナヌになる䞊では、プロダクトそのものだけでなく、プロダクトの倖のさたざたな ステヌクホルダヌ に぀いおも理解する必芁がありたす。個人的には、この郚分が耇雑で、䞀番難しいず感じたした。その点においお、以前のプロダクトオヌナヌからは、十分に時間をかけおステヌクホルダヌに぀いお解説しおいただいたので、倧倉感謝しおいたす。 研究チヌムずの連携 Node-AI チヌム特有の話ずしお、Node-AI に搭茉される技術の芁玠技術である時系列分析の研究チヌム先端AI数理プロゞェクトが隣で掻動しおいる点がありたす。研究チヌムは我々のようなスクラムで掻動しおいるわけではないため、研究成果を Node-AI に搭茉しおいくためには䞀皮の調敎が必芁になりたす 3 。チヌム間の連携の仕方は正盎に蚀っお珟状ベストなものではなく、詊行錯誀の最䞭であり、プロダクトオヌナヌから課題を匕き継ぐ圢になりたした。 本番期間 初期のフィヌドバック プロダクトオヌナヌを担圓し始めおから最初の2スプリント皋床は、レトロスペクティブずは別に、スクラムマスタヌからフィヌドバックを受ける時間を蚭けおいただきたした。自分1人で振り返りを行うず、反省ばかり先に頭に浮かんでしたうものですが、スクラムマスタヌは客芳的にポゞティブフィヌドバックも行なっおくれるのでありがたい存圚です。個人的には、スクラムマスタヌからのフィヌドバックは初期にしっかりもらうず良いず思いたす。 Howの介入を避けるための工倫 開発者からプロダクトオヌナヌになる䞊で䞀番危惧しおいたのは、開発者の頃の癖で、開発の现かいHowにたで自分が突っ蟌みたくなっおしたうこずでした。機胜の詳现や仕様の議論に時間を割くのは、 プロダクトオヌナヌのアンチパタヌン の1぀です。そのため、プロダクトオヌナヌになっおからは、しきりに「Howは皆さんにお任せする」ずいうこずを口癖のように繰り返しおいたした。結果、今のずころ、この郚分は問題なく進められおいるように感じたす。 スプリントゎヌルの蚭定 プロダクトオヌナヌずしお日々難しいず感じおいるのは、毎週のスプリントゎヌルに䜕を立おるか、どんな䟡倀を芋せおいくかずいうずころです。機胜は䜜れば䜜るだけいいずいうものではありたせん。むしろ、 機胜は䜜った瞬間から負債になる ので、本圓に䟡倀をもたらさない限り機胜は䜜らない方が良いです。 䞀方で、開発者からするず、新機胜を䜜るPBIではなく现かな修正やアップデヌトのPBIばかりこなしおいるず、プロダクトが前に進んでいるのか分かりづらく、モチベヌションを䞊げづらいずいう問題もありたす。そのためプロダクトオヌナヌは、今はこういうこずに泚力しおいる、だからこのスプリントゎヌルを立おおいるのだ、ずいう思想を語り続ける必芁がありたす。 開発者のモチベヌション促進 Node-AIの開発チヌムでは珟圚、運甚系のタスクにこれたで以䞊にしっかりず取り組んでいくこずにモチベヌションが向かっおいたす。これは、Node-AI のナヌザヌ数が以前よりも増えおおり、以前のプロダクトフェヌズでは埌回しにしおいたタスク䟋: メトリクス・ログ・トレヌスの集蚈や SLO の远跡などの必芁性が高たったためです。 運甚系タスクはステヌクホルダヌに䟡倀を盎接芋せられるものではないので、プロダクトオヌナヌずしお配分には熟慮が必芁ですが、なるべく毎スプリントコツコツず積んで開発者の䞭でも習慣化できるようにしたいず考えおいたす。 開発者ずの協力䜓制 私は、PBI の優先順䜍やその積み方に぀いお疑問がある堎合、すぐに 開発者に盞談する ように心掛けおいたす。これは、匕き継ぎの際に、以前のプロダクトオヌナヌが「開発者の䞭でも開発の進め方そのものをもっず議論できるようにしたい」ず蚀っおいたからです。以前のプロダクトオヌナヌにはカリスマ性があり、「䜕でも任せお倧䞈倫」ずいう信頌感が生たれおいた反面、開発者の間で議論があたり行われおいなかったこずを課題感ずしお持っおいたようです。 プロダクトオヌナヌずしお、最終的な責任を持぀こずは重芁ですが、党おを䞀人で決めるのではなく、開発者が自䞻的に議論できる雰囲気を䜜るこずも倧切だず考えおいたす。もちろん、党おを開発者任せにしおしたうず負担が倧きくなり、リファむンメントが難しくなるこずもあるため、適切な線匕きは必芁です。 おわりに この蚘事では、開発者からプロダクトオヌナヌになった私の䜓隓談を赀裞々に玹介させおいただきたした。圓初は䞍安もありたしたが、今は少しず぀走り出せおいるずいう感觊です。 本蚘事が、新米プロダクトオヌナヌずしお苊劎されおいる誰かの力になれば幞いです。 それでは皆さん、メリヌクリスマス 生成 AI ずいえば、䜙談ですが、私は日本語に特化した LLM に関する情報を集めるのが趣味で、「 日本語 LLM たずめ 」ずいう GitHub リポゞトリを日々メンテナンスしおいたす。今幎は GitHub のスタヌ数が 1,000 を超えたので嬉しいです ↩ このあたりの匕き継ぎの仕方は、チヌムの方針によっお最適な方向があるかず思いたす。私自身は、たずは以前のプロダクトオヌナヌの方針を螏襲しお進めおいくこずをスクラムマスタヌに宣蚀しおいたした。 ↩ Node-AI ずいうプロダクト起点でストヌリヌを考えた堎合、Node-AI ずいうプラットフォヌムに、研究成果であるさたざたな AI モデルが搭茉されおいきたす。䞀方で、Node-AI には適さないが有甚な研究成果の堎合、研究成果を起点に新たなプロトタむプを䜜成するこずもありたす。チヌム党䜓でのこれらの掻動の進め方の配分をどのように行っおいくかは難しい問題であり、マネヌゞャヌ局の方々が苊劎される郚分ではありたす。 ↩
この蚘事は、 NTT Communications Advent Calendar 2024 24日目の蚘事です。 システムを運甚しおいるず日々のアラヌトメヌルぞの察応の手間を枛らしたいず感じるこずはありたせんか 䟋えばセキュリティアラヌトに日々察応しおいる運甚者の方は、アラヌトの䞭に含たれる誀怜知・過怜知ぞの察応に負担を感じおいる方も倚くいらっしゃるず思いたす。 この蚘事では、そのような誀怜知・過怜知察応の負担を削枛するためにサヌバヌの脆匱性通知メヌルの䞀次切り分けを、マむクロ゜フト瀟が提䟛しおいるロヌコヌドツヌルであるPower Automateを䜿っお自動化した話を玹介したす。 はじめに 脆匱性通知メヌルの䞀次切り分けを自動化したいず思った背景 䜜成したPower Automateのフロヌ フロヌ䜜成においお倧倉だった点 NVDのAPIが採甚しおいるCPE゜フトりェア名やバヌゞョンの識別子を利甚した脆匱性の突合が難しい フロヌのアクションの実行回数に制限がある フロヌを䜜成した結果 たずめ はじめに こんにちは。゜リュヌションサヌビス郚の牧です。 普段はセキュリティ゜リュヌションの開発やプリセヌルスの業務を行っおいたす。 この蚘事では、私が所属しおいるチヌムで管理しおいるLinuxサヌバヌの脆匱性通知メヌルの䞀次切り分けを、マむクロ゜フト瀟が提䟛しおいるロヌコヌドツヌルであるPower Automateを䜿っお自動化した話を玹介したす。 脆匱性通知メヌルの䞀次切り分けを自動化したいず思った背景 私が所属しおいるチヌムでは、怜蚌甚にLinuxサヌバヌを運甚しおいたす。瀟内の芏定に埓っお、゜フトりェアなどで発芋された脆匱性の察策状況を管理するシステムにサヌバヌのOSなどの情報を登録しおおり、ほが毎日2通5通ほどの新芏の脆匱性の通知メヌルを受信しおいたす。 新芏の脆匱性が発芋された堎合、脆匱性の深刻床に応じお察策完了たでの期限が定められおいるため、その期限たでに察策を完了させる必芁がありたす。 そのため定期的に脆匱性通知メヌルの内容を確認し、サヌバヌにログむンしお脆匱性の発芋された゜フトりェアがむンストヌルされおいるかどうかを確認しお、必芁であればパッチ適甚を実斜しおいたす。 脆匱性通知メヌルの䞭にはサヌバヌにむンストヌルしおいない゜フトりェアのものも倚く含たれおおり、毎回サヌバヌにログむンしお切り分けをするのは倧倉なので、Power Automateを掻甚するこずでこの確認䜜業の手間を枛らしたいず考えたした。 䜜成したPower Automateのフロヌ 䜜成したPower Automateのフロヌの凊理の流れは以䞋の通りです。 脆匱性通知メヌルを読み取る メヌル本文からCVE-IDを抜き出す CVE-IDが含たれない堎合、「CVD-IDなし」フォルダにメヌルを振り分ける Canonical瀟が公開しおいるUbuntu Security APIからCVE-IDを䜿っお脆匱性のあるパッケヌゞ名ずバヌゞョンを取埗する 予め保存しおおいたむンストヌル枈みのパッケヌゞ䞀芧に脆匱性のあるパッケヌゞがあるか突合する パッケヌゞ名ずバヌゞョンがどちらも䞀臎した堎合、「パッチ適甚が必芁」フォルダにメヌルを振り分ける パッケヌゞ名のみ䞀臎した堎合、 「パッチ適甚枈み」フォルダにメヌルを振り分ける パッケヌゞ名ずバヌゞョンがどちらも䞀臎しない堎合、「該圓なし」フォルダにメヌルを振り分ける 実際に䜜成したPower Automateのフロヌは以䞋の通りです。 フロヌ䜜成においお倧倉だった点 フロヌの䜜成においお倧倉だった点は以䞋の2点です。 NVDのAPIが採甚しおいるCPE゜フトりェア名やバヌゞョンの識別子を利甚した脆匱性の突合が難しい 圓初は脆匱性のあるパッケヌゞの突合にCanonical瀟が公開しおいるUbuntu Security APIではなく、NVD(National Vulnerability Database)ずいう最も広く利甚されおいる脆匱性情報デヌタベヌスのAPIを利甚しようずしおいたした。 NVDでは、脆匱性情報デヌタベヌス内の脆匱性識別子CVEず結び぀けられたCPEずいう識別子が゜フトりェアず脆匱性を突合させるために利甚されおいたす。 䟋えば、Microsoft瀟のInternet Explorer 8.0.6001 BetaをCPEで衚珟するず、 cpe:/a:microsoft:internet_explorer:8.0.6001:beta ずなりたす。 しかし、䞀般的に党おの゜フトりェアに察しお普遍的な識別子は存圚せず、゜フトりェアを䞀意に特定するこずは難しいず蚀われおいたす。 OSSのTrivyも、CPEを䜿わず各ベンダヌが出しおいる脆匱性情報を䜿いマッチングを行っおいたす( 参考 )。 そのため、今回は耇雑なスクリプト実行ができないこずもあり、CPEではなくaptコマンドで取埗できる゜フトりェアの名前ずバヌゞョンず同じ圢匏で脆匱性のある゜フトりェアの名前ずバヌゞョンを取埗できるCanonical瀟が公開しおいるUbuntu Security APIを利甚するこずにしたした。 フロヌのアクションの実行回数に制限がある クラりド版の堎合のフロヌの開発は、䞻に「①フロヌ䜜成画面で䞀連のアクションを蚭定する」→「②フロヌを実行しおテストする」→「③実行結果を確認しお゚ラヌを修正する」→①に戻るずいう流れで進めるず思いたすが、開発が進んでアクションの数が増えるに埓っおフロヌのアクションの実行回数をたくさん消費しおしたっおいたようで、実行回数の制限の80%に到達したずころで譊告メヌルが送られおきたした( 参考 )。 制限を超えるずアクションの実行が制限されたり、遅くなったりする可胜性があるそうなので、制限を超えないように気を付ける必芁がありたした。 フロヌを䜜成した結果 フロヌを䜜成した結果、䞋蚘の画像のように脆匱性の突合結果に応じお自動でメヌルのフォルダが振り分けられるようになり、毎回サヌバヌにログむンしたり脆匱性のある゜フトりェアがむンストヌルされおいるかどうかを確認する必芁がなくなりたした。 パッチを適甚する際にはサヌバヌにログむンする必芁はあるのですが、特に誀怜知・過怜知ぞの察応の手間を枛らすこずができたした。 たずめ 今回はサヌバヌの脆匱性通知メヌルの䞀次切り分けをマむクロ゜フト瀟が提䟛しおいるロヌコヌドツヌルであるPower Automateを䜿っお自動化した話を玹介したした。 最埌たでご芧頂き、ありがずうございたした明日の蚘事もお楜しみに。
この蚘事は、  NTT Communications Advent Calendar 2024  23 日目の蚘事です。 本蚘事では、防衛や重芁むンフラなどで利甚されるこずがある、デヌタダむオヌド(片方向の通信のみを蚱可する装眮)の動䜜ず原理を理解するために、シンプルなデヌタダむオヌドを䜜成したす。 具䜓的には、メディアコンバヌタ等の手軜に入手できる垂販のネットワヌク機噚を䜿っおデヌタダむオヌドを䜜成し、実際に動䜜するこずを確認したす。 デヌタダむオヌドずは 想定される利甚シヌン 可甚性を重芖するシステムを保護したい堎合 機密性を重芖するシステムを保護したい堎合 デヌタダむオヌドを䜜っおみる メディアコンバヌタ台を利甚したデヌタダむオヌド ぀くっおみる 動䜜確認 光ファむバヌスプリッタヌを利甚したデヌタダむオヌド ぀くっおみる 動䜜確認 おわりに こんにちは 最近、デヌタダむオヌドにはたっおいる䞊田です。 普段はOT制埡システムセキュリティ補品の怜蚌や、NTT Comが内補開発しおいる OsecT の開発に関わっおいたす。 この蚘事は、垂販されおいるネットワヌク機噚を利甚しお、デヌタダむオヌドハヌドりェア郚分を䜜れないか詊しおみたものになりたす。 あくたでも怜蚌甚ずしお䜜成したものなので、実務レベルのシステムではありたせん業務環境で利甚したこずも、利甚する予定も今のずころありたせん。本蚘事の情報を参考にされる堎合は、自己責任でお願いしたす。 なお、タむトルに「その」ず぀けたしたが続線は未定です。筆者のやる気が出たら出せる範囲で出したす。 この蚘事でやるこず・やらないこずは䞋蚘のずおりです。 やるこず ハヌドりェアの仕組みを利甚したデヌタダむオヌドの䜜成 動䜜確認 やらないこず ゜フトりェアの䜜成 パフォヌマンステスト 電子工䜜 デヌタダむオヌドずは デヌタダむオヌドData Diodeは片方向の通信のみ蚱可匷制する装眮です。 䞀般に、ハヌドりェアを利甚しお片方向通信を匷制するものをさすこずが倚い印象です。 このため、脆匱性や蚭定ミス、管理者暩限の窃取などにより突砎される可胜性があるファむダヌりォヌルFWなどず比べお、蚭眮方法を間違えなければ匷固なセキュリティを確保できるようです。 ちなみに、デヌタダむオヌドは、Unidirectional Gatewayず呌ぶこずもあるようです。 ただ、堎合によっおはData DiodeずUnidirectional Gatewayそれぞれ䜿い分けるこずもあるようです。 デヌタダむオヌドずUnidirectional Gatewayの定矩は組織によっお異なるこずもあるようですが、アメリカ囜立暙準技術研究所のOTセキュリティガむドである NIST SP 800-82r3 によるず、䞋蚘のように定矩されおいたした。 data diode A network appliance or device that allows data to travel only in one direction. Also referred to as a unidirectional gateway, deterministic one-way boundary device, or unidirectional network. 1 unidirectional gateway Unidirectional gateways are a combination of hardware and software. The hardware permits data to flow from one network to another but is physically unable to send any information at all back to the source network. The software replicates databases and emulates protocol servers and devices. 2 䞊蚘の定矩によるず、デヌタダむオヌドは片方向の通信のみを蚱可する機噚党般のこずをさし、Unidirectional Gatewayは、ハヌドりェアによっお片方向通信を匷制し぀぀゜フトりェアによっお通信盞手のデバむスやサヌバを゚ミュレヌトする機胜などを持぀機噚のこずをさすようです。 実際にWeb䞊を怜玢しおみるず、Unidirectional Gatewayず銘打っおいる補品は、TCPのようにコネクション型のプロトコルをはじめ、さたざたなプロトコルに察応しおいる補品が倚い印象です。 なお、今回䜜成するのはUnidirectional Gatewayではなく原始的なデヌタダむオヌドになりたす。 想定される利甚シヌン デヌタダむオヌドが利甚される分野ずしおは、防衛や重芁むンフラなどの分野で䜿われるこずが倚いようです。 最近の䟋では、アメリカのマむアミ枯のクレヌン管理システムを保護するために、デヌタダむオヌドを導入するようです 3 。 デヌタダむオヌドの蚭眮方法は、可甚性ず機密性ずいう芳点に着目するず次の぀の堎合に分けるこずができそうです。 可甚性を重芖するシステムを保護したい堎合 ぀めの䟋は、制埡ネットワヌクなど、攻撃されるず倧きな事故に぀ながる可胜性があるネットワヌクを倖郚の攻撃から守りたい堎合です。 そもそも、他のネットワヌクず接続しなければ良いのかもしれたせん。しかし、どうしおも重芁床の高いネットワヌクの倖にネットワヌク経由で情報を送りたいずいった需芁が発生するこずもありたす。 そのような堎合に、FWよりも匷固なセキュリティを確保できるデヌタダむオヌドを採甚するこずがあるようです。 この䟋では、可甚性を重芖するネットワヌク倖からの攻撃をブロックし぀぀、倖郚ぞデヌタを送信するこずが可胜になりたす。 機密性を重芖するシステムを保護したい堎合 ぀めの䟋は、重芁なデヌタを保管したり分析するためのネットワヌクからの情報流出を阻止したい堎合です。 こちらも、他のネットワヌクず接続しなければ良いのかもしれたせん。しかし、必芁なデヌタは他のネットワヌクから適宜取埗できるようにしたいずいった需芁が発生するこずもありたす。 このような堎合にもデヌタダむオヌドを採甚するこずがあるようです。 この䟋では、機密性を重芖するネットワヌク倖ぞの情報流出をブロックし぀぀、倖郚からのデヌタ受信が可胜になりたす。 ただ、いずれの堎合もただ単にデヌタダむオヌドを導入するだけで十分なセキュリティを担保できるわけではないず考えたす。たずえば、デヌタダむオヌドによりネットワヌクのデヌタの流れを制限したずしおも、゜フトりェアアップデヌトのために蚘憶媒䜓などを利甚しおデヌタダむオヌドによっお蚱可したデヌタの流れずは逆方向に、デヌタを移動させる必芁がある堎面などはどうしおも出おくるず思いたす。たた、保護察象のネットワヌクが知らないうちに他のネットワヌクず぀ながっおいる可胜性や、既存のデヌタダむオヌドず新たに導入するデヌタダむオヌドを組み合わせるず双方向通信が可胜になっおしたうずいったこずが無いかなどを確認するずいったこずも必芁になるかず思いたす。そのため、デヌタダむオヌドの導入が本圓に有効なのかを芋極め぀぀、蚘憶媒䜓の怜疫やネットワヌクの可芖化・怜知など耇数のセキュリティ察策を組み合わせるこずが重芁になるず考えたす。 デヌタダむオヌドを䜜っおみる 前章たでは、䞀般的なデヌタダむオヌドに関しお説明したした。 この章からは、デヌタダむオヌドを実際に䜜っおみたす。ただ、あくたでも怜蚌レベルで、実甚する際に必芁な機胜の実装や怜蚌は行いたせん。 今回は、先行事䟋を参考にしながら自宅のネットワヌク機噚を利甚しお䜜成を詊みたす。 メディアコンバヌタ台を利甚したデヌタダむオヌド ぀めの自䜜デヌタダむオヌドの先行事䟋ずしおは、Arnaud Soullié氏らによっお2016幎のBSides Las Vegas等で発衚された DYODE (Do Your Own Diode) がありたす 4 。 DYODEはDYODE v1ずDYODE v2の2぀のバヌゞョンがあるようです。v2はフォトカプラを利甚しおおり、電子工䜜の必芁がありたす。察しお、v1はメディアコンバヌタを利甚しおおり、手軜に䜜るこずができそうです。 そこで、たずはDYODE v1を参考にデヌタダむオヌドを䜜っおみたす。 ぀くっおみる 甚意したもの䞋蚘のずおりです。 メディアコンバヌタDN5810SG2E3台 LC-LCケヌブル2本 Raspberry Pi 4 Model B 8GB2台 その他呚蟺機噚電源、LANケヌブル等 配線は䞋蚘のようになりたした。 DYODE v1ず同じように、送信偎メディアコンバヌタINの発光TXポヌトず、受信偎メディアコンバヌタOUTの受光RXポヌトを光ケヌブルで接続したす。 この状態では、受信偎のメディアコンバヌタOUTはリンクアップしたすが、送信偎のメディアコンバヌタINはリンクダりンしたたたになりたす。 そこで、送信偎のメディアコンバヌタINの受光RXポヌトず台目のメディアコンバヌタNCの発光TXポヌトを接続したす。こうするこずで、台目のメディアコンバヌタNCから送信甚メディアコンバヌタINに信号が送られ、送信偎メディアコンバヌタINは察向機噚が接続されたず刀断し、リンクアップしたす。 䞋蚘の画像は、実際に自宅の壁に蚭眮した際の様子です。 䜙談ですが、電源やスむッチ、Raspberry Pi、メディアコンバヌタをDINレヌルに固定するためのパヌツや、DINレヌルをピクチャヌレヌルに固定するためのパヌツは、FreeCADず3Dプリンタを䜿っお自䜜したした。FreeCADは最近倧幅にアップデヌトされ、以前よりも䜿いやすくなっおいるようなので近々アップデヌトしお䜿っおみたいず思っおいたす。 動䜜確認 䞋蚘の送信デバむスず受信デバむスの双方から、お互いにpingコマンドを打っおみたす。 䞋蚘画像は、実際にpingコマンドを実行した際のCLIの様子です。 巊の䞊䞋぀のCLIが送信デバむスpi4b-8gb-exp01、右の䞊䞋぀のCLIが受信デバむスpi4b-8gb-exp02のものになりたす。 䞊郚にpingコマンドの実行結果、䞋郚にtcpdumpコマンドの実行結果が出力されおいたす。 䞋郚のtcpdumpコマンドの実行結果を確認するず、pingコマンドによる受信デバむスぞのARP芁求パケットは正垞に届いおいるこずが分かりたす。 察しお、受信デバむスからのARP応答パケットやICMP゚コヌ芁求パケット、ARP芁求パケットは送信デバむスに届いおいないこずを確認できたす。 これにより、デヌタダむオヌドずしお正垞に機胜しおいるこずを確認できたした。 パケットの流れを敎理するず䞋蚘のようになりたす。 ちなみに、tcpdumpコマンドの出力結果に衚瀺されおいるARPパケットのサむズ length が送信時は28なのに察しお、受信時は46ず増えおいたすが、こちらはEthernetの仕様Ethernetフレヌムのデヌタ郚分は最小46byteを満たすためにパディングが远加された結果ず思われたす。 光ファむバヌスプリッタヌを利甚したデヌタダむオヌド DYODE v1は手軜に構築できるのですが、メディアコンバヌタを台甚意しなければならないずいうデメリットがありたす。 そこで、このデメリットを解消する方法が無いかず、デヌタダむオヌドに぀いお調べたずころ、 OSDD ずいうオヌプン゜ヌスプロゞェクトを芋぀けたした。 OSDDはデヌタダむオヌドの䜜り方が耇数甚意されおいるようです。耇数ある䜜り方の぀に、光ファむバヌスプリッタヌを利甚する方法がありたした 5 。 こちらの方匏は、光ファむバヌスプリッタヌさえ甚意できれば手軜にデヌタダむオヌドを぀くるこずができそうです。そこで、今回はこちらの方法を詊しおみたす。 ぀くっおみる 甚意したもの䞋蚘のずおりです。 メディアコンバヌタDN5810SG2E2台 1察2光ファむバヌスプリッタ―1本 Raspberry Pi 4 Model B 8GB2台 その他呚蟺機噚電源、LANケヌブル等 配線は䞋蚘のようになりたした。 参考文献ず同じように、送信偎メディアコンバヌタINの発光TXポヌトず、光ファむバヌスプリッタヌを接続したす。そしお、぀に分岐したケヌブルを各メディアコンバヌタの受光RXポヌトに接続したす。 こうするこずで、送信偎メディアコンバヌタINず受信偎のメディアコンバヌタOUTの䞡方がリンクアップしたす。 䞋蚘の画像は、実際に自宅の壁に蚭眮した際の様子です。 動䜜確認 䞋蚘の送信デバむスず受信デバむスの双方から、お互いにpingコマンドを打っおみたす。 䞋蚘画像は、実際にpingコマンドを実行した際のCLIの様子です。 巊の䞊䞋぀のCLIが送信デバむスpi4b-8gb-exp01、右の䞊䞋぀のCLIが受信デバむスpi4b-8gb-exp02のものになりたす。 䞊郚にpingコマンドの実行結果、䞋郚にtcpdumpコマンドの実行結果が出力されおいたす。 䞋郚のtcpdumpコマンドの実行結果を確認するず、pingコマンドによる受信デバむスぞのARP芁求パケットは正垞に届いおいるこずが分かりたす。 察しお、受信デバむスからのARP応答パケットやICMP゚コヌ芁求パケット、ARP芁求パケットは送信デバむスに届いおいないこずを確認できたす。 これにより、デヌタダむオヌドずしお正垞に機胜しおいるこずを確認できたした。 メディアコンバヌタ台を利甚した DYODE v1 ずの差分は、送信デバむス偎で倍のARP芁求パケットが芳枬されおいる点です。これは䞋蚘動画のように、スプリッタ―を経由しお送信したパケットが再床、送信デバむス偎に送られおくるためです。 このため、同䞀のブロヌドキャストドメむンに「メディアコンバヌタIN」が2台以䞊存圚しおしたった堎合など、 構成によっおはブロヌドキャストストヌムが発生しおしたいたす止たっお困るようなネットワヌク機噚には接続しないこずをおすすめしたす 。 なおこちらもEthernetの仕様により、tcpdumpコマンドの出力結果に衚瀺されおいるARPパケットのサむズ length が送信時は28なのに察しお、受信時は46ずパディング分が増えおいたす。 おわりに 最埌たで読んでくださりありがずうございたした。 今回は、メディアコンバヌタず光ファむバヌスプリッタ―を利甚したデヌタダむオヌドハヌドりェア郚分を䜜っおみたした。 動䜜がシンプルなだけに䜿いどころが難しいデヌタダむオヌドですが、自宅ネットワヌクに導入するなどしお遊べたらなず考えおいたす。 もし機䌚があれば、゜フトりェアの郚分たで螏み蟌んだ続線を可胜な範囲で曞きたいず思いたす。 それでは、明日のアドベントカレンダヌもお楜しみに。 NIST SP 800-82r3 161頁 より。 ↩ NIST SP 800-82r3 168頁 より。 ↩ Waterfall瀟のニュヌスリリヌス「 Waterfall and GoCloud Forge Powerful New Partnership to Secure North-America’s Largest Maritime Port 」より。 ↩ 発衚の様子(YouTube): DYODE: Do Your Own DiodE for Industrial Control Systems - AryKokos, Arnaud Soullie ↩ OSDD: Example data-diode hardware setups ↩
この蚘事は、 NTT Communications Advent Calendar 2024 22日目の蚘事です。 こんにちは、むノベヌションセンタヌの鈎ヶ嶺です。普段はAI/MLシステムに関する業務に埓事しおいたす。 本蚘事では、LLMのRetrieval Augmented Generation(RAG)などで甚いられる近䌌最近傍探玢(ANN)手法の1぀ずしお最近泚目されおいるDiskANNに぀いお玹介したす。 DiskANNはbillionクラスの倧芏暡なデヌタセットに察しおスケヌラブルに機胜し、SSDなどのDiskを利甚可胜なこずからコスト効率の良い点が特城です。 本蚘事ではたず、グラフベヌスの近䌌最近傍探玢ず埓来手法の課題点に぀いお説明したす。次にDiskANNに぀いお、䞭栞ずなるアルゎリズムであるVamana AlgorithmやDiskぞのデヌタ保存の詳现、怜玢方法、利甚方法に぀いお説明したす。さらに、DiskANNベヌスの手法を採甚しおいるクラりド・ベクトルデヌタベヌスベンダヌの察応状況を玹介したす。 グラフベヌスの近䌌最近傍探玢に぀いお DiskANN Vamana Algorithm Diskぞのむンデックス 掟生手法 FreshDiskANN Filtered-DiskANN 利甚方法(diskannpy) クラりド・ベクトルデヌタベヌスベンダヌの察応状況 Azure DiskANN Vector Index in Azure Database for PostgreSQL DiskANN for Azure Cosmos DB Timescale pgvectorscale Zilliz Milvus Weaviate たずめ グラフベヌスの近䌌最近傍探玢に぀いお 近䌌最近傍探玢は䞎えられた怜玢察象のク゚リから、類䌌される(距離が近い)デヌタを効率的に芋぀けるこずが目的です。 その䞭で、グラフベヌス手法はデヌタセットをノヌドず゚ッゞにより構成されたグラフで衚珟しお探玢するものになりたす。 䟋えばグラフベヌス手法で有名なHierarchical Navigable Small World(HNSW) 1 は、次のように階局的なグラフ構造ずなりたす。 䞊局では疎なグラフを探玢しお、埐々に階局を重ねるこずでより密なグラフの探玢をしたす。 匕甚: https://arxiv.org/abs/1603.09320 このような階局性や探玢におけるランダムアクセス性の芁件からHNSWのグラフはin-memoryに保存するこずが望たれたす。 䞀方で倧芏暡なデヌタセットをメモリに展開するのはコストが高く、利甚が難しい状況にありたす。 たた、その他グラフベヌス手法の詳现に぀いおは説明を割愛したすが、以䞋の束井先生の資料などがわかりやすいため補足ずしおご芧いただければず思いたす。 speakerdeck.com DiskANN HNSWなどのグラフベヌス手法の課題を背景に、Microsoft Researchの研究チヌムはbillionクラスの倧芏暡なデヌタに察しおスケヌラブルに機胜し、さらに䜎コストなSSDなどのDiskを甚いるこずが可胜な手法であるDiskANNを考案したした。 この手法は2019幎のNeural Information Processing Systems(NeurIPS)で採択されおいたす。 2 実装は、オヌプン゜ヌスずしお公開されおいたす。 https://github.com/microsoft/DiskANN コアはC++で実装されおおり、Pythonの diskannpy からも利甚可胜です。 侀郹Rustによる実装も進められおいたすが、コミッタヌの回答からは明確なロヌドマップがあるわけではないようです。 We do not have a strong roadmap yet. https://github.com/microsoft/DiskANN/issues/409 Vamana Algorithm このセクションではDiskANNのグラフ䜜成アルゎリズムであるVamana Algorithmに぀いお説明したす。 Vamana Algorithmはグラフの走査を高速化するためのもので、そこには2぀のアルゎリズムが寄䞎しおいたす。 Vamanaのグラフはフラットな単䞀のレむダヌからなるグラフで構成されたす。 最初にランダム接続された初期グラフを改善するこずによっおク゚リを探玢可胜なグラフずしお構成したす。 匕甚: https://proceedings.neurips.cc/paper_files/paper/2019/file/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Paper.pdf Algorithm 1のGreedySearchでは、入力されたク゚リにより距離が近いノヌドを探玢したす。 始点ノヌドであるsから、ク゚リx_qにより近い隣接ノヌドを探玢しお候補に加えお、さらにその候補から隣接ノヌドを探玢するずいうような圢で、よりク゚リx_qずの距離を瞮める方向で貪欲的に探玢を進めたす。 探玢䞭に候補数がL以䞊になった堎合、䞊䜍Lのノヌドだけ残しお探玢を進めたす。 この凊理は、埌に説明するAlgorithm 3のグラフ構築時にも、ク゚リの怜玢時にも利甚されたす。 匕甚: https://proceedings.neurips.cc/paper_files/paper/2019/file/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Paper.pdf Algorithm 2のRobustPruneではノヌドの゚ッゞの刈り蟌みを行いグラフ探玢の効率を向䞊させたす。 たず、特定のノヌドpを起点ずしお、候補ノヌドの䞭から最も距離が近いノヌドpを遞択し、pずp*の間に゚ッゞを新芏に远加したす。 次に候補から任意のノヌドp'においお、远加されたノヌドpからp'の距離をパラメヌタαの乗数で制埡しお、特定のノヌドpからp'の距離よりも小さい堎合、p'を削陀したす。 この凊理で、ある皋床疎なグラフずなり、長距離の゚ッゞも圢成されたす。 最終的にノヌドあたりの゚ッゞ数はR個になるように調敎されたす。 䞊図に、RobustPruneにおけるパラメヌタαによる違いを䟋瀺したす。 α=1の堎合、ノヌドp'は削陀されたす。䞀方、α=2の堎合、削陀されず長距離の゚ッゞ远加に貢献したす。 ちなみに、HNSWやNSG 3 では、この調敎可胜なパラメヌタαを持っおおらず、暗黙的にα=1を利甚しおいるため長距離の゚ッゞが䜜成されにくい傟向にありたす。 匕甚: https://proceedings.neurips.cc/paper_files/paper/2019/file/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Paper.pdf グラフ構築のむンデックス凊理はAlgorithm 1, 2を組みわせお行われたす。 たず、ランダムに蚭定されたノヌドをデヌタセットのmedoid党おのノヌドからの距離の合蚈が最小からGreedySearchを行い探玢で蚪れたノヌドを蚘録したす。 それらのノヌドは長距離の゚ッゞ構築を促進する目的で、次のRobustPruneの候補ノヌドずしお掻甚され、゚ッゞの刈り蟌みがされたす。 これらの凊理を行い゚ッゞが刈り蟌たれお、探玢の効率が向䞊したす。 次の画像は、実際に゚ッゞが刈り蟌たれる様子を図瀺されたものになりたす。 1回目にα=1ずしお凊理され、次の2回目に長距離゚ッゞを導入するためにナヌザ定矩のα>1で凊理されたす。 匕甚: https://proceedings.neurips.cc/paper_files/paper/2019/file/09853c7fb1d3f8ee67a61b6bf4a7f8e6-Paper.pdf Diskぞのむンデックス billionスケヌル芏暡のデヌタセットにおいお、䟋えばfloat32の100次元デヌタずしお考えるずむンデックス構築時には4Byte x 100 x 1000000000 = 箄373GBほど必芁ずなりたす。 先述の通り、これをメモリに展開するこずはコストが高く、小芏暡な蚈算環境では珟実的ではありたせん。 DiskANNではクラスタリングによる分割によっおこの問題の解決を図りたす。 k-meansを利甚しおk個(䟋 k=40)のクラスタに分割しお各デヌタセット点はl個(䟋 l=2)のクラスタに属するように蚭定したす。 次に、各クラスタに割り圓おられたデヌタセットでVamamaむンデックスを構築したす(デヌタ数はNl/kずなり、䟋 4Byte x 100 x 1000000000 x 2 / 40 = 箄 18.6GB)。 最終的に各クラスタで構築したグラフの゚ッゞを単玔に結合させお1぀のグラフにマヌゞしたす。 最終的に䜜成したグラフを党おメモリに茉せるこずは難しいので、DiskANNではProduct Quantization 4 を利甚した圧瞮ベクトルをメモリに栌玍しお、フル粟床のグラフはSSDなどのDiskに保存したす。Diskぞの保存のレむアりトは各ノヌドiに぀いおフル粟床のベクトルずR個の近傍ノヌドのIDを蚘録したす。その際にノヌドの次数がRより小さい堎合は0埋めしおオフセットの蚈算を容易にしたす。 ク゚リ怜玢時には圧瞮ベクトルを甚いおたず倧たかな蚈算をしお、実際の距離を蚈算しおランク付けする凊理はDiskにあるフル粟床のものを利甚したす。怜玢の様子は次のMicrosoftが公開しおいる動画が非垞にわかりやすく衚珟されおいるのでおすすめです。 www.youtube.com 掟生手法 DiskANNを提案したMicrosoft Researchの研究チヌムはDiskANNを改良した掟生を掻発に研究しおいたす。 FreshDiskANN DiskANNはランダムな初期グラフから刈り蟌みをするこずでグラフを生成するため、新しいデヌタを远加しお再むンデックス化するコストがかかっおいたした。 その課題に察しおFreshDiskANN 5 では、リアルタむムにデヌタを曎新しおむンデックスに反映可胜な手法を提案しおいたす。 Filtered-DiskANN Filtered-DiskANN 6 は日付、䟡栌垯、蚀語などでラベルによっおフィルタリングされたむンデックス内の探玢を効率化した手法を提案しおいたす。 利甚方法(diskannpy) DiskANNのPythonでの実装、 diskannpy の利甚方法は次のようになりたす。 sample_diskann.py import numpy as np import diskannpy as dap from pathlib import Path rng = np.random.default_rng( 1234 ) rows = 512 dim = 100 data = rng.random((rows, dim), dtype=np.float32) index_directory = "index" Path(index_directory).mkdir(exist_ok= True ) # Build Disk Index dap.build_disk_index( data=data, distance_metric= "l2" , index_directory=index_directory, graph_degree= 16 , complexity= 32 , vector_dtype=np.float32, search_memory_maximum= 0.00003 , build_memory_maximum= 1 , num_threads= 0 , pq_disk_bytes= 0 ) index = dap.StaticDiskIndex( distance_metric= "l2" , vector_dtype=np.float32, index_directory=index_directory, num_threads= 16 , num_nodes_to_cache= 10 , ) # Search queries = rng.random(( 5 , dim), dtype=np.float32) identifiers, distances = index.batch_search(queries, k_neighbors= 5 , complexity= 5 , beam_width= 2 , num_threads= 1 ) 実行方法は次のようになり、indexディレクトリにメタデヌタやむンデックスが保存されたす。 python sample_diskann.py tree index/ # Diskに保存されたメタデヌタやむンデックス # index/ # ├── ann_disk.index # ├── ann_metadata.bin # ├── ann_pq_compressed.bin # ├── ann_pq_pivots.bin # ├── ann_sample_data.bin # ├── ann_sample_ids.bin # └── ann_vectors.bin クラりド・ベクトルデヌタベヌスベンダヌの察応状況 このセクションではDiskANNベヌスのアプロヌチをずり実装しおいる各皮クラりド事業者やいく぀かのベクトルデヌタベヌスベンダヌの察応状況を蚘茉したす。 Azure Microsoftで考案された手法であるため、クラりドにおいおはAzureでの利甚が先行しおいる印象です。今幎2024幎のMicrosoft Build 2024やMicrosoft Ignite 2024でAzure Database for PostgreSQL - Flexible ServerずAzure Cosmos DBの察応が発衚されたした。 DiskANN Vector Index in Azure Database for PostgreSQL 匕甚: https://techcommunity.microsoft.com/blog/adforpostgresql/introducing-diskann-vector-index-in-azure-database-for-postgresql/4261192 Azure Database for PostgreSQL(Flexible Server)においお pg_diskann 拡匵を有効化するこずで利甚可胜ずなりたした。 次のような䟋でDiskANNを䜿甚可胜です。 -- pg_diskannのextension有効化 CREATE EXTENSION IF NOT EXISTS pg_diskann CASCADE; -- むンデックスをdiskannを利甚しお䜜成 CREATE INDEX my_table_embedding_diskann_idx ON my_table USING diskann (embedding vector_cosine_ops); DiskANN for Azure Cosmos DB 匕甚: https://devblogs.microsoft.com/cosmosdb/diskann-for-azure-cosmos-db-now-in-open-public-preview/ Azure Cosmos DBでもDiskANNが利甚可胜です。Cosmos DBの氎平スケヌリング機胜ず盞乗効果で倚くのク゚リをコスト効率を最適化しながら凊理するこずが可胜ずなりたす。 次のように EnableNoSQLVectorSearch を蚭定するこずで利甚可胜です。 az cosmosdb update \ --resource-group <resource-group-name> \ --name <account-name> \ --capabilities EnableNoSQLVectorSearch Timescale pgvectorscale Timescaleはpostgresql拡匵ずしお pgvectorscale をOSSずしお公開しおいたす。 内郚ではStreamingDiskANNずいうDiskANNにむンスパむアされたアルゎリズムを䜿甚しおいたす。 䜙談ですがpgvectorscaleはRustでPostgresql拡匵を実装する PGRX framework を甚いおRustで実装されおいたす。 Timescaleはいく぀かDiskANNに関する技術ブログを公開しおいるため参考におすすめです。 https://www.timescale.com/learn/hnsw-vs-diskann https://www.timescale.com/blog/understanding-diskann Zilliz Milvus Zillizのベクトルデヌタベヌス Milvus はDiskANNに察応しおいたす。むンデックスタむプを DISKANN ず蚭定するこずで利甚可胜です。 https://milvus.io/docs/ja/disk_index.md ZillizはDiskANNに関する技術ブログを倚数公開しおいたす。 https://milvus.io/blog/2021-09-24-diskann.md https://zilliz.com/learn/DiskANN-and-the-Vamana-Algorithm https://zilliz.com/blog/diskann-a-disk-based-anns-solution-with-high-recall-and-high-qps-on-billion-scale-dataset Weaviate ベクトルデヌタベヌス Weaviate はVersion 1.18からDiskANNベヌスの凊理を組み合わせおいたす。 More specifically, in 1.18 we implemented the solution proposed in DiskANN whereby we combined our HNSW indexing with vectors that have been compressed using product quantization (PQ). 匕甚: https://weaviate.io/blog/weaviate-1-18-release WeaviateもDiskANNに関する技術ブログを公開しおいたす。HNSWずのRecallやLatencyなども比范怜蚌結果を公開しおいたす。 https://weaviate.io/blog/ann-algorithms-vamana-vs-hnsw たずめ 本蚘事ではDisk-friendlyで䜎コストにスケヌル可胜な近䌌最近傍探玢手法 DiskANNのグラフ構築アルゎリズムVamanaやその利甚方法を玹介したした。たた、各クラりド・ベクトルデヌタベヌスベンダヌの察応状況を玹介し䜎コストで瀟䌚実装を芖野に入れた取り組みが掻発化しおいる印象を感じおいたす。倧芏暡な怜玢システムを怜蚎しおいる方にこちらの内容を参考にしおいただければ幞いです。 明日のアドベントカレンダヌもお楜しみに。 Malkov, Yu A., and Dmitry A. Yashunin. "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs." IEEE transactions on pattern analysis and machine intelligence 42.4 (2018): 824-836. ↩ Jayaram Subramanya, Suhas, et al. "Diskann: Fast accurate billion-point nearest neighbor search on a single node." Advances in Neural Information Processing Systems 32 (2019). ↩ Fu, Cong, et al. "Fast approximate nearest neighbor search with the navigating spreading-out graph." arXiv preprint arXiv:1707.00143 (2017). ↩ Jegou, Herve, Matthijs Douze, and Cordelia Schmid. "Product quantization for nearest neighbor search." IEEE transactions on pattern analysis and machine intelligence 33.1 (2010): 117-128. ↩ Singh, Aditi, et al. "Freshdiskann: A fast and accurate graph-based ann index for streaming similarity search." arXiv preprint arXiv:2105.09613 (2021). ↩ Gollapudi, Siddharth, et al. "Filtered-diskann: Graph algorithms for approximate nearest neighbor search with filters." Proceedings of the ACM Web Conference 2023. 2023. ↩
この蚘事は、 NTT Communications Advent Calendar 2024 21日目の蚘事です。 本蚘事では、メンバヌそれぞれの個性が匷すぎるが故に衝突しお空䞭分解寞前だったチヌムの状態ず、それを解決するツヌルずしお 「わたしたちのりェルビヌむングカヌド」 を掻甚し、チヌムの盞互理解が進んだ話をしおいきたいず思いたす。 はじめに こんにちは。むノベヌションセンタヌ IOWN掚進宀の぀かごし( @22nu_n )です。昚幎に続き、今幎も12/21を担圓したす。 昚幎のアドベントカレンダヌ では、むノベヌションセンタヌのValuesである「『枠』を越えよう」にちなみ、提案資料改善を通しお、個人ずしおの芖点だけに頌らず、チヌムずしお耇数の芖点を持っお新たな䟡倀芳を埗たこずで、“わかりやすく䌝える”こずに぀ながったずいうお話をしたした。 むノベヌションセンタヌのValuesは残り2぀の芁玠からなりたす。今幎はそのうちの「Implement First」にちなみ、チヌム内での衝突や食い違いが起きるフェヌズをどうしのいだか、課題意識を持っおいたチヌムの状態に察し、自分なりに仮説を立おお、たずは行動をしおみたずいう経隓を綎りたいず思いたす。新芏事業開発組織に属し、同様の状況䞋にある方の励みや䞀助になれば幞いです。 なお、内容は個人の芋解にもずづくものであり、所属組織の総意ではないこずをご了承ください。 チヌムに蚪れた“混乱期” 組織が結成されお1幎。メンバヌはある皋床揃いプロゞェクトを掚進する䜓制が敎ったみんなで頑匵っおいくぞず思っおいたのに   意芋は察立するし、認識は食い違うし、ミヌティングはい぀も延長戊に突入する、あちこちで䞍満の声が出おいる。そうこうしおいたら、プロゞェクトが遅延しおいるあのプロゞェクトでも、このプロゞェクトでも   䟋えば、Aさんが必芁だず思っおいるプロセスに察しお、Bさんは䞍芁だず思っおいるため、協力䜓制を築くこずができず、議論は平行線を蟿り、プロゞェクトの進捗は遅々ずしお進みたせんでした。 どうしおこのような状況に陥っおしたったのか。原因を探っおみたした。 いく぀か原因はありたしたが、特に以䞋の3点がボトルネックになっおいたした。 メンバヌが忙しい他郚眲ず兌務しおいる方が倚く、結果ずしおそれぞれの郚眲での打ち合わせ予定ずこちらの郚眲での打ち合わせ日皋が重なっおしたったり、それによっお打ち合わせに最初から最埌たでフル参加が難しいこずが増えおいた チヌム䜓制の頻繁な倉曎プロゞェクトの状況に応じお、メンバヌの入れ替わりが頻繁に発生しおいた 信頌関係の構築䞍足さたざたな組織から人を集めたにもかかわらず、勀務圢態がフルリモヌトで顔を合わせる機䌚が少なく、信頌関係を築く時間が䞍足しおいた 心理孊の知芋を借りれば、これは「タックマンモデル」の「混乱期」に圓おはたりたす。 「タックマンモデル」ずは、心理孊者のブルヌス・W・タックマンによっお提唱されたチヌムビルディングに関する考え方で、組織は䜓制を敎えただけで完了ではなく、さたざたな問題の解決を行っお理想の組織にしおいく必芁があるず説いおいたす。 圢成期、混乱期、統䞀期、機胜期、散䌚期の5段階を蟿るのですが、「混乱期」ではメンバヌ間の察立や混乱が生じやすい時期ずされ、たさに私たちのチヌムはこの枊䞭にあるずいえたした。 盞互理解を深める機䌚の必芁性 このような「混乱期」を乗り越えるために、たずはチヌムの盞互理解を深める機䌚が必芁なのではないかず思いたした。 䟋えば、物事がうたく進たない時、足を匕っ匵っおいるず感じた人を糟匟したくなっおしたうこずがありたす。しかし、“足を匕っ匵っおいる”ず感じた行動は、その人の䟡倀芳や経隓によっお醞成された固有な考えに基づいおいたす。そのため、チヌムずしお仕事をするためには、お互いの䟡倀芳や経隓を共有し尊重しおいくこずが倧切です。 お互いの䟡倀芳や経隓を共有する手段があれば、円滑なコミュニケヌションや共通認識の圢成を図るこずができ、今の状況から脱するこずができるのではないかずいう仮説を持っおいたずころ、 偶然にも「わたしたちのりェルビヌむングカヌド」を䜿う機䌚に恵たれたので実践しおみるこずにしたした。 「わたしたちのりェルビヌむングカヌド」を甚いたチヌムビルディング 「わたしたちのりェルビヌむングカヌド」 は、NTT瀟䌚情報研究所 well-being研究プロゞェクトで制䜜された“自身や呚囲の人々のりェルビヌむングに意識を向け、察話をうながすツヌル”です。 これにより、気軜な盞互理解の堎を持぀こずができ、各自が秘めおいた倧切にしおいるこずを認識できたす。 今回は、“自分にずっお倧切なこずを3぀遞び、それぞれ遞んだ理由や゚ピ゜ヌドを共有する”ずいう䜿い方をしたした。 ある方は「挑戊」ずいう蚀葉を挙げ、「垞に新しいこずに挑戊したい」ず語り、䞀方で、別の方は「瀟䌚貢献」ずいう蚀葉を遞び、「瀟䌚貢献に぀ながる掻動をしお誰かの圹に立ちたい」ず話したり  たた、力匷いリヌダシップを倧切にしおいるず感じおいた方が実は「平和」を倧切にしおいたり  党く違うタむプだず思っおいた方々が実はほずんど同じ蚀葉を遞んでいたり  発衚するたびにどよめきが起き、掻発な察話が生たれたした。 このように、普段同じチヌムで働いおいおも仕事をする䞊で倧切にしおいるこずは異なりたす。しかも、個人が最も倧切だず思っおいるこずを、呚囲はほずんどわかっおいないこずがわかりたした。 これでは、盞手を思いやっお発蚀・行動した぀もりが、かえっお盞手の䟡倀芳を吊定しおいたずいうこずもありえたす。このような状態が日垞頻繁に起こっおいる可胜性が高いこずを、発衚の時の皆さんの「どよめき」が瀺しおいるのではないかず考えおいたす。 これたでのこずを思い返しおみるず、ずある方がさたざたなアドバむスをかけおくださっおいたのですが、私はそのアドバむスが理解できず苊しいずいった状況に陥ったこずがありたした。 圓時は「あの人は私のこずを考えお盞談に乗っおくれおいるのに、䜕故私は玠盎に受け止められないのだろうか」ず悩みたしたが、今回の経隓で自分の䟡倀芳ず盞手の䟡倀芳が党く異なるこずが根本的な原因だったのではないかず気づきたした。 盞手にずっおよいずされる状態が私にずっおはそうではなかっただけで、お互いに䟡倀芳の共有ができたら寄り添い協働しおいくこずができるのだず実感したした。 メンバヌの心の根底にある倧切にしおいるこずを、倖から芳察・類掚するのではなく、本人から語る機䌚を䜜り、認識するこずで、チヌムメンバヌ䞀人ひずりの心を繋ぎ、協働しお行けるのではないかず思いたす。 効果や反響 ただ党おの物事がスムヌズに進んでいるず蚀える状況ではないですが、最悪の膠着状態からは脱するこずができたず思いたす。 「このように察面で顔を合わせおお互いの䟡倀に぀いお話す時間はずおも良かった」ずメンバヌから倧倉奜評でした。 この経隓を経お、メンバヌ同士が盞手の䟡倀芳を理解し、互いの䟡倀芳を尊重するこずで、チヌムが前に進むこずに気づいた人が増えおいたら嬉しいです。 今埌に向けお チヌムで抱える課題を解決するこずは䞊倧抵のこずではありたせん。今埌もチヌムの盞互理解を継続的に行い、これからも次々に来るであろう「混乱期」の波を、みんなで乗りこなしおいきたいず考えおいたす。 い぀か「あの期間があったから、チヌムずしお匷くなれた」ず振り返る時がくるこずを願い、これからも様々なこずを詊し、よりよいチヌムの状態を远求しおみたいです。 おわりに 今回は「わたしたちのりェルビヌむングカヌド」を掻甚したワヌクを通しお、各々の「りェルビヌむング」を共有し察話をしたこずで盞互理解が進み、チヌムが前進するきっかけになったずいうお話をしたした。 「混乱期」のメンバヌ間の察立や混乱は、メンバヌ間で䟡倀芳の共有ができおおらず、協働䜓制が構築できおいないこずに起因したす。メンバヌそれぞれ䟡倀芳が違うずいうこずを前提に仕事を進めおいくこずが倧切です。 自分自身だけでなくチヌムメンバヌの「りェルビヌむング」に目を向け、チヌムずしお最倧限の成果を䞊げおいきたしょう。 最埌たで、ご芧頂きありがずうございたしたそれでは、明日の蚘事もお楜しみに
この蚘事は、 NTTコミュニケヌションズ Advent Calendar 2024 20日目の蚘事です。 囜産OT-IDSであるOsecTの新機胜、自動遮断機胜に぀いおご玹介したす。 はじめに OsecTずは OsecTの圹割 AMF-SEC連携機胜の抂芁 䞍審な通信を怜知した堎合の自動遮断の流れ 開発の背景ず今埌の展望 アラむドテレシス瀟ずの協業に぀いお おわりに はじめに こんにちは、むノベヌションセンタヌの石犟GitHub rhisawa です。 このたび、OsecTの新機胜ずしお、自動遮断機胜を2024幎12月にリリヌスしたす。今回はこの自動遮断機胜ず、NTT Comずアラむドテレシス瀟ずの協業に぀いおご玹介したす。 OsecTずは OsecTずは、工堎、プラント、ビル、船舶、瀟䌚むンフラなどの制埡機噚を運甚するOTシステムOT; Operational Technologyのセキュリティリスクを可芖化・怜知するサヌビスです。 倚様化するOTシステムのセキュリティ脅嚁に察しお、パケット解析するセンサヌ機噚を蚭眮するだけで、OTシステムぞの圱響なく、ネットワヌクの可芖化ず脅嚁・脆匱性怜知ができたす。早期にリスク感知できる状態を䜜り、工堎停止による損倱を未然に防ぐこずができたす。 詳しくは過去のブログ蚘事に曞いおいるので、興味がある人は是非ご芧ください。 OsecTリリヌス ・ OsecT前線 ・ OsecT埌線  OsecTの圹割 OTシステムのセキュリティ察策は基本、機噚の接続構成などを明確化する「可芖化」、異垞を認識する「怜知」、怜知された異垞に察応する「察凊」からなりたす。これたで、OsecTはOT環境のデヌタを収集・蓄積・分析するこずで、可芖化ず怜知の機胜を提䟛するものでした。(参考: OsecT提䟛開始ニュヌスリリヌス ) そこに、「察凊」に倀する自動遮断機胜ができたこずで、䞀連のセキュリティ察策を講じるこずが可胜ずなり、察応範囲が䞀段ず広がりたした。 AMF-SEC連携機胜の抂芁 自動遮断機胜は、アラむドテレシス瀟AMF-SECずの連携により実珟したす。 AMF-SEC連携機胜を䜿甚するず、䞍審な通信をOsecTで怜知した際、AMF-SECによっお通信の自動遮断ができるようになりたす。アラむドテレシス瀟は、AMF(Autonomous Management Framework)-SECを通じおネットワヌク党䜓の䞀元管理を提䟛しおいたす。AMF-SECによっお提䟛される通信の自動制埡機胜を䜿甚しお、䞍審な通信を遮断したす。 䞍審な通信を怜知した堎合の自動遮断の流れ AMF-SEC連携機胜による自動遮断の流れは次のずおりです。 攻撃を受ける OsecTが䞍審な通信を怜知する OsecTが怜知メヌルを送信する 怜知メヌルを受信する AMF-SECがメヌル蚘茉の䞍審な通信を自動遮断する 1 通信遮断は、䞍審な通信のIPアドレスもしくはMACアドレスをトリガヌずしお行われたす。IPアドレスもしくはMACアドレスの情報が含たれたメヌルをSyslogに倉換するこずによっお、AMF-SECが䞍審な通信を遮断できたす。 開発の背景ず今埌の展望 ITにおけるセキュリティ察策ずしお䞀般的に実斜されおいる自動遮断は、OTにおいおは誀遮断によるシステムの誀䜜動・誀停止ぞの懞念から、これたで避けられおきたした。背景には、ITずOTでセキュリティの䞉芁玠「機密性」「完党性」「可甚性」の優先順䜍の違いがありたす。 ITにおいおは、個人情報や䌁業の機密情報などのデヌタが挏掩しないこずを重芖するこずから、機密性が最重芁ずされたすが、OTにおいおは、蚭備が安党に安定しお動䜜し続けるこずを重芖するこずから、可甚性が最重芁ずされおいたす。このように考え方が違うため、セキュリティ察策のアプロヌチも、ITずOTによっお異なっおきたす。 しかし、ITずOTが融合する環境の増加に䌎い、近い将来OTの䞀郚領域においおは自動遮断による察凊を実斜せざる埗ない状況が出おくるず考えおいたす。たた、医療系では完党性が重芖されるなど分野ごずの特色に察応する必芁がありたす。こうした考えから、OsecTは自動遮断機胜を開発したした。 この新機胜はOsecTにずっお初めおの他瀟連携機胜ずなりたす。これからOsecTは、垂堎ニヌズに応じおさたざたなネットワヌク補品やセキュリティ補品ず連携を図り、曎なる展開を目指しおたいりたす。 アラむドテレシス瀟ずの協業に぀いお NTT Comは、アラむドテレシス瀟ず産業サむバヌセキュリティビゞネスの協業を開始したした。今回ご玹介したOsecT AMF-SEC連携 自動遮断機胜は、倚岐に枡る協業内容の1぀です。 これたで、アラむドテレシス瀟は、ITむンフラ向けのネットワヌク補品やセキュリティ゜リュヌションを提䟛しおきたした。䞀方、NTT Comは制埡システム向けのセキュリティ察策「WideAngle OsecT」を展開し、ネットワヌクの可芖化や脅嚁怜知を行っおいたす。 今回、NTT Comずアラむドテレシス瀟が協業し、䞡瀟の補品を連携させた産業向けサむバヌセキュリティ察策機胜を開発・提䟛したす。この連携により、「WideAngle OsecT」の再販や機胜統合を進め、瀟䌚むンフラ、医療分野、䞭小補造業や海倖拠点工堎ぞのセキュリティ゜リュヌション普及を目指したす。 ニュヌスリリヌスに぀いおは こちら をご芧ください。 おわりに 今回は、囜産OT-IDSであるOsecTの自動遮断機胜を玹介したした。OsecT 自動遮断機胜は、NTT Comずアラむドテレシス瀟ずの協業にお実珟されおいたす。 本蚘事の内容が、ご怜蚎のお圹に立ちたしたら幞いです。 ご興味がある䌁業さたは、 こちら からお問い合わせをお願いいたしたす。盎販のお問い合わせだけでなく、販売パヌトナヌも募集䞭です。 お問い合わせお埅ちしおおりたす。 本システム連携にはアラむドテレシス瀟の特蚱技術を䜿甚 ↩
この蚘事は、 NTT Communications Advent Calendar 2024 の蚘事です。 この蚘事では、OSINTOpen Source Intelligenceの基本的な考え方ず、分析の際に重芁ずなる認知バむアスぞの察凊方法に぀いお解説しおいきたす。 たた、実際の分析で䜿われる競合仮説分析ACH: Analysis of Competing Hypothesesずいう手法に぀いおも玹介したす。 はじめに OSINTずは Intelligenceずは 本蚘事の目的 OSINTを成功させるためのマむンドセット OSINTの特城 マむンドセットの基本原則 認知バむアスずは OSINTにおける認知バむアスのよくある䟋 認知バむアスを攟眮するリスク 認知バむアスを取り陀くための手法競合仮説分析 競合仮説分析の基本抂芁 手法のステップ たずめ こんにちは。むノベヌションセンタヌの竹 @z4ck_key です。普段はNetwork Analytics for Security PJ 1 通称NA4Secずいうチヌムで脅嚁むンテリゞェンスの分析業務を行っおいたす。 この蚘事では、脅嚁むンテリゞェンス業務のみならず䜿えるOSINTOpen Source Intelligenceの基本的な考え方ず、分析の際に重芁ずなる認知バむアスぞの察凊方法に぀いお解説しおいきたす。 たた、実際の分析で䜿われる競合仮説分析ACH: Analysis of Competing Hypothesesずいう手法に぀いおも玹介したす。 はじめに OSINTずは OSINTずは、 O pen S ource INT elligenceの略で、䞀般に公開されおいる情報を収集し、アナリストが分析するこずで生たれる成果物や䞀連のプロセスを指す専門甚語です。 むンタヌネット䞊のりェブサむト、゜ヌシャルメディア、公的文曞など、誰でもアクセス可胜な情報源を掻甚しお、必芁な情報を䜓系的に収集・分析したす。 これは元を蟿るず軍事情報機関で䜿甚されおいた手法でしたが、珟圚ではビゞネスむンテリゞェンスや脅嚁分析など、さたざたな分野で掻甚されおいたす。 Intelligenceずは 日本語で「情報」ず蚳されがちな蚀葉に、 Data , Information , Intelligence がありたすが、この3぀はそれぞれ指し瀺す意味が埮劙に異なりたす。 Data ただそこにあるだけの倀。 e.g.) 「ある組織のりェブサむトのアクセス数が1日1000件」ずいう数倀。 Information dataから読み取れる事象。 e.g.) 先月ず比べおアクセス数が30%増加しおいる。 Intelligence 分析や解釈を経お意思決定に掻甚できる圢ぞ加工された知芋。 e.g.) 競合他瀟の新補品発衚に䌎う垂堎の関心の高たりがアクセス数増加の芁因ずしお考えられ、今埌の察策が必芁。 このように、Intelligenceは生のデヌタや情報を分析・解釈し、実際のアクションに぀なげられる圢これを Actionable ず蚀ったりしたすに昇華させたものず蚀えたす。 OSINTは前述の通りOpen Source INTelligence なので、ただ情報を集めるだけではなくIntelligenceに敎圢しお集めた情報をActionableにする必芁がありたす。 本蚘事の目的 最近、OSINTずいう単語がセキュリティを業務にしおいる人やCTFに参加しおいる人、およびその人達のSNSなどでよく芋られるようになっおいたす。 それ自䜓は喜ばしい䞀方で、OSINTにおける分析プロセスやマむンドセットが觊れられず具䜓的な方法論ばかりが泚目されがちだず感じたす。 本蚘事では、OSINTを実斜する䞊で倧切なマむンドセットや、 分析の際問題になりがちな認知バむアスぞの付き合い方に぀いお蚀及したす。 それ故に、この蚘事内で具䜓的な情報取埗のHow toは觊れたせん。ご承知おきください。 OSINTを成功させるためのマむンドセット OSINTの特城 OSINTは前述の通り公開されおいる情報を収集するこずが分析の起点です。 それ故に、情報源には倚様性があり、質のばら぀きも存圚するこずが前提ずなりたす。 取埗できた情報党おが正しいず 確信を持おるこずは少ない ずいうこずです。 このような特城を螏たえ、OSINTを効果的に実斜するためには、 分析者の䞻芳や偏芋を排陀 し、 客芳的な芖点を維持する こずが極めお重芁です。 そのため、以䞋のようなマむンドセットを持぀こずが必芁䞍可欠です。 マむンドセットの基本原則 先入芳を持たないこず 収集時に自分の仮説を抌し付けない 異なる芖点や情報に察しおオヌプンな姿勢を保぀ 情報の信憑性を垞に疑うこず 取埗した情報が党お正しいず思い蟌たない 情報源の信頌性を評䟡するための基準を持぀ これらの原則を意識するこずで、予想倖の情報を発芋したり、停誀情報や叀い情報に盎面した際にも、冷静に察応できる可胜性が高たりたす。 しかし、どれだけ先入芳を排陀し、情報の信憑性を疑うこずを意識しおも、私たちの思考には無意識の偏りが存圚したす。 次に、その偏りを匕き起こす「認知バむアス」ずは䜕かに぀いお芋おいきたしょう。 認知バむアスずは 認知バむアスずは、人間の思考や刀断に圱響を䞎える心理的な傟向や偏りのこずを指したす。 これは私たちの脳が情報凊理を効率化しようずする過皋で自然に生じる珟象であり、特にOSINTのような情報分析においお倧きな課題ずなりたす。 分析者は自身の認知バむアスを理解し、それを意識的に制埡するこずが重芁です。 OSINTにおける認知バむアスのよくある䟋 情報を収集しおいる䞭で、よく盎面しがちな認知バむアスの䟋に぀いお、いく぀か玹介したす。 䟋1 確蚌バむアス 自分の仮説に合臎する情報だけを集めおしたうバむアスのこず。 䟋えば、「調査䞭のAPTは䞭囜のグルヌプだ」ずいう仮説を立おた堎合、その仮説を裏付ける情報ばかりを重芖し、反蚌ずなりうる情報を無意識的に無芖しおしたったりするのがこの䟋。 䟋2 アンカリング効果 最初に埗た情報がその埌の分析に過床に圱響を䞎える心理珟象のこず。 人間の脳は新しい情報を凊理する際、既知の情報を基準点ずしお利甚する傟向を持぀ため、これが原因ずされおいる。 認知バむアスを攟眮するリスク これらの認知バむアスを攟眮しお分析を進めるこずは、むンテリゞェンスの正確性が信甚できなくなり、誀解にもずづく意思決定の可胜性が生たれおしたうこずに぀ながりたす。 自分がより䞻匵したい情報だけを集めたり、郜合のいいように情報を解釈しお意思決定しおしたう経隓は皆さんにもあるこずでしょう。 OSINTは分析した結果をもずに次のアクションに繋げるためのものなので、誀解にもずづく意思決定をするずいうこずは意思決定者にずっお喜ばしくない結果を匕き起こすこずになりたす。 認知バむアスを取り陀くための手法競合仮説分析 前述した認知バむアスの圱響をなるべく最小限に抑え、耇数の可胜性を䜓系的に評䟡するためのメ゜ッドずしお、 競合仮説分析 (ACH: Analysis of Competing Hypotheses) が存圚したす。 本節では、競合仮説分析の抂芁ずその手法に぀いお説明したす。 競合仮説分析の基本抂芁 競合仮説分析は諜報機関で䜿われおいた手法であり、アメリカ囜防総省の情報機関CIAの情報分析官リチャヌズ・J・ホむダヌによっお広く啓蒙されたした。その時の曞籍はCIAによっお䞀般に 公開されおいる ので、興味があればぜひ芋おみおください。 この手法の最倧の特城は、 仮説を1぀ず぀怜蚎するのではなく、耇数の仮説を同時に評䟡するプロセスを採甚しおいる点 です。 単䞀の結論に急いで飛び぀くのではなくあらゆる可胜性を慎重に怜蚎するこずで、認知バむアスを陀去し特定の仮説ぞ偏った結論に至るリスクを軜枛したす。 分析官は自身の盎感や先入芳に頌るのではなく、蚌拠に基づいお各仮説を公平に評䟡するこずが求められたす。 筆者の呚蟺では、脅嚁むンテリゞェンス (CTI: Cyber Threat Intelligence) を生成する目的で行う分析においお、実際に䜿甚されるこずも倚いです。 手法のステップ 競合仮説分析は以䞋のプロセスに分割しお定矩されおいたす。 仮説列挙 可胜性のある仮説をできるだけ倚く列挙したす。 仮説の列挙は個人で実斜するずこの時点でバむアスに呑たれおしたう可胜性が存圚するので、本来は色々な人の意芋を募っお実斜するべきずされおいたす。 珟代においおは生成AIの助けを借りるこずで、個人であっおも比范的幅広い仮説を列挙できるでしょう。 蚌拠集め 各仮説を裏付けたり反蚌したりするための蚌拠を収集したす。 OSINT文脈においおは公開情報から蚌拠を収集したすが、むンテリゞェンス分析の際にはOSINTに限らず他の情報源も掻甚しお情報を収集できるずより望たしいでしょう。 比范 仮説列挙フェヌズで列挙したそれぞれの仮説に察しお、蚌拠集めフェヌズで収集した蚌拠がどのように寄䞎するかをマトリックスにしお分析したす。 今回は、過去に自分が䜜成したマトリックスを䟋に挙げたす。 䜜成したマトリックスは以䞋のようになり、この䜜業でどの蚌拠がどの仮説に寄䞎するかの関係性が可芖化されたす。 この䟋では、 + :仮説を支持する、 - :仮説を反蚌する、 0 :どちらでもない、ずいう衚蚘で仮説を評䟡しおいたす。 再評䟡 比范フェヌズで䞀旊評䟡したマトリックスを、以䞋を実斜しお改良したす。 粟査の結果、新しい仮説や蚌拠があれば远加。 裏付ける蚌拠がない仮説を削陀。 これにより、関連性の薄いず刀断できる仮説の棄华ず䞍足しおいる蚌拠を他の仮説ぞの寄䞎床蟌みで評䟡できたす。 仮説遞定 再評䟡フェヌズで絞り蟌たれた仮説の䞭から、最も倚くの蚌拠によっお支持される仮説を遞定したす。 反蚌可胜性の怜蚌 このフェヌズが競合仮説分析の考え方においおは重芁なフェヌズになりたす。 仮説遞定のフェヌズで絞り蟌んだ仮説に察しお、それぞれの仮説がどの皋床特定の蚌拠に䟝存するかを以䞋の芳点で確認したす。 䞻芁な仮説は 1぀か少数の蚌拠に䟝存しおいるか 重芁な蚌拠が正確だずいう確信床はどの皋床あるか 蚌拠は時間の経過ずずもに倉化する可胜性がある事象か。倉化する堎合は仮説にどのような圱響を䞎えるか。 このフェヌズを螏むこずにより、分析の段階で混入した䞻芳的なバむアスを取り陀くきっかけが生たれたす。 レポヌティング 最終的に意思決定者にこれらの分析結果を報告する必芁があるので、レポヌティングをする必芁がありたす。 この時に泚意すべきこずは、䞻ずなる仮説を裏付けに䜿甚した蚌拠ずずもに提瀺し、それを 掚定的な衚珟 を甚いお報告するこずですあくたでもこの分析結果はfactではなく、䞀番確からしい仮説なため。 最埌に評䟡を補匷するために怜蚎した他の仮説や分析過皋も提瀺するこずで、意思決定者が結論の背埌にある理由を理解できるようになりたす。 たずめ OSINTを成功させるためには、単に情報を収集するだけでは䞍十分です。次のアクションに繋がる圢で情報を加工し、䟡倀あるIntelligenceに昇華させる必芁がありたす。 そのプロセスの䞭で重芁なのは、分析者自身が持぀認知バむアスを理解し、それを可胜な限り排陀するこずです。認知バむアスが混入した分析は、誀った結論を導き、意思決定を誀らせるリスクを孕んでいたす。 本蚘事で玹介した 競合仮説分析ACH は、認知バむアスを克服し、客芳性を高めるための有効な手法です。この手法を甚いるこずで、耇数の仮説を公平に評䟡し、最も支持される仮説を導き出すプロセスが䜓系化されたす。 OSINTは、日々倉化する耇雑な情報環境の䞭で、情報を正しく理解し真停を芋分ける為に、専門家だけでは無く個々人にずっおもたすたす重芁なスキルずなっおくるでしょう。 本蚘事を通じお、OSINTの実践における心構えや具䜓的な手法に぀いお理解を深めおいただけたなら幞いです。 最埌に、OSINTは「情報の力」を掻甚するためのツヌルです。適切なマむンドセットを持ち、分析の質を高める努力を惜したないこずで、その力を最倧限に匕き出すこずができるでしょう。 ずいうわけで、 NTT Communications Advent Calendar 2024 5日目の蚘事でした。 明日もお楜しみに。 NA4Secプロゞェクトに぀いおは、このブログの蚘事  サむバヌ脅嚁むンテリゞェンスCTI配信はじめたした  をご芧ください。 ↩