Podstawowe pojęcia w Tink
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Zanim rozpoczniesz pracę z Tink, musisz poznać kilka kluczowych koncepcji. Zostały one opisane w kolejnych sekcjach.
Elementy podstawowe
Tink wykorzystuje podstawowe jako kryptograficzne elementy składowe służące do zarządzania będącym algorytmem, tak aby użytkownicy mogli bezpiecznie wykonywać zadania kryptograficzne. Element podstawowy definiuje szczegóły algorytmu kryptograficznego i typ klucza.
Podstawowe elementy obsługiwane przez Tink:
- Uwierzytelnianie szyfrowane z powiązanymi danymi (AEAD): najpopularniejszy sposób szyfrowania danych; odpowiedni do większości potrzeb związanych z szyfrowaniem. AEAD zapewnia poufność w postaci zwykłego tekstu i umożliwia weryfikację integralności i autentyczności. Zobacz Uwierzytelnianie szyfrowane z użyciem powiązanych danych (AEAD).
- Szyfrowanie deterministyczne: element podstawowy, który zawsze generuje ten sam tekst szyfrowany dla danego tekstu jawnego i klucza. Może to być ryzykowne, ponieważ osoba przeprowadzająca atak musi tylko dowiedzieć się, który tekst szyfrowany odpowiada danemu wejściowi w postaci tekstu jawnego, aby go zidentyfikować. Zobacz Deterministyczny AEAD.
- Podpis cyfrowy: podstawowa wersja asymetryczna (patrz Szyfrowanie klucza asymetrycznego) służąca do potwierdzania autentyczności i integralności podpisanych danych. Więcej informacji znajdziesz w artykule Podpis cyfrowy.
- Szyfrowanie hybrydowe: to model podstawowy, który łączy szyfrowanie klucza asymetrycznego z szyfrowaniem klucza symetrycznego (patrz Szyfrowanie klucza asymetrycznego i Szyfrowanie klucza symetrycznego). Szyfrowanie hybrydowe łączy wydajność szyfrowania symetrycznego z wygodą szyfrowania klucza publicznego. Do szyfrowania wiadomości generowany jest nowy klucz symetryczny, który służy do szyfrowania danych zapisanych zwykłym tekstem. Klucz publiczny odbiorcy służy tylko do szyfrowania klucza symetrycznego. Końcowy tekst szyfrowany składa się z symetrycznego tekstu szyfrowanego i zaszyfrowanego klucza symetrycznego. Więcej informacji znajdziesz w sekcji Szyfrowanie hybrydowe.
- Kod uwierzytelniania wiadomości (MAC): podstawowa wersja symetryczna (patrz Szyfrowanie klucza symetrycznego) służąca do potwierdzania autentyczności i integralności danych. Zobacz Kod uwierzytelniania wiadomości (MAC).
- Strumieniowe AEAD: interfejs podstawowy zapewniający uwierzytelnione szyfrowanie danych strumieniowanych. Jest przydatne, gdy dane do zaszyfrowania są zbyt duże, aby można je było przetworzyć w jednym kroku. Patrz AEAD strumieniowania.
Informacje o zgodności znajdziesz w sekcji Obsługiwane obiekty podstawowe według języka.
Więcej informacji znajdziesz w artykule o projektowaniu podstawowym.
Typy kluczy
Typ klucza implementuje określony obiekt podstawowy. Większość obiektów podstawowych ma kilka typów kluczy do wyboru w zależności od wymagań dotyczących zabezpieczeń, środowiska wykonawczego i przestrzeni. Na przykład AES128_GCM to AEAD, który jest szybki i skuteczny w przypadku większości potrzeb. Dowiedz się więcej o obsługiwanych typach kluczy według języka.
Zestawy kluczy i uchwyty zestawów kluczy
Tink używa zestawów kluczy do zarządzania kluczami. Zasadniczo zestaw kluczy to zestaw kluczy
ułatwiających rotację kluczy. Kilka ważnych właściwości zestawu kluczy:
- Każdy klucz w zestawie kluczy ma unikalny identyfikator, który jest w nim unikalny. Ten identyfikator jest zwykle dodawany jako prefiks do każdego wygenerowanego tekstu szyfrowania, podpisu lub tagu wskazującego, który klucz został użyty (więcej informacji znajdziesz w artykule o tagowaniu tekstów szyfrowanych w Tink).
- W zestawie kluczy jest tylko 1 klucz w danym momencie podstawowy. Klucz podstawowy w zestawie
to klucz „w użyciu” w danym momencie.
- Wszystkie klucze w zestawie kluczy muszą być implementacjami tego samego elementu podstawowego (np. AEAD), ale mogą mieć różne typy kluczy (np. AES-GCM i XCHACHA20-POLY1305).
Każda implementacja Tink zapewnia interfejsy API do tworzenia i edytowania zestawów kluczy. Zalecamy jednak korzystanie z narzędzia interfejsu wiersza poleceń Tinkey.
Użytkownicy korzystają z zestawu kluczy przy użyciu uchwytów zestawu kluczy. Uchwyt zestawu kluczy ogranicza ekspozycję faktycznego poufnego materiału klucza. Ponadto wyodrębnia zestaw kluczy, co umożliwia użytkownikom uzyskanie modelu podstawowego, który „zawija” cały zestaw kluczy. Możesz na przykład uzyskać element podstawowy AEAD zbioru kluczy z kluczami N
. Szyfrowanie i odszyfrowywanie za pomocą uzyskanego elementu podstawowego będzie następnie używać klucza podstawowego w zestawie kluczy.
Więcej informacji znajdziesz w artykule na temat projektowania zestawu kluczy.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-25 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-25 UTC."],[[["\u003cp\u003eTink utilizes primitives as fundamental cryptographic building blocks for secure data operations, covering encryption, signatures, and message authentication.\u003c/p\u003e\n"],["\u003cp\u003eKeysets in Tink efficiently manage multiple keys for a single purpose, enabling features like key rotation and supporting various key types within a set.\u003c/p\u003e\n"],["\u003cp\u003eKeyset handles provide a secure abstraction layer, allowing users to interact with keys and perform cryptographic operations without directly exposing sensitive key material.\u003c/p\u003e\n"],["\u003cp\u003eTink offers a diverse selection of primitives and key types, accommodating varying security, performance, and storage requirements, with options like AEAD, digital signatures, and hybrid encryption.\u003c/p\u003e\n"]]],["Tink employs cryptographic building blocks called *primitives*, which define algorithms and key types. These include AEAD, Deterministic encryption, Digital signature, Hybrid encryption, MAC, and Streaming AEAD. *Key types* implement primitives, offering choices based on security and performance. *Keysets*, a set of keys with unique IDs, manage key rotation. *Keyset handles* abstract keysets, providing access to a primitive that operates over the entire keyset, including encryption/decryption with the primary key.\n"],null,["# Understand Key Concepts in Tink\n\nWhen you start working with Tink for the first time, there are some key concepts\nyou should understand before you begin your journey; these are described in the\nfollowing sections.\n\nPrimitives\n----------\n\nTink uses *primitives* as cryptographic building blocks that manage an\nunderlying algorithm so users can perform cryptographic tasks safely. A\nprimitive defines the details of a cryptographic algorithm and the key type.\n\nPrimitives supported by Tink:\n\n- **Authenticated Encryption with Associated Data (AEAD)** : The most common primitive for data encryption; suitable for most encryption needs. AEAD provides plaintext confidentiality, and allows verification of its integrity and authenticity. See [Authenticated Encryption with Associated Data\n (AEAD)](/tink/aead).\n- **Deterministic encryption:** A primitive that always produces the same ciphertext for a given plaintext and key. This can be risky, because an attacker only needs to find out which ciphertext corresponds to a given plaintext input to identify it. See [Deterministic\n AEAD](/tink/deterministic-aead).\n- **Digital signature** : An asymmetric (see *Asymmetric key encryption* ) primitive for confirming the authenticity and integrity of signed data. See [Digital signature](/tink/digital-signature).\n- **Hybrid encryption** : A primitive that combines asymmetric key encryption and symmetric key encryption (see *Asymmetric key encryption* and *Symmetric\n key encryption* ). Hybrid encryption combines the efficiency of symmetric encryption with the convenience of public-key encryption. To encrypt a message, a fresh symmetric key is generated and used to encrypt the plaintext data, while the recipient's public key is used to encrypt the symmetric key only. The final ciphertext consists of the symmetric ciphertext and the encrypted symmetric key. See [Hybrid\n encryption](/tink/hybrid).\n- **Message Authentication Code (MAC)** : A symmetric (see *Symmetric key\n encryption* ) primitive for confirming the authenticity and integrity of data. See [Message Authentication Code (MAC)](/tink/mac).\n- **Streaming AEAD** : A primitive providing authenticated encryption for streaming data; useful when the data to be encrypted is too large to be processed in a single step. See [Streaming AEAD](/tink/streaming-aead).\n\nSee [Supported primitives by language](/tink/primitives-by-language) for\ncompatibility information.\n\nFor more info, see [primitive design](/tink/design/primitives_and_interfaces).\n\nKey types\n---------\n\nA *key type* implements a specific primitive. Most primitives have several key\ntypes to choose from depending on your requirements for security, runtime, and\nspace. For example, AES128_GCM is an [AEAD](/tink/aead) that is fast and\neffective for most needs. See more at [Supported key types by\nlanguage](/tink/supported-key-types).\n\nKeysets \\& keyset handles\n-------------------------\n\nTink uses *keysets* for managing keys. A keyset is essentially a set of keys\nthat facilitate key rotation. Noteworthy properties of a keyset are:\n\n- Each key in a keyset has a unique ID, which is unique within a keyset. This ID is usually added as a prefix to each produced ciphertext, signature or tag to indicate which key was used (see how Tink [tags\n ciphertexts](/tink/design/keysets#tagging_ciphertexts) for more info).\n- Only one key at a time in a keyset is *primary*. A primary key in a keyset is the key \"in use\" at the moment.\n- All the keys in a keyset *must* be implementations of the same primitive (such as AEAD), but can have different key types (for example, an AES-GCM and XCHACHA20-POLY1305 key).\n\nEach Tink implementation provides APIs to create or edit keysets. However, we\nrecommend using [Tinkey](/tink/tinkey-overview) our CLI tool.\n\nUsers operate over a keyset using *keyset handles* . A keyset handle limits the\nexposure of the actual sensitive key material. It also abstracts a keyset\nallowing users to obtain a primitive that \"wraps\" the entire keyset. For\nexample, you can get an AEAD primitive of a keyset with `N` keys; encryption and\ndecryption with the obtained primitive then uses the primary key in the keyset.\n\nFor more info, see [keyset design](/tink/design/keysets)."]]