「ROT13」など簡単な古典暗号の基礎知識が、現在のログ解析やトラブルシューティングに役立つ理由CTF問題から学ぶセキュリティ基礎知識(3)

情報セキュリティの技術を競うコンテスト「CTF」の問題から情報システムの仕組みやセキュリティを理解する連載。第3回は、「ROT13」など古典暗号について、問題を交えて解説します。

» 2021年06月03日 05時00分 公開
[青山桃子株式会社日立ソリューションズ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 情報セキュリティの技術を競うコンテスト「CTF(Capture The Flag)」は、セキュリティ教育や優秀な人材発掘に役立てようとする組織や企業で注目される、実践的な学習の環境でもあります。本連載「CTF問題から学ぶセキュリティ基礎知識」では、筆者が所属する会社で実施している社内向けのセキュリティコンテスト(CTF)の問題を中心に毎回一問一答をしていきます。参加者に自分事として受け止めてもらうべく、出題する問題は、主に「社内でセキュリティの問題が発生し、それを解決する」ストーリー仕立てにしています。

問題

 前回、通信の暗号化の話題に触れましたが、今回はその「暗号」をより深く知るための問題です。前回までに比べて緊急度の低い状況の問題なので、落ち着いて考えられるのではないでしょうか。

 また、今回は今記事を読んでいる皆さんも、読みながら解くことのできる問題なので、ぜひ挑戦してみてください。

 ヒントは、この記事のタイトルにある「ROT13」です。

ジャンル:暗号

 過去に退職した暗号好きの社員が残したメモがあります。

Qb lbh xabj EBG13?
Gur SYNT vf UFPGS
{look at the OTHER guy's shoes}

 何かの方法で変換してあるようです。元の文章を読み取りましょう。


この問題から学べる知識

 この問題に取り組むことで、下記のセキュリティ知識を学ぶことができます。

  • 換字式暗号とその利用用途

問題の解き方

 前提としてCTFは、その名の通り、「フラグ」を見つけることが正解の条件です。フラグは、大会ごとに決められた特定の形式の文字列であることが多く、今回の場合、「HSCTF{xxx}」(xxxは問題ごとに割り当てられた任意の文字列)という形式です。この問題では、暗号を解いて元の文章を読み取ることができれば、フラグを見つけることができ、正解となります。

解き方の方針

 暗号文は、アルファベットの大文字/小文字、数字、記号で構成されています。また、かっこで囲まれた部分が「look at the OTHER guy's shoes」という英文として読み取ることができます。最大のヒント「ROT13」を踏まえて、どんな暗号が使われており、どのように復号すればよいかを調査してみましょう。

使用されている暗号方式

 まずは使用されている暗号方式を特定しましょう。

Qb lbh xabj EBG13?
Gur SYNT vf UFPGS
{look at the OTHER guy's shoes}

 暗号文は一見、意味が分からない文字列のように見えますが、暗号文の大部分がアルファベットで行頭が大文字になっていること、定期的に空白文字が挿入されていること、クエスチョンマークが行末に記載されていることなどを考えると、元は英語の文章のように見えます。このことから、アルファベットの置き換えによる「換字式暗号」が使われている可能性が高いと考えられます。

 換字式暗号とは、平文を1文字または数文字単位で、別の文字や記号に変換することで暗号文を生成するものです。例えば、有名な換字式暗号として、最も古い暗号の一つといわれる「シーザー暗号」があります。仕組みは単純で、アルファベットを決まった文字数分ずらして暗号文とします。復号する際は逆の手順を行います。ここで「何文字ずらすか」という情報が暗号の鍵の役割を果たします。

シーザー暗号(3文字ずらす例)

 さて、今回使用されている暗号方式ですが、問題文に書かれていた"look at the OTHER guy's shoes"で検索してみましょう。タイトルと同じ「ROT13」という名前の暗号を発見できるはずです。

ROT13を用いた暗号化、復号

 ROT13は換字式暗号の一つで、暗号化の方法はシーザー暗号と同じです。ずらす文字数が13文字と決められており、アルファベットが26文字なので、そのちょうど半分になっています。そのため、暗号化と復号が同じ手順になるという特徴があります。

ROT13

 ROT13で問題の暗号文を復号すると、1文字目は「Q」→「D」、二文字目は「b」→「o」となります。手作業で1文字ずつ変換してももちろん復号できますが、プログラムやツールを使用するのがお勧めです。例えば、PythonにはROT13のライブラリが用意されているので、簡単に復号できます。

Pythonで問題の暗号文を復号した様子

 Pythonで問題の暗号文を復号すると、復号後の文章の中にフラグを発見することができました。

 他にも、「CyderChef」などのオンラインのツールを使用することもできます。オンラインのツールを使用する場合は、業務情報などの機密情報を入力しないように気を付けましょう。オンラインツール全般にいえることですが、入力したデータはオンラインツールの提供者に閲覧されたり、インターネットで公開されたりする可能性があります。オンラインの翻訳やOCR、ファイル変換などのアップロードを伴うようなサービスは、便利で、つい使ってしまいがちですので、注意しましょう。

 今回の問題にあるような過去の社員が残したメモには、業務情報が書かれている可能性があるので、もちろん使用してはいけませんね。

ROT13はどのように使われているのか

 解いて分かる通り、ROT13は容易に復号可能な「弱い暗号」とされています。そのため、機密情報を隠す目的での利用には向いていません。

 ただ、一見するだけでは何が書いてあるかを瞬時に読み取ることができないので、ネタバレやパズルの答え、冗談のオチなどを隠す目的で用いられていました。これは、人間にとって一見して分からないというだけではなく、機械にとっても、単純な文字列の検索では見つけることができないことを意味します。もちろん、ROT13を踏まえて検索すれば話は別ですが。

 ROT13は現在、暗号化というよりは、「難読化」の目的で使われています。例えば、通常人間が読む必要のないレジストリのキーを難読化したり、スパムbotからメールアドレスを隠したりするために使われることがあります。他にも、国内では2020年ごろから流行している「IcedID」というマルウェアに含まれるコードを難読化するために、ROT13が使用されていた例もありました。

 解析中のパラメーターやログなどにふと紛れ込んでいるROT13。実行したソフトウェアやコマンド、不審な通信先などを特定する重要な手掛かりが隠されているかもしれないのに、知らなければただのランダムな文字列と思って見落としてしまうかもしれません。同じように、「Base64」などで符号化(エンコード)されたデータも、知っていればぴんとくるし、知らなければ見落としてしまう可能性があります。通信やログの解析、トラブルシューティングなどの業務を行う方は、覚えておけばきっとどこかで役立つことでしょう。

その他の古典的な暗号

 今回扱った換字式暗号は古典暗号の一つです。シーザー暗号やROT13のような単純なものは解読が容易なため、時代とともに改良され、さまざまな暗号方式が提唱されていきました。第二次世界大戦でドイツ軍に採用されていた「エニグマ」という暗号機を用いた暗号方式も、換字式暗号の一種です。これは単純に文字を1対1で置換するものではなく、一文字ごとに暗号機のローターが動くことで、同じ文字を入力しても前回とは別の文字に変換されるようになっています。より複雑な仕組みにすることで、第三者に解読されることを防ごうとしたのです。

 他にも、換字式暗号と共によく知られる古典暗号として、「転置式暗号」があります。転置式暗号は、平文の文字を並び替えて暗号文を生成する暗号です。古いものでは、「スキュタレー暗号」が有名です。スキュタレー暗号は、特定の太さの棒に細い紙を巻き付け、棒に沿って文字を書きます。紙を棒からほどくと元の文章が読めなくなります。復号する際は、同じ太さの棒に巻き付けます。スキュタレー暗号の場合、この時の棒の太さが暗号の鍵の役割を果たします。

スキュタレー暗号

現代の暗号

 今回、ROT13をはじめとする古典的な暗号を幾つか紹介しましたが、現在使用されている暗号はそれらを改良して高い機密性を保証するものとなっています。

 暗号の安全性を考える上で、1883年に公表された論文の中で提案された「ケルクホフスの原理」は重要な考え方です。「暗号方式は秘密鍵以外の全てが公知になったとしても安全であること」という内容で、現在でも暗号の安全性を保証するための要件として知られています。

 システムに実装する安全な暗号を選ぶ際には、CRYPTREC(Cryptography Research and Evaluation Committees)の電子政府推奨暗号リストを参考にすることをお勧めします。CRYPTRECは電子政府推奨暗号の安全性を評価、監視し、暗号技術の適切な実装法と運用法を調査、検討するプロジェクトです。暗号リストの他、推奨される鍵長や、危殆(きたい)化(技術の進歩などにより暗号の安全性に問題が生じること)に伴う注意喚起なども出しており、暗号化を用いた安全なシステムを構築、運用する際に役立ちます。

おわりに

 問題は解けたでしょうか? ROT13を知っている方は、考えるまでもなかったかもしれませんね。

 システムに暗号化を実装するには、最低限、安全な暗号について知っておけば安心です。しかし、ログの解析やトラブルシューティングを行う場合などには幅広い知識や多様な観点が重要になります。最新の技術だけではなく、ROT13のように昔から使われてきた手法にも目を向け、知っておくと役立つことでしょう。

 暗号というと理論や数学のイメージが先行して、少しとっつきにくい印象を持っている方も多いかもしれませんが、ROT13のような素朴な暗号をきっかけに、さまざまな暗号を探してみてはいかがでしょうか。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。