2023年3月23日(木)〜25日(土)に技術カンファレンス「PHPerKaigi 2023」が練馬区立区民・産業プラザ Coconeriホールおよびオンラインにて開催されました。
GMOインターネットグループはダイヤモンドスポンサーとして「成瀬の挑戦状」という企画を実施。
セッションでは、GMOインターネットグループメンバーよる挑戦の様子を出題者である成瀬允宣が実況・解説しました。
目次
登壇者
- 成瀬 允宣
GMOインターネットグループ株式会社 テックリード/デベロッパーエバンジェリスト
PHPerKaigi 2023 |スポンサーセッション「成瀬の挑戦状」レポート
問0:開始直後から各メンバーさまざまなアプローチで取り組む
今回「成瀬の挑戦状」に挑戦したメンバーは、GMOペパボのOさん、GMOペイメントゲートウェイのKさん、GMOリサーチのNさん、GMOインターネットグループのIさん、GMOメディアのAさんの5名です。
120分間で問0、問1、問2、問3、最終問題を解いていきました。
挑戦状には、Dockerのロゴアイコンのようなイラストとともに「nrslib sampleにて待つ」と手書きで書かれています。これはGMOインターネットグループメンバー専用に問0として成瀬が用意したもので、Dockerから設問をプルするところから課題を始めてほしいという意図が込められています。
メンバーは、デスクトップでフォルダを作成するところから始める人、Docker Hubを見に行く人、Docker Desktopを起動して一覧化する人、Docker ComposeのYAMLファイルを書く人など、この時点でさまざまです。
問1:まずは「シーザー暗号」に気づけるかどうか
問1は下記のような問題です。
以下を解読し解答してください。 MXQJYIJXUDQCUEVJXYISYFXUH
以降の問題も暗号文を解読していく形式となっていました。「こちらをどのように解読していくかがプログラマーの勘所」と成瀬はコメントします。
今回の課題のポイントは「シーザー暗号(カエサル暗号)」です。シーザー暗号とは、下図のようにA からZまでの文字をD→A、E→B、F→Cといった形でシフトして文章を作成し暗号文とする暗号です。
今回の暗号文を+10シフトすると「WHAT IS THE NAME OF THIS CIPHER(この暗号の名前は何か)」という問題文となり、「シーザー暗号(カエサル暗号)」と解答すれば正解となります。
問1から苦戦するメンバーも多いなか、Aさんは、ChatGPTに「key: nrslib 暗号化方式:シーザー暗号化 復号化した文字列を教えて」「鍵を使ってシーザー暗号化された文字列を復号化するアルゴリズムをPHPで作成してください」などと入力して暗号化前の文章を復号しようとしていました。Nさんは、Web上のシーザー暗号解読機ツールを用いて暗号文を入力し、「WHAT IS THE NAME OF THIS CIPHER」という文章を見つけていました。
問2:シーザー暗号の進化系「ヴィジュネル暗号」を使う
問2では、鍵を用いながらヒントを解いていくと「CIPHER CONCEIVED IN THE LATE FIFTEEN AND LATE SIXTEEN CENTURIES(15世紀後半から16世紀後半にかけて考えられた暗号)」という文章が現れてきます。
これは「ヴィジュネル暗号」のことを指しています。ヴィジュネル暗号とは、シーザー暗号の進化系ともいえる暗号で、ヴィジュネル方陣という変換表を使って暗号化を行います。
ここでヴィジュネル暗号が用いられていることに気づけば、復号ツールを利用して「WHAT IS THE NAME OF THIS CHALLENGE(このチャレンジの名前は何か)」という問題文を導き出すことができます。問2の答えは「成瀬の挑戦状」です。
ヴィジュネル暗号が用いられていることにいち早く気づいたのはOさんでした。Nさんも2問目のヒントを順に解いていき、ヴィジュネル暗号の復号ツールを探して問題文にたどり着いていました。
問3:順調に解答していくメンバーがいる一方、苦戦するメンバーも
問3もビジュネル暗号でテータを解読するものでした。復号すると現れる緯度と経度の数値をもとに、GMOインターネットグループの所在地である東京都渋谷区桜丘町の「セルリアンタワー」という答えを導き出せれば正解となります。KさんはBase64で複数回デコードを行うことで緯度経度の数値を導き出していました。
一方で、苦戦するメンバーもいました。Aさんは解答欄に「障害対応が発生したため途中で諦めます」と書き込み、業務上の都合から途中でチャレンジを断念。お手あげ状態だったIさんは、ChatGPTに対して「この暗号わかる?」「この暗号は何の種類の暗号ですか?」などと質問をしていました。
最終問題:最終問題まですべて解答した完全制覇者が現れる
最終問題は、Base64で解読すると「final」という名前になるphpファイルにありました。「fourth.php」というダミーのファイルに騙されないことがポイントです。そして、最後の暗号をレインボーテーブルを用いながらヴィジュネル暗号で復号化すると、「WHAT IS THE ANSWER TO LIFE THE UNIVERSE AND EVERYTHING(生命、宇宙、そして万物に対する答えは何か)」という文章が出てきます。
この文章は英国の作家であるダグラス・アダムズのSF小説『銀河ヒッチハイク・ガイド』が元ネタになっており、同作品内に登場するスーパーコンピューターは、この質問に対して「42」という数字を導き出します。したがって、最終問題の解答は「42」となります。
こちらも最初に解答までたどり着いたのはOさんでした。Nさんはレインボーテーブルを見つけていたものの、気づかずにブルートフォースを試みていました。
今回の挑戦は「1〜2問でも解ければ十分すごい」
こうして、Oさんが完全制覇をする形でGMOインターネットグループメンバーによるチャレンジは終了しました。Kさんは最終問題に挑戦していたものの時間切れとなってしまいました。挑戦を振り返って、メンバーはそれぞれ次のようにコメントしていました。
Iさん:ぜんぜんわからなかったです。英語のできない子が、問題文が英語で書かれていて何を聞かれているのかわからない、という状態に近い感覚を覚えました。救済措置を求めます(笑)
Kさん:業務アプリ開発だと暗号には触らないでビジネスロジックを組んでいくと思うので、普段と違ったことができておもしろかったです。
Nさん:(途中から暗号の勉強をしていたことについて)何をやっていいのかわからなくなってしまい、太平洋戦争のときの暗号などをいろいろ調べました。
Oさん:初手でノーヒントなのがキツかったです(※本番ではヒントが出されました)。楽しかったですけど難しかったので大変でした。みなさんにもぜひやってもらいたいという気持ちがあります。
こうした結果に対し成瀬は、「完全制覇が現れたことについては素直に脱帽。もしかしたら企画当日も他に完全制覇者がいるかもしれない」と評価したうえで、「挑戦状の問題に関しては、完全制覇は出ないと思って作ったつもり。1〜2問解ければ十分すごいという感覚」と今回の課題の難易度について説明していました。
挑戦状の問題を解くなかでは「IWILLBLOG」というキーワードも出てきます。参加者の方はぜひブロク等で今回の感想を書いていただけるとありがたいです。
お知らせ
最後にお知らせです。
当日のスポンサーセッション放映後、成瀬本人の「成瀬の挑戦状」の解説ブログが投稿されました!より詳しい解説をご希望の方、本記事と併せて是非チェックしてみてください。
解説ブログ:カンファレンス協賛企画『成瀬の挑戦状』の解説【PHPerKaigi 2023】
また、劇中の「成瀬の挑戦状」はしばらくDocker内に残しておきますので、ご興味のある方はいつでもご挑戦ください!
アーカイブ映像
映像はアーカイブ公開しておりますので、
まだ見ていない方、もう一度見たい方は 是非この機会にご視聴ください!
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(418)
-
イベント(156)
-
カルチャー(35)
-
デザイン(17)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- DevSecOpsThon
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOデジキッズ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- ゆめみらいワーク
- リモートワーク
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP