Energy)の開発依頼は、フィールドデザインまでお気軽にお問い合わせください。]ペアリングとは、セントラルとペリフェラル間のデータ暗号化のための鍵の交換をすることです。その時に、正しい相手かを認証をするために、双方で番号を入れるなどチェックをします。ボンディングとは、ペアリングで交換した鍵を保存することです。ボンディングをしておけば、次回に同じ相手と接続するときに、ペアリングの処理は行わないで、前回に使った鍵をそのまま使い、データを暗号化できます。ペアリングはするが、ボンディグはしないということもできます。その場合は、セントラルとペリフェラルが接続のたびに6桁の数字を入れたりして、相互認証を行う必要があります。ペアリングは、Bluetoothのバージョンが上がるたびに変更されるため、経緯も含めて説明します。Bluetoothを含めて説明すると、同じような言葉で意味が違うものがいくつも出てきて、非常にややこしくなるためです)。Method)があります。4.2でより強度の強い方法が追加されたことによります。どちらの方法もデータ暗号化は、AES-CCMPアルゴリズムを使って行います。4.0の時に導入された方法。4.2から導入されたセキュリティの強い方法で、鍵交換に公開鍵暗号方式が使われます。Model)という認証接続方法が決められています。アソシエーションモデルとは、双方でボタンを押すとか、6桁の数字を入れるとか、などの認証のための手段のことです。Energyをはじめて規格化された時に定義されたペアリング方法です。Modelがあります。Works:双方で認証をしない方法です。無線区間のデータを盗聴していれば、簡単に暗号化鍵がわかってしまいます。そのため、セキュリティの強度は、ペアリングのない、暗号化なしと変わりません。Entryの000000とケースと同じ処理です。Entry:片方が6桁の数字を入力するか、表示するかで、認証をする方法です。Attackで簡単に解読されてしまいます。それ以外にも解読する方法が見つかっており、安全なModelではありません。Band(OOB):NFC等の他の手段で鍵を交換するものです。現在のところ、脆弱性は見つかっておりません。Pairingのシーケンスは下記のようになります。Modelを選択します。Modelによってお互いを認証します。Key)と呼ばれる一時鍵を生成します。Key)を交換し、ペアリングが完了します。その後の通信はこのLTKを使ってデータを暗号化します。次回に接続するときは、このLTKが双方で保存されているので、ペアリングの処理をせずに、データを暗号化することができます。ここで問題なのは、データの暗号化鍵となるLTKを無線区間で送るため、セキュリティの強度が弱いことです。Connectionsが追加されました。4.2から追加されたペアリング方式で、楕円曲線暗号デフィーヘルマン鍵交換(ECDH)を使った方式です。この方式では、LTKは無線区間で送ることはしないため、安全です。脆弱性も現在のところ見つかっておりません。Modelがあります。Works:双方で認証をしない方法です。Worksは、公開鍵暗号方式で鍵交換されているため、盗聴されて、暗号鍵が解読されることはありません。Passkeyが000000とわかっているため、誰でも接続して相手のデータを盗むことは可能です。Entry:片方が6桁の数字を入力するか、表示するかで、認証をする方法です。Band(OOB):NFC等の他の手段で鍵を交換するものです。Comparison:毎回ランダムな数字を双方で表示し、それらが同じであればそれぞれでボタンをおすことで、認証をします。Connectionsのシーケンスは下記のようになります。Modelを選択します。お互いで楕円曲線暗号の公開鍵と秘密鍵を生成し、公開鍵を交換します。Modelによってお互いを認証します。お互いの公開鍵を使って、LTKを生成する情報を交換し、ペアリングが完了します。その後の通信はこのLTKを使ってデータを暗号化します。Pairingを使用することになってしまいます。ペアリング・ボンディングでよくある不具合(★★)ペアリング関連でよくある不具合として、下記のものがあります。ペリフェラル側をペアリングなしで動作させたため、他のデバイスが勝手に接続してきて、本来接続すべきデバイスが接続できない。ペリフェラル、セントラルの片方のボンディング情報を消してしまい、その後、接続できなくなる。1つ目の問題は、キーボード、マウスなどで、ペアリングなしの仕様にしてしまうと、誰でも接続できてしまうため、通信が瞬断した場合に、その期間に他の機器が接続してしまうという脆弱性です。この解決策は、ペアリング・ボンディングありの仕様に変更するしかありません。Energyの鍵は、ランダムな数字を使って生成するため、同じ機器どうしでも毎回違う鍵になります。そのため、片方のボンディング情報を消してしまうと、残った方のボンディング情報は世の中のどれとも接続できない鍵情報になってしまいます。この場合は、残った方のボンディング情報を消して、再度、ペアリングからやり直すしかありません。やっかいなのは、ペリフェラル側のボンディング情報が消えていても、接続までは通るため、あたかも接続できているようにセントラル側にみえることです。セントラルがスマートフォンなどの場合では「接続」という表示にかわります。そのため、何がおかしいのか判断ができなくなり、対策もできなくなる点が厄介です。