Next: , Previous: , Up: Top   [Contents][Index]


36 ネットワークのセキュリティ

Emacsがネットワーク接続を確立するときは、常にその確立された接続をNSM(Network Security Manager)に渡します。NSMは、あなたのコントロールのもとにセットワークセキュリティーを実施する責任があります。現在のところ、これはTLS(Transport Layer Security)の機能を使用して動作します。

変数network-security-levelNSMが実施するセキュリティーレベルを決定します。変数の値がlowならセキュリティーのチェックは行なわれません。これは必須ではなく。基本的にはそのネットワーク接続が信頼できないことを意味しています。しかしネットワークの問題テスト時のように制限された状況ではこのセッティングは便利かもしれません。

この変数がmedium(デフォルト)の場合、いくつかのチェックが行なわれます。チェックの結果、NSMがそのネットワーク接続を信頼できないと判断した場合は、それを知らせて、そのネットワーク接続にたいして何を行なうか尋ねます。

証明されていない接続(unverified connection)にたいして、永続的なセキュリティー例外(security exception)を登録したり、一時的な例外(temporary exception)とするか、接続を完全に拒絶することができます。

証明書の基本的な正当性チェック加えて、いくつかのTLSアルゴリズムによるチェックが利用可能です。 以前は安全だと思われていたいくつかの暗号化技術で脆弱性が判明しているものについては、(デフォルトでは)Emacsは問題に関して警告します。

プロトコルネットワークのチェックはnetwork-security-protocol-checks変数を介して制御されます。

これは各連想値の最初の要素がチェックの名前、2つ目の要素がチェックの使用を要するセキュリティレベルであるようなalistです。

関数nsm-protocol-check--rc4の結果内の(rc4 medium)のような要素は(nsm-protocol-check--rc4 host port status settings)のように呼び出します。この関数は接続を継続するなら非nil、それ以外は非nilをリターンします。

以下はデフォルトのmediumで行なわれるチェックのリストです。

TLS認証が検証できない(unable to verify a TLS certificate)

その接続がTLSSSLSTARTTLS接続の場合、NSMは接続しようとしているサーバーの同一性(identity)を証明するために使用される認証が、検証できるかどうかチェックします。

無効な認証が懸念される場合(Man-in-the-Middleによりネットワーク接続がハイジャックて、あなたのパスワードが盗まれるかもしれません)や、とにかく接続を行なう正当な理由があるかもしれません。たとえばサーバーが自己署名された認証(self-signed certificate)を使用していたり、認証の期限が切れている場合もあるでしょう。接続の継続を容認するかどうかの決定は、あなたに任されています。

自己署名された認証が変更されている(a self-signed certificate has changed)

以前自己署名された認証を許容したが、今回はそれが変更されていて、それはそのサーバーが単に認証を変更しただけかもしれませんが、ネットワーク接続がハイジャックされている可能性もあります。

以前は暗号化されていた接続が、暗号化されていない(previously encrypted connection now unencrypted)

接続が暗号化されていないが、以前のセッションでは暗号化されていた場合、あなたとそのサーバーの間にSTARTTLSアナウンス(STARTTLS announcements)を剥奪して、接続を非暗号化するプロキシーがあることを意味するかもしれません。これは通常とても疑わしいです。

パスワードを送信するとき暗号化されていないサービスと通信する(talking to an unencrypted service when sending a password)

IMAPPOP3のサーバーに接続するとき、ネットワーク越しにパスワードを送信するのが一般的なので、接続は通常暗号化されています。同様に、パスワードを要求するSMTPを通じてemailを送信する場合は通常、その接続が暗号化されていることを望むでしょう。その接続が暗号化されていない場合、NSMは警告します。

Diffie-Hellmanロープライムビット(Diffie-Hellman low prime bits)

パグリックキーの交換を行なう際、そのチャンネルが第三者により盗聴できないことを確実にするために、プライムビット(prime bits)の数は十分に高くあるべきです。この数があまりに低い(low)場合にはEmacsは警告を発するでしょう(これはnetwork-security-protocol-checksdiffie-hellman-prime-bitsチェック)。

RC4ストリーム暗号(RC4 stream cipher)

RC4ストリーム暗号は低品質とされており、第三者による盗聴を許すかもしれません(これはnetwork-security-protocol-checksrc4チェック)。

ホスト証明書や中間証明書のSHA1

中間証明書(intermediate certificate)がSHA1ハッシュアルゴリズムを使用していれば、第三者がその発行インスタンスを偽装して証明書を発行できると考えられています。したがってこれらの接続は中間者攻撃にたいして脆弱です(これらはnetwork-security-protocol-checkssignature-sha1intermediate-sha1チェック)。

SSL1SSL2SSL3

TLS1.0より古いプロトコルは、様々な攻撃にたいして脆弱とされており、あなたが行なうことがより高いセキュリティーを要する場合は、使用を避けたいと思うかもしれません(これはnetwork-security-protocol-checkssslチェック)。

network-security-levelhighの場合、上記に加えて以下のチェックが行なわれます:

3DES暗号

3DESストリーム暗号は最大112ビットの効果的なセキュリティーを提供してローエンド向きと考えられています(これはnetwork-security-protocol-checks3desチェック)。

有効な認証がパブリックキーを変更した(a validated certificate changes the public key)

サーバーはキーを変更するときがあり、通常それは心配することはありません。しかし、サードパーティーのサービスにたいして新しい認証を発行する、偽装しやすい証明期間(pliable Certificate Authorities)へのアクセスをもつエージェントにより、ネットワーク接続がハイジャックされているか心配なときは、これらの変更を追跡したいと思うかもしれません。

最後に、network-security-levelparanoidの場合は、最初にNSMが新たな認証に遭遇したときに、それが通知されます。これによりEmacsによるすべての接続のすべての認証を検証することができるでしょう。

以下の追加の変数は、NSM操作の詳細を制御するために使用できます。

nsm-settings-file

これはNSMが接続の詳細を保存するファイルです。デフォルトは~/.emacs.d/network-security.dataです。

nsm-save-host-names

デフォルトでは、非STARTTLS接続ではホスト名は保存されません。接続の識別には、かわりにホストとポートによるハッシュ値(host/port hash)が使用されます。ユーザーがどのサーバーに接続しているか確認するために、誰かが気軽に設定ファイルを読めないことを意味します。この変数がtの場合、NSMnsm-settings-fileにもホスト名を保存します。