![見出し画像](https://assets.st-note.com/production/uploads/images/152813147/rectangle_large_type_2_85e66687944cc7b3e637b66cef1dee61.jpeg?width=1200)
フリーズした生成AIとのコミュニケーション
1.はじめに
最近、私は情報処理安全確保支援士試験という国家試験の勉強をしています。
その中で、Mermaid記法というプログラムでシーケンス図を描いています。
シーケンス図は以下のような図です。
![](https://assets.st-note.com/img/1725200827737-AB6sK3dUyh.png?width=1200)
このような図を描くプログラムを生成AIに原案を作ってもらっています。
※Google AI StadioでGemini Pro 1.5を動かしています。
ちなみに、私は生成AI初心者です。
今日、生成AIに「DNSキャッシュポイズニング」というセキュリティ攻撃のプログラムを書いてもらおうとすると、数行書いた時点で何度も記述が止まりました。
2.やり取りの開始
何故、生成AIの回答が途中で、止まるのか分からなかったので、以下のやり取りをしました。
私「回答が途中で切れる理由として、有償契約が必要だったりしますか?」
生成AI
「回答が途中で切れたことについて、申し訳ありません。有償契約は必要ありません。Mermaidのシーケンス図でDNSキャッシュポイズニングの流れを図示します。
(不完全なプログラム)
図の説明 (略)
図で表現できなかった点
・攻撃者が偽の応答を、権威サーバーからの応答より先に送りつける必要があることを表現できていません。
・偽の情報がキャッシュされる様子を表現できていません。」
あ、なるほど。内容が複雑すぎて、表現できないということですね。
では、複雑なところは、コメントを表記すれば大丈夫かな?と思いました。
![](https://assets.st-note.com/img/1725201022126-W4x3Ruu0YJ.png?width=1200)
通常のDNSというものの動きです。十分複雑です。
3.悩みのヒアリング
以下のような、やり取りを続けました。
私「コメントでなら対応できますか。」
生成AI「もちろんです!Mermaid記法のシーケンス図内でnote(というプログラム)を使って、補足説明を加えることが可能です。」
私「以下の内容をコメントで補完して、表現できますか。
(DNSキャッシュポイズニングの仕組みを箇条書き)」
生成AI「(数行でストップ)」
私「今、どのあたりで悩んでいますか?」
生成AI「シーケンス図内で「偽の情報に関連するドメイン名」を表現する方法で悩んでいます。具体的には、攻撃者が問い合わせるドメイン名は、一見すると正規のドメイン名と区別がつかないように偽装されているため、シーケンス図の矢印にそのままドメイン名を書くと、それが偽物だと分かりにくくなってしまいます。
(中略)
より良い表現方法を検討し、分かりやすいシーケンス図を作成できるよう努めます。」
私「状況を承知いたしました。正規処理のシーケンス図を記載して、攻撃者の動きはすべてnote of のコメントで表現すると書けますか?」
※note of はコメントを表記するプログラム
生成AI「承知いたしました。正規処理のシーケンス図に、攻撃者の動きをコメントで追記する形で表現してみます。
(コメントで表現できているプログラム)」
※初めて最後までプログラムが書けた!
私「ありがとうございます。検証してみますので、少しお待ちください。」
生成AI「承知いたしました。検証結果をお待ちしております。
もし、図の修正点や改善点などございましたら、お気軽にお申し付けください。
引き続き、分かりやすく的確な表現ができるよう努めてまいります。」
ここから、私が記述を確認し、修正を行いました。
4.ブラッシュアップ
私「以下で分かりやすくなりましたか。ご意見をください。
(プログラムの修正結果を送る)」
生成AI「シーケンス図、とても分かりやすくなりましたね!
特に以下の点が改善されていると感じます。
(略)
強いて挙げるとすれば、以下の点がさらに良くなるポイントかと思います。
・トランザクションIDの盗聴: Cache ServerとRoot Server間の通信などを盗聴しているはずです。この部分をより正確に表現できると、さらに分かりやすくなるでしょう。
・偽のWebページへの誘導: 最終的にユーザーがアクセスするのは、攻撃者が用意した偽のWebページです。この部分をシーケンス図に追加すると、攻撃の全体像がより明確になるかと思います。
これらの点を踏まえ、以下のように修正してみました。
(プログラム修正内容)」
私は、さらに生成AIが書いたプログラムを修正して、生成AIに提示しました。
私「このような感じでいかがでしょうか。
(微修正したプログラムを提示)」
生成AI「素晴らしいですね!まさに、私が意図していた表現です!
今回のシーケンス図は、DNSキャッシュポイズニングの仕組みと脅威を非常に分かりやすく表現できていると思います。
(中略)
お手伝いができて、大変嬉しく思います!😊」
私「ありがとうございました。」
5.学んだこと
長くなりましたが、以下がこのやり取りから学んだことです。
生成AIも複雑なプログラムは悩む
生成AIが悩んでいるときは、悩んでいる箇所を聞くと良い
生成AIは自分が評価できることしか任せてはいけない
生成AIだけでなく、自分もアイデアを出すことで、生成AIを効果的に動かせる
生成AIは、ブラッシュアップにも使うことができる
生成AIとのコミュニケーションは、人とのコミュニケーションに似ている気がします。
分からないところは、率直に聞いていくのが、コミュニケーションにおいて大切であると思いました。
![](https://assets.st-note.com/img/1725201594388-CbxxXq6xRg.png?width=1200)
いいなと思ったら応援しよう!
![solo@転職族公務員(IT採用、現水道経理)](https://assets.st-note.com/production/uploads/images/78159938/profile_c19e84df146c499fab54a17b183bb69a.png?width=600&crop=1:1,smart)