1.暗号の基礎
・暗号の概念
暗号とは、何らかの意味のある文字や記号などを、①「ある定められた約束事」に従い、②「固有の値」を用いて、他の文字/記号などに変換すること。
①:アルゴリズム
②:鍵
・主な暗号方式
- 転置式暗号:password→drowssap
- 換字式暗号:drowssap→espxttbq
現在広く使用されているのは以下。
- 共通鍵暗号方式
- 公開鍵暗号方式
- ハイブリッド方式
・共通鍵暗号方式
暗復に同じ鍵を用いる方式。対称鍵暗号方式とも呼ばれる。暗号鍵と複合鍵をいずれも秘密にする必要があることから、秘密鍵暗号方式とも呼ばれる。主に以下2種類に大別される。
- ストリーム暗号:平文をビット、バイト、あるいは文字ごとに処理する。RC4、KCipher-2などがある。処理速度が速く、暗号化してもサイズの増加が無い。
- ブロック暗号:平文を一定のサイズ(ブロック)に分割し、ブロックごとに暗号処理を行う。DESが代表的。ブロックサイズは通常64/128ビットが用いられる。
・公開鍵暗号方式
暗復に別々の鍵を用いる方式。非対称鍵暗号方式とも呼ばれる。同時に生成された一対の鍵のうち、一方を公開鍵として公開し、他方を秘密鍵として厳重に管理する。主な方式は以下。
- RSA(Rivest Shamir Adleman)
- 楕円曲線暗号
・n人で暗号を使ってやり取りする際の鍵の数
- 共通鍵暗号方式:n(n-1)/2
- 公開鍵暗号方式:2n
・ハイブリッド方式
データの暗号化に処理の早い共通鍵暗号方式を使用し、データの暗号化のために用いた共通鍵暗号方式の鍵を安全に相手に渡すために、鍵自体を公開鍵暗号方式を用いて暗号化する。
- データの暗号に共通鍵暗号方式を用いるため、高速処理が可能。
- 公開鍵暗号方式で暗号化するのは小さいサイズの共通鍵のみであるため、処理速度の問題は発生しない。
- 鍵管理は結果として公開鍵暗号方式の枠組みで行うことが可能。
CRYPTREC(Cryptography Research and Evaluation Committees):暗号技術の適切な実装法・運用法を調査・検討するプロジェクト。
・ハッシュ関数、MAC、フィンガプリント
ハッシュ関数:任意の長さの入力データ(x)をもとに、固定長のビット列、ハッシュ値y=H(x)を出力する関数(H(x))である。
入力データを「メッセージ」、ハッシュ値を「メッセージダイジェスト(MD)」ともいう。
ハッシュ関数には以下の3つの性質がある。上から順により困難になる。
- 衝突発見困難性
- 第二現像計算困難性
- 現像計算困難性(一方向性)
MAC(Message Authentication Code):メッセージ認証コード。通信データの改ざん有無を検知し、完全性を保証するために通信データから生成する固定長のコード。ブロック暗号を用いたCMAC(Cipher-based MAC)、ハッシュ関数を用いたHMAC(keyed-Hashing for Message Authentication Code)などがある。
・Diffie-Hellman鍵交換アルゴリズム
鍵交換・共有のためのアルゴリズム。離散対数問題が困難であることを安全性の根拠にしており、安全でない通信路を使って暗号化に用いる秘密対称鍵を生成し、共有することを可能にする。
2.VPN(Virtual Private Network)
盗聴、改ざんなどの脅威にさらされているパブリックネットワーク上に、暗号化技術などを用いて仮想的なプライベートネットワークを実現する技術の総称。
・VPNの概要
VPNは、下位層(一般にインターネット層、ネットワーク層以下を指す)のプロトコルで暗号化などの処理を行うことにより、上位層のアプリケーションに依存することなく、通信路そのものをセキュアにする。
プロトコルとしては以前からIPsecが標準的に使用されているが、SSL/TLSを用いたSSL/TLS-VPNもある。
・カプセル化とトンネリング
カプセル化:本来のパケットに新しいヘッダ情報を付加すること。
トンネリング:カプセル化されたパケットを、そのプロトコルを使用できるネットワークを通じて送受信すること。
3.IPsec(IP security protocol)
IP(Internet Protocol)を拡張してセキュリティを高めるプロトコル。
・IPsecの概要
- インターネット層でカプセル化し、暗号化する
- 上位層のアプリケーションに依存せずに暗号化通信が可能
- VPNゲートウェイ製品などを用いた拠点間通信によるIPsec VPNでは、ユーザは暗号化通信を行っていることを意識する必要がない
- IPv4,IPv6どちらでも利用でき、IPv6ではIPsecの実装が必須。
・IPsecを用いた拠点間接続によるインターネットVPN(IPsec VPN)
・IPsecを用いた拠点対端末接続によるインターネットVPN(IPsec VPN)
・IPsec VPNにおける二つの暗号化モード
- トランスポートモード
- IPsecに対応したホスト同士がEnd-to-Endで通信を行う場合に使用することを前提としている。
- IPパケットのペイロード及びTCPヘッダのみを暗号化し、IPアドレスなどのIPヘッダは暗号化せずに送信する。
- トンネルモード
- IPヘッダとデータ部分をまとめてカプセル化して暗号化するとともに、新たなIPヘッダを付加(カプセル化)して送信する。
・IPsecによって提供される機能
- アクセス制御機能
- メッセージ認証機能:メッセージ認証コードによって通信データの改ざん有無を確認し、完全性を保証する。
- 送信元の認証機能
- 通信データの重複検知機能
- 通信データ(ペイロード、ヘッダ情報)の暗号化機能
・IPsecを構成するプロトコルや機能の概要
・SPD(Security Policy Database)
パケットの処理に関するルールをSPDに登録して制御する。入力用と出力用のそれぞれが必要。
・SA(Security Association)
IPsecにおける論理的なコネクション(トンネル)であり、以下がある。
- ISAKMP(Internet Security Association and Key Manegement Protocol) SA:制御用に用いる
- IPsec SA:実際の通信データ送るために用いる
IPsecゲートウェイ同士が通信を始める際には、最初のフェーズで制御用のISAKMP SAが作られ、次のフェーズでIPsec SAが作られる。
ISAKMP SAは、IPsecゲートウェイ間で1つ(上り下り兼用)作られるが、IPsec SAは通信を行う各ホスト間において、通信の方向や使用するプロトコル(AH,ESP)ごとに別々のSAが作られる。
・AH(Authentication Header)
主に通信データの認証(メッセージ認証)のために使用されるプロトコル。通信データを暗号化する機能はない。
トランスポートモードの場合、IPヘッダとTCPヘッダの間にAHヘッダが挿入される。
トンネルモードの場合、元のIPヘッダとVPNゲートウェイによって新たに付加されるIPヘッダの間にAHヘッダがセットされる。
NATを使用している場合は、経路上でIPアドレスが変更されてしまう為、完全性チェックが正常に行えなくなってしまう。
・ESP(Encapsulating Security Payload)
通信データの認証(メッセージ認証)と暗号化の両方の機能を提供するプロトコル。
AHと異なり、ヘッダ情報に加えてトレーラ情報も付加される。
トランスポートモードの場合、IPヘッダとTCPヘッダの間にESPヘッダが挿入されるとともに、ペイロードの後にESPトレーラ、ICV(認証データ)が付加される。
トンネルモードの場合、元のIPヘッダとVPNゲートウェイによって新たに付加されるIPヘッダの間にESPヘッダがセットされるとともに、ペイロードの後にESPトレーラ、ICVが付加される。
IPアドレスについてはICVの計算対象外なので、NATを行ってもICVには影響がない。ただし、NAPTについては対処が必要。
・IKE(Internet Key Exchange)
SAの作成、暗号化に用いる鍵の交換などに使用するプロトコル。
・通信相手の認証
- 事前共有鍵認証 → 最も一般的
- ディジタル署名認証
- 公開鍵暗号認証
- 改良型公開鍵暗号認証
・SAの作成と管理
- ①ISAKMP SA、②IPsec SAの順番でSAを作成する。
- パケット交換方法によっていくつか交換タイプがある。ISAKMP SAの作成には、メインモード/アグレッシブモードが、IPsec SAの作成にはクイックモードが使用される。
- メインモード
- 送信側(イニシエータ)と受信側(レスポンダ)が、①ネゴシエーション、②秘密対称鍵の生成・交換、③相手の認証の3往復のパケット交換によって、ISAKMP SAを作成する。
- ②において通信相手の事前共有鍵を特定する必要があるが、IPアドレスを頼りにするしかない。そのため、モバイル接続のように、毎回動的にIPアドレスが設定される環境では、事前共有鍵が特定できなくなるため、事前共有鍵認証によるメインモードは使用できない。その場合、アグレッシブモードを用いることで対処するのが一般的。
- アグレッシブモード
- イニシエータとレスポンダが、①イニシエータからの各種情報の送信、②レスポンダからの各種情報の送信、③イニシエータが、認証用のハッシュ値を送信の1往復半のパケット交換によって、ISAKMP SAが作成される。
- クイックモード
- 1往復半のパケット交換でIPsec SAを作成する。
- セキュリティ確保のため、IPsec通信生開始後もSAが定期的に更新され、両ホスト間で再認証と秘密対称鍵の更新が行われる。
4.SSL/TLS
セキュアな通信を実現する代表的な技術として、IPsecと並んで広く普及されている。
・SSL/TLSの概要
・SSL(Secure Sockets Layer)
認証と暗号化を行うための方式で、主にWebブラウザとWebサーバ間でデータを安全にやり取りするための業界標準プロトコルとして使用されている。
SSLはTLSとして標準化が行われており、TLSへの移行が進められている。
現在、SSLの全バージョン及びTLSの初期バージョン(TLS1.0,1.1の一部の実装)については、重大な脆弱性により使用が推奨されていない。
SSLの特徴は以下の通り。
- アプリケーション層とトランスポート層の間で暗号化が行われる。
- ディジタル証明書(公開鍵証明書)を用いてサーバ、クライアントの正当性を相互に認証する。
- SMTP,FTP,Telnet,POP3,IMAP4など、多くのTCP/IPアプリケーションに対応している。
- MACによるメッセージ認証を行う。
・TLS(Transport Layer Security)
SSL3.0に基づいてIETFによる標準化が行われたトランスポート層における暗号化プロトコルを中心とした規格。
・SSL/TLSのプロトコル構造
トランスポート層とアプリケーション層の間に位置づけられる。
内部には、下位層のRecordプロトコル、上位層に4つのHandshakeプロトコル、Change Cipher Specプロトコル、Alertプロトコル、Application Dataプロトコルから構成される。
・SSL/TLSにおけるセッション及びコネクション
・セッション及びコネクションの確立手順
- Client Hello
- Server Hello
- Certificate(option)
- Server Key Exchange(option)
- Certificate Request(option)
- Server Hello Done
- Certificate(option)
- Client Key Exchange
- Certificate Verify(option)
- Change Cipher Spec
- Finished
- Change Cipher Spec
- Finished
・セッションとコネクションの違い
セッション:新たにマスターシークレットが共有されるごとに新たなセッションが作成される。
コネクション:セッションに従属して存在する通信チャネルで、一つのセッションには必要に応じて複数のコネクションが存在する。また、コネクションはトランスポート層に該当するため、コネクションごとに異なるポート番号が割り当てられる。
・SSL/TLSにおける鍵生成及び送信データ処理
・SSL/TLSによるインターネットVPN(SSL-VPN)
5.その他主なセキュア通信技術
・IP-VPN
・SSH
・PPTP
・L2TP
・S/MIME(Secure Multipurpose Internet Mail Extensions)
暗号化電子メール方式。添付ファイルも含めて暗号化することができる。
・PGP
6.無線LAN環境におけるセキュリティ対策
・無線LANのセキュリティ機能及び脆弱性
IEEE 802.11b/a/gが規格としてある。
・ESSID(SSID)
Extended Service Set IDといい、最長32オクテットのネットワーク識別子であり、無線LANアクセスポイント(AP)を識別するために用いられる。
・MACアドレスによるフィルタリング
・WEP(Wired Equivalent Privacy)
Wepキー(共有キー)とIVを連結させたデータをもとに、RC4を用いて生成した疑似乱数系列をキーストリームとして使用し、平文データとの排他的論理和を求めて平文データを安吾7羽化する。
・無線LAN脆弱性のまとめ
- 無線LAN端末のアクセス制御機能が脆弱でユーザ認証機能もない
- WEPの脆弱性により通信データの解読や改ざんが可能
・無線LANのセキュリティ強化策
セキュリティ面を強化した新規格として、IEEE 802.11iがある。
7.PKI(Public Key Infrastructure):公開鍵基盤
公開鍵暗号技術に基づき、ディジタル証明書やCAによって実現される相互認証の基盤。
・PKIの概要
・ディジタル証明書
個人や組織に関する電子式の身分証明書であり、CA(認証局)と呼ばれる第三者機関(Trusted Third Party:TTP)によって発行される。
ディジタル証明書は、公開鍵の正当性を証明する役割をもつことから、公開鍵証明書とも呼ばれる。
・ディジタル証明書による認証基盤を構成する要素
・認証局(CA)
- 利用者の公開鍵に対してディジタル署名を付し、ディジタル証明書を発行する。
- CRL(証明書失効リスト)を発行する。
- CPS(認証局運用規定)を公開する。
- 発行したディジタル証明書を検証するためのCA自身のディジタル証明書を公開する。
- ディジタル証明書に署名するためのCA自身の秘密鍵を厳重に管理する。
・ディジタル署名
ハッシュ関数とPKIの技術を組み合わせて作り出された電子的な署名。電子メールをはじめ、文書ファイルなどにディジタル署名を付すことで、次の点を確認できる。
- その文書ファイルなどは本当にその人(発信者)が送ってきたのか
- 経路上で何者かによって改ざんされていないか
ディジタル署名は次のような手順で行われる。
- 送信者は、MD5などのハッシュ関数を用いて送信する文書のメッセージダイジェスト(MD)を作成する。
- 作成したMDを送信者の秘密鍵で暗号化し、ディジタル署名を作成する。
- 文書(平文)とディジタル署名、ディジタル証明書を併せて送信する。
- 受信者は、受信データの中から文書のみを取り出し、送信者と同じハッシュ関数を用いてMDを作成する。
- 受信者は、受信データの中からディジタル署名と送信者のディジタル証明書を取り出し、送信者のディジタル証明書(公開鍵)を用いて復号する。
- ④⑤でそれぞれ作成されたMDを比較し、全く同じ内容であれば、受信した文書の完全性、正当性を確認できる。