ネスペ勉強メモ8【セキュリティ】

  • ネスペ試験の個人メモです

暗号化/認証

暗号化方式には共通鍵、公開鍵、ハイブリッドなどの種類がある。

共通鍵方式

主にブロック暗号方式とストリーム暗号方式がある

ブロック暗号方式
ブロック単位での暗号化。AESでは128・192・256bitのデータをまとめて暗号化する。ブロック方式では任意の長さの平文を暗号化するため繰り返し暗号化していくことになり、その実施方法を暗号利用モードといい、AESではCBCモードCTRモードなどがある。

CBC(Cipher Block Chaining)モード
暗号ブロック連鎖。初期化ベクトルというもの最初に与えて平文ブロックXORをとって暗号ブロック作成する、次の暗号化では先程つくった暗号ブロックと次の平文ブロックのXORをとって….という風にして過去の値を使って次の暗号を行うイメージ。ブロックチェーンと同じ。

CTR(Coutner)モード
平文を一個暗号化するたびに1ずつ増加する値(カウンタ)を用いる。

ストリーム暗号方式
データを1bitや1byteなど細かい単位で暗号化するアルゴリズムをストリーム暗号といいます。乱数を発生させて、その乱数を元にデータを端から暗号化する。

両者の違いとしてはストリーム暗号はきめ細かい単位で暗号化できるためリアルタイム性に優れている。しかしながらブロック暗号方式の方が安全性は高いと言われている。

認証付き暗号

近年では暗号化とメッセージ認証の二つの処理を同時に行うAEAD(Authenticated Encryption with Associated Data)暗号利用モードが普及し始めている。TLS1.3ではAEAD暗号は必須になっている。
※Associated: 関連する

公開鍵方式

公開鍵の技術全般のことをPKC(Public Key Cryptography)という。

鍵交換

TLS,IPSecなどのVPN通信では鍵交換の仕組みを使って送受信間で共通鍵を交換した後にメッセージ暗号化を行っている。共通鍵はいわば使い捨て鍵でありこの鍵のことをセッション鍵という。この鍵交換の方法は以下の2種類である。

  1. サーバ証明書を用いる方式(※現在では前方秘匿性がないためTLS1.3で廃止)

  2. DiffieーHellman鍵交換方式

前方秘匿性
暗号化鍵の共有に使われている秘密鍵が漏えいしたとしても、過去に暗号化された通信データは解読されないという鍵交換プロトコルに求められる性質

Diffie-Hellman鍵交換方式
離散対数問題の困難性を安全性の根拠にした鍵交換方式。この方式はTLS,IPSecで用いられている。しかしながら欠点もあり、通信相手の主体認証を行わないため、なんらかの方法で通信相手が本当に対象者であるか確認をとらないと中間者攻撃(MITM)の餌食になってしまう欠点がある。

具体的な手順については省略。DH鍵交換方式で一時的に使われる鍵のことをDHE(ephemeral DH)と呼ばれる(ephemeral: 一時的)。中でも楕円曲線離散対数問題を利用した鍵交換に使われる鍵のことをECDHE(Ellipse Curve DHE)という。

認証方式

認証方式は以下の通りに分類することができる

  1. 主体認証(エンティティ認証) … アクセスする相手、メッセージの受け取り手のような実態との認証

  2. メッセージ認証 … メッセージ改ざんされていないことを認証

  3. 第三者認証 … 第三者による認証(公開鍵など)

主体認証(エンティティ認証)

ユーザー認証実現方法としては下記のようなものがある

  • パスワード認証

  • ワンタイムパスワード認証 (チャレンジレスポンス/時刻同期方式)

  • デジタル署名

  • バイオメトリクス認証

  • ICカード認証

メッセージ認証

メッセージダイジェストを用いて改ざん検知を行う。メッセージダイジェストの生成にはハッシュアルゴリズムやブロック暗号アルゴリズムが用いられる。

ハッシュアルゴリズムの中でメッセージにパスワードを付与したものを鍵付きハッシュといい、代表例としてはHMAC(Hash-based Message Authentication Code)などが挙げられる。

ブロック暗号アルゴリズムの代表的なアルゴリズムとしてはCBC-MACXCBC-MACなどが挙げられる。CBC-MACには脆弱性があり今日ではXCBC-MACが使われているが、近年では前述したAEAD暗号利用モードが増えており、AES-GCMがよく用いられる。

デジタル署名

公開鍵暗号を利用して送信者認証とメッセージ認証の二つを同時に実現する技術。送信者は自身の署名鍵(秘密鍵)を使って送信する平文から生成されたデジタル署名を発行する。受信者は送信者の検証鍵(公開鍵)を使用して受信した平文メッセージの確かさを検証する。

第三者認証と電子証明書

公開鍵暗号方式を利用した暗号化通信では悪意あるものによって通信に相手になりすまされたり、悪意ある者の秘密鍵の対となる公開鍵とすり替えらたりすると途端に安全ではなくなる。そういった対策として送信者は受信者に対して「この公開鍵は自身のものである」ということを証明できると安全に通信を行うことができる。

上記の考え方に基づいて作られたものが電子証明書である。電子証明書は第三者機関によって発行されるもので、その機関のことをCA(認証局)という。このような認証のことを第三者認証という。

※言うまでもなく電子証明書にオレオレ証明書を設定した場合はその限りではない

自分の電子証明書をCAから発行してもらうには、まず公開鍵/秘密鍵のペアを作成する。次に公開鍵からCSR(Certificate Signing Request: 証明書署名要求)を作成し、CAに申請する。CAが申請者を本人であると確認し適宜本人確認を行い、問題なければ電子証明書が発行される。

ブラウザ側でサーバー証明書(電子証明書)の検証内容は以下の通り

  1. 信頼できるCAから発行されているか?

  2. サーバー証明書の電子署名(ハッシュ)が改ざんされていないか?

  3. 電子証明書を送信した本人が、公開鍵所有の本人か?

  4. 有効期限が切れていないか?

  5. 証明書失効リストに含まれていないか?

発行元CAは自らの真正性を証明するために、電子証明書内に自身の秘密鍵で作成した署名を付与している、これを付与することで自身より上位のCAが存在する場合そこに帰属していることを示すことができる。このように自身よりどんどん上位のCAを辿っていくことから証明書チェーンといい、最終的にたどり着く証明書のことをルート証明書という。

CAから電子証明書の発行は料金がかかるため、企業内ネットワークにおいて利用者一人ずつにクライアント電子証明書を発行してクライアント認証する場合はプライベートCAを自らのサーバーに設置し、そこから証明書を発行すると無償で認証ができるようになる。

ファイヤーウォール

パケットフィルタリング、ステートフルインスペクション、アプリケーションレベルゲートウェイの3種類に大別できる。

パケットフィルタリング

一般的なフィルタリング型のファイヤーウォール。当たり前ではあるが開放してあるポートに対してDoS攻撃を仕掛けられるともろに被害をうける。後述する方式だとそこらへんが対策できる。

ステートフルインスペクション

通信内容の通過可否を動的に判断する機能を有している。ステートフルインスペクションでは基本的に応答用パケットの通信は普段は閉じておく。3ウェイハンドシェイクの場合を考えると最初のSYNパケットを受けた場合、それを受けた瞬間だけ応答用パケットの通信を許可し、当該コネクションが切断されるまでは許可するといった動きになる。こうすることでパケットフィルタリングに比べるとセキュリティが高くなっている。

アプリケーションレベルゲートウェイ

上述したFWとは違いアプリケーション層でのプロトコル解析を行うものである。アプリケーションにはバッファオーバーフローなどの脆弱性があるが、アプリケーションの通信自体を制御することで対策が可能となる。またWebアプリケーションの通信に特化したアプリケーションレベルゲートウェイがWAFである。

近年1台の機器の中にFW機能、IPS機能、アンチウイルス機能、コンテンツフィルタリング機能など様々なセキュリティ機能を搭載したものがありこれをUTM(Unified Threat Management)という

プロキシ

プロキシサーバーのメリットは以下の通り

  1. 匿名性の確保(個人IPを隠蔽してプロキシIPから接続できる)

  2. プロキシサーバー上にアクセス記録が残る

  3. セキュリティ対策の役割を果たす

  4. サーバーの負担を分散できる

デメリットは以下の通り

  1. 不正サイトへ誘導される可能性がある

  2. 接続履歴が見られる

  3. 情報が盗まれる可能性がある

※不正サイトの誘導手順としてはプロキシサーバーが攻撃された場合、プロキシサーバーがユーザーのリクエストに対して別のサイトへ誘導する場合などがある

リバースプロキシ

プロキシサーバーの転送先が自身で管理するサーバーの場合はリバースプロキシという。逆に転送先が外部サーバー(普通にネット検索する時みたい)の時はフォワードプロキシという。

リバースプロキシのメリットとしてはプロキシでユーザー認証を行うことで不正アタックやコンテンツ改ざんのリスクが軽減できる上に、必ずプロキシサーバーを経由する設計にしたならば、プロキシサーバーだけを監視ポイントにするだけで運用性の向上も図れる。また、リバースプロキシは通常のプロキシ同様キャッシュ性能もあるため、高速化を図るのにも効果的

ポートフォワーディング

特定の宛先ポート番号のパケットを受け取ると、宛先IPアドレスを変換して社内の公開サーバーへパケット転送する機能。

TLS通信のトンネル処理

端末とサーバーの間にプロキシサーバー入ったときのTLS通信では、端末からCONNECTメソッドを発行することによって実現する 

引用元: https://www.iestudy.work/entry/2022/01/16/232657

※TCPハンドシェイク(3ウェイハンドシェイク)に関してはサーバー間で行うため端末とプロキシ、プロキシとサーバーで別々に行う
※SSLハンドシェイク(CLIENT HELLOとかSERVER HELLOのやつ)は端末とサーバー間で行う
※つまりTLSのやり取りに関してプロキシサーバーはそのまま転送しているだけで一切関与しないということ

侵入検知/侵入防御システム

侵入検知システム(IDS)

不正アタックを検知して管理者に通知するネットワーク機器。ネットワーク型とホスト型の2種類がある。

ネットワーク型とはネットワーク上に流れるパケットを常時監視する。監視対象のネットワークセグメントに1台設置することで収容しているホストを同時に監視できる。弱点としてはパケットが暗号化されていると無力である点

ホスト型はホスト内の入出力(OS,アプリケーションのログなど)を監視する。ホスト型のメリットとしては対象ホストへの攻撃に対してはネットワーク型よりも正確な詳細情報を得られる点が挙げられる。ただしホスト型はホスト毎に導入する必要があるため導入が難しいのが弱点。

IDSの不正アタックの検出方法

シグネチャ型とアノマリ型の2種類がある。シグネチャ型(ふるまい)とは既知の侵入手口パターンと照合することで検出する方法。アノマリ型(異常)は定義された通信の仕様と異なる振る舞いを検出する方法。例として異常なビット列を含むヘッダフィールドの検知など。

ファイヤーウォールは基本的には第4層以下の情報でフィルタリングしているためSQLインジェクション、XSSなどのアプリケーションを標的とした攻撃を検知できないが、IDSの場合はそれらを検知できるという点がメリットである。

ネットワーク型IDSではIDSセンサとIDSコンソールが別々になっているものがある。IDSセンサにはパケットを収集するポート(センサポート)とIDSコンソールに通知するポート(コンソールポート)を装備している。IDSセンサは自身以外のものを宛先とするパケットも収集できるようにするためにプロミスキャスモードで運用する必要がある。(プロミスキャスは無差別という意味)。また外部攻撃を避けるためにセンサポートにはIPを指定しないことをステルス化という。IDSを収容するスイッチングハブのポートはミラーポートに設定し、セグメントが流れる全てのパケットがIDSセンサに取り込まれるようにする。

※ミラーポート … ネットワークスイッチ上を流れるパケットを採取(キャプチャ)することができるポート。つまり2本流れているためIDSセンサ側で受け取ったパケットとは別に実際にやりとりに使われるパケットもある。IDSは検知だけが目的のためミラーポートでOK

侵入検知システム(IPS)

経路上に設置することで不正アタックを検知するだけでなく、遮断器機能までもつネットワーク機器のこと。IPSはIDSに比べるとセキュリティ性が高いと言えるが、それ故に正常な通信を遮断してしまう恐れがある。これをフォールスポジティブという。とはいえこれを懸念するあまり、防御ルールを弱めると不正な通信を見逃してしまいかねない、こういったことをフォールスネガティブという。

※positive:陽性, negative:陰性
※フォールスポジティブ: 陽性と判定したが間違ってた(誤検知)
※フォールスネガティブ: 陰性と判定したが間違ってた(見逃し)

ウイルス対策

入口対策と出口対策の2種類に大別できる。

入口対策の例は「クライアント端末のウイルススキャン」「メールスキャン」「Webトラフィックのスキャン」など

出口対策とはウイルスの活動を抑えたり、ウイルスの活動を発見することを指す。例としては「ファイヤーウォールの内部から外部への通信を最小限に設定する」「外部に出ていくHTTPSはプロキシサーバを経由して利用者認証を行う」「HTTPS通信をする場合はSSL可視化装置をつけて通信内容を検査する」

迷惑メール

オープンリレー(第三者中継)

メール送信サーバ(SMTPサーバ)が、外部からの送信依頼を受け付けること。特に、何の制限も無く誰でも自由にメールを送信できるよう開放していること。迷惑メールやウイルスメールの送信に悪用されるため好ましくないとされる。こういったサーバーは踏み台として不正に利用される可能性がある。

基本的にはMTAのデフォルトでオープンリレーは禁止になっているが、業務上必要な場合もある、そういった際は送信者認証(SMTP-AUTH あるいは POP before SMTP)を実施し、認証に成功した送信者について第三者中継を許可する。

25番ポートブロック(OP25B)

迷惑メールを防止するためにISPは「自ISPから他ISPに転送されるメールは自ISPで指定したメールサーバーを経由する」という規制を設けており、このことをOP25Bという。これによりISPが指定したメールサーバー以外で25番ポートを用いたメール送信ができなくなる。

※そもそも何故25番ポートをブロックする必要があるのかというと、25番ポートを用いたメール送信ではユーザー認証機能がないことが原因である。

しかしながら指定したメールサーバー以外を使ってメール送信がしたい場合もある。そういったときはサブミッションポート(587番ポート)を用いたメール送信を行うことでユーザー認証を行うことができるので良い。

ネットワーク経由のサイバー攻撃

DoS(Denial of Service)攻撃

標的サーバの通信量を増大させて、ネットワークリソースを無駄に消費させて正常なサービスを妨害するもの。(※Denial:拒否の意味Denyとかの派生形)

Dosの種類としては

  • TCPコネクションの確立要求パケットを投げるSYNフラッド攻撃

  • UDPパケットを投げるUDPフラッド攻撃

  • ICMPパケットを投げるICMPフラッド攻撃

などがある。

また多数のコンピュータが標的サーバを集中的に攻撃することを分散型DoS(DDos)攻撃という。

SYNフラッド攻撃

SYNフラッド攻撃の手法は攻撃者は自身のIPを偽装して攻撃対象のサーバーにSYNパケットを大量に投げる。攻撃対象はSYN/ACKパケットを投げ返すが対象が存在しないあるいはあってもACKパケットを送信してくれないので攻撃対象のサーバーはずっと待ち状態になる。この状態をハーフオープンといいリソースが無駄に消費している状態になっている。

UDPフラッド攻撃

UDPフラッド攻撃の手法は自身のIPの偽装に加えて、対応するアプリケーションが存在しないようなポート番号を設定して、UDPパケットを大量に投げつける。攻撃対象はUDPパケットを受け取ると宛先ポート番号に対応するアプリがあるかを調べるが、存在しない場合は送信元ホストにICMPメッセージを投げる。従って攻撃対象サーバは「攻撃用UDPパケット」と「返信用のICMPパケット」に多大なリソースを割かれる。

DNSリフレクター攻撃

DNSリフレクター攻撃の手法はオープンリゾルバのDNSサーバに対して自身のIPアドレスを攻撃対象のサーバーに偽装した問い合わせ送りまくる。DNSサーバは大量のDNSパケットを攻撃対象に送信し続けるといった流れである。DNSサーバの問い合わせはUDPパケット(コネクションレス型)のためIPの偽装が容易な点と脆弱なDNSサーバが世の中に多いことからこの攻撃手法が使われることがある。また脆弱なDNSサーバを複数容易しておけば同時に複数のDNSサーバにパケットを送り続けることで攻撃対象サーバをダウンさせることが可能。

対策としては脆弱なDNSサーバーを減らすことに尽きるが、そもそもとしてDNSというプロトコル事態が重要なことを行っているのにも関わらずUDPパケットでやりとりすることが問題でプロトコル設計から見直すべき事案ではあるが現在の普及度を考えると難しい。

DNSリフレクタ攻撃は攻撃側といえども大量の問い合わせパケットを投げる必要があるためリソースの負担は大きいが、DNSの応答パケットのサイズは問い合わせのパケットサイズより大きくなる。攻撃側は応答のサイズが何倍も大きくなるように巧妙に指定している。

サイバー攻撃への対策

セキュリティ対策の評価をするために擬似的に攻撃を仕掛けるテストのことをペネトレーションテストという。

認証プロトコル

CHAP(Challenge Handshake Authentication Protocol)

ワンタイムパスワード認証方式のプロトコルでPPPなどにおけるユーザー認証として用いられる。
※PPP(Point to Point Protocol) … 電話回線などの通信回線を使用し、1対1の通信で利用されるプロトコル

チャレンジレスポンス方式による認証を行う。手順は以下の通り

  1. クライアントはサーバにPPPリンクを確立

  2. サーバはCHAP識別子(ID)とチャレンジコードを返す

  3. クライアントは「ユーザ名」と「パスワードとCHAP識別子とチャレンジコードのハッシュ値」を送信

  4. サーバは自身で管理しているユーザのパスワードを用いて同じ方法でハッシュ値の検証を行い結果を返す

EAP(Extensible Authentication Protocol)

認証方式をカプセル化する仕組みをもち、PPP、IEEE802.1Xなど様々なプロトコルで使用できる(PPPパケットの中にEAPフレームが入り込むイメージ)。サポートされている認証方式にはTLSPEAPなどがある。

RADIUS(Remote Access Dial IN User Service)

認証(Authentication)、認可(Authorization)、アカウンティング(Accounting)の3つの機能を提供するプロトコルであり、この3つの頭文字を取ってAAAモデルと呼ぶ。

認証機能は利用者の主体認証を行い、PAP,CHAP, EAPなど様々なプロトコルを使用することができる。

認可機能は認証に成功した利用者に対してどのようなサービスを許可するのか決定する。

アカウンティング機能は利用状況の記録を行う。例えばRAIDUSクライアントの切断、接続、セッション時間、送受信データ量など。

IEEE802.1X

認証に成功した端末だけが特定のVLANに接続できるようにする技術。本認証を行うにはサプリカント、認証装置(オーセンティケーター)、認証サーバーの3つが必要になる。

サプリカント
IEEE802.1Xにおけるクライアントのこと。またはクライアントにインストールするソフトウェア。認証を受けるクライアントはPCにインストールする必要があるが、最近のPCには標準搭載されている。

認証装置(オーセンティケーター)
サプリカントと認証サーバの仲介役となるネットワーク機器。IEEE802.1X対応のLANスイッチまたは無線LANアクセスポイントのこと。これらの機器はサプリカントと認証サーバとの認証結果を受けて、ネットワークへのアクセス制御を行う。Ciscoは有線/無線LANスイッチともにIEEE802.1Xに標準対応。

認証サーバ
ユーザ認証を行うサーバのこと。IEEE802.1X/EAPに対応したRadiusサーバを使用する。

IEEE802.1Xで選択できる認証方式にはサーバ認証に電子証明証を用いクライアント認証にパスワードを用いるEAP-PEAP認証、サーバ認証とクライアント認証の両方に電子証明書を用いるEAP-TLS認証などがある(サーバ証明書とクライアント証明書は別物なので注意)。

上記の認証の後半でクライアントと認証サーバはPMK(Pairwise Master Key)を共有する。PMKは暗号化通信の鍵の””基””となる情報である。PMKキャッシュによって無線LANのローミング時に802.1X認証を省略することができている。

PMK共有後にクライアントとAP間の共通鍵の生成フェーズに移行する。ここでは4ウェイハンドシェイク(2往復)による手順となり、共通鍵を作るためには「PMK」「乱数」「MACアドレス」から生成される。この共通鍵は暗号化鍵と認証鍵が別々であり、両者合わせてPTK(Pair Transient Key)または一時鍵(Temporal Key)という。

さらにはマルチキャスト用で使用される共通鍵も別に存在しておりこちらの共通鍵も暗号化鍵と認証鍵で別々であり、両者合わせてGTK(Group Transient Key)という。この鍵はAPが定期的に生成するGMK(Group Master Key)と呼ばれる乱数に基づいて生成される。


PMK(Pairwise Master Key) … PTKを作る基になる鍵(マスターキー)
PTK(Pair Transient Key) … 実際の暗号化通信で使われる鍵
GMK(Group Master Key) … GTKを作る基になる乱数(マスターキー)
GTK(Group Transient Key) … 実際のマルチキャストの暗号通信で使われる鍵

トンネリング

インターネットのような共用のネットワーク上の2点間で仮想の専用線を構築すること。トンネリングはプロトコルパケットをトンネリング用のプロトコルでカプセル化することで実現する。トンネル用のプロトコルにはGRE, L2TP, IPinIPなどが用いられる

GRE(Generic Routing Encapsulation)

ネットワーク層のプロトコルパケットをカプセル化するプロトコル、トンネリングの対象となる代表的なプロトコルはIPパケット。

引用元: https://www.scsk.jp/sp/ixia/column/column17.html

トンネリングしているルータ間で通信する際は、送信元でヘッダを追加し、受信側でヘッダを取り除くといった手順を踏むことであたいかも専用線で直接接続されているかのようなふるまいを示す。

GRE over IPsec

GREの特徴として「ユニキャストパケットだけでなく、マルチキャストパケットもカプセル化できる」「暗号化の仕組みを持っていない」という点があるため、「マルチキャストパケットをカプセル化できない」「暗号化機能を持つ」といった特徴のプロトコルと組み合わせることがあり、その代表例がGREとIPsecを組み合わせたGRE over IPsecである。

IPsec

IPパケットをカプセル化して伝送する規定。

通信モード

カプセル化する範囲を全区間とする通信方法をトランスポートモードといい、一部区間だけで実施する通信方法をトンネルモードという。

セキュリティポリシ

パケットの種類を識別する情報をセレクタといい、これを見ることでゲートウェイは通常パケットか、カプセル化されたパケットかを判断する。セレクタにはPROTECT(カプセル化通信), BYPASS(通所処理), DISCARD(パケット破棄)の3種類ある。このセレクタに応じた動作を決定する情報をセキュリティポリシという。ゲートウェイは複数のセキュリティポリシを持つことができて、SPD(Security Policy Database)に登録される

SA(Secure Association)

IPsecで使用されるメッセージ認証方式、暗号化方式、暗号鍵はIKE(Internet Key Exchange)のやり取りを経てゲートウェイで合意される、このことをSAという。 ※IKE の説明は後述

SAには以下には2種類ありIPsecで使用するパラメータ交換するために生成されるIKE SAとIPsecを用いたセキュアな通信を行うために生成されるIPsec SA(Child SA)がある。

※後述するがIPSec SAがChild SAと表現される理由はIKEv1ではIPsec SAであるのに対しIKE v2ではIKE_AUTHとなり名称が異なるためである。しかしながら実態としてはほぼ同じであるためChild SA(IKE SAから生成される子供)みたいな意味合いでつけられていると思われる

リキー(Re Key)

IPsecではSAが生成されるたびに異なる暗号鍵が生成されるが、これを長期間にわたって使い続けるのはリスクが高いため生存期間を決めて定期的な鍵の交換を行うことをリキーという。

IKE SA生成にはDiffie-Hellman法を用いる。この計算にはCPUパワーを要することから端末が低スペックの場合はIKE SAの寿命をIPsec SAの寿命よりも長く設定しておくと良い。そうすることでIPsec SAが何度リキーしたとしてもIKE SAはそのまま使い回せるためDiffie-Hellman鍵交換が頻発しない。

SPI(Security Parameters Index)

IPsec通信を行う両端のホストがIPsec SAを識別するのに用いる32ビット長の番号。IPsecヘッダにSPIが格納されている。受信ホストはヘッダからSPIを取得して、当該IPsec SAの暗号鍵を使って複合する。

IKE(Internet Key Exchange)

IPsec鍵交換のためのプロトコル。UDPのポート500番が使用される。現在IKEは2つのバージョン(IKEv1, IKEv2)が存在する。

IKE v1

通信手順は下記のフェーズのとおりである

  1. SAを用いない通信

  2. IKE SAを用いた通信

  3. IPsec SAを用いた通信

※以下の説明ではVPN接続をする機器をイニシエーター、VPN接続を受ける機器をレスポンダと呼ぶ

フェーズ1
このフェーズの目的はフェーズ2で使用するIKE SAの生成である。前述した通りこの鍵はDiffie-Hellman法によって求められる。IKE SAのパラメータは上りと下りでは双方向共通である。フェーズ1の通信はメインモードアグレッシブモードの2種類がある。

メインモードは相手のIPアドレスを基に、エンティティ認証に必要な情報選ぶ。そのためメインモードを行うにはイニシエータとレスポンダの両者が固定IPである必要がある。メインモードは3往復で行われる

アグレッシブモードはメインモードに比べて処理が簡略化されている。イニシエータのIPは固定でなくても良い。アグレッシブモードは1往復半で実行される

※メインモードは暗号化されるが、アグレッシブモードは平文のままの通信となる。しかしながらアグレッシブモードの方が導入し易いというメリットが有る、また後述するがIKE v2ではモードは1つだけになった。

フェーズ2
このフェーズの目的はフェーズ3で使用するIPsec SAの生成である。フェーズ2の通信はクイックモードと呼ばれ1往復半で行われる。またここからはIKE SAを用いるためセキュリティ処理が行われることになる。IPsec SAのパラメータは上り用と下り用で2つ生成される。さらにIPsecのプロトコル(AH,ESP)を併用する場合はその各々でIPsecSAのパラメータが交換される。

PFS(Perfect Forward Security)
前述した通り長期間同じキーを使い回すのはリスクが高いためIKE SA, IPsec SA共に、定期的にリキーを行う。IKE SAのリキーにはCPUパワーが必要なため低スペックな場合はIKE SAの寿命をIPsec SAより長めにすることでIKE SAを使い回すと良い…といったがセキュリティ的には少し強度が下がると言える。フェーズ2にはPFSというオプションが規定されており、これを有効にすることでIPsec SA生成のたびにDiffie-Hellman鍵交換が行われる(言い換えると、IKE SAを作り直す)といった挙動になる。これにより前方秘匿性が実現できるといえる。

XAUTH
当初IKEv1ではIPsecの利用者認証を行う仕組みが規定されていなかったため、後にXAUTHと呼ばれる仕組みが追加された。XAUTHによる認証を行うにはまずフェーズ1でゲートウェイがXAUTHに対応しているかを伝え合う。対応しているならばフェーズ1完了後にXAUTHによる認証(ユーザ名とパスワード)が行われ、成功するとフェーズ2へ移行する。

※IPsecで利用者認証が必要となるのはリモートアクセスでVPN接続するときであるが、そもそもVPN通信ではIKEに頼らずとも利用者認証できるためXAUTHは現在普及していない…

IKE v2

IKEv1からの変更点は下記が挙げられる

  • IKEv1のフェーズ1がIKE_SA_INIT交換に、IKEv2のフェーズ2がIKE_AUTH交換に置き換わった。

  • エンティティ認証を行うタイミングがIKEv1はフェーズ1であったが、IKE_AUTHで行われている。

  • IKEv1ではメインモードとアグレッシブモードがあったが、IKEv2ではその区別がなくなっている

IKE_SA_INIT交換
フェーズ1との共通点は「SAを用いていないため非セキュア通信」「DIffie-Hellman法を用いる」「IKE SAのパラメータは上り下り双方向共通」
フェーズ1との違いは「エンティティ認証を行わない」「モードの区別が存在しない(やりとりは1往復)

IKE_AUTH交換
フェーズ2との共通点は「IKE SAを用いるためパラメータの交換は低負荷」「Child SA」
フェーズ2と異なる点は「エンティティ認証を行う」「クイックモードとは異なりやりとりは1往復半となる(オプション次第で増える)

IPsecプロトコル(AHまたはESP)

IPsec SA確立後のIPsecパケットやり取りはAH,ESPヘッダを付加する。AHとESPは両者ともに「メッセージ認証(改ざんチェック)」と「リプレイ攻撃への対策」がなされているが、AHには暗号化機能がないのに対してESPには暗号化機能がある。

リプレイ攻撃
悪意ある物が通信内容を傍受して得たパケットを当事者になりすまして不正アタックすること。

※リプレイ攻撃への対策の具体的な内容
AH, ESPヘッダはシーケンス番号があり、送信側はパケットを送信するたびにカウントアップされるため、リプレイ攻撃が発生するとシーケンス番号がズレるので気付ける

AHヘッダ、ESPヘッダのパケットは下記の通り

引用元: http://program.sagasite.info/wiki/index.php?AH

※一貫性チェック部分はメッセージ認証範囲の意味

AHヘッダはメッセージ認証の範囲にIPヘッダも含まれているため、NAT機器経由で通信を行うと通信で支障がでる点に注意

AHヘッダ、ESPヘッダにはSPI(Security Parameters Index)が含まれる。SPIを読み取ることで送信側ゲートウェイのSAがわかるので、同じSAを使用して改ざん検知や複合を行うことができる。

前述した通りIPsecはマルチキャストパケットを直接カプセル化できない(カプセル化するにはGRE over IPsecが必要)その理由は大きく2つある。1つ目はIKEの鍵交換が共通鍵を用いる点であり、共通鍵は知っての通り1:1で使うものであり1:多では適していないためである。2つ目はリプレイ攻撃防御制約にあり、シーケンス番号のカウントアップでチェックする性質上1:多では同期をとることが困難になる点である。

L2TP over IPsec(Layer2 Tunneling Protocol)

データリンク層(レイヤ2)のPPPフレームをトンネリングする技術である。PPPフレームは専用線などで結ばれた2点間の通信に用いられるプロトコル。

GRE over IPsecも同じトンネリング技術であるが、こちらはネットワーク層(レイヤ3)のIPパケットをトンネリングしている箇所が違う。

トンネリングした後のトンネル区間についてはIPsecを用いて暗号化通信を行っている。

SSL/TLS

SSL(Secure Socket Layer)はトランスポート層でTCPを用いるアプリ通信のセキュリティを確保するプロトコル、後にTLS(Transpot Layer Security)という名称で規格化された。

TLSの暗号化範囲はトランスポート層のペイロード部分(MACを含む)のため、つまりはアプリケーション層全体ということになる。TLSは暗号化に加えて「主体認証」「メッセージ認証」といった機能も提供している。

メッセージ認証(改ざん検知)ではパケットごとにペイロードのメッセージダイジェストを付与する。これをMAC(Mseeage Authentication Code)という。

TLS1.2

引用元: https://www.ccjc-net.or.jp/~kouza/ssl/ssl_3.html

TLS1.2の以下の流れのことをネゴシエーションという。

①クライアント→サーバ
ClientHello … クライアントは対応可能な暗号スイート候補をサーバーに伝える

②サーバ→クライアント
Server Hello … サーバーは暗号スイートを一つ選択して送信
Certificate … サーバ証明書を送信
Certificate Request … クライアント認証の要求
Sercer Hello Done … 全てのハンドシェークメッセージを送信したことの通知

③クライアント→サーバ
Certificate ... クライアント証明書を送信
Client Key Exchange … サーバの公開鍵で暗号化されたプリマスタシークレット
Certificate Verify … クライアント署名(これまでのやり取りされたハンドシェークメッセージのハッシュ値からクライアントの秘密鍵で生成された署名)
Change Cipher Spec … ServerHelloが決定した暗号化アルゴリズムと認証アルゴリズムの使用を開始する通知
Finished … これまでのハンドシェークメッセージのやりとりが改ざんされていなことの確認

TLS1.3

TLS1.2との違いは以下の通り

ハンドシェークプロトコルの改善

引用元: https://xtech.nikkei.com/atcl/nxt/mag/nnw/18/072200061/072200004/

上記の図を見ても分かる通りやり通りが1回分減っている。加えてセッション再開時のシーケンスが簡素化されている。TLS1.3ではセッション再開に備えてサーバーが動的にPSK(Pre-Shared Key: 事前共有鍵)をクライアントに送信する。これを用いることでセッション再開時すぐに暗号化通信ができる工夫がなされている。

AEAD暗号利用モードの必須化
AEAD暗号は前述した通り「暗号化」と「メッセージ認証」の二つの処理を同時に行う暗号化。

前方秘匿性の確保
TLS1.3では前方秘匿性が確保されているため、鍵交換方式はDiffie-Hellman鍵交換などに限定されている。

ハンドシェークの拡張機能

SNI(Server Name Indication)
クライアントのWebブラウザは自分がアクセスしているWebサーバのFQDNとWebサーバから送信された電子証明書のコモン名を照合してサーバ認証を行う。今日Webサーバはバーチャルホストで運用されている可能性が高いため、クライアントのWebブラウザはClientHelloのメッセージにアクセス先のFQDN情報を入れておくことで、サーバーはそれに対応する電子証明書を渡すことができる。この仕組みをSNIという。
(※Indicationはしるし、兆候などの意味)

ALPN(Application-Layer Protocol Negotiation)
ClientHelloのメッセージに使用するプロトコル(例: Https1.1 Https2など)の情報を入れておくことで、サーバーはその中からひとつを選択する。

SSL-VPN

SSL-VPNはTLSプロトコルを用いたVPN技術。SSL-VPNの動作方式にはリバースプロキシ方式、ポートフォワーディング方式、L2フォワーディング方式がある。

リバースプロキシ方式

VPN装置自体がリバースプロキシとして機能する仕組み。利用者(Webブラウザ)からVPN装置までの通信が暗号化されるが、VPN→APサーバまでに関しては暗号化されない、この流れがリバースプロキシになってる。ただしWebブラウザじゃないとこの方法では暗号化できない欠点がある。

ポートフォワーディング方式

リバースプロキシの欠点を解決するために編み出された方法。利用者は自身のパソコンに専用のモジュール(ActiveXやJavaアプレットなど)を入れてそのモジュールとVPN機器までの間を通信する。VPN機器には事前に社内ネットワークで利用するサーバーやポート番号が設定されているため、通信中にポート番号が変化するようなアプリケーションは利用できない。

L2フォワーディング方式

すべてのアプリケーションの利用を可能にしたのが、この方式。クライアント側にSSL-VPNクライアントソフトをインストールし、SSL-VPNクライアントソフトとSSL-VPN機器との間でSSL通信を確立します。

SSL-VPNクライアントソフトにある仮想NICにVPN接続用のIPアドレスが付与されるため、ポートフォワーディング方式では対応できない、ポート番号が変化するアプリケーションでも利用が可能となります。

無線LAN

元々無線LANの暗号方式はWEPというものが採用されていたが、脆弱性が明るみに出たことから、無線LAN機器ベンダの業界団体Wi-Fi AllianceWPA(Wireless Protected Access)を発表した。WPAでは暗号化方式、メッセージ認証方式及び利用者認証方式が規定されている。そのWPA2, WPA3と改良された規格が発表されている。

利用者方式は以下の2種類がある。

エンタープライズモード

IEEE802.1Xを使用して認証を行う方式。認証方式としてはEAPが使われており、具体例は以下の通り

EAP-PEAP認証 … サーバ認証は電子証明書、利用者認証はパスワード
EAP-TLS認証 … サーバ認証と利用者認証共に電子証明書(もちろん別々の電子証明書)

利用認証生成後はサーバと無線端末はPMK(Pairwise Master Key)を動的に生成して、これを使って暗号化を行う。

パーソナルモード

APと無線LANが同一の共通鍵を使って通信する方式(一般的なつなぎ方)。このときの共通鍵のことを事前共有鍵(PSK: Pre-Shared Key)という。実際の通信ではこのキーからPMKを生成して通信を行う。

WPA2まではPMKはPSKが変わらなければ固定であり、PSKを変更しないと辞書攻撃を受けることでPMKの値からPSKがバレてしまうリスクがあった。

WPA3ではこの点が改良され、PSKからPMKを動的に生成することで辞書攻撃による推測を困難にする技術が導入された。それがSAE(Simultaneous Authentication of Equals)とよばれる鍵交換プロトコルである。

暗号化方式とメッセージ認証方式

WPAの暗号化方式はTKIPを用いていたが現在では脆弱性がある。WPA2,WPA3ではCCMP(Counter-mode with CBC-MAC Protocol)が用いられている。4ウェイハンドシェイクによる通信を行う。

この記事が気に入ったらサポートをしてみませんか?