静岡大学で利用されているWeb技術を調査する
こんにちは.お久しぶりです.komedaです.
本日はアドベントカレンダー4日目ということで,私komedaが記事を書きます.
何について書くか,直前まで悩んでいたんですが,本題に入る前に,少し私事についてお話しさせてください.
実は私komedaは今年でこの思い出深き静岡大学を卒業します.
過去の記事を読んで頂ければ分かるかと思いますが,私komedaは静岡大学の未来を真剣に憂いております.
情報科学実験IIIは本当に良い授業でした.辛かったあの日々も,今の私komedaを作っていると考えると,厳しくも暖かかった,彼らのことを思い浮かべます.ありがとう.情報科学実験III...
さて,ムダ話はここら辺にして本題に入りましょう.
実は,この記事を書く直前まで何について書こうか悩んでおりました.
案は大きく2つありました.
一つは,任意のHTTPレスポンスに含まれるimgタグのsrc属性をunchi.pngに変えるプロキシを作ること.
静岡大学の資産として,有益なのはどちらか考えた結果,うんちプロキシを作ることにしました.何故なら,静岡大学のホームページは未だにHTTPを使用しているからです.うんちプロキシを静岡大学に寄贈することにより,静岡大学はHTTPの危険を身を以て体感することができます.
しかし,問題が発生しました.Rustでうんちプロキシを作っていたのですが,利用していたライブラリが想定通りの動作をせず,今日中に作り終わらないな,ということで,急遽他の案へ変更することにしました.
今回は間に合いませんでしたが,うんちプロキシを完成させた末には,うんちプロキシを静岡大学の方へ寄贈させて頂こうと考えております.うんちプロキシを未来永劫静岡大学,いずれは国宝として,手厚く扱って頂ければと思います.
本日執筆させて頂くのは,もう一つの案,静岡大学ホームページの技術調査についてです.
先ほど述べたように,私komedaは今年でこの静岡大学を去ります.komedaがこの大学から去る前に,何か恩返しをしなければと思い,この題で書くことに決めました.
本記事の目次は以下の通りです.
では,本題へ移りましょう.
静岡大学ホームページ概要
まずは静岡大学ホームページの概要についてざっと紹介します.ホームページへは以下のリンクから飛ぶことができます.
我らが静岡大学.このホームページに訪れただけで実家のような安心感を得られますね.
使用技術について
まずはこのホームページの使用技術について調査していきましょう.と言っても,既存のサービスを使って結果を得るだけですが.Wappalyzerを使っていきます.
私komedaは普段からFirefoxを使っているのですが,Wappalyzerのプラグインを入れており,そちらの方を使っていきます.以下解析結果です.
なんとも質素な技術ですね.デザインからも明らかですが,十年来の歴史を感じます.
特に言うことはありません.大学のホームページなんてこんなもんでしょう.
しかし,一つだけ.批判する気はありませんが,jQuery 2.0.3かぁ...
時代は令和だというのに...VueでNuxtしてSSR(笑)しようぜ(笑)
ドメイン情報について
続いてドメイン情報について調査していきます.まずはwhoisコマンドでドメインの情報を取得してみましょう.
各項目について,解説をしていきます.と言っても,日本語で情報が取得できたので,ぱっと見でなんとなく分かりますね.
登録担当者,技術連絡担当者について少し説明します.このラベルの値は,識別子のようなものです.ですから,この値自体にはなんの意味も無いことに注意してください.
ネームサーバ情報をwhoisで取得できるのは興味深いです.これは知りませんでした.
ネームサーバ関連の話で,接続年月日について少し説明します.接続年月日とは,ドメイン名がネームサーバに設定された年月日のことです.2014年9月3日に,shizuoka.ac.jpはネームサーバに登録されたんですね.
今回の件で,静岡大学のネットワークについて調査していた最中,静岡大学が保持するAS(自律システム,あるネットワークポリシーの基で運営されるネットワーク)を発見しました.
静岡大学では,AS24268を保持しており,Peer(相互に接続されているAS)は東海コミュニケーションズが保持するAS10010,恐らくSINET(学術用ネットワーク.日本全国の大学に張り巡らされている)用の国立情報学研究所が保持するAS2907がありました.
そして,AS24268のネットワークアドレスは,133.70.0.0/16でした.プレフィックスは16ビットなので,65536個のグローバルIPアドレスを保持できる計算ですね.すごい.
ちなみに,東大のプレフィックスは7で,200,704個のグローバルIPアドレスを保持できます.
聞いた話によると,静岡大学は,近いうちに静岡キャンパスと浜松キャンパスが分離し,浜松キャンパスは東京大学浜松キャンパスになるそうですね.私komedaが卒業したあとの話ですが,とても名誉なことだと思います.
続いて,digコマンドを用いてDNSレコードの取得をしてみましょう.digコマンドを用いることで,ドメインに紐づいた各種情報を取得することができます.
まずはNSレコード(ドメイン情報を持っているネームサーバの情報)を取得してみましょう.
whoisでの情報取得でもあった通り,shizuoka.ac.jpの情報は3つのNSに保持されているようです.
では,次にshizuoka.ac.jpのIPを取得してみましょう.DNSでドメインからIPを引き出す際には,Aレコードというものを用います.
shizuoka.ac.jpのIPは133.70.8.11だそうです.皆さん,IPというものはネットワークにおけるDNA情報のようなものです.母体を識別するための識別子です.しかし,DNA情報ほど長くないので,是非覚えてあげてください.
下の画像はwww.shizuoka.ac.jpのAレコードを取得した結果です.
結果から分かる通り,静岡大学のホームページは静岡大学が保持しているAS内には存在しないみたいですね.なるほど.
証明書について
最後に,証明書情報について取得してみましょう.証明書はSSL/TLS通信をする上で重要な役割を果たします.証明書の規格にはX.509というものが用いられており,証明書はそのサーバ運営社の信頼を確立します.安全でない証明書や,弱い証明書を使っている場合には,そのサーバは危険だと見なされます.さあ,静岡大学の信頼はいかほどのものか,確かめていきましょう.
証明書の情報はブラウザ上部から簡単に閲覧することができます.基本情報は以下の通りです.何の変哲もない証明書ですね.DigiCert社から発行された証明書のようです.
続いて,詳細情報を見ていきましょう.以下が詳細情報の画面になっております.
証明書にはVer.1,Ver.2,Ver.3と3つのバージョンがあります.静岡大学の証明書は現在主流なVer.3を利用しています.
Validityを確認します.この項目は証明書の有効期限を表します.証明書では暗号技術が用いられています.現代の暗号技術は,主に計算量的安全性というものに安全を委ねています.ですから,コンピュータが進化し,単位時間あたりの計算量が増えれば,現代の暗号は危殆化してしいまいます.そのため,有効期限というものが定められているのです.
www.shizuoka.ac.jpの証明書の期限は,2019年6月27日9時から2020年6月26日9時までだそうです.まだまだ先ですね.
証明書に基本的に載っている情報はそう多くはありません.バージョン情報やシリアルナンバー,有効期限や使用するアルゴリズムなどが基本的な情報になります.
証明書のVer.3からは,拡張を使えるようになりました.現代の証明書は,拡張に多くの情報を載せています.拡張情報を見ていきましょう.
各拡張では,Critical or Not Criticalを設定します.これは,Criticalであれば,確実に正しい処理をせよ,という意味を持っています.www.shizuoka.ac.jpの証明書でCriticalな拡張は,Certificate Key Usageのみです.
Certificate Key Usageとは,公開鍵の使用用途を示すものです.値はSigningとKey Enciphermentの2つでした.つまり,署名と暗号化のために使われるそうです.
他に,キモとなる拡張について,いくつか説明します.
まずはCertificate Authority Key Identifierについてです.これは,鍵の識別子を付加する拡張です.例えば,静岡大学が複数の鍵ペアを所有している場合にこの拡張は有効で,公開鍵を区別することができます.具体的には,以下のような値が格納されています.
次に,CRL Distribution Pointsについてです.この拡張について説明する前に,証明書の失効について説明します.証明書には有効期限が付いています.しかし,有効期限が切れる前に,例えば秘密鍵が漏洩した場合,TLSの通信は盗聴されてしまいます.そのような時のために,証明書の失効情報を公開する仕組みが必要です.その情報を公開する仕組みが,CRL Distribution Pointsに記載されている証明書失効リスト(Certificate Revocation List)のエンドポイントです.この拡張には具体的に,URI: http://cdp.rapidssl.com/RapidSSLRSACA2018.crlという値が格納されていました.このURIがCRLのエンドポイントです.
また,証明書の失効情報を伝える方法は,CRLでの公開の他にもOCSP(Online Certificate Status Protocol )と呼ばれる仕組みもあります.これは,CRLが長くなってしまった場合に,パフォーマンスやプライバシー(見る必要のない情報まで見るため)の問題を解決するために導入されました.プロトコルなので,一つの証明書に関する問い合わせに対し,一つの回答を返答します.また,OCSPでは,CRLでの問題だった,反射攻撃に耐性があります.OCSPでは,各パケットにNonce(その通信でしか利用できない一意な値)を保持しているため反射攻撃に耐性があります(詳しくはwikipedia).しかし,OCSPでは暗号化を強制しないため,レスポンスの改ざんが行われる危険性が存在します.
OCSPの情報は,Authority Information Accessの拡張に格納されています.
以上で証明書の説明については終了ですが,SSL LabsというSSL/TLSの強度を測ることができる優秀なツールがあるので,そちらも使ってみました.
SSL Labsを用いることで,SSL/TLS通信の強度や脆弱性の有無を測ることができます.URLを入力するだけで,簡単に診断できます.以下,結果です.
Aランクらしいです.証明書の店数は100点ですね.その他で減点がありますね.そちらを見ていきましょう.
まずはProtocol Supportについてです.www.shizuoka.ac.jpでは,複数のTLSバージョンをサポートしています.メインはTLS1.2ですが,盗聴が可能になる脆弱性が存在するTLS1.0と1.1をサポートしているためだと考えられます.TLS1.0/1.1は,2020年6月以降,ブラウザベンダーのサポートが終了します.www.shizuoka.ac.jpは,直ちにTLS1.0/1.1の利用を取りやめなさい.そして,TLS1.3への対応を行いなさい.
続いて,Key Exchangeについてです.TLSでの鍵交換は,TLSハンドシェイク時に行われます.具体的には,Diffie-Hellman鍵共有やRSAを用いて,AESなどの処理が軽い共通鍵暗号の暗号鍵を交換します.減点されてしまった直接的な理由はわかりませんが,SSL Labsではテストの際にいくつものクライアントでハンドシェイクを試します.中にはAndroid2.3.7だったり,IE 6/XPなども存在します.それらのクライアントでハンドシェイクがこけたことが原因でしょうか?(いやサポート切れてるし...)
最後にCipher Strengthについてです.www.shizuoka.ac.jpでは,複数の暗号アルゴリズムが利用できます.クライアント側の申し出次第で,脆弱なアルゴリズムの利用もできるようです.暗号利用モードというブロック暗号を安全に利用する仕組みがあります.上位のアルゴリズムでは,GCMという安全な暗号利用モードを選択しているのですが,WEAKとなっているアルゴリズムでは,TLSでの選択平文攻撃(Chosen Plaintext Attack)が確認されているCBCモードでの利用が可能です.減点の原因は恐らくそれでしょう.
まとめ
いかがでしたでしょうか.後半は証明書やTLSの解説がメインになってしまいましたが,静岡大学ホームページの技術調査を行うことができました.愛すべき母校のホームページは,母の顔そのものです.常に安全な通信,安全な技術の利用を心掛けてほしいものです.HTTPの利用を確認したので,余裕があったら後のアドカレで静岡大学のホームページの画像をすべてうんちにするプロキシの制作もやろうと考えています.
長くなりましたが,締めに入らせてもらいます.私komedaは今年で静岡大学を卒業します.しかし,心はいつでも静岡大学に.情報科学実験IIIの思い出を胸に,前へ進みます.では,また会う日まで.