BLEペアリングとボンディングの違い
Bluetooth LEに関して言えば、ペアリングとボンディングは全く異なるものです。簡単に説明すると、ペアリングは各デバイスが持つセキュリティ機能の交換と一時的な暗号化の作成であり、ボンディングはペアリングが行われた後に長期鍵を交換し、それらの鍵を後で使用するために保存することです。ペアリングはデバイス間の恒久的なセキュリティの作成ではなく、それはボンディングと呼ばれます。ペアリングはボンディングが行われるためのメカニズムです。
ペアリング
ペアリングはセキュリティ機能の交換です。これには、i/o機能、ミドルマン保護の要件などが含まれます。クライアント側がこの交換を開始します。クライアントは基本的に「これらの機能があると良いな」と言います。サーバーは「これができることです」と応答します。この交換が完了すると、使用されるセキュリティが決定されます。例えば、サーバーがi/o機能としてnoInput/noOutputのみをサポートしている場合、Just Worksペアリングメカニズムが使用されます。
ペアリング機能の交換が完了すると、一時的なセキュリティキーが交換され、接続が暗号化されますが、これは一時的なキーを使用してのみ行われます。この暗号化された接続で、長期鍵が交換されます。これらの鍵には、(長期的な)暗号化キーやデジタル署名キーなどが含まれます。交換される具体的な鍵は、各デバイスのセキュリティ機能によって決定されます。
ボンディング
これは、ペアリング機能の交換と接続の暗号化が完了し(これら二つを合わせて「ペアリング」と呼びます)、鍵が交換された後、デバイスがそれらの鍵を保存し、次回接続時に使用することを意味します。鍵はボンディング手順を使用して交換できますが、鍵が保存されて次回使用されない限り、ボンディングされたとは言えません。
デバイスが他のデバイスとボンディングされている場合(例:心拍モニターとスマートフォン)、機密のセキュリティ情報を交換せずに接続を暗号化できます。スマートフォンが心拍モニターに接続すると、「暗号化をオンにする」リクエストを発行し、両側が既に保存されている鍵を使用するだけで、スヌーピングされることなくキー交換が行われ、送信されるメッセージが解読されることはありません。