Usługa Szybkie parowanie
Dostawca szybkiego parowania musi wdrożyć usługę szybkiego parowania (UUID 0xFE2C), która zawiera te cechy.
| Nazwa | Zaszyfrowane | Uprawnienia | UUID | Obowiązkowe? |
|---|---|---|---|---|
| Identyfikator modelu | Nie | Odczyt | FE2C1233-8366-4814-8EB0-01DE32100BEA |
Obowiązkowe |
| Parowanie na podstawie klucza | Nie | Napisz i powiadom | FE2C1234-8366-4814-8EB0-01DE32100BEA |
Obowiązkowe |
| Klucz dostępu | Nie | Napisz i powiadom | FE2C1235-8366-4814-8EB0-01DE32100BEA |
Obowiązkowe |
| Klucz konta | Nie | Zapis | FE2C1236-8366-4814-8EB0-01DE32100BEA |
Obowiązkowe |
| Dodatkowe dane | Nie | Napisz i powiadom | FE2C1237-8366-4814-8EB0-01DE32100BEA |
*C1 |
| Menedżer ds. partnera strategicznego w zespole Message Stream | Tak | Odczyt | FE2C1239-8366-4814-8EB0-01DE32100BEA |
*C2 |
| Dodatkowy klucz dostępu | Nie | Odczyt, zapis i powiadomienia | FE2C123A-8366-4814-8EB0-01DE32100BEA |
*C3 |
| Działanie na urządzeniu FP | Nie | Napisz i powiadom | FE2C123B-8366-4814-8EB0-01DE32100BEA |
*C4 |
Obowiązkowe warunkowo
- C1: jeśli dostawca obsługuje funkcję nadawania nazw i nie implementuje cechy Działanie urządzenia FP
- C2: jeśli dostawca obsługuje strumień wiadomości: L2CAP
- C3: jeśli dostawca ma wewnętrzny kanał komunikacji między komponentami
- C4: jeśli dostawca musi wymienić dodatkowe informacje podczas procesu parowania, na przykład dostawca bez wewnętrznego kanału komunikacji między komponentami.
Cecha: identyfikator modelu
Ta cecha umożliwia Poszukującemu odczytywanie identyfikatora modelu w razie potrzeby, poza sytuacjami, gdy urządzenie rozgłasza w trybie wykrywalnym. Powinien zawsze zwracać te dane:
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0–2 | uint24 |
Identyfikator modelu | różne |
Cecha: parowanie oparte na kluczach
Ta cecha kontroluje procedurę parowania na podstawie klucza. W tej procedurze pewien poziom zaufania jest ustanawiany przez sprawdzenie, czy Poszukujący i Dostawca mają klucz PSK. W każdym przypadku klucz jest inny:
Przypadek 1. Klucz PSK jest oparty na parze kluczy publiczny/prywatny zapobiegającej spoofingowi oraz na parze kluczy publiczny/prywatny urządzenia poszukującego, która zmienia się przy każdej próbie sparowania.
- Dostawca jest w trybie parowania.
- Poszukujący sprawdza, czy dostawca ma klucz prywatny zapobiegający spoofingowi.
Pamiętaj, że w trybie parowania dostawca może też parować urządzenia w zwykły sposób, na przykład z urządzeniem, które nie obsługuje parowania opartego na kluczach w ramach Szybkiego parowania.
Przypadek 2. Klucz PSK jest jednym z kluczy konta.
- Dostawca zwykle nie jest w trybie parowania. (Nie jest to jednak wymagane – dostawca powinien obsługiwać klucz konta nawet w trybie parowania).
- Poszukiwacz i Dostawca sprawdzają, czy druga strona ma klucz konta.
Oba przypadki są bardzo podobne, z wyjątkiem używanego klucza PSK, dlatego zostały połączone w procedurze.
Format danych
Zobacz procedurę, aby dowiedzieć się, jak używany jest każdy format.
| Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
|---|---|---|---|---|
| 0–15 | uint128 |
Zaszyfrowane żądanie | różne | Obowiązkowe |
| 16–79 | Klucz publiczny | różne | Opcjonalny |
Tabela 1.1. Zaszyfrowane żądanie zapisane w charakterystyce przez urządzenie poszukujące
| Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
|---|---|---|---|---|
| 0 | uint8 |
Typ komunikatu | 0x00 = prośba o parowanie na podstawie klucza |
Obowiązkowe |
| 1 | uint8 |
Flagi
|
różne | Obowiązkowe |
| 2–7 | uint48 |
Wykonaj 1 z tych czynności:
|
różne | Obowiązkowe |
| 8–13 | uint48 |
Adres BR/EDR urządzenia poszukującego | różne | Obecny tylko wtedy, gdy ustawiony jest bit flagi 1 lub 3 |
| n – 15 | losowa wartość (salt), | różne | Obowiązkowe |
Tabela 1.2.1: nieprzetworzone żądanie (typ 0x00). odszyfrowane z zaszyfrowanego żądania w tabeli 1.1.
| Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
|---|---|---|---|---|
| 0 | uint8 |
Typ komunikatu | 0x10 = prośba o działanie |
Obowiązkowe |
| 1 | uint8 |
Flagi
|
różne | Obowiązkowe |
| 2–7 | uint48 |
Wykonaj 1 z tych czynności:
|
różne | Obowiązkowe |
| 8 | uint8 |
Wyślij wiadomość do grupy | różne | Wymagane, jeśli ustawiono bit flagi 0 |
| 9 | uint8 |
Kod wiadomości | różne | Wymagane, jeśli ustawiono bit flagi 0 |
| 10 | uint8 |
Zależy od flag:
|
różne | Wymagane, jeśli ustawiono bit flagi 0 lub 1 |
| 11 – n | Dodatkowe dane | różne | Opcjonalny | |
| n – 15 | losowa wartość (salt), | różne | Obowiązkowe |
Tabela 1.2.2. Żądanie nieprzetworzone (typ 0x10). odszyfrowane z zaszyfrowanego żądania w tabeli 1.1.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Typ komunikatu | 0x01 = odpowiedź na parowanie na podstawie klucza |
| 1–6 | uint48 |
Publiczny adres (BR/EDR) dostawcy | różne |
| 7–15 | losowa wartość (salt), | różne |
Tabela 1.3. Nieprzetworzona odpowiedź (typ 0x01). Zaszyfrowane w celu wygenerowania zaszyfrowanej odpowiedzi w tabeli 1.4.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Typ komunikatu | 0x02 = Key-based Pairing Extended Response |
| 1 | uint8 |
Flagi
|
różne |
| 2 | uint8 |
Liczba adresów dostawcy Prawidłowe wartości to 1 i 2. |
różne |
| 3–8 lub 3–14 |
|
różne | |
| 9–15 lub 15 | losowa wartość (salt), | różne |
Tabela 1.3.2. Nieprzetworzona odpowiedź (typ 0x02). Zaszyfrowane w celu wygenerowania zaszyfrowanej odpowiedzi w tabeli 1.4.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0–15 | uint128 |
Zaszyfrowana odpowiedź | różne |
Tabela 1.4. Zaszyfrowana odpowiedź wysyłana przez dostawcę do poszukującego za pomocą powiadomienia
Cecha: klucz dostępu
Ta charakterystyka jest używana podczas procedury parowania opartego na kluczach.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0–15 | uint128 |
Zaszyfrowany blok klucza dostępu | różne |
Tabela 2.1. Blok zaszyfrowanego klucza dostępu. Informacje o korzystaniu z tej funkcji znajdziesz w sekcji Procedura parowania na podstawie klucza.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Typ komunikatu | Jedna z tych wartości:
|
| 1–3 | unit32 |
6-cyfrowy klucz dostępu | różne |
| 4–15 | losowa wartość (salt), | różne |
Tabela 2.2. Nieprzetworzony blok klucza dostępu. Decrypted version of Table 2.1.
Cecha: klucz do konta
Po sparowaniu urządzenie poszukujące Szybkiego parowania zapisze klucz konta na urządzeniu dostawcy Szybkiego parowania.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0–15 | uint128 |
Klucz konta (zaszyfrowany) | różne |
Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:
- Odszyfruj klucz konta za pomocą udostępnionego hasła wygenerowanego w kroku 4 procedury.
- W przypadku dostawców, którzy wymagają kaucji (często):
- Przed odszyfrowaniem sprawdź, czy klucz tajny został użyty do odszyfrowania żądania klucza dostępu z kroku 12. Jeśli ten krok nie został wykonany przy użyciu tego obiektu tajnego, zignoruj ten zapis i zakończ działanie.
- W tym momencie wspólny klucz tajny (K w procedurze) nie będzie już używany do tego parowania. Wszelkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
- W przypadku dostawców, którzy wymagają kaucji (często):
- Sprawdź, czy odszyfrowana wartość zaczyna się od
0x04lub0xFF. Jeśli nie, zignoruj ten zapis i zamknij.- Jeśli wartością jest
0x04:- Sprawdź, czy na zapisanej liście kluczy konta jest miejsce na nową wartość.
- Jeśli nie, usuń z listy wartość, która była używana najdawniej.
- Dodaj nową wartość do listy.
- Jeśli wartością jest
0xFF:- Potraktuj to jako tymczasową sesję parowania i nie wykonuj żadnych działań.
- Może się to zdarzyć w przypadku procesu Zapisywanie klucza konta wstecznie.
- Nie przechowuj klucza i nie używaj go na liście kluczy konta, do szyfrowania ani do obliczeń MAC.
- Usunięcie powiązania jest wywoływane przez zdarzenie związane z funkcją lub upłynięcie limitu czasu. W przypadku udostępniania dźwięku LE zdecydowanie zalecamy usunięcie powiązania BLE i klucza połączenia 10 minut po rozłączeniu sesji tymczasowej.
- Jeśli wartością jest
Klucze konta na liście są używane podczas parowania na podstawie klucza.
Cecha: dodatkowe dane
Ta usługa ma następujące cechy.
| Charakterystyka usługi Szybkie parowanie | Zaszyfrowane | Uprawnienia | UUID |
|---|---|---|---|
| Dane | Nie | Napisz i powiadom | FE2C1237-8366-4814-8EB0-01DE32100BEA |
| Stara charakterystyka usługi Szybkiego parowania (planowane wycofanie 1 stycznia 2021 r.) | Zaszyfrowane | Uprawnienia | UUID |
|---|---|---|---|
| Dane | Nie | Napisz i powiadom | 0x1237 |
Przed zapisaniem lub powiadomieniem o tej charakterystyce musi nastąpić uzgadnianie połączenia za pomocą charakterystyki FE2C1234-8366-4814-8EB0-01DE32100BEA, aby uzyskać wspólny klucz tajny. Do szyfrowania danych przepływających przez tę charakterystykę będzie używany algorytm AES-CTR, który jest zdefiniowany poniżej. Ten tryb jest bezpieczniejszy w przypadku danych, które wykraczają poza pojedynczy blok 16-bajtowy. Do zapewnienia integralności danych będzie używany algorytm HMAC-SHA256, który również został zdefiniowany poniżej.
| Oktet | Opis | Wartość |
|---|---|---|
| czasami | Pierwsze 8 bajtów HMAC-SHA256. | różne |
| 8–15 | Liczba jednorazowa używana przez szyfrowanie AES-CTR. | różne |
| 16 – var | Zaszyfrowane dane. | różne |
Tabela 3.1. Pakiet danych wysyłany przez dostawcę do poszukującego za pomocą powiadomienia lub przez poszukującego do dostawcy za pomocą zapisu.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 – var | byte array |
Dane | varies, zdekoduj go zgodnie z identyfikatorem danych z tabeli 1.2.2:
|
Tabela 3.2. Nieprzetworzone dane. Odszyfrowane z zaszyfrowanych danych w tabeli 3.1.
Gdy zostanie wysłana prośba o powiadomienie (np. prośba o spersonalizowaną nazwę za pomocą bitu 2 w tabeli 1.2.1), dostawca Szybkiego parowania powinien wykonać te czynności:
- Wygeneruj kryptograficznie losowe 8 bajtów dla liczby jednorazowej.
Zaszyfruj dane za pomocą AES-CTR, gdzie każdy 16-bajtowy blok jest generowany przy użyciu
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))gdzie
- Klucz AES to udostępnione hasło z kroku 4 procedury.
- clearBlock[i] to 16-bajtowy blok zaczynający się od data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
Wykonaj concat(encryptedBlock[0], encryptedBlock[1],...), aby utworzyć zaszyfrowane dane.
Wygeneruj HMAC-SHA256 za pomocą
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))gdzie
- K jest generowany przez concat(shared_secret, 48-byte ZEROs), gdzie shared_secret pochodzi z kroku 4 procedury.
- opad to 64-bajtowe dopełnienie zewnętrzne, składające się z powtarzających się bajtów o wartości
0x5C. - ipad to 64-bajtowe dopełnienie wewnętrzne składające się z powtarzających się bajtów o wartości
0x36.
Weź pierwsze 8 bajtów z HMAC-SHA256 jako prefiks pakietu danych.
Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:
- Sprawdź integralność danych, sprawdzając pierwsze 8 bajtów HMAC-SHA256.
Odszyfruj zaszyfrowane dane za pomocą AES-CTR, gdzie każdy blok jest generowany przy użyciu
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))gdzie
- encryptedBlock[i] to 16-bajtowy blok zaczynający się od encrypted_data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
- Klucz AES jest generowany lub identyfikowany na podstawie uzgadniania, np.
- w procesie nadawania nazwy 1 pochodzi z ECDH i nie zostanie ponownie użyty do tego parowania. Wszystkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
- w procesie nadawania nazw 2 jest to klucz konta.
Wykonaj concat(clearBlock[0], clearBlock[1],...), aby utworzyć nieprzetworzone dane.
Cecha: PSM strumienia wiadomości
Patrz Urządzenie BLE: strumień wiadomości PSM.
Cecha: dodatkowy klucz dostępu
Patrz Urządzenie BLE: dodatkowy klucz dostępu.
Cecha: działanie na urządzeniu FP
| Charakterystyka usługi Szybkie parowanie | Zaszyfrowane | Uprawnienia | UUID |
|---|---|---|---|
| Działanie na urządzeniu FP | Nie | Napisz i powiadom | FE2C123B-8366-4814-8EB0-01DE32100BEA |
| Oktet | Opis | Wartość |
|---|---|---|
| czasami | Pierwsze 8 bajtów HMAC-SHA256. | różne |
| 8–15 | Liczba jednorazowa używana przez szyfrowanie AES-CTR. | różne |
| 16 – var | Zaszyfrowane dane. | różne |
Tabela 4.1. Pakiet danych wysyłany przez dostawcę do poszukującego jako powiadomienie lub przez poszukującego do dostawcy jako zapis.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 – var | byte array |
Prośba o działanie | Jedna z tych wartości:
|
Tabela 4.2. Nieprzetworzone dane. odszyfrowane z zaszyfrowanych danych w tabeli 4.1 wysłanych przez Poszukującego do Dostawcy jako zapis.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 – var | byte array |
Odpowiedź na działanie | Jedna z tych wartości:
|
Tabela 4.3. Nieprzetworzone dane. Odszyfrowane z zaszyfrowanych danych w tabeli 4.1 wysłanych przez dostawcę do poszukującego jako powiadomienie.
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Identyfikator działania | 0x01 |
| 1 – var | utf8s |
Spersonalizowana nazwa | różne |
Tabela 4.3.1. Spersonalizowany format nazwy
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Identyfikator działania | 0x02 |
| 1 | uint8 |
Typ elementu zestawu skoordynowanego szybkiego parowania |
|
| 2 | uint8 |
Rozmiar zestawu skoordynowanego | liczba komponentów |
| 3 | uint8 |
Ustawianie typu klucza rozpoznawania tożsamości | 0x01 (SIRK w formacie zwykłego tekstu) |
| 4–19 | uint128 |
Ustaw wartość klucza rozpoznawania tożsamości | 16-bajtowe dane, patrz Coordinated Set Identification Service |
Tabela 4.3.2. Format informacji o skoordynowanym zestawie
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 | uint8 |
Identyfikator działania | 0x03 |
| 1–2 | uint16 |
Funkcje urządzenia |
|
Tabela 4.3.3. Format funkcji urządzenia
Operacje szybkiego parowania
Dla tej cechy zdefiniowano 2 główne operacje:
- Odczyt Szybkiego parowania: odczytywanie danych od dostawcy.
- Poszukujący: włącz powiadomienie GATT
- Dostawca: zarejestrowano powiadomienie GATT
- Poszukujący: żądanie zapisu GATT, nieprzetworzone dane zawierają tylko
Action ID - Dostawca: odpowiedź na zapis GATT
- Dostawca: powiadomienie GATT, nieprzetworzone dane zawierają:
- Identyfikator działania
- Dane dotyczące identyfikatora działania
- Seeker: otrzymano powiadomienie GATT
- Zapis w Szybkim parowaniu: zapisywanie danych u dostawcy.
- Poszukujący: żądanie zapisu GATT, nieprzetworzone dane zawierają:
- Identyfikator działania
- Dane dotyczące identyfikatora działania
- Dostawca: odpowiedź na zapis GATT
- Poszukujący: żądanie zapisu GATT, nieprzetworzone dane zawierają:
Identyfikator obsługiwanego działania odczytu szybkiego parowania
- 0x01 (nazwa spersonalizowana)
- 0x02 (informacje o skoordynowanym zestawie)
- 0x03 (funkcje urządzenia)
Identyfikator obsługiwanego działania zapisu szybkiego parowania
- 0x01 (nazwa spersonalizowana)
- W przypadku innych poleceń, w których żądanie zapisu zawiera identyfikator działania, a po nim dane, dostawca powinien odpowiedzieć powiadomieniem GATT zawierającym błąd Nieprawidłowe żądanie (0x81), jak opisano w tabeli 4.3.
Jeśli dostawca nie rozpoznaje identyfikatora działania, odpowiada powiadomieniem GATT zawierającym informację o nieobsługiwanym żądaniu (0x80), jak opisano w tabeli 4.3.
Algorytm kryptograficzny
Gdy zostanie wysłana prośba o powiadomienie, dostawca Szybkiego parowania powinien wykonać te czynności:
- Wygeneruj kryptograficznie losowe 8 bajtów dla liczby jednorazowej.
Zaszyfruj dane za pomocą AES-CTR, gdzie każdy 16-bajtowy blok jest generowany przy użyciu
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))gdzie
- Klucz AES to udostępnione hasło z kroku 4 procedury.
clearBlock[i]to 16-bajtowy blok zaczynający się oddata[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.
Wykonaj
concat(encryptedBlock[0], encryptedBlock[1],...), aby utworzyć zaszyfrowane dane.Wygeneruj HMAC-SHA256 za pomocą
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))gdzie
- K jest generowany przez concat(shared_secret, 48-byte ZEROs), gdzie shared_secret pochodzi z kroku 4 procedury.
- opad to 64-bajtowe dopełnienie zewnętrzne, składające się z powtarzających się bajtów o wartości
0x5C. - ipad to 64-bajtowe dopełnienie wewnętrzne składające się z powtarzających się bajtów o wartości
0x36.
Weź pierwsze 8 bajtów z HMAC-SHA256 jako prefiks pakietu danych.
Po otrzymaniu żądania zapisu dostawca Szybkiego parowania powinien wykonać te czynności:
- Sprawdź integralność danych, sprawdzając pierwsze 8 bajtów HMAC-SHA256.
Odszyfruj zaszyfrowane dane za pomocą AES-CTR, gdzie każdy blok jest generowany przy użyciu
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))gdzie
encryptedBlock[i]to 16-bajtowy blok zaczynający się odencrypted_data[i * 16]. Ostatni blok może mieć mniej niż 16 bajtów.- Klucz AES jest generowany lub identyfikowany na podstawie uzgadniania połączenia, na przykład:
- w procesie nadawania nazwy 1 pochodzi z ECDH i nie zostanie ponownie użyty do tego parowania. Wszystkie żądania zaszyfrowane tym kluczem, które zostaną przesłane bez ponownego uruchomienia procedury, powinny zostać odrzucone.
- w procesie nadawania nazw 2 jest to klucz konta.
Wykonaj
concat(clearBlock[0], clearBlock[1],...), aby utworzyć nieprzetworzone dane.
Usługa informacji o urządzeniu
Dostawca Szybkiego parowania powinien też obsługiwać usługę informacji o urządzeniu (UUID 0x180A). Urządzenie wykrywające Szybkie parowanie korzysta z tych cech.
| Nazwa | Zaszyfrowane | Uprawnienia | UUID |
|---|---|---|---|
| Wersja oprogramowania układowego | Nie | Odczyt | 0x2A26 |
Cecha: wersja oprogramowania układowego
Ta cecha umożliwia Poszukującemu odczytywanie wersji oprogramowania układowego Dostawcy w razie potrzeby. Powinien zawsze zwracać te dane:
| Oktet | Typ danych | Opis | Wartość |
|---|---|---|---|
| 0 – var | utf8s |
Kod wersji oprogramowania układowego | różne |
Powinno być ono zawarte w jednym ciągu znaków UTF-8, nawet jeśli u dostawcy jest więcej niż 1 oprogramowanie układowe (np. 3 oprogramowania układowe dla lewej słuchawki, prawej słuchawki i etui). Dostawca może też zwracać określone ciągi znaków w przypadkach specjalnych:
status-updating: jeśli dostawca aktualizuje oprogramowanie układowe do nowej wersji. Dostawca może też zwrócić wersję przygotowanego oprogramowania układowego.
status-abnormal: jeśli dostawca jest w stanie nieprawidłowym. Na przykład nie działa prawidłowo, ponieważ nie powiodła się aktualizacja oprogramowania. Ta wartość spowoduje, że Seeker wyświetli komunikat informujący użytkownika, że musi teraz zaktualizować aplikację.
Dostawca powinien ograniczyć dostęp do charakterystyki wersji oprogramowania układowego, aby uniemożliwić śledzenie urządzenia. Sugerowane ograniczenia:
- powiązane urządzenia powinny mieć dostęp w każdej chwili,
- każde urządzenie powinno mieć dostęp, gdy dostawca jest wykrywalny;
Jeśli dostawca obsługuje Centrum lokalizacji, wymagane jest dodatkowe wdrożenie. Więcej informacji znajdziesz w artykule Aktualizacje oprogramowania Centrum lokalizacji.