Chcę chronić uporządkowane dane

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

Szyfruj bufor 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 szyfrowany.
  2. Jeśli krok 1 zakończył się powodzeniem, przeprowadź deserializację protokołu.

Ochrona protokołu przed modyfikacją

W większości przypadków lepsze jest szyfrowanie protokołu zamiast samego uwierzytelniania.

Aby chronić protobuf przed ingerencją:

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

Weryfikacja:

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

Pamiętaj, że prawidłowy podpis lub adres MAC nie gwarantuje poprawności danych. . Implementacja analizująca dane powinna zawsze oczekiwać, że mogą ulec uszkodzeniu.

Ochrona wielu elementów danych

Aby chronić wiele elementów danych, użyj metody serializacji. Dodaj wszystkie dane do protokołu i zaszyfrować (lub uwierzytelnić) go w sposób opisany powyżej.

Możesz też serializować treści w ten 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.