Web技術の限界。画面の捏造がちょろすぎる理由

校長
校長
Cover Image for Web技術の限界。画面の捏造がちょろすぎる理由

はじめに

どうも、私立YouTube高専校長です。 本日は、Web技術の原理的な限界について、お話したいと思います。

先日、ラムダ技術部さんの、興味深い動画を拝見しました。 それは、Coincheckの総資産画面を、ブラウザの開発者ツールでいじって、総資産を160兆円にするというものです。

ご覧のように、開発者ツールを使えば、誰でも、Webサイトの文字をいじって、偽の画面を作る事ができます。 しかし、Coincheckにとっても、このような捏造された画面がインターネットに流布することは、望ましくないはずです。 なぜこのような不正行為を、Webの世界では、のうのうと受け入れているんでしょうか?

実は、これは、Webの根本的な仕組みに由来する問題で、 対策したくても、対策できないのです。

Webの仕組みを理解していないと、なぜこれが、原理的に防ぐことが出来ないのか分からないと思うので、それを解説してみようかなと思います。

まずは、Webについて、おさらいしましょう。 Webとは、World Wide Webの略です。身近には、WebサイトのURLの先頭で見かける、wwwというのもWorld Wide Webを意味しています。 Webは、インターネットを跨いで、情報を交換するための技術で、大きく3つのコア技術があります。それが、HTTP, URL, HTMLです。

まず、インターネットで情報を交換するためには、情報を提供するサーバーと、情報を入手するクライアントがいます。 身近な例でいうと、サーバーというのは、Twitter社が運用するサーバーで、クライアントというのは、あなたのパソコンやスマフォだと思ってください。 この、サーバーとクライアント間で、情報を交換するための、取り決めが、先ほどご紹介したHTTPとURLとHTMLです。

まず、HTTPについて説明します。 これは、Webにおける通信の方法に関する取り決めです。 HTTPでは、クライアントがサーバーに対して、リクエストを行い、その返答をサーバーが行うという取り決めを定義しています。 したがって、Webの世界において、最初に声をかけるのは、常にクライアントです。 あなたも、Webサイトを見るときの事を思い出すと、常に、自分がクリックして、初めて通信が始まる、というのが経験的に、理解できるかと思います。

したがって、クライアントが、情報を入手するためには、欲しい情報がどこにあるかを指定して、リクエストをする必要があります。 そのための取り決めが、URLです。URLは、Uniform Resource Locatorの省略で、Webの世界にある、情報の場所を指定するための識別子です。 URLは、DNSという仕組みによって実現しており、URLのドメインによって、サーバーのIPアドレスを入手し、 そのサーバーに、先ほどご説明したHTTP通信を使ってリクエストを行うことで、サーバーから欲しい情報を貰います。

それでは、サーバーはどのような返答をくれるのでしょうか?それが、HTMLです。 あなたがご覧になっているWebサイトは、HTMLというテキストファイルによって記述されています。 ブラウザは、その"テキストファイル"(つまり、文字列)を解釈して、画面をレンダリングします。

このとき、クライアント、つまりあなたのブラウザで、画面をレンダリングしているというのが、画面捏造を防げない、根本的な原因になります。

クライアントが、サーバーからHTMLを受け取った後、最終的に画面をレンダリングしているのは、あくまでクライアント、 つまりあなたのブラウザなので、受け取った後で、HTMLを改ざんすれば、画面の捏造は容易にできてしまうのです。

ところで、ブラウザのURLの横に鍵マークがあることに気がついたことはあるでしょうか? これは、HTTPSという暗号化された通信によって、第三者による改竄を防止している機能が有効になっている事の証です。 しかし、たとえ、HTTPSが有効になっていたとしても、ブラウザが受けとった後は、暗号化されていない平文のテキストファイルなので、ユーザーは改竄し放題です。

これが、開発者ツールでラムダ技術部さんがやっていたことです。

このように、HTMLを読み解き、画像を捏造することは、違法にならないのでしょうか? こういった行為は、リバースエンジニアリングと呼ばれます。

結論からいうと、捏造する行為自体は、罪に問われません。 しかし、今回の動画のサムネのように、捏造した画像を不用意に公開すると、著作権や知的財産権の侵害として訴えられる可能性があります。

また、捏造した画像を使って宣伝したり、投資を勧誘することは、詐欺罪に問われる可能性があります。 したがって、中途半端な知識を得て、面白い事を知ったと、調子に乗らず、趣味の範囲で行いましょう。 なお、法律については、専門家ではないので、詳細は、弁護士に相談してください。

しかし、原理的に防ぐことが出来ないとは言え、 Webサイトの運営側としても、自社のサイトを捏造した画像が出回ることは、ブランディングや名誉を棄損するリスクがあります。 そこで、Webサイトの開発者として、エンジニアは、どのような対応ができるでしょうか?

一つ、よく見られるのは、難読化です。HTMLに限らず、CSSやJavaScriptを含めて、人間に読みにくくすることで、捏造をある程度妨げる事ができます。

しかし、先ほど、申し上げた通り、多少めんどくさくなるだけで、完全に防ぐことは不可能です。

2つめの対策としては、これは妄想レベルの話で、現実的ではありませんが、 サーバーでレンダリングして、ディスプレイのドライバICとサーバー間でE2Eで暗号化するようなことが実現すれば、捏造できなくなると思います。 その場合、ブラウザは暗号化されたデータしか見れないので、改ざんする事はできません。

しかし、そうすると、ブラウザの機能が制限されて、相当不便になると思うので、実現はしないと思います。 そもそも、そんなハードウェアがおそらく実在しないので、一エンジニアで解決できるレベルの話でもないです。

このように、Webサイトを捏造するというのは、Webの仕組み上、どうしてもちょろすぎるものです。根本的に、防ぐ手立てはありません。

なので、冒頭でお話ししたように、Coincheckという優れたエンジニアが集まる企業ですら、 このような不正行為を、のうのうと受け入れているのです。ご理解頂けたでしょうか?

私立YouTube高専では、こういったコンピュータ関連の興味深い技術について、基礎から分かりやすく解説しているので、是非チャンネル登録お願いします。

本日の動画の内容は以上になります。ここまでご視聴ありがとうございました。