目的
まず、暗号化に使用される3つの技術、ECDH、AES-CCM、AES-CMACについて、それぞれを簡単に紹介します。最も簡単なものから順に説明していきます。
1. AES-CMAC (Cipher-based Message Authentication Code)
概要:
AES-CMAC は、メッセージの認証に使用される技術です。これにより、データの整合性と真正性が保証されます。AES-128 (Advanced Encryption Standard) ブロック暗号を使用して、固定サイズの認証タグ(MAC)を生成します。
用途:
AES-CMACは、メッセージやデータの改ざんを検出するために使われます。たとえば、通信データが改ざんされていないことを確認するために利用されます。
特徴:
- データの整合性を確認するための認証コードを生成
- データの暗号化そのものではなく、データの改ざん防止に使われる
2. AES-CCM (Counter with CBC-MAC)
概要:
AES-CCM は、データの暗号化と認証を同時に行う暗号化モードの一つです。AES(Advanced Encryption Standard)を使用して、暗号化されたデータを生成し、さらに改ざんされていないかどうかも検証します。CCM は「Counter Mode」と「CBC-MAC(Cipher Block Chaining - Message Authentication Code)」の組み合わせです。
用途:
データの暗号化と、データが改ざんされていないことの確認を同時に行いたい場合に使われます。例えば、無線通信プロトコル(Bluetooth Low Energyなど)で、送信データを保護する際に使用されます。
特徴:
- データの暗号化(機密性の保持)と認証(整合性の確認)を同時に実行
- パケットのような限られたリソース環境で有効
3. ECDH (Elliptic Curve Diffie-Hellman)
概要:
ECDH は、楕円曲線ディフィー・ヘルマン(Elliptic Curve Diffie-Hellman)という暗号方式で、2者間で共有の秘密鍵を安全に生成するために使われます。お互いの公開鍵を交換し、その情報を基にして、共通の秘密鍵を計算します。この秘密鍵を使ってデータの暗号化を行うことができます。
用途:
ECDHは、セキュアな通信のための共有鍵を交換するために使用されます。BluetoothやWi-Fiの接続、またはエンドツーエンドの暗号化を必要とするアプリケーションで使われます。
特徴:
- 楕円曲線暗号に基づく安全な鍵交換方式
- 公開鍵を交換するだけで、秘密鍵を共有できる
- 大きな計算力を必要とせず、安全性が高い
まとめ:
- AES-CMAC はデータの認証と改ざん検出に使用されます。
- AES-CCM はデータの暗号化と認証を同時に行い、特にリソース制限のある環境で有効です。
- ECDH は、安全な秘密鍵を生成するための鍵交換プロトコルです。
段階的に複雑さが増しますが、それぞれが異なる役割を持つ重要な暗号化技術です。
雑談
Sesame 用の暗号化技術は、実際には BLE-Mesh 用の暗号化技術と同じです。ただ、これはアプリケーション層で実装されているだけです。利点として、多くの細部を最適化でき、接続がより速く、Bluetoothペアリングが不要です。
用語
- [Aes]
- [AES-CMAC]
- [AES-CCM]
- [ECDH]
- [BLE-Mesh]