Özellikleri

Hızlı Eşleme Hizmeti

Hızlı Eşleme Sağlayıcısı aşağıdaki GATT hizmetine sahip olmalıdır.

Hizmet UUID
Hızlı Eşleme Hizmeti 0xFE2C

Bu hizmet aşağıdaki özelliklere sahip olacaktır.

Hızlı Eşleme Hizmeti özelliği Şifrelenmiş İzinler UUID
Model Kimliği Hayır Okuma FE2C1233-8366-4814-8EB0-01DE32100BEA
Anahtara Dayalı Eşleme Hayır Yaz ve bildirim gönder FE2C1234-8366-4814-8EB0-01DE32100BEA
Geçiş anahtarı Hayır Yaz ve bildirim gönder FE2C1235-8366-4814-8EB0-01DE32100BEA
Hesap Anahtarı Hayır Yazma FE2C1236-8366-4814-8EB0-01DE32100BEA

Cihaz Bilgileri Hizmeti

Hızlı Eşleme sağlayıcısı, Cihaz Bilgileri Hizmeti'ni de desteklemelidir.

Hizmet UUID
Cihaz Bilgileri Hizmeti 0x180A

Hızlı Eşleme arayan aşağıdaki özellikleri kullanır.

Ad Şifrelenmiş İzinler UUID
Donanım Yazılımı Düzeltmesi Hayır Okuma 0x2A26

Özellik: Model kimliği

Bu özellik, arayanın Cihaz bulunabilir modda reklam verdiğinde. Her zaman döndürülmelidir. aşağıdaki veriler:

Sekiz Veri türü Açıklama Değer
0 - 2 uint24 Model Kimliği değişiklik gösterir

Özellik: Anahtara Dayalı Eşleme

Bu özellik, Anahtara Dayalı Eşleme prosedürünü kontrol eder. Bu prosedürde, Arayanın ve reklamverenin geçerliliğini doğrulayarak, belirli bir Her iki sağlayıcı da önceden paylaşılan bir anahtara sahip. Temel proje yönetiminin her durumda:

  • 1. durum: Önceden paylaşılan anahtar, adres sahteciliğine karşı koruma genel/özel anahtarına dayalıdır ve arayanın kendi ortak/özel anahtar çiftinin anahtarı bulunur. Bunlar her kullanıcı için eşleme denemesi.

    • Sağlayıcı, eşleme modunda.
    • Arayan, Sağlayıcı'nın adres sahteciliğini önleme özel anahtarı.

    Eşleme modundayken Sağlayıcı'nın aynı zamanda özelliklerini desteklemeyen bir cihazla eşlenir. Eşlemenin Anahtara Dayalı Eşlemesi.

  • 2. örnek: Önceden paylaşılan anahtar, hesap anahtarlarından biridir.

    • Sağlayıcı genellikle eşleme modunda değil. (Ancak bu bir gereksinimi; Sağlayıcı, eşleme moduna geç'i tıklayın.)
    • Arayan ve Sağlayıcı, diğerlerinin hesap anahtarı.

Önceden paylaşılan anahtar hariç olmak üzere her iki durum da son derece benzer olduğundan, prosedürde birleştirilir.

Veri Biçimi

Her biçimin nasıl kullanıldığıyla ilgili prosedüre bakın.

Sekiz Veri türü Açıklama Değer Zorunlu mu?
0 - 15 uint128 Şifrelenmiş İstek değişiklik gösterir Zorunlu
16 - 79 Ortak Anahtar değişiklik gösterir İsteğe bağlı

Tablo 1.1: Arayan'ın özelliğine göre yazılan Şifrelenmiş İstek.

Sekiz Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Mesaj türü 0x00 = Anahtara Dayalı Eşleme İsteği Zorunlu
1 uint8 İşaretler
  • Bit 0 (MSB): Kullanımdan kaldırılmış ve Arayan tarafından yoksayılmıştır.
  • Arayan, Sağlayıcı'nın bağ kurmasını isterse ve bu talep, Arayanın BR/EDR adresini içerirse Bit 1: 1. 0 değerini girin.
  • Arayan, Sağlayıcı'nın mevcut adı bilgilendirmesini isterse Bit 2: 1. 0 değerini girin.
  • Bu, Hesap anahtarını geriye dönük olarak yazma içinse Bit 3: 1. 0 değerini girin.
  • 4 - 7 arasındaki bitler gelecekte kullanım için ayrılmıştır ve yok sayılacaktır.
değişiklik gösterir Zorunlu
2 - 7 uint48 Şu ikisinden birini yapın:
  • Sağlayıcının geçerli BDE adresi
  • Sağlayıcının herkese açık adresi
değişiklik gösterir Zorunlu
8 - 13 uint48 Arayanın Brezilya/EDR Adresi değişiklik gösterir Yalnızca İşaretler Bit 1 veya 3 ayarlanmışsa gösterilir
n - 15 Rastgele değer (salt) değişiklik gösterir Zorunlu

Tablo 1.2.1: Ham İstek (tür: 0x00). Şifrelenmiş cihazdaki şifre çözüldü Tablo 1.1'deki talep.

Sekiz Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Mesaj türü 0x10 = İşlem İsteği Zorunlu
1 uint8 İşaretler
  • Bit 0 (MSB): Cihaz işlemi için 1, aksi takdirde 0 değerini alır.
  • Ardından Ek Veri özelliği gelecekse Bit 1: 1, aksi halde 0 değerini alır.
  • Bit 2 - 7 gelecekte kullanım için ayrılmıştır ve yoksayılacaktır.
değişiklik gösterir Zorunlu
2 - 7 uint48 Şu ikisinden birini yapın:
  • Sağlayıcının geçerli BDE adresi
  • Sağlayıcının herkese açık adresi
değişiklik gösterir Zorunlu
8 uint8 Mesaj grubu değişiklik gösterir İşaretler Bit 0 ayarlanmışsa zorunlu
9 uint8 Mesaj kodu değişiklik gösterir İşaretler Bit 0 ayarlanmışsa zorunlu
10 uint8 İşaretlere bağlıdır:
  • Bit 0 ayarlandı: Ek veri uzunluğu, 6'dan küçük
  • Bit 1 ayarlandı: Veri kimliği
değişiklik gösterir İşaretler Bit 0 veya 1 ayarlanmışsa zorunlu
11 - n Ek veriler değişiklik gösterir İsteğe bağlı
n - 15 Rastgele değer (salt) değişiklik gösterir Zorunlu

Tablo 1.2.2: Ham İstek (tür: 0x10). Şifrelenmiş cihazdaki şifre çözüldü Tablo 1.1'deki talep.

Sekiz Veri türü Açıklama Değer
0 uint8 Mesaj türü 0x01 = Anahtara Dayalı Eşleme Yanıtı
1 - 6 uint48 Sağlayıcının herkese açık (BR/EDR) adresi değişiklik gösterir
7 - 15 Rastgele değer (salt) değişiklik gösterir

Tablo 1.3: Ham Yanıt. Şifrelenmiş Yanıtı şurada oluşturmak için şifrelenir: Tablo 1.4.

Sekiz Veri türü Açıklama Değer
0 -15 uint128 Şifrelenmiş Yanıt değişiklik gösterir

Tablo 1.4: Sağlayıcı tarafından Arayan'a bildir.

Özellik: Geçiş anahtarı

Bu özellik, anahtar tabanlı eşleme sırasında kullanılır. gerekir.

Sekiz Veri türü Açıklama Değer
0 - 15 uint128 Şifrelenmiş geçiş anahtarı engelleme değişiklik gösterir

Tablo 2.1: Şifrelenmiş Geçiş Anahtarı Bloğu. Görüntüleyin Kullanım için Anahtara Dayalı Eşleme prosedürü.

Sekiz Veri türü Açıklama Değer
0 uint8 Mesaj türü Şunlardan biri:
  • 0x02 = Arayanın Geçiş Anahtarı
  • 0x03 = Sağlayıcının Geçiş Anahtarı
1 - 3 unit32 6 basamaklı geçiş anahtarı değişiklik gösterir
4 - 15 Rastgele değer (salt) değişiklik gösterir

Tablo 2.2: Ham geçiş anahtarı bloğu. Tablo 2.1'in şifresi çözülmüş sürümü.

Özellik: Hesap Anahtarı

Hızlı Eşleme Arayan, eşlemeden sonra Hızlı Eşleme'ye bir Hesap Anahtarı yazar Sağlayıcı.

Sekiz Veri türü Açıklama Değer
0 - 15 uint128 Hesap anahtarı (şifrelenmiş) değişiklik gösterir

Yazma isteği alındığında Hızlı Eşleme Sağlayıcısı aşağıdakileri yapacaktır:

  1. Belgenin 4. adımında oluşturulan paylaşılan gizli anahtarı kullanarak hesap anahtarının şifresini çözün. prosedüre göz atın.
    • Bağ kurma gerektiren sağlayıcılar için (yaygın):
      • Şifre çözmeden önce, paylaşılan gizli anahtarın geçiş anahtarı isteğinde bulunun. Bu adım, gizli, bu yazma işlemini yoksayın ve çıkın.
    • Bu noktada, paylaşılan gizli anahtar (prosedürde K) kullanılmaz işlemi tekrarlamanız gerekir. Bu anahtarla şifrelenmiş olarak gelen tüm istekler yeniden başlatmadığınız sürece reddedilmelidir.
  2. Şifresi çözülmüş değerin 0x04 ile başladığını doğrulayın. Uymuyorsa yoksayın işlemi tekrarlamanız gerekir.
  3. Kalıcı Hesap Anahtarı listesinde yeni değer.
  4. Değilse listeden en son kullanılan değeri silin.
  5. Yeni değeri listeye ekleyin.

Listedeki Hesap Anahtarları Anahtar Tabanlı Eşleme sırasında kullanılır.

Özellik: Donanım Yazılımı Düzeltmesi

Bu özellik, Arayan'ın Gerektiğinde sağlayıcı. Her zaman aşağıdaki verileri döndürmelidir:

Sekiz Veri türü Açıklama Değer
0 - var utf8s Donanım yazılımı düzeltme kodu değişiklik gösterir

Birden fazla olsa bile tek bir utf8 dizesine kapsül alınmalıdır. (ör. sol kulaklık, sağ kulaklık ve kılıf için 3 donanım yazılımı). Sağlayıcı, özel durumlar için belirli dizeleri de döndürebilir:

  1. status-updating: Sağlayıcı şu anda yeni bir donanım yazılımına güncelleniyorsa. Alternatif olarak, sağlayıcı aşamalı olarak kullanılan donanım yazılımı sürümünü iade edebilir.

  2. status-abnormal: Sağlayıcı anormal bir durumdaysa. Örneğin, donanım yazılımı güncellemesi başarısız olduğundan bozuldu. Bu değer, ve kullanıcının şimdi güncellenmesi gerektiğini bildiren bir mesaj göstermesini sağlar.

Sağlayıcı, Donanım Yazılımı Düzeltmesi özelliğine olan erişimi cihaz takibini engelleyin. Önerilen kısıtlamalar:

  • bağlı cihazlar her zaman erişebilmelidir
  • Sağlayıcı bulunabilir olduğunda tüm cihazlar erişebilir

Özellik: Ek Veriler

Bu hizmet, aşağıdaki özelliklere sahip olmalıdır.

Hızlı Eşleme Hizmeti özelliği Şifrelenmiş İzinler UUID
Veriler Hayır Yaz ve bildirim gönder FE2C1237-8366-4814-8EB0-01DE32100BEA
Eski Hızlı Eşleme Hizmeti özelliği (1.1.2021'de desteği sonlandırılacak hedef) Şifrelenmiş İzinler UUID
Veriler Hayır Yaz ve bildirim gönder 0x1237

Bu özellikle ilgili yazma veya bildirmeden önce, sahip olmak için FE2C1234-8366-4814-8EB0-01DE32100BEA özelliğini kullanarak el sıkışma sır olarak paylaşmasıdır. Bu ağdan geçen verileri şifrelemek için AES-CTR kullanılır. karakteristiktir. Bu mod . HMAC-SHA256 aşağıda da tanımlanmış veri bütünlüğünü sağlamak için kullanılmalıdır.

Sekiz Açıklama Değer
0 - 7 HMAC-SHA256'nın ilk 8 baytı. değişiklik gösterir
8 - 15 Nonce, AES-TO şifrelemesi tarafından kullanılır. değişiklik gösterir
16 - var Şifrelenmiş veri. değişiklik gösterir

Tablo 3.1: Veri Paketi, Sağlayıcı tarafından Arayan'a tarafından Sağlayıcı'ya yazılı olarak bildirildiği veya gönderildiğinden.

Sekiz Veri türü Açıklama Değer
0 - var byte array Veriler değişiklik gösterir; Tablo 1.2.2'deki Veri Kimliğine göre kodu çözün:
  • 0x01(kişiselleştirilmiş ad): utf8s

Tablo 3.2: Ham veriler. Şu cihazdaki şifrelenmiş verilerin şifresi çözüldü: Tablo 3.1.

Bildirim istendiğinde (ör.Bit 2 üzerinden kişiselleştirilmiş bir ad isteyin.) Tablo 1.2.1) ile birlikte, Hızlı Eşleme Sağlayıcısı aşağıdakileri yapacaktır:

  1. Nonce için kriptografik olarak rastgele 8 bayt oluşturun.
  2. Verileri AES-CTR kullanarak şifreleyin. Her 16 baytlık blok,

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

    burada

    1. AES anahtarı, prosedürün 4. adımında paylaşılan gizli anahtardır.
    2. clearBlock[i], verilerden[i * 16] başlayan 16 baytlık bir bloktur. Son bloğu 16 bayttan küçük olabilir.
  3. Aşağıdaki kodu oluşturmak için concat(encryptedBlock[0], encryptedBlock[1],...) Şifrelenmiş Veri.

  4. HMAC-SHA256 oluşturma ölçütü

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

    burada

    1. K, concat(shared_secret, 48 baytlık ZEROs) ile oluşturulur. shared_secret prosedürün 4. adımından itibarendir.
    2. opad, 64 bayt dış dolgudur ve değerli tekrarlanan baytlardan oluşur 0x5C
    3. ipad 64 bayt iç dolgudur ve değerli tekrarlanan baytlardan oluşur 0x36
  5. Data of paketine ekleyin.

Yazma isteği alındığında Hızlı Eşleme Sağlayıcısı aşağıdakileri yapacaktır:

  1. Dosyanın ilk 8 baytını kontrol ederek verilerin bütünlüğünü doğrulayın HMAC-SHA256 olmalıdır.
  2. Şifrelenmiş Verilerin şifresini AES-CTR kullanarak çözün. Her blok,

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

    burada

    1. şifrelenmişBlock[i], şifrelenmiş_veriler[i * 16] ile başlayan 16 baytlık bir bloktur. Son blok 16 bayttan kısa olabilir.
    2. AES anahtarı, el sıkışma sırasında oluşturulur veya tanımlanır (ör.
      1. adlandırma akışı 1'de, ECDH'den gelir ve bu eşleme için tekrar kullanılır. Şifrelenmiş olarak gelen tüm istekler bu tuşa basmadan, işlemi yeniden başlatmadan reddedildi.
      2. adlandırma akışı 2'de hesap anahtarıdır.
  3. Ham verileri oluşturmak için concat(clearBlock[0], clearBlock[1],...) komutunu uygulayın.