
「旗取り」をさらなる学びのきっかけに
VOL.081 角田 裕(情報通信工学課程)
ICT技術に興味を持って本学に入学し、授業でプログラミングやネットワーク、コンピュータの仕組みについて学んでいるものの、その先に何をどう学べばいいのかよくわからない・・・学生さんの中にはそんなふうに感じている人もいるように見受けられます。このエッセイはそんな学生さんに向けて書いたものです。
「作りたいプログラムが思い浮かばない」「講義で学んだ知識がどう活かせるのかイメージできない」、そんな悩みを持つのも無理もないかもしれません。今やコンピュータやネットワークは生活のあらゆる面に溶け込み、空気のような存在です。当たり前に使えるものほど、中で何が起きているのかを知ろうとするきっかけは得にくくなりがちです。だからこそ、これまでに身につけた知識や技術を実際に使ってみる機会を自ら見つけていくことが大切です。そこで、さらなる学びのきっかけに、「旗取り」=CTFにチャレンジしてみるのはどうでしょうか。
CTFはCapture The Flag (キャプチャー・ザ・フラッグ) の略で、元々は屋外などで行われるチーム対抗の旗取りゲームを指します。現在でもFPSゲームなどでチーム対抗の旗取りモードがあるようです。一方、ここで紹介するCTFは、サイバーセキュリティ技術を競い合う競技会です。「ハッカーコンテスト」や「セキュリティコンテスト」と表現されることもあります。
CTFにはいくつかの形式がありますが、ここでは参加しやすいJeopardy形式について紹介します。これは、いわゆるクイズ形式で、セキュリティに関係するさまざまなジャンルのクイズが出題されるものです。問題文とともに、ファイルやサーバへのアクセス方法が提示され、与えられたファイル内やサーバ上にある指定された形式の文字列を見つけ出して回答します。この文字列を 「フラグ(旗)」 と呼びます。通常、見つけたフラグを入力して正誤を判定し、正解であればスコアを加算してくれるスコアサーバが用意されています。複数の問題に取り組み、より速く、より多くのフラグを見つけ出して回答したチーム(個人戦の場合は個人)が勝者となります。24時間や48時間のように時間を区切って開催される大会もあれば、いつでも自由に挑戦できる常設のオンラインCTFもあります。
Jeopardy形式で出題される問題は多岐に渡りますが、代表的なものとして以下のようなものがあります。ほとんどのジャンルの問題で、攻撃側の視点で考えることを求められる点が特徴です。それによって、システムがどのように攻撃されるかを理解し、より深いセキュリティ知識を身につけることができます。ただし、これらの技術は実際のシステムに対して悪用してはならず、あくまで学習目的で取り組むことが重要です。

Jeopardy形式の出題ジャンル例
Crypto(暗号)ジャンルを題材に、ひとつ例題を見てみましょう。例えば、フラグの形式が FLAG{*********} と指定されていたとします。ある問題を開いてみると、問題文には SYNT{GBUGRPU} と書かれていました。さて、どう考えればよいでしょうか。まず、「SYNT」という部分がフラグ形式の「FLAG」にあたるのでは?と直感的に気づく人もいるかもしれません。SとF、YとL、NとA、TとGを比べるとすべて13文字分離れています。そこで、同じように波カッコ{}の中のGBUGRPUの各文字を13文字分後ろにずらしてみると TOHTECH になります。つまり、 FLAG{TOHTECH}です。これをスコアサーバに入力して正解であれば、フラグ獲得(=得点)となります。このように、アルファベットを一定の数だけずらして暗号化する方式は「シーザー暗号」と呼ばれています。古典的な暗号ですが、CTFではその派生形や応用もよく登場します。これくらいの短い文字列であれば、紙とペンで試行錯誤しながら解くこともできるでしょう。でも、もし文字列がもっと長かったら、面倒くさくてきっとプログラムを書いてコンピュータに処理させたくなるのではないでしょうか。そうやって、「必要だから」「楽をしたいから」というプログラムを書く動機が自然に生まれます。これは、CTFに取り組むことで得られる大きな学びのきっかけの一例と言えるでしょう。
先ほどの表で紹介したように、Jeopardy形式のCTFでは他にも様々なジャンルの問題が出題されます。それらに取り組む中で、わからないことを調べたり試行錯誤したりしながら、コンピュータやネットワークの仕組みを学んでいくことができます。もしフラグが見つけられなくてもがっかりする必要はありません。フラグを見つけようと試行錯誤する過程自体が学びです。また、大会形式のCTFでは終了後にWriteup(問題の解法説明)と呼ばれる記事が公開されることも多く、それを見ることで、解くために必要な知識や思考の過程などを学ぶことができます。
CTFの魅力が少しでも伝わったでしょうか?ここでは、気軽に参加できるCTFを3つ紹介します。
(1)CpawCTF(オンライン常設、個人戦)
オンラインでチャレンジできる常設型のCTFです。アカウントを作成すればすぐにチャレンジできます。オンラインCTFの中には問題文が英語のものもありますがCpawCTFは日本語対応のためハードルが低く、基本的な知識があれば解ける問題が多いです。Writeupも探せばすぐ見つかるので、わからない問題はWriteupを見ながら解いてみるのも良いでしょう。
(2)仙台CTF(オフラインイベント、個人戦)
ここ仙台でも、地域におけるサイバーセキュリティ人材の育成と交流を目的に、毎年秋に仙台CTFが開催されています。これは、仙台CTF推進プロジェクトが企画・運営する、セキュリティ技術勉強会と競技会を組み合わせたイベントです。2025年は、11月15日(土)に開催が予定されています。「現場で役立つ技術」を題材としており、CTF挑戦中には出題者がその場でヒントをくれるなど、初心者でも楽しく参加できるユニークなイベントです。
仙台CTF2024の開催風景(仙台CTF推進プロジェクト公式サイトより)
(3)SECCON Beginners CTF(オンラインイベント、チーム戦)
SECCONは国内最大級の本格的CTFですが、SECCON Beginners CTFは主にCTF 初心者〜中級者を対象とした CTFで、初心者向けの簡単な問題も一定数出題されます。
今年は日本時間7/26 (土) 14:00から翌7/27 (日) 14:00の24時間で開催予定です。複数人のチームで取り組むことを想定した構成になっていますので、友達を誘ってチームを組んで参加すると楽しめると思います。
CTFは、講義で学んだ知識と技術を実際に使ってみることができる絶好の機会です。問題を解くためにプログラムを書く必要性が自然に生まれます。また、問題に挑戦する中で「この暗号方式は知らない」「このデータ形式はなんだろう」といった疑問から、自分の知識の限界に気づくと同時に新しい発見につながります。難しそうに思えても、まずは1問取り組んでみるだけでも得られるものがあるはずです。興味が湧いたら、手を動かしてみるところから始めてみましょう。

角田 裕 教授
中国地方にある島根県出身です。認知度の高くない県なので、本学着任当初に学生さんから「島根では関西弁しゃべるんですか?」「車はずっと夏タイヤですか?」と一度ならず訊かれて戸惑ったことを今でも懐かしく思い出します。松江高専を卒業後、東北大学の3年次に編入して博士課程まで進み、同大学の助教を経て、本学には2008年に着任しました。仙台に来たのは20歳のときで、当初は地元に戻るつもりだったのですが、さまざまなめぐり合わせの結果、気がつけば仙台での暮らしも27年を超えています。生まれ故郷よりも長く時間を過ごす場所になるなんて思ってもいませんでした。予想通りにいかないのが人生だなあと今更ながらに感じます。

サイバーセキュリティ研究室
ネットワークの運用管理・セキュリティ管理システムや、 サイバーセキュリティ対策に関する研究を行っています。 ネットワークは今や我々の生活の基盤を支える欠かせないものとなっており、 その安全性や信頼性の向上が常に求められています。 しかし、 ネットワークが複雑化するにつれて、 その管理はどんどん困難になっており、不正アクセスなどのセキュリティ上の脅威も増加しています。こうした技術的な研究に加えて、教育や地域連携の一環として実践的な取り組みにも関わっており、2014年から宮城県警の大学生サイバーボランティアにも協力しています。この活動では、インターネット上の違法・有害情報の通報活動に加え、それを支援・効率化するシステムの開発なども行っています。