Findy Engineer Lab

エンジニアのちょい先を考えるメディア

『SSL/TLS実践入門』の著者に聞く、難易度が高い暗号化技術の学習を成功させるポイント

 

SSL/TLS は通信の秘密を守る重要なプロトコルであり、今日のWebで広く利用されています。そんな SSL/TLS を通して、暗号化技術について体系的に学べる1冊『SSL/TLS実践入門──Webの安全性を支える暗号化技術の設計思想』が2024年4月25日に発売されました。著者は市原 創さんと板倉 広明さんです。

書籍では、暗号化技術の基礎から SSL/TLS の実践的な運用までを網羅的に解説しています。そこで著者の2人に、本書の内容や執筆の背景、そして暗号化技術を学ぶポイントについて伺いました。

手を動かしながら暗号化技術について体系的に学べる1冊

ーー本書ではどのような内容が扱われているのでしょうか。

市原 本書は、SSL/TLSの土台である暗号化技術について体系的に学べるような構成になっています。まず、暗号化技術の全体像を読者に把握してもらうため、歴史的な背景から最新の動向、そして今後の展望まで、幅広いトピックを扱っています。

そのうえで、暗号化技術を理解するための基礎知識として、暗号化技術の基本的な概念や公開鍵暗号、共通鍵暗号、ハッシュ関数などについて解説しています。さらに、SSL/TLS の代表的なプロトコルや TLS1.3 の特性なども説明しています。

加えて、実践的な内容として、SSL/TLSの脆弱性や攻撃手法、それに対する対策についても盛り込みました。こうした構成により、暗号化技術について体系的に学べるようになっています。

板倉 本書のもう1つの大きな特徴は、実践的な内容と豊富なサンプルコードです。Dockerを使った開発環境の構築手順をていねいに解説していますし、各章で登場するサンプルコードは、実際に動かしながら理解を深められるようになっています。

ーー網羅的かつ実践的な内容になっているのですね。本書は、どのようなレベルのエンジニアを対象としているのでしょうか。

板倉 暗号化技術について学び始めた初学者が、次のステップに進もうとした時に手に取ってもらえるような本を目指しました。というのも、初学者が2冊目に読む本が難しすぎると、学習を挫折する原因になってしまうことを、自分たちの体験を通してよく知っているからです。

そこで本書では、暗号化技術の入門書と専門書の中間に位置する内容を目指しました。具体的には、暗号化技術の基礎知識が少ない初学者の方にも読んでいただけるよう、基本的な概念はていねいに説明しています。

同時に、ある程度プログラミングの経験がある方を対象として、実践的な内容も盛り込んでいます。サンプルコードを実際に動かしながら理解を深められるようにすることで、より具体的なイメージを持って学習を進められるようにしました。

ーー本書の上手な使い方を教えてください。

市原 本書では、暗号化技術の基礎から応用まで幅広く解説しています。読み方としては、大きく分けて2通りの方法があります。

1つ目は、索引からご自身の関心のあるキーワードを見つけ、そこから読み始める方法です。本書は、まるで辞書のように必要な情報を必要なときにピックアップできる設計になっています。

2つ目は、最初から順番に読み進めていく方法です。本書は、基礎的な内容から徐々に高度な話題へと進んでいく流れになっているので、無理なく理解を深められるはずです。

現在、暗号化技術を学ぶ裾野は広がってきています。昔はWebサーバー管理者くらいしか興味がなかったテーマですが、現在は通信で暗号化しないケースはほとんどありません。SSL/TLS に仕事で関わる人は多いはずで、もう少し詳しく知りたいと思ったときに、本書を手に取ってもらいたいです。

開発者目線で伝える、暗号化技術の運用ガイドブックの誕生

ーー著者のお二人は、どのような技術的バックグラウンドをお持ちなのでしょうか。

市原 私は、新卒から6年ほど大規模なサーバー周りのシステム開発に従事した後、Web 開発なども幅広く経験しました。その後、複合機や車載システムの組み込み開発に携わるようになりました。

特に複合機の開発では、機密情報を扱う関係上、セキュリティ対策が欠かせません。セキュリティへの要求が高い組み込み機器の開発に携わるなかで、暗号化技術や認証技術に関する知見を深めていきました。

板倉 私も市原さんと同じく、複合機開発に携わっていました。ただ、私の場合は主にアプリケーション寄りの部分を担当し、認証やログインといったセキュリティ関連の部分に関わってきました。

複合機開発で培ったセキュリティ関連の知識や経験が、本書の執筆に大いに役立ちましたね。

ーー本書が誕生した背景について教えてください。

市原 複合機の組み込みソフトウェア開発で暗号機能の部分を担当していた経験を活かし、活動の幅を広げていこうと考えていました。そして2018年頃に、TLS1.3 の標準化が話題になったんです。

当時、TLS1.3 は大きな注目を集めていましたが、日本語の解説記事はまだ少ない状況でした。そこで、TLS1.3 について解説する記事をWebメディアに寄稿することにしたんです。

その記事が思いのほか好評で、その縁で技術評論社さんの「WEB+DB PRESS」にも TLS1.3 関連の記事を、板倉さんと共同で寄稿することになりました。

「WEB+DB PRESS」に寄稿した記事にも大きな反響がありました。そして、編集部の方から「TLS に関する書籍をつくりませんか」とお声がけいただいたことが、本書の企画につながったんです。

ーーどのようなコンセプトで本書を作ろうと思ったのですか?

市原 開発者に寄り添った、実践的な暗号化技術の解説本を作りたいと思ったんです。暗号化技術の本というと、理論的な説明が中心になりがちですが、本書では開発者の目線に立って、実際の開発でどのように暗号化技術を活用していくのかに焦点を当てました。

そのために、開発環境の構築からていねいに説明するためのツールとして、Docker を採用しています。Docker を使うことで、サンプルコードを実行するための環境を簡単に用意できるようになっています。

板倉 Dockerは現在の開発現場で広く使われているツールの一つです。Docker を使うことで、開発環境の構築手順をわかりやすく説明できますし、読者の方にも実際にコードを動かしながら学んでいただくことができます。

また、私自身が Docker に詳しいということもあり、Docker を使った説明は本書の特徴の一つになっていると思います。

ーー執筆するうえで、特に気をつかった点はありますか。

板倉 何より、間違った情報を伝えてはならないという点に気をつけました。特に、Dockerを使う手順の説明については、かなり注意を払いました。

なぜなら、「書いてあるとおりの手順で進めたのに動かない」なんて事態が起こったら、読者のモチベーションが下がってしまうからです。その部分は何度も反復して確認し、間違いがないように注意深く執筆を進めました。

初学者がつまずかないように、1~2冊目に手に取る本であってほしい

ーー暗号化技術の学習には、どのような難しさがあるのでしょうか。

市原 暗号化技術の学習において最も難しい点は、情報量の多さとそのカバー範囲の広さだと思います。すべての情報が書籍で網羅的に解説されているわけではないんです。

例えば、私自身、データフォーマットの扱いでつまずいたことがあります。暗号を使う際は標準に則ったフォーマットを使う必要がありますが、そのフォーマットも歴史的な経緯で変遷を続けています。開発者がその変遷について理解していないと、レガシーなシステムをサポートできなくなってしまう。しかし、そういった話を解説している書籍はほとんどないのが現状です。

このように、本に書かれていないけれども、実務で必ず直面する課題がある。そこで、本書では歴史的な経緯の部分にも触れるようにしました。

ーー著者のお二人は、実際どのようにして暗号化技術を学んできたのでしょう。

市原 暗号化技術に関する情報は膨大で、個人レベルで学ぶのはハードルが高いと思います。私自身、最初からいきなり暗号化技術を専門に学んだわけではなく、まずはセキュリティ全般について解説している書籍を読むところから始めました。

ただ、実際に仕事で暗号化技術に関わり出すと、書籍の情報だけでは不十分だと気づかされます。例えば、先ほど挙げた標準化の話やフォーマットの話は、書籍ではほとんど言及されていません。

そこで、自分でドキュメントを探すなど情報収集をしながら、直面している課題の答え合わせをして、少しずつ学んでいったのです。

板倉 私も同じような経験をしました。書籍などから一次情報を地道に漁って、ドキュメントだけでなく OSS で公開されているソースコードの部分も読みながら学んでいきました。

市原 暗号化技術は数学的な理論に基づく部分が多いため、理論的な理解が欠かせません。しかし、理論ばかりを追求しても、実際の開発で活用するのは難しい。

私が暗号技術を学ぶ過程でも、理論と実践のバランスの取り方に苦労しました。そうした経験を踏まえ、本書では理論的な説明と実践的な内容のバランスを重視しています。コードを動かしながら学ぶことで、理論と実践の橋渡しができればと考えています。

ーー本書を読んだ読者に、どのようになってほしいと思いますか。

板倉 本書を読んだ後、ぜひ OpenSSL の文書を読んでいただきたいです。最近、OpenSSL のドキュメントを充実させる活動が活発になっているので、より詳しい情報が得られるでしょう。

そして最終的には、ソースコードを読むことをおすすめします。

例えば、OpenSSL の s_client や s_time の使い方が分からずフォーラムで質問しても、「それならソースコードのここを読め。どんな実装になっているか実際に書いてある」というようなアドバイスが返ってくるものです。だからこそ、怖がらずにソースコードまで読み込んでいただきたい。その第一歩として、本書を活用していただければと思います。

市原 SSL/TLS は、暗号化技術の集大成のようなものです。SSL/TLS を学ぶことで、暗号化技術全体に応用が効くようになります。さらに、Web、セキュリティなど開発全般の理解を深める土台も築けるでしょう。

ただし、本書だけですべてを網羅できるわけではありません。本書をきっかけとして暗号化技術に興味を持っていただき、さらに専門的な書籍やオンライン上の情報などに自主的にアクセスして、学習を深めていただければと思います。

ーー最後に読者の方にメッセージをお願いします。

市原 暗号化技術はマニアックなテーマではありますが、実はさまざまな部分に浸透している技術です。みんなが意識していない、縁の下の力持ちのような存在ですね。

ですが、ちょっと意識するとすぐそこにある技術だと思うんです。今まで意識していなかったような方にも、本書をきっかけに暗号化技術を意識していただければと思っています。

板倉 暗号化技術を意識すると Web の見方が変わってきますよね。「Web は HTTPS」という理解をしているところから本書を読んで TLS に接していくと、さまざまな歴史を経て今の Web が成り立っているんだということが感じられるはずです。

ぜひ暗号化技術を学ぶ1冊目、もしくは2冊目として本書を活用してください。きっと新しい発見や学びがあるはずです。