セキュリティ・キャンプ2025 ネクスト 応募課題晒し
はじめに
今年度ネクストキャンプに参加に参加させていただけることになりました。
私も応募課題を書くときに過去の課題晒しを参考にさせいただいたので、私も公開しようかなと思います。+ 自己紹介的なものにもなりそうかなと
(高校生から合わせて過去に3回ほどキャンプに申し込んだものの駄目だったので、なんとか学生のうちに参加できてとても嬉しいです)
あなたに関する問い
あなたは今までどのようなことをやってきましたか.どのようなことができて,どのようなことが得意で,どのようなことに自信がありますか.
どのようなものを作りましたか.どのような情報を発信してきましたか.
どのようにしてそうしたことをやってきましたか.なぜ,そのようなことをやってきましたか.やってきてどう思いましたか.
参加できた場合,セキュリティ・キャンプ ネクストにどのようなことを期待し,どのようなことをやってみたいですか.
私は、父が大学教員であり自宅にMacがあったことをきっかけに、幼少期からコンピュータに興味を持ちました。中学時代にはWebサイトに関心を持ち、PHPでのプログラミングを始めてレンタルサーバーを借り、さまざまな実験を重ねました。より本格的にプログラミングを学びたいという思いから、科学技術系の高校に進学し、そこでのサークル活動ではロボット制作に取り組みました。また、友人とともにPythonを用いたWebアプリケーションの開発にも挑戦し、それをタイで発表するなど、幅広い活動を行いました。先輩の指導のもと、Webアプリ開発だけでなく、マイコンなどハードウェアに関する知識も深めることができました。
その後、情報とネットワークについてさらに深く学びたいと考え、電気通信大学に進学しました。大学1年次にはSecHack365に参加し、ERC20トークンを簡単に発行できるプラットフォーム「Seknot」を開発しました。当時注目されていたブロックチェーン技術に興味を持ち、本と限られたインターネット情報を頼りにゼロから仕組みを学びました。技術の複雑さに直面しつつも、この面白い技術を多くの人に使ってもらいたいという思いから、Web3の機能をWeb2 APIの形式でラップした、開発者向けに使いやすいAPIを実装しました。
大学2年次にはIoTに関心を持ち、LPWAを用いた通信ハッカソンへの参加や、FPGAを活用したライントレーサーの開発に取り組みました。開発スキルを磨くため、年間10回以上のハッカソンに参加し、プラレールの線路にセンサーを設置してクラウド上でデータを集約・自動運転を実現するシステムも開発しました。
大学3年次には、サークルの先輩の影響でProxmoxやKubernetesに触れ、インフラ技術に魅了されました。ネットワークの知識を深めるためにShownetのSTMに参加し、インターンではKubernetesやOpenStackなどのインフラ基盤技術を扱う企業で実務経験を積みました。その中でAWSなどのクラウド技術の便利さに触れ、Serverless技術とそれを支える基盤への興味を持つようになりました。自宅でも実践的に学びを深め、秋葉原で購入したミニPCを用いてProxmoxクラスタを構築し、Kubernetes環境を運用しました。ネットワークスイッチも導入して実験環境を整備し、得られた知見を元に自宅Kubernetesの技術書を執筆し、技術書典で出版したところ予想以上の反響がありました。以後、各種LTにも積極的に登壇しています。
大学4年次には、情報基盤センターの研究室に所属し、情報システムの運用に関する研究を行いました。新設研究室の第1期生として、研究室のインフラ整備を任され、ネットワーク機器の選定やスイッチ設定、Proxmoxによる仮想基盤の構築を幅広く担当しました。同センターでのアルバイトを通じて学内の情報インフラに関する理解も深めました。また、別のアルバイトでは、学内のIoTデータを収集し、AIによってエレベータや照明を自動制御するシステムの開発に関わりました。この経験から、画像認識などのAI技術や、ChatGPTに代表されるLLMの活用にも関心を持ち、AI技術を用いた開発にも取り組むようになりました。
大学院進学後は、自宅ネットワークをさらに拡張し、BGPを用いてHomeNOC団体と接続しグローバルIPアドレスを広報するなど、ネットワーク技術の実践を重ねています。研究室ではEVPN/VXLANネットワークの整備にも取り組みました。インフラエンジニアとしてのインターンでは、AWSを活用したシステム開発に携わり、IaCなどのDevOps技術やServerlessサービスへの理解を深めました。さまざまなクラウドサービスに触れる中で、自身でもクラウド基盤を開発したいという思いから、自宅でプライベートクラウドの構築を始めました。特に最近では、Serverlessを支える技術としてのKubernetesに強い関心を持っています。
セキュリティ・キャンプでは、クラウド技術を支えるネットワークセキュリティについて学び、TCP/IPプロトコルの実装など、より実践的な技術の習得を目指しています。
課題への姿勢に関する問い
自身で何らかの技術的な疑問を設定し,その疑問を解決しようと取り組み,その過程を示すことで,自身の技術力や課題に取り組むやりかたを説明してください.
(疑問の例:実行ファイルはどのような構造になっているのだろう? pingコマンドを実行すると何が起きるんだろう? オンラインゲームはどうやって通信対戦を実現しているのだろう? といったようなことです)
設定する疑問は何でも構いませんし,解決しなくても構いません.
解決できたかどうかではなく,いかに課題に取り組むかという点を評価します.
「FaaSってどうやって実装されているのか?」という素朴な疑問から、自分なりに調べてみることにした。きっかけはServerless系のイベントに参加したときで、AWS Lambdaなどがどういう仕組みで動いているのか、純粋に気になったのが始まりだった。
まず調べていく中で、AWS Lambdaは「Firecracker」というマイクロVMを使っていて、それによって高速に立ち上がる仕組みになっていることを知った。Firecrackerってなんだろう?と思って論文を読んだり、Hypervisorに詳しい先輩に話を聞いたりしてみた。実際にはKVMを使っていて、かなり低レイヤで泥臭く最適化していることがわかった。このあたりで、FaaSの裏側ってすごく深い技術に支えられているんだなと実感した。
そこからさらに「他にもFaaS的なものってどんなのがあるんだろう」と調べていくと、GCPのCloud Runは「Knative」というものを使っていることがわかった。Knativeは、Kubernetes上でFaaSを実現するためのプロジェクトで、Cloud Runのマニフェストを見ても、ほとんどKnativeの設定そのものだった。
Knativeについてさらに掘り下げてみると、リクエストが来たときにPodを起動して処理するような仕組みになっていることが分かった。いわゆる「イベント駆動」の設計になっていて、リクエストがなければスケールゼロにしておく、みたいなことができるのもこの構造のおかげだった。
さらに色々な人に話を聞いてみると、CyberAgentのプライベートクラウドや、さくらクラウドのAppRunなんかも、Knativeベースで動いていることがわかった。ただ、Knative単体では扱いづらくて、ネットワーク用にIngressを用意したり、KnativeのWrapperを作ってユーザが使いやすいように工夫していたりと、各社がいろんな工夫をしていることも知った。
そんな感じでいろいろ調べていく中で、最近のFaaSはいろんな実装があるけれど、自宅でやるならKnativeをベースにして、いろいろ組み合わせていけばそれっぽいものが作れるんじゃないか、という手応えを得ることができた。
興味ある分野に関する問い
セキュリティ・キャンプ ネクストの講義の一覧を見て,その中から興味のある講義を選び,その講義で扱うテーマに対して自分が考えること,興味,疑問,課題,自分なりの考察などを説明してください.
その分野について知識があるかどうかではなく,いかに興味や疑問を持ち,課題を考え,自分なりに調べて考察するかといった点を評価します.
私が特に興味を持った講義は、N6『DNSサーバーの運用における潜在的リスクと対処について』です。
学内でもDNSサーバーの運用を行っており、特にメールまわりの設定で苦戦することが多くあります。近年では、SPFやDKIM、DMARCなどの認証関連の設定が求められるようになり、DNSに求められる機能や正確性はますます高度化しています。こうした設定を正確に行わないと、大手メールサービスからの受信拒否に繋がるなど、非常に実用的な影響が出るため、DNSの安定運用はセキュリティだけでなく可用性や信頼性の観点からも重要だと感じています。
また、DNSに関するリスクとして、CNAMEの先のドメインが失効しており、誰でも取得可能な状態になってしまっている事例をたまに見かけます。こうした状況は、特に政府系サイトや信頼性が求められる機関にとって致命的であり、DNSの構成ミスが直接的なセキュリティリスクに繋がる点を強く意識させられます。個人的には、こうした脆弱性を早期に検出するために、クローラやスキャナによる自動チェックを行い、通知するような取り組みがもっと広まっても良いのではないかと考えています。あるいは、セキュリティ機関やISPなどが事前にそういった失効ドメインを確保して悪用を防止するような「善意の買収」的な仕組みがあっても良いのではないかとも思います。
一方で、こうしたDNSセキュリティの責任を誰がどこまで持つべきなのかという点も難しい課題だと感じています。例えば、ある程度の信頼性がある組織(大学や官公庁など)であれば、DNSレコードの最終的な解決先に対しても一定の責任を持つべきではないかとも思います。実際、学内では権威DNSサーバーは原則的に学内に配置し、いつでも監視できる体制を取るようにしていますが、それでも人的リソースや監視体制には限界があり、運用負荷の高さが課題になっています。
このような背景から、DNSの運用やセキュリティについては、すべてをクラウドに任せて、セキュリティも含めて自動化する方向が現実的な選択肢の一つになってきていると感じています。しかし、どこまでをクラウドに任せ、どこまでを自前で管理するのか、その線引きは非常に難しく、今後の自分の中での課題でもあります。
その他に関する問い
その他,アピールしたい点などあれば自由記述で回答してください.
外部でのLTなどを通じて積極的に情報発信を行っており、多くのイベントに参加してきました。
また、技術書の執筆も手がけています。 セキュリティキャンプに参加できた際には、学んだ内容をブログなどにまとめ、広く情報発信していきたいと考えています。最後に
FPGA精進します。
Discussion