セキュリティ実装技術
要点と定義
セキュリティ実装技術は、通信経路、利用者の認証、ネットワーク境界、Webアプリケーションなど、それぞれの場所に適した対策を組み合わせる考え方です。一つの仕組みで全ての脅威を防げるわけではありません。何を守り、どの通信や操作を許すのかを明確にして、対策の役割と限界を理解します。
人かプログラムかを見分ける仕組み
CAPTCHAは、人には判読できても自動プログラムには判読しにくい画像などを提示し、利用者に入力させることで自動入力を抑制する仕組みです。例えば、画像の文字を読んで入力する課題を登録フォームに設けます。これは人間と自動処理の差を利用する対策であり、画像や文字コードを表すQRコードとは目的が異なります。自動化を完全に排除する保証ではなく、人にも使いにくくなることがあります。
メッセージの完全性と公開鍵の証明
メッセージ認証符号(MAC)は、メッセージと共有する秘密鍵を使って認証値を作り、受信側でも計算して照合する仕組みです。途中で本文が変わると通常は認証値が一致しないため、改ざんの検出に役立ちます。ダイジェストはメッセージから得る要約値ですが、MACで鍵と組み合わせる目的は完全性の確認や送信元の認証です。内容を読めなくする秘匿性は暗号化で確保します。
PKIでは、認証局(CA)が利用者やサーバの公開鍵と、その所有者との対応を確認して公開鍵証明書を発行します。秘密鍵は所有者が秘密に保管します。証明書は公開鍵の持ち主を確かめる助けになりますが、秘密鍵そのものを証明書として配布するものではありません。
ネットワークとWebアプリケーションの防御
ファイアウォールのパケットフィルタリングは、送信元、宛先、ポート番号などの条件で通信を許可または拒否します。規則が上から順に評価される場合、広い許可規則が先にあると、後の拒否規則に到達しないことがあります。必要な相手と通信だけを許可するよう条件を絞るのが基本です。
サーバの配置も通信経路と合わせて考えます。例えば、外部からの入口となるリバースプロキシとWebサーバをDMZに置き、データベースを内部LANに置けば、Webサーバからデータベースへの必要な接続と、監視サーバからデータベースへの接続をそれぞれの配置に応じて設計できます。配置を選ぶときは、各通信の送信元と宛先、ファイアウォールを通るかを確認します。
Webアプリケーションの脆弱性対策には、入力値をSQL文の一部として誤って解釈させないプレースホルダの利用などがあります。SQLインジェクションは、入力処理やSQL文の組み立ての不備を利用し、不正なSQLを実行させる攻撃です。入力値をSQL構文から分離して扱うことが予防の要点です。
WAFはWebアプリケーションへの通信を監視し、攻撃とみなすパターンを検知した際に遮断する仕組みです。アプリケーション層の通信を対象にできますが、未知の攻撃や設定漏れを全て防げるとは限りません。安全なプログラム設計や脆弱性検査などと組み合わせます。
マルウェア検査のビヘイビア法は、検査対象を仮想環境などで実行し、その挙動を観察して不審な動作を検出します。既知ファイルの特徴値と照合する方式と異なり、実行時の振る舞いに着目します。観察環境と実環境の違いや、観察される前に動作を変える検体などがあるため、これだけで全てを検出できるわけではありません。
適用条件と例
対策を選ぶ際には、脅威が発生する場所と守りたい性質を対応させます。例えば、通信中の盗聴を抑えるならTLSなどのセキュアプロトコル、改ざんを検知するならMACや電子署名、Web入力を通じたデータベース攻撃を抑えるなら安全なSQL実装が候補になります。認証は接続者の確認、認可は確認後に許される操作の制御です。認証できたことだけで、全てのデータ操作を許可してよいわけではありません。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む