セキュリティ対策の基本 #8 【ワイヤレス・ネットワーク】(覚え書き)

セキュリティ

無線LANは、ケーブルの束縛から解放され、スマホやタブレット、ノートPCを自由に使える素晴らしいテクノロジーです。
しかし…実はその便利さの裏側には、誰でもアクセスできちゃうという危険が潜んでいます!

無線LANのメリットとデメリット

メリット

  • ケーブル不要!
    配線の手間が省け、レイアウトの変更も自由自在です。
  • モバイルフレンドリー
    移動中でもネットに接続できるので、働く場所も自由に選べます。

デメリット

  • 誰でもアクセス可能?
    電波は空中に広がるため、悪意のある第三者に傍受されたり、不正なアクセスポイント(AP)を使われる危険があります。

セキュリティの救世主たち!

無線LANを安全に使うための技術として、暗号化認証の仕組みが用意されています。

暗号化プロトコルの進化

  1. WEP (1997年登場)
    • 固定の「WEPキー」を使うため、同じ暗号鍵が何度も使われる。
    • 初期値(IV)が24ビットと短く、繰り返し使われる可能性が高い。
    • 結果:すぐに解読される弱さが露呈!
  2. WPA (2002年登場)
    • 初期値を48ビットに拡張し、暗号鍵生成を複雑化。
    • フレームごとに鍵を変えるので、セキュリティが強化。
  3. WPA2 (2004年登場)
    • 暗号化アルゴリズムにAESを採用。
    • さらに高い安全性を実現(ただし、近年の脆弱性も指摘されています)。
  4. WPA3 (2018年登場)
    • パーソナルモードでは、辞書攻撃に対する耐性を強化。
    • エンタープライズモードでは、192ビットの暗号強度を実現し、企業ネットワーク向けの堅牢なセキュリティを提供。

認証で「見えざる壁」を構築!

IEEE802.1X認証とは?

IEEE802.1Xは、無線LAN接続時に「誰が接続しているのか」を厳しくチェックする仕組みです。

  • 認証クライアント(あなたのスマホやPC)
  • 認証装置(アクセスポイント、AP)
  • 認証サーバ(RADIUSサーバなど、ユーザ情報を管理)

この3者が連携し、接続を許可する前にユーザIDやパスワード、場合によっては証明書を用いた厳格な認証を行います。
また、EAP (Extensible Authentication Protocol) と呼ばれるプロトコルが、さまざまな認証方式(EAP-TLS、PEAP、EAP-TTLSなど)として利用され、セキュリティレベルを調整できるようになっています。

Pythonで学ぶ!セキュリティのイメージ

1. 簡単な暗号化の実験:XOR暗号で見る「同じ鍵の危険性」

ここでは、超シンプルなXOR暗号を使って、固定の鍵を使うと同じ条件下で同じ結果が得られる点を実験してみましょう。これは、WEPが持つ「固定鍵問題」をイメージする一例です。

def simple_xor_encrypt(data, key):
    # dataはbytes型、keyは整数
    return bytes([b ^ key for b in data])

# 平文と固定の鍵
plaintext = b"Hello, Wireless LAN!"
key = 42  # 固定鍵

encrypted = simple_xor_encrypt(plaintext, key)
print("Encrypted:", encrypted)

# 同じ鍵で復号(XORは逆演算が可能)
decrypted = simple_xor_encrypt(encrypted, key)
print("Decrypted:", decrypted)

このコードでは、同じ固定鍵を使って暗号化と復号を行っています。
ポイント: 固定の鍵を使うと、同じパターンのデータは必ず同じ暗号化結果になるため、攻撃者にとっては「パターン」を見抜かれやすくなるんです!

2. MACアドレスフィルタリングのシンプルな実装例

無線LANでは、接続を許可する端末をMACアドレスで制限することも行われます。以下の例は、許可されたMACアドレスリストに基づいてアクセスを判定する簡単なPythonコードです。

def is_allowed_device(mac, allowed_macs):
    return mac in allowed_macs

# 許可されたMACアドレスリスト
allowed = ["00:11:22:33:44:55", "66:77:88:99:AA:BB"]
device_mac = "00:11:22:33:44:55"

if is_allowed_device(device_mac, allowed):
    print("Access granted!")
else:
    print("Access denied!")

この例では、指定されたMACアドレスが許可リストにあるかどうかでアクセスの可否をチェックしています。
ポイント: 実際の環境では、MACアドレスは偽装される可能性もあるので、他のセキュリティ対策と併用することが重要です!

まとめ

無線LANはとても便利ですが、その便利さゆえに多くの脅威にさらされています。

  • 暗号化プロトコル(WEPからWPA3へ)は時代とともに進化してきましたが、常に最新の技術を取り入れることが大切です。
  • IEEE802.1X認証EAPを活用することで、不正なアクセスを防ぎ、ネットワーク全体の安全性を高めることができます。

今回ご紹介したPythonのサンプルコードは、セキュリティの基本概念をポップに学ぶための一例です。現実のセキュリティ対策はこれらの技術を組み合わせることで、より堅牢なネットワーク環境を構築しています。

無線LANの安全な利用のため、ぜひ最新の技術と運用の工夫を取り入れてみてくださいね!

コメント