先日、ちょっと検証したいことがありTomcatのソースコードを公式サイトからダウンロードしてみることにしました。
ダウンロードページhttps://tomcat.apache.org/download-80.cgiのキャプチャは以下のとおりですが、それぞれのダウンロードするファイル名の後ろに"pgp"や"sha512"という記載があります。
これはダウンロードしたファイルが本当に正しいものであるかを検証するための仕組みですが、恥ずかしながらいつもファイルの検証をしていませんでした・・・
ですので、今回は"ダウンロードしたファイルのハッシュ値を計算して、正しくファイルがダウンロードできていることを確認してみたいと思います。
WindowsでファイルのSHA-512ハッシュ値を確認する方法は?
WindowsでファイルのSHA-512ハッシュ値を確認したい場合は、別途ツールなどをインストールする必要はなく、Windows標準のコマンドが用意されているるのでそれを使います。以下のMicrosoftの公式サイトのリンクを添付しますが、"certutil"コマンドというものです。
docs.microsoft.com
使い方、コマンドの構文は以下の通りです。
certutil -hashfile file SHA512
ちなみに、今回はハッシュ値の計算として"SHA512"を使用しますが、他にもMD5、SHA-256が有名で、これらも"certutil"コマンドでハッシュ値の確認ができます。
TomcatのソースファイルでSHA-512ハッシュ値を確認をしてみる
再掲ですが、今回はTomcat8.0.xのダウンロードページhttps://tomcat.apache.org/download-80.cgiより
ソースファイルをzipファイルでダウンロードしてSHA-256ハッシュ値を確認してみようと思います。
ダウンロードするファイは以下キャプチャの「Source Code Distributions」のzipですね。こちらの"zip"をクリックするとzipファイルがダウンロードされます。
以下の通り、今回はダウンロードしたファイルをCドライブ直下に格納します。
それでは、"certutil"コマンドを実行してSHA-512ハッシュ値を確認してみます。
上記キャプチャだと見づらいので、以下にもコマンド実行結果を貼り付けていますが、出力結果の2行目がそのハッシュ値になります。意味不明な長い文字列が出力されていますが、これがダウンロードしたソースファイルをSHA-512で計算したハッシュ値になります。
C:\>certutil -hashfile apache-tomcat-8.5.69-src.zip SHA512 SHA512 ハッシュ (対象 apache-tomcat-8.5.69-src.zip): 2dbc84cb39d3bc54d6b086da800a1c97a2307221eeaad8915735413f77e169b3a2041aeb6a841bd7be913b345239a9963aea9b0b088ede46af2ecf55d7c344d7 CertUtil: -hashfile コマンドは正常に完了しました。
あとは、このハッシュ値をTomcat公式サイトに記載されている内容と完全に一致していることを確認します。
先ほどのダウンロードした"zip"の右側にある"sha512"のリンクをクリックすることで確認できます。
少し見づらいですが、以下のような文字列が表示されると思います。これとさきほど計算した値が完全に一致していることが分かれば、
手元にダウンロードしたファイルが正しいものであることが確認できます。
おわりに
いかがでしたでしょうか。インターネットからダウンロードしたソフトウェアなどはこのように整合性のチェックをすることで、より安心してソフトを使うことができると思います。
ただし、この方法は万が一公式サイト(今回のケースだと、Apache Tomcat)が完全に乗っ取られていた場合などには、意味をなさなくなってしまうかもしれません。なぜならば、悪意のあるユーザーが悪意のあるソフトウェアに差し替えた後、ハッシュ値もその悪意のあるソフトウェアで計算して差し替えてしまえば、ダウンロードしたファイルのハッシュ値と公式サイトのハッシュ値が一致するため、一見正しいソフトウェアをダウンロードしていると判断してしまうためです。
滅多にあることではないかもしれませんが、一応意識として持っておくと良いと思います。
それでは最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。