Community Translation - Handling GATT attribute security permissions requirements in Bluetooth® LE – KBA233955

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Dear supporter

I want to translate the following KBA. Please confirm to my work.

Handling GATT attribute security permissions requirements in Bluetooth® LE – KBA233955

Regards,

Nino

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Thank you for participating this activity.

Confirm to work this KBA.

Thanks, 

Jenna Jo
0 Likes

Dear Jenna

The following shows the translated version in Japanese for targeted KBA.

Please conform and double check.

Regards,

Nino

---------------------------------------------------------------------------------------------

Bluetooth® LEでのGATT属性セキュリティ認可要求の処理 – KBA233955

 

Version: **

 

Bluetooth® 仕様(3.2.5 Version 5.2 | Vol 3, Part F)によれば、属性認可は、アクセス認可、暗号化認可、証明認可、および公認認可の組み合わせです。これらは、セキュリティの要求レベルがペアリングプロセス中に達成されなかった場合、ピアデバイスは属性にアクセス(通知および/または表示と同じく、読み取りおよび/または書込みアクセス)できない事が保証されます。

 

クライアント特性構成記述子(CCCD)の許可設定を表す図1に示すように、Bluetooth® コンフィギュレーターのGATT Settingsタブを使用してGATT属性でのセキュリティ要求を設定できます。読み取り/書込み許可および、読み取り認証要求または、書込み認証要求のようなセキュリティ許可を設定できます。

keni_4440091_1-1633507479552.png

1. クライアント特性構成

読み取り認証要求または書込み認証パラメータは、その特性にアクセス(読み取りまたは書込み)するために求められる認証または暗号化のどちらかを意味します。インフィニオンBluetooth® ホストスタックは、これら2つのセキュリティ許可を区別しません。ただし、認証要求、または暗号化要求、あるいは両方のどれかを特別に設定したい場合、これら2つの許可を区別するためにBluetooth® スタックにオプションを使用でき、それに応じてエラー応答を送信できます。

 

  1. 認証または暗号化が必要な場合、読み取り/ 書込み要求チェックボックスを選択します。
  2. ペアリングが成功した後、現在の接続のセキュリティレベルを決まるためにwiced_bt_ble_get_security_state()関数を使用します。この関数は、以下のような*p_le_sec_flags enumのフラグを使用して、接続のために使用されたセキュリティのタイプを返します。:

enum wiced_bt_ble_sec_flags_e
{

    BTM_SEC_LE_LINK_ENCRYPTED           = 0x01,     /* 暗号化リンク */
    BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM = 0x02,     /* 中間者保護なしのペアリング */
    BTM_SEC_LE_LINK_PAIRED_WITH_MITM    = 0x04      /* 中間者保護なしのリンク */
};

 

複数のフラグは、APIによって同時に設定できます。;例えば、MITM保護付きの暗号またはMITM保護なしの暗号を使用できます。p_le_key_sizeパラメータを使用して暗号化のキーサイズも取得できます。

  1. 読み取りまたは書込み要求を受けた場合、ハンドルに読み取り/書込み認証または暗号化が必要かを確認してください。

wiced_bt_gatt_server_send_error_rsp()関数を実行し、以下のように適切な状態応答を渡します。:

  • WICED_BT_GATT_INSUF_AUTHENTICATION
  • WICED_BT_GATT_INSUF_ENCRYPTION
  • WICED_BT_GATT_INSUF_KEY_SIZE

 

これらのエラーコードは、wiced_bt_gatt.hのenum wiced_bt_gatt_status_eの一部です。

 

1. サンプルの実装

1.1 読み取り認証の要求:

 

電池レベル特性のCCCD値を読むために読み取り認証が求められると仮定します。読み取りハンドラでは、以下のようなコードスニペットを実装します。:

 

wiced_bt_ble_get_security_state(bd_addr, &sec_flags, &key_size);

 

wiced_bt_gatt_read_t *p_read_req  = p_data->attribute_request.data.read_req;    

                                                 

if(handle == HDLD_BAS_BATTERY_LEVEL_CLIENT_CHAR_CONFIG)
       {
             /* 読み取り認証の要求*/
            if((sec_flags & BTM_SEC_LE_LINK_PAIRED_WITH_MITM) == 0)
            {
/* 認証が達成されなかった場合、ピアデバイスにINSUF_AUTHENTICATIONエラーを送信 */
 wiced_bt_gatt_server_send_error_rsp(conn_id, opcode, p_read_req->handle,
WICED_BT_GATT_INSUF_AUTHENTICATION);
            }
      }

1.2  書込み暗号化の要求:

wiced_bt_ble_get_security_state(bd_addr, &sec_flags, &key_size);

       if(attr_handle == HDLD_BAS_BATTERY_LEVEL_CLIENT_CHAR_CONFIG)
       {
              /* 暗号化の要求 */

             if((sec_flags & BTM_SEC_LE_LINK_ENCRYPTED) == 0)
            {
         /* 暗号化が達成されなかった場合、ピアデバイスにINSUF_ENCRYPTIONエラーを送信 */

        wiced_bt_gatt_server_send_error_rsp(conn_id, opcode, handle, WICED_BT_GATT_INSUF_ENCRYPTION);
             }
}

Labels   Other

Tags: anycloud Attribute permissions ble Bluetooth® LE gatt stack wifi bt combo

0 Likes