Chcę chronić uporządkowane dane

Interfejsy Tink API przyjmują jako dane wejściowe dowolne binarne obiekty blob. Oznacza to, że jeśli chcesz szyfrować uporządkowane dane, np. bufory protokołów, musisz je najpierw zakodować.

Szyfrowanie protokołu

Aby zaszyfrować:

  1. Zserializuj protobuf do tablicy bajtów.
  2. Zaszyfruj zserializowane bajty, a następnie zapisz lub wyślij wynikowy tekst szyfrowany. Użyj:

Aby odszyfrować:

  1. Odszyfruj tekst.
  2. Jeśli krok 1 zakończył się powodzeniem, dokonaj deserializacji protokołu.

Ochrona protobufów przed nieuprawnionymi modyfikacjami

W większości przypadków szyfrowanie protokołu jest lepszym rozwiązaniem niż samo uwierzytelnianie.

Aby chronić protobuf przed ingerencją:

  1. Zserializuj protobuf do tablicy bajtów.
  2. Podpisz lub uwierzytelnij zserializowane bajty. Użyj:
  3. Przechowuj zserializowane bajty wraz z podpisem (lub MAC).

Weryfikacja:

  1. Pobierz zserializowany protobuf i jego podpis (lub MAC).
  2. Sprawdź podpis (lub adres MAC).
  3. Deserializuj protobuf.

Pamiętaj, że prawidłowy podpis lub adres MAC nie gwarantuje prawidłowego formatowania danych. Implementacja, która analizuje dane, zawsze powinna spodziewać się, że mogą one być uszkodzone.

Ochrona wielu elementów danych

Aby chronić wiele elementów danych, użyj metody serializacji. Dodaj wszystkie elementy danych do protokołu i zaszyfruj je (lub uwierzytelnij) w sposób opisany powyżej.

Możesz też tworzyć serię w taki sposób:

serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN

Na koniec zaszyfruj (lub uwierzytelnij) wynikową tablicę bajtów.