[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ウェブサーバに SSL 証明書が入っているのに一部のアプリケーションで SSL のverify が通らないと怒られることがあった。確認したら中間証明書がインストールされていないことに起因していた。
SSL 証明書はルート認証局 (とても強くて偉い認証局。権威があるのでブラウザも知っている) が発行するもののみではなく、その子認証局、孫認証局が発行するものがある (たぶんそちらの方が多い)。この子とか孫とかの証明書を中間証明書と呼ぶ。
SSL 証明書を読むと、上位の認証局をさかのぼり、ルート認証局にたどり着けたら verify! となるわけである。
親の七光……
いくつかのアプリ、主にウェブブラウザは中間証明書を上手いこと取得しておいてくれたりするので、なくても何とかなることもある。それがないなら verify が通りませんでしたーとなったわけである。
crypto-js が手軽。
<script src="./js/lib/crypto-js/core.js"></script>
<script src="./js/lib/crypto-js/sha256.js"></script>
<script>
// 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
alert(CryptoJS.SHA256('password'));
</script>
個人的には TRPG 等で「ボスデータを戦闘中にいじったりしていない」を明示するために使うなどを考えている (それがいいことか悪いことかはまた別の話だ)。戦闘開始時にボスデータのハッシュ値だけ公表し、戦闘後にボスデータを公開。ハッシュ値を照合して変化のないことを確認する、といった使い方である。
会社の先輩がちょっと怒っていらっしゃったので話を聞いてみたら「パスワードを暗号化して保存する」と言っている人がいたのだと。おお、これは大変にまずい。パスワードはハッシュ化して保存するべきだ。
| 暗号化 | 情報を見せたくない人から隠す技術。 見せたい人には復号化することによって見せることが可能。 |
|---|---|
| ハッシュ化 | 情報を見せたくない人から隠す技術。 後から元の値を計算することは (基本的には) できない。 |
パスワードは管理者と言えど見えるべきではないし、盗まれたときに解読されるリスクが低いのは後者である。
ただし、ハッシュ化も以下の2点から考えた場合、必ずしも「元の値を計算することはできない」わけではない。
後者がないものハッシュ化のやり方を「暗号学的ハッシュ関数」とかよぶ。
その昔 marquee なる HTML の要素があったらしい。次のような使い方だったらしい。
<marquee style="border: inset 2px black;">ひよこ</marquee>
次のように動く。ネオン看板っぽい何かをやりたい時は便利かもしれない。
これは HTML5 では廃止されている (https://www.w3.org/TR/html5/obsolete.html#the-marquee-element-0)。上記のひよこがスクロールしているとすればそれはブラウザの温情であった。
現在は CSS で実装するべきであるとされている。が、あまりやりたい場面はないかもしれない。ひつじと話して懐かしくなったのでちょろっとメモがてらかいてみた。
会社で社内サーバにアクセスしたとき こんな感じで "この接続ではプライバシーが保護されません" と表示されることがある。これ、何が危ないのか、という話。
実際、通信は SSL で暗号化されており、情報の受け取り先以外は読むことができない。が、情報の受け取り先が偽装されている可能性が残ってしまう所にこれの危なさが残る。
SSL 通信をするときは、暗号化するための鍵に添えてサーバが本物であることを示す証明書が送られてくる。先の警告はこの証明書が本物か否か疑わしいときに表示される警告である。
この警告を無視した場合、中間者攻撃を受ける可能性がある。
### あるべき通信 ### ┌────┐ ←サーバの公開鍵と証明書 ┌────┐ │ブラウザ┝━━━━━━━━━━━━━┥ サーバ │ └────┘ 公開鍵で暗号化した情報→ └────┘ ### 中間者攻撃 ### ┌────┐←偽サーバの公開鍵と証明書┌────┐ ←サーバの公開鍵と証明書 ┌────┐ │ブラウザ┝━━━━━━━━━━━━━┥偽サーバ┝━━━━━━━━━━━━━┥ サーバ │ └────┘ 公開鍵で暗号化した情報→ └────┘ ブラウザからの情報を→ └────┘ 公開鍵で暗号化した情報
偽サーバ (中間者) はブラウザからの偽サーバの秘密鍵で復号化し、本物のサーバの公開鍵で暗号化して本物のサーバに転送する。
しかし、実際の所、証明書は本物のサーバしか持っていないはずである。中間者が入ってきたときは証明書が不適切であるため警告が出る。だから、攻撃を受けていることはすぐにわかり、重要な情報を送らずに済む。
だが、もしも本物のサーバが証明書を不適切な状態のままにしていたら。ユーザは毎回仕方ないから警告を無視するだろう。そうすれば、攻撃が発生していたとしても気が付かないだろう。