【セキュリティ編】SSLとは、改ざんを防ぎ、身元保証までしてくれる、ありがたいプロトコルである|#エンジニアあるある システム開発現場・実録IT用語辞典

【セキュリティ編】SSLとは、改ざんを防ぎ、身元保証までしてくれる、ありがたいプロトコルである

お疲れさまです。最近、知り合いの会社のサイトで使用しているSSLについて、もう少し年額を安くできないかという相談を受けて調査をしました。日本では十分知名度がある会社のサイトでもFirefoxで閲覧すると警告メッセージが出る事象が報告されていたり、今後のブラウザの仕様がどう変わっていくか不確定な部分があったりと、判断が難しい調査になりました。

「WEBの安全性」については現状があまり良い状態にあるとは言えないので、今後も各ブラウザでさまざざなセキュリティに対する試みがなされると予想されます。

また、年々、セキュリティに対する要件が厳しくなっていることを実感しています。クロスサイトスクリプティングやSQLインジェクション等は、ミスなく対応すれば防ぐことができますが、最近では、フィッシング詐欺やDNSキャッシュポイズニングなど、プログラムでは防ぎようがないものに対しても注意を配るよう要求されることがあります。

WEB開発にかかわる身としては、今後もそんな試みや要件に振り回される日々が続くのではないか……、そんなことを思いました。

#エンジニアあるある 実録IT用語辞典【セキュリティ編】INDEX

「SSL」とは

「Secure Sockets Layer」の略。HTTP等で通信をする際に暗号化や認証をするプロトコル(通信規約)の1つ。

例えばHTTP通信をする際に送信される情報を見てみると、すべて人が見て理解できるような平文でやり取りされていることが分かる。そのため、暗号化などを行わないとIDやパスワードの情報を打ち込んだページの情報などは、ネットワーク管理者がその気になればだだ漏れになったり改ざんし放題だったりする。

そういった事態を防ぐために、暗号化をして盗聴を防いだり、ハッシュ値を付けて改ざんを防いでくれたりするありがたいプロトコルが、このSSLである。

また、DNSサーバやhostsファイルが細工されると、ブラウザ上で入力したアドレスとは違うサイトに誘導されてしまうというがWEBには存在する。SSLは接続したサイトの身元保証なんかもやってくれ、そうした罠にはまらないようにしてくれる。

SSLを実装しようとすると、暗号化や認証局との通信などに関するそれなりの知識が必要になるのだが、世の中便利なもので、末端のエンジニア的にはOpenSSLあたりが勝手にやってくれる程度のソウトウエア任せな気分でいても、ある程度はなんとかなってしまうかもしれない。

SSLを使用するには証明書を発行してくれる認証局が必要になる。あまり実績のない認証局と契約すると、ブラウザで表示した際に「この証明書、信頼できるの?」のようなメッセージが出るので注意が必要。そのため、商用サイトでSSLを使おうとすると毎年けっこうなお金を支払ってメジャーな認証局と契約することになる。

社内だけで運用するなど特に信用を必要としない場合は、自身のサイトに認証局を立て、通称「オレオレ証明書」を使用しても問題ないかもしれないもの。 

「暗号化」とは

決められたアルゴリズムで情報を変換することによって、当事者だけに解読できるようにすること。

単純な暗号化の例としては、A〜Zのアルファベットで書かれた文字を、AであればBに、BであればCに、ZであればAにと、1つずつ(もしくは決められた文字数ずつ)ズラすという手法がある。こうすればパッと見、どんな内容が書かれているか分からない。ただし、この程度の変換であれば誰かがその気になって注視すればあっさり解読されてしまう

コンピュータの世界の暗号化方式はざっと見回しただけでも、DES、Triple DES、AES、RSA等、さまざまな規格が存在し、今後も増え続けることが予想される。そのため暗号化が必要になった時はその都度トレンドを調べて身の丈にあった方式を選ばないといけないあたりが少し面倒かもしれない。 

「フィッシング詐欺」とは

正規のWEBサイトそっくりの偽ページを作成して、ユーザが個人情報やパスワードを入力するように誘導したり、正規の機関から送信されたように偽装したメールをユーザに送りつけ、偽のWEBサイトに誘導したりする行為。

例えば口座を持っている銀行から手続きの案内メール(実際には偽装された偽メール)が来て、それに従ってURL(これも偽装されている)を開き口座番号やパスワードを入力したら、入力情報がすべて悪意ある第三者に送信されていたといった、知らないとつい騙されてしまうような手口が使われている。

年々手口が巧妙になってきており、URLだけ見ると本当のサイトにリンクしているように見せかけて実際の遷移先は偽サイトになっていたり、アドレスバーを画像で偽造して正規のサイトを開いているように見せたりと、そういう無法なことよりも世の中のためになることに頭を使ってくださいと拡声器を持って説教したくなるような、手の込んだ手口が見られるようになっている。

フィッシング詐欺をシステム開発者の力で完全に防御するのは難しい。
が、アドレスバーやステータスバーを消すなど、ユーザから情報を隠すような行為を避けたり(最近のブラウザは消せないようになっている場合も多い)、ユーザに気を付けてねとできるだけ頻繁にアナウンスしたりすることなどが、有効な対応方法として挙げられる。

ユーザ側でできる対策としては、電子メールは基本的に信じないことにするとか、銀行や証券会社等のお金がかかわるサイトでユーザ名やパスワードを入力する時は、ブラウザの右下などに出てくるSSLの情報を確認するなどがある。

SSLの署名や認証局を確認することは、フィッシング詐欺に対して非常に高い防衛手段になるのだが、それじゃ、パスワードや個人情報を入力する時は毎回SSLを確認する癖をつけられるかと問われると、たぶん無理と答えざるを得ないあたりが、対策を難しくしている感がある。

ちなみにフィッシングは釣りの「fishing」と書きそうな気がするが、実際には「phishing」という造語が使用されている。

「DNSキャッシュ・ポイズニング」とは

言葉のとおり、DNSのキャッシュが汚染されてしまうこと。

DNSはアクセスしたいURLがどこにあるかを探してくれる便利な子である。

例えば某有名検索サイトに飛ぼうとして、www.g○○gle.comといったアドレスを打ち込むと、WEBブラウザは手近なDNSサーバに「www.g○○gle.comってどこにあるの?」と聞きに行く。DNSサーバは問い合わせが来ると、対応するIPアドレスを返してくれる。その後、WEBブラウザはそのIPアドレスによって相手のWEBサーバを見つけることができているわけである。

この子がいるお陰で、「えーと、G○○gleへ行くには、http://66.249.の…… えーと、続きなんだっけ」とか言いながら意味不明な数字をアドレスバーに打ち込んだり、ちゃんとした数字を打ち込んだのに「あれ、つながらない。向こうのIPアドレス変わったのか……」といったボヤキを発生させたりしなくて済むようになっている。

そんな便利な子だが、ひとたびキャッシュが汚染され、ドメインの変換を攻撃者の意図に沿った任意のIPアドレスに書き換えられてしまったりすると、hostsファイル顔負けの危険な存在になってしまう。

例えば、そのDNSサーバに問い合わせてきたすべてのユーザをマルウェアがてんこもりのサイトに飛ばすといった、単純かつ危険な攻撃方法が考えられる。

また、銀行のサイトにアクセスしようとしたユーザを、本物そっくりの偽サイトに飛ばし、その銀行のユーザ名とパスワードを入力させるといった、注意深くサイトを見ていないと普通の人なら引っかかるような危険なフィッシング詐欺を仕掛けられる可能性もある。

銀行のサイトの場合、通常、パスワード等を入力させる場面ではSSLを使用していると思うので、デジタル証明書を確認することで本物のサイトかどうか知ることはできる。が、一般的なユーザはデジタル証明書の内容なんて見ないし、人によってはこのサーバの証明書は無効ですと言われても気にせず入力を続けてしまうこともあるので、あまり役に立たない気がする。

2008年7月に、多くのDNSサーバがパッチを当てないと割と簡単に汚染できるという、とても危険な情報が(誤って、もしくは先走って)公開されたが、非常に危険な情報の割に大して話題にならなかったような気がするあたりが、世の中は平和だと思えるもの。

「ハッカー」とは

ネットワークを介して他人のパソコンを乗っ取ったり、ウイルスを作っているような人を指していると誤解されることが多い言葉。

実際には、ハッカーはコンピューターに関する広い知識と高い技能を持つ人を指し、上記のようなその知識を悪用する人はクラッカーという呼称を使うべきだと言われているもの。

では、ハッカーという言葉はクラッカーの対義語に当たるような、「技術を良いことのために使う人」という意味なのかと言われると、こう呼ばれるような人は大抵、寝る間も惜しんで技術に没頭し続けるような健康や安全より技術が大事な生き方をしている人なので、決して世のため人のために何かをする人たちというわけでもないような気がするもの。

どの程度の技能があればハッカーと呼ばれるかについては明確な定義はない。そのため、基本的には主観、他薦、もしくは自称によって名乗ることになるような気がする。

でも、システム開発現場では、ハッカーという通称だけでなく、何を持ってPGとSEを分けるのか、どのレベルの知識量があればアーキテクトと呼ばれるようになるのかといった割と公称に近い職種についても、同じように主観や自称によって決められているような気がするので、その辺はIT業界の通例なのではないかと思われるもの。

「スパムメール」とは

世界中のネットワークのトラフィックや、業務におけるメールチェックの時間等を無駄に増大させている迷惑なもの。一説では世界中に飛び回っているメールの9割はスパムメールではないかと言われている。

筆者のアドレスに届くスパムメールを見ている限りでは、日本では主に出会い系やアダルトサイトの宣伝に使用されているようだ。

スパムメールは辞書ツールを使ってメールアドレスを生成し、総当たりで送信を繰り返したりしているので、有名なドメインで、かつ、辞書に載っていそうな単語を含んだ簡易なメールアドレスを取得すると、アドレスを誰にも伝えていないのに大量のメールが届くといった面倒な事象が発生してしまうことがある。

そのため、フリーメールや携帯メールのアカウントを取得する際は、無駄に長いアドレスにするのが主流になっていたりするあたりも、けっこう迷惑なもの。

また、掲示板や自分のサイトにアドレスを書き込むと、WEB上のメールアドレスを探して回っているクローラーに収集されて、やはりスパムメールが舞い込むようになったりするため、一部のサイトでは全角文字でアドレスを記載したり、アドレスを画像で貼り付けたり等の対処を行っていたりするもの。

スパムメールへの対策として、これらのメールを配信している業者をプロバイダが遮断したり、フィルタリング機能を使用して迷惑メールを選り分けるソウトウエアなどが存在したりしているが、今のところ完全にスパムを撲滅する決定打は生まれなさそうだ。

#エンジニアあるある 実録IT用語辞典 【注目のキーワード】

あわせて読みたい

注意!!

この連載記事には必ずしも正しいとは限らない内容が含まれています。この記事を信じたことによって発生した障害に対して、筆者及び株式会社マイナビは一切の責任を負いません。ご容赦ください。

※この記事は2007/11/23〜2009/08/28に連載された内容を再構成しています

著者プロフィール:MW(えむだぶりゅー)

Java、PHP、C、C++、Perl、Python、Ruby、Oracle、MySQL、PostgreSQL関連の業務経験がある、典型的な広く浅い役に立たない系のウェブ(時々クライアント)アプリのエンジニア。 週に1日休みがあれば、ほか6日間は終電帰りでも全然へーきな体力と、バグが出ても笑って誤魔化す責任感の無さを武器に、今日も修羅場った開発現場の風景を横目で見ながら、適当に仕事をこなす日々を送る。
著書「それほど間違ってないプログラマ用語辞典」(発行:毎日コミュニケーションズ)

  • twitter
  • facebook
  • line
  • hatena

勤務地を選ぶ

職種を選ぶ