Merkmale

Dienst für schnelles Pairing

Der Anbieter für schnelles Pairing hat den folgenden GATT-Dienst.

Dienst UUID
Dienst für schnelles Pairing 0xFE2C

Diese Dienstleistung sollte die folgenden Merkmale aufweisen.

Merkmal des Dienstes für schnelles Pairing Verschlüsselt Berechtigungen UUID
Modell-ID Nein Lesen FE2C1233-8366-4814-8EB0-01DE32100BEA
Schlüsselbasiertes Pairing Nein Schreiben und benachrichtigen FE2C1234-8366-4814-8EB0-01DE32100BEA
Passkey Nein Schreiben und benachrichtigen FE2C1235-8366-4814-8EB0-01DE32100BEA
Kontoschlüssel Nein Schreiben FE2C1236-8366-4814-8EB0-01DE32100BEA

Geräteinformationsdienst

Der Anbieter für schnelles Pairing sollte auch den Geräteinformationsdienst unterstützen.

Dienst UUID
Geräteinformationsdienst 0x180A

Der Seeker für die Funktion „Schnelles Pairing“ verwendet die folgenden Merkmale.

Name Verschlüsselt Berechtigungen UUID
Firmware-Version Nein Lesen 0x2A26

Merkmal: Modell-ID

Dieses Merkmal ermöglicht es dem Seeker, die Modell-ID nach Bedarf außerhalb von Auf dem Gerät wird im sichtbaren Modus Werbung geschaltet. Es sollte immer eine folgende Daten:

Oktett Datentyp Beschreibung Wert
0–2 uint24 Modell-ID variiert

Merkmal: schlüsselbasiertes Koppeln

Dieses Merkmal steuert die schlüsselbasierte Kopplung. Bei diesem Verfahren wird ein gewisses Maß an Vertrauen geschaffen, indem überprüft wird, Die Anbieter haben beide einen vorinstallierten Schlüssel. Der Schlüssel unterscheidet sich in für jeden Fall:

  • Fall 1: Der vorinstallierte Schlüssel basiert auf dem öffentlichen/privaten Anti-Spoofing-Schlüssel und das eigene öffentliche/private Schlüsselpaar des Seekers, das sich für jedes Kopplungsversuch.

    • Der Anbieter befindet sich im Kopplungsmodus.
    • Der Seeker überprüft, ob der Anbieter im Besitz des für den privaten Schlüssel gegen Spoofing.

    Im Kopplungsmodus kann der Provider auch im Kopplungsmodus beispielsweise zur Kopplung mit einem Gerät, das die Schlüsselbasiertes Pairing des Paars.

  • Fall 2: Der vorinstallierte Schlüssel ist einer der Kontoschlüssel.

    • Der Anbieter befindet sich normalerweise nicht im Kopplungsmodus. (Aber dies ist kein Voraussetzung: Der Anbieter sollte die Verwendung eines Kontoschlüssels unterstützen, auch wenn Kopplungsmodus.)
    • Der Sucher und der Anbieter stellen jeweils sicher, dass die jeweils andere Person im Besitz der des Kontoschlüssels.

Da sich beide Fälle sehr ähnlich sind, außer dass ein vorinstallierter Schlüssel verwendet wird, Diese werden im Verfahren kombiniert.

Datenformat

Informationen zur Verwendung der einzelnen Formate finden Sie hier.

Oktett Datentyp Beschreibung Wert Obligatorisch?
0–15 uint128 Verschlüsselte Anfrage variiert Obligatorisch
16–79 Öffentlicher Schlüssel variiert Optional

Tabelle 1.1:Verschlüsselte Anfrage, die vom Seeker in das Merkmal geschrieben wird.

Oktett Datentyp Beschreibung Wert Obligatorisch?
0 uint8 Nachrichtentyp 0x00 = Schlüsselbasierte Anfrage zur Kopplung Obligatorisch
1 uint8 Markierungen
  • Bit 0 (MSB): eingestellt und von Seeker ignoriert.
  • Bit 1: 1, wenn der Seeker fordert, dass der Anbieter den Bindungsaufbau einleitet und diese Anfrage die BR/EDR-Adresse des Seekers enthält. Andernfalls 0.
  • Bit 2: 1, wenn der Seeker darum bittet, dass der Anbieter den vorhandenen Namen benachrichtigt. Andernfalls 0.
  • Bit 3: 1, wenn dies für Kontoschlüssel rückwirkend geschrieben gilt. Andernfalls 0.
  • Die Bits 4-7 sind für eine zukünftige Verwendung reserviert und werden ignoriert.
variiert Obligatorisch
2–7 uint48 Sie haben folgende Möglichkeiten:
  • Aktuelle BLE-Adresse des Anbieters
  • Öffentliche Adresse des Anbieters
variiert Obligatorisch
8–13 uint48 BR/EDR-Adresse des Suchers variiert Nur vorhanden, wenn Flags Bit 1 oder 3 festgelegt sind
n: 15 Zufälliger Wert (Salt) variiert Obligatorisch

Tabelle 1.2.1:Rohanfrage (Typ 0x00). Entschlüsselt aus dem verschlüsselten Anfrage in Tabelle 1.1

Oktett Datentyp Beschreibung Wert Obligatorisch?
0 uint8 Nachrichtentyp 0x10 = Aktionsanfrage Obligatorisch
1 uint8 Markierungen variiert Obligatorisch
2–7 uint48 Sie haben folgende Möglichkeiten:
  • Aktuelle BLE-Adresse des Anbieters
  • Öffentliche Adresse des Anbieters
variiert Obligatorisch
8 uint8 Nachrichtengruppe variiert Obligatorisch, wenn Flags Bit 0 festgelegt sind
9 uint8 Nachrichtencode variiert Obligatorisch, wenn Flags Bit 0 festgelegt sind
10 uint8 Von Flags abhängig:
  • Bit 0 ist festgelegt: zusätzliche Datenlänge, kleiner als 6
  • Bit 1 ist festgelegt: Daten-ID
variiert Obligatorisch, wenn Flags Bit 0 oder 1 festgelegt sind
11–n Zusätzliche Daten variiert Optional
n: 15 Zufälliger Wert (Salt) variiert Obligatorisch

Tabelle 1.2.2:Rohanfrage (Typ 0x10). Entschlüsselt aus dem verschlüsselten Anfrage in Tabelle 1.1

Oktett Datentyp Beschreibung Wert
0 uint8 Nachrichtentyp 0x01 = Schlüsselbasierte Kopplungsantwort
1–6 uint48 Öffentliche Adresse des Dienstleisters (BR/EDR) variiert
7–15 Zufälliger Wert (Salt) variiert

Tabelle 1.3:Rohantwort. Verschlüsselt, um die verschlüsselte Antwort zu erzeugen in Tabelle 1.4.

Oktett Datentyp Beschreibung Wert
0–15 uint128 Verschlüsselte Antwort variiert

Tabelle 1.4:Verschlüsselte Antwort, die vom Anbieter über eine zu benachrichtigen.

Merkmal: Passkey

Diese Eigenschaft wird während der schlüsselbasierten Kopplung verwendet. Verfahren.

Oktett Datentyp Beschreibung Wert
0–15 uint128 Verschlüsselter Passkey-Block variiert

Tabelle 2.1:Verschlüsselter Passkey-Block. Weitere Informationen finden Sie unter Schlüsselbasiertes Kopplungsverfahren für die Nutzung.

Oktett Datentyp Beschreibung Wert
0 uint8 Nachrichtentyp Eine der folgenden Möglichkeiten:
  • 0x02 = Passkey des Seekers
  • 0x03 = Passkey des Anbieters
1–3 unit32 6-stelliger Passkey variiert
4–15 Zufälliger Wert (Salt) variiert

Tabelle 2.2:Roh-Passkey-Block. Entschlüsselte Version von Tabelle 2.1.

Merkmal: Kontoschlüssel

Nach der Kopplung schreibt der Suchende, der schnelles Pairing durchführt, einen Kontoschlüssel für das schnelle Pairing. Anbieter.

Oktett Datentyp Beschreibung Wert
0–15 uint128 Kontoschlüssel (verschlüsselt) variiert

Nach Erhalt einer Schreibanfrage muss der Anbieter für schnelles Pairing Folgendes tun:

  1. Entschlüsseln Sie den Kontoschlüssel mit dem gemeinsamen Secret, das in Schritt 4 im Vorgehensweise.
    • Für Anbieter, die Bindungen erfordern (üblich): <ph type="x-smartling-placeholder">
        </ph>
      • Prüfen Sie vor der Entschlüsselung, ob das gemeinsame Secret zum Entschlüsseln des Passkey-Anforderung aus Schritt 12. Wenn dieser Schritt mit dieser Secret ignorieren, diesen Schreibvorgang ignorieren und beenden.
    • Zu diesem Zeitpunkt wird das gemeinsame Secret (K in der Prozedur) nicht verwendet noch einmal für diese Kopplung. Alle Anfragen, die mit diesem Schlüssel verschlüsselt sind ohne einen Neustart des Verfahrens.
  2. Prüfen Sie, ob der entschlüsselte Wert mit 0x04 beginnt. Ist dies nicht der Fall, ignorieren und aufhören.
  3. Prüfen Sie, ob in der beibehaltenen Liste der Kontoschlüssel Platz für das neue Wert.
  4. Löschen Sie andernfalls den zuletzt verwendeten Wert aus der Liste.
  5. Fügen Sie den neuen Wert der Liste hinzu.

Kontoschlüssel in der Liste werden bei der schlüsselbasierten Kopplung verwendet.

Merkmal: Firmware-Version

Mit diesem Merkmal kann der Seeker die Firmwareversion der Anbieter, falls erforderlich. Es sollten immer die folgenden Daten zurückgegeben werden:

Oktett Datentyp Beschreibung Wert
0 – var utf8s Firmware-Versionscode variiert

Er sollte in einen einzelnen utf8-String gekapselt werden, auch wenn mehr als ein String vorhanden ist Firmware (z. B. drei Firmwares für linken und rechten Kopfhörer und Lade-Case) beim Anbieter. In Sonderfällen kann der Provider die spezifischen Strings auch zurückgeben:

  1. status-refresh: wenn der Anbieter derzeit auf eine neue Firmware aktualisiert. Alternativ könnte der Provider die Version der bereitgestellten Firmware zurückgeben.

  2. status-abnormal: wenn sich der Anbieter in einem ungewöhnlichen Zustand befindet. Zum Beispiel funktioniert nicht, da das Firmware-Update fehlgeschlagen ist. Dieser Wert führt dazu, dass um dem Nutzer mitzuteilen, dass er jetzt aktualisiert werden muss.

Der Anbieter sollte den Zugriff auf das Merkmal der Firmware-Version auf das Tracking von Geräten verhindern. Empfohlene Einschränkungen:

  • gebundene Geräte sollten jederzeit Zugriff haben
  • Jedes Gerät sollte Zugriff haben, wenn der Anbieter sichtbar ist

Merkmal: Zusätzliche Daten

Dieser Service weist folgendes Merkmal auf.

Merkmal des Dienstes für schnelles Pairing Verschlüsselt Berechtigungen UUID
Daten Nein Schreiben und benachrichtigen FE2C1237-8366-4814-8EB0-01DE32100BEA
Altes Merkmal des Dienstes für schnelles Pairing (wird ab 01.01.2021 eingestellt) Verschlüsselt Berechtigungen UUID
Daten Nein Schreiben und benachrichtigen 0x1237

Vor der schriftlichen Benachrichtigung oder der Benachrichtigung zu diesem Merkmal muss eine Handshake über die Eigenschaft FE2C1234-8366-4814-8EB0-01DE32100BEA, um ein gemeinsames Secret. AES-CTR wird zur Verschlüsselung von durch diese Eigenschaft, deren Algorithmus unten definiert ist. Dieser Modus bietet mehr für Daten, die über einen einzigen 16-Byte-Block hinausgehen. HMAC-SHA256 zur Sicherstellung der Datenintegrität, die ebenfalls unten definiert ist.

Oktett Beschreibung Wert
0–7 Die ersten 8 Byte von HMAC-SHA256. variiert
8–15 Nonce, verwendet von der AES-CTR-Verschlüsselung. variiert
16 – var Verschlüsselte Daten. variiert

Tabelle 3.1:Datenpaket, das vom Anbieter über eine benachrichtigt oder vom Suchenden schriftlich an den Anbieter gesendet werden.

Oktett Datentyp Beschreibung Wert
0 – var byte array Daten variiert, decodieren Sie ihn entsprechend der Daten-ID in Tabelle 1.2.2:
  • 0x01(personalisierter Name): utf8s

Tabelle 3.2:Rohdaten. Entschlüsselt aus den verschlüsselten Daten in Tabelle 3.1.

Wenn eine Benachrichtigung angefordert wird (z.B. Anforderung eines personalisierten Namens über Bit 2 in Tabelle 1.2.1), muss der Anbieter für schnelles Pairing Folgendes tun:

  1. Kryptografisch zufällige 8 Byte für Nonce generieren.
  2. Verschlüsseln Sie die Daten mit AES-CTR, wobei jeder 16-Byte-Block mit

    encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    Bitte wo?

    1. Der AES-Schlüssel ist das gemeinsame Secret aus Schritt 4 des Verfahrens.
    2. ClearBlock[i] ist ein 16-Byte-Block ab data[i * 16]. Die letzte Block kann kleiner als 16 Byte sein.
  3. Führen Sie concat(encryptedBlock[0],encryptedBlock[1],...) aus, um die Verschlüsselte Daten.

  4. HMAC-SHA256 generieren durch

    sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))
    

    Bitte wo?

    1. K wird durch concat(shared_secret, 48-byte ZEROs) generiert, der „shared_secret“ stammt aus Schritt 4 des Verfahrens.
    2. opad entspricht dem äußeren Padding von 64 Byte und besteht aus wiederholten, mit einem Wert bewerteten Byte. 0x5C
    3. Das innere Padding besteht aus 64 Bytes, das aus wiederkehrenden Bytes besteht und bewertet wurde. 0x36
  5. Nehmen Sie die ersten 8 Bytes aus HMAC-SHA256 als Präfix der Data Paket.

Nach Erhalt einer Schreibanfrage muss der Anbieter für schnelles Pairing Folgendes tun:

  1. Überprüfen Sie die Integrität der Daten, indem Sie die ersten 8 Bytes HMAC-SHA256.
  2. Entschlüsseln Sie die verschlüsselten Daten mit AES-CTR, wobei jeder Block mithilfe von

    clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    Bitte wo?

    1. Verschlüsselter Block[i] ist ein 16-Byte-Block vonencrypted_data[i * 16]. Der letzte Block kann kleiner als 16 Byte sein.
    2. Der AES-Schlüssel wird durch den Handshake generiert oder identifiziert, z.B. <ph type="x-smartling-placeholder">
        </ph>
      1. in Benennungsablauf 1, stammt er von ECDH und wird nicht erneut für diese Kopplung verwendet werden. Alle Anfragen, die verschlüsselt eingehen mit diesem Schlüssel verwenden, ohne den Vorgang neu zu starten abgelehnt.
      2. in Benennungsablauf 2 ist es der Kontoschlüssel.
  3. Führen Sie concat(clearBlock[0], ClearBlock[1],...) aus, um die Rohdaten zu erstellen.