Szyfrowanie kluczem asymetrycznym: system kryptograficzny, który do szyfrowania i odszyfrowywania danych używa sparowanych kluczy – publicznego i prywatnego. Klucze publiczne służą do szyfrowania danych i można je udostępniać. Klucze prywatne służą do odszyfrowywania danych i są znane tylko właścicielowi.
Tekst szyfrowany: wynik szyfrowania tekstu jawnego za pomocą algorytmu. Szyfrogram jest niezrozumiały, dopóki nie zostanie przekształcony z powrotem w tekst jawny za pomocą klucza.
Spójność: oznacza, że biblioteka Tink działa „tak samo” we wszystkich językach programowania. Na przykład Tink zapewnia spójność oceny, co oznacza, że w przypadku danego zestawu kluczy, jeśli utworzenie typu pierwotnego w 2 językach zakończy się powodzeniem, typy pierwotne będą działać tak samo.
Klucz: informacja (np. ciąg znaków) wymagana do zaszyfrowania lub odszyfrowania danych. Informacje o tym, jak są one reprezentowane, znajdziesz w sekcji Obiekty kluczy.
Zbiór kluczy i uchwyt zbioru kluczy: Tink używa zbiorów kluczy do zarządzania kluczami. Zestaw kluczy to w zasadzie zbiór kluczy, które ułatwiają rotację kluczy. Ważne właściwości zestawu kluczy to:
- Każdy klucz w zestawie kluczy ma unikalny identyfikator, który jest niepowtarzalny w obrębie zestawu kluczy. Ten identyfikator jest zwykle dodawany jako prefiks do każdego wygenerowanego tekstu zaszyfrowanego, podpisu lub tagu, aby wskazać, którego klucza użyto (więcej informacji znajdziesz w artykule o tym, jak Tink taguje teksty zaszyfrowane).
- W zestawie kluczy tylko 1 klucz może być podstawowy. Klucz podstawowy w zestawie kluczy to klucz, który jest obecnie „używany”.
- Wszystkie klucze w zestawie kluczy muszą być implementacjami tego samego obiektu podstawowego (np. AEAD), ale mogą mieć różne typy kluczy (np. klucz AES-GCM i XCHACHA20-POLY1305).
Każda implementacja Tink udostępnia interfejsy API do tworzenia i edytowania zestawów kluczy. Zalecamy jednak korzystanie z Tinkey, naszego narzędzia wiersza poleceń.
Użytkownicy obsługują zestaw kluczy za pomocą uchwytów zestawu kluczy. Uchwyt zestawu kluczy ogranicza narażenie rzeczywistego materiału klucza, który jest poufny. Umożliwia też abstrakcję zestawu kluczy, dzięki czemu użytkownicy mogą uzyskać element pierwotny, który „zawiera” cały zestaw kluczy. Możesz na przykład uzyskać typ AEAD z zestawu kluczy zawierającego N kluczy. Szyfrowanie i odszyfrowywanie za pomocą uzyskanego typu będzie wtedy korzystać z klucza podstawowego w zestawie kluczy.
System zarządzania kluczami (KMS): system używany do zarządzania kluczami kryptograficznymi, w tym ich generowaniem, przechowywaniem, używaniem, rotacją, niszczeniem i zastępowaniem.
Typ klucza: typ klucza implementuje określony typ podstawowy. Większość typów podstawowych ma kilka kluczowych typów do wyboru w zależności od wymagań dotyczących bezpieczeństwa, czasu działania i miejsca. Na przykład AES128_GCM to AEAD, które jest szybkie i skuteczne w większości przypadków. Więcej informacji znajdziesz w artykule Obsługiwane typy kluczy według języka.
Parametry: pełny opis informacji wymaganych do utworzenia klucza, z wyjątkiem materiału klucza i identyfikatora klucza. Informacje o sposobie ich reprezentowania znajdziesz w sekcji Obiekty parametrów.
Tekst jawny: zrozumiała forma wejściowa zaszyfrowanego tekstu lub jego elementów.
Elementy podstawowe: Tink używa elementów podstawowych jako kryptograficznych bloków konstrukcyjnych, które zarządzają algorytmem bazowym, dzięki czemu użytkownicy mogą bezpiecznie wykonywać zadania kryptograficzne. Prymityw określa szczegóły algorytmu kryptograficznego i typu klucza.
- Więcej informacji o obsługiwanych typach prostych i ich zastosowaniach znajdziesz w sekcji Wybieranie typu prostego.
- Informacje o zgodności znajdziesz w artykule Obsługiwane typy proste według języka.
Rejestr: globalny podmiot w Tink, który wie, jak generować nowe klucze i elementy podstawowe. Zapoznaj się też ze wskazówkami dotyczącymi debugowania błędów rejestracji.
Szyfrowanie kluczem symetrycznym: algorytm kryptograficzny, który używa tego samego klucza do szyfrowania tekstu jawnego i odszyfrowywania tekstu zaszyfrowanego.