Was ist Tink?
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Tink ist eine Open-Source-Bibliothek für Kryptografie, die von Kryptografen und
Security Engineers bei Google. Die sicheren und einfachen APIs von Tink reduzieren gängige
durch nutzungsorientiertes Design, sorgfältige Implementierung und Codeüberprüfungen,
und ausgiebigen Tests. Im Abschnitt Ziele auf dieser Seite finden Sie weitere Informationen dazu,
welche Ziele mit Tink verfolgt werden können.
Tink hilft Nutzern ohne Kryptografie-Hintergrund, gängige
kryptografischer Aufgaben. Bei Google wurde Tink in Hunderten von Produkten eingesetzt
und Systeme.
Warum sollte ich Tink verwenden?
Die wichtigsten Gründe für die Verwendung von Tink sind:
Sie ist einfach zu verwenden
Kryptografie ist nicht einfach richtig. Mit Tink kannst du
Daten verschlüsseln oder signieren mit
integrierte Sicherheitsgarantien mit nur wenigen Codezeilen. Tink Dose
unterstützen Sie beim Rotieren von Schlüsseln oder Sichern von Schlüsseln mit externen Key Management Systems
(KMS).
Es ist sicher
Tink ergänzt bekannte Bibliotheken wie BoringSSL um Sicherheitsfunktionen
und Java Cryptography Architecture und zeigt sie direkt in den Oberflächen,
damit Prüfer und Tools schnell Lücken finden können. Tink trennt außerdem APIs,
sind potenziell gefährlich und
überwachen Sie sie.
Es ist kompatibel
Tink-Geheimtexte sind mit vorhandenen Kryptografiebibliotheken kompatibel. Tink
unterstützt auch das Verschlüsseln oder Speichern von Schlüsseln in
Amazon KMS, Google Cloud KMS, Android-Schlüsselspeicher und iOS-Schlüsselbund
Wer verwendet Tink?
Tink wird von vielen Unternehmen verwendet, darunter Google, Square und Citadel,
sowie Hunderten von Google Cloud-Kunden und Google Pay-Partnern. Auch Tink
unterstützt die Jetpack Security-Bibliothek, die viele beliebte Android-Apps schützt.
wie Slack, Adidas, AirBnb und Nextdoor.
Tink-Tore
Was sind die Hauptziele von Tink im Vergleich zu anderen Kryptografiebibliotheken und
Was sind die Hauptmechanismen, mit denen Tink diese Ziele erreicht?
Kurz gesagt hat Tink zwei Ziele:
- Förderung kryptografischer Agilität: Nutzer sollten in der Lage sein, Schlüssel und
Algorithmen erklären.
- Sicherheitsüberprüfungen aktivieren: Tink möchte Nutzern ermöglichen, Code zu schreiben,
die Sicherheit lokal überprüft werden kann, indem
Schnittstellen zur Verfügung gestellt werden,
Sicherheitsgarantien.
Tink erreicht diese Ziele vor allem folgendermaßen:
- Tink stellt Primitive und Schnittstellen als wichtige Abstraktionen bereit. Diese
ermöglichen es Nutzenden, Code zu schreiben, der nicht den genauen
verwendet werden. Stattdessen wird das erwartete Sicherheitskonzept angegeben.
- Tink verwendet das Konzept eines "Schlüsselsatzes". Dabei handelt es sich um eine Reihe von Schlüsseln, die
die mit einem bestimmten Primitiv verknüpft sind. Das führt dazu,
dass Nutzende Code schreiben,
das mit mehreren Schlüsseln funktioniert.
- In Tink werden Schlüssel nicht nur durch das zugrunde liegende Schlüsselmaterial angegeben,
den kryptografischen Algorithmus und alle Parameter. Das bedeutet, dass
Ein Tink-Schlüssel wählt immer eine eindeutige kryptografische Funktion aus allen möglichen
Funktionen, die existieren können und
lassen keinen Raum für Interpretationen.
In den folgenden Abschnitten werden diese Konzepte ausführlicher erläutert.
Kryptografische Agilität
Ziehen Sie z. B. Software Engineering bei Google in Betracht,
ein Buch über Lehren aus dem Software-Engineering, mit dem
Unterüberschrift: „Erkenntnisse aus dem Programmieren im Laufe der Zeit“. Darin finden die Autoren
die Auswirkungen der Veränderungen angezweifelt haben. Dieses
auch einen großen Teil des
Designs von Tink beeinflusst. In der Kryptografie ist es wichtig,
dass man sich auf Veränderungen vorbereitet. Schlüssel gehen verloren und Algorithmen funktionieren nicht mehr.
Schlüssel und Algorithmen müssen für viele Nutzende ausgetauscht werden können.
gut vorbereitet zu sein.
Sicherheitsüberprüfungen und lokale Properties
Tink fördert die Verwendung von Oberflächen, wie z. B. unserer AEAD-Schnittstelle, mit der
Daten zu verschlüsseln. Neben anderen Sicherheitsgarantien bietet ein AEAD
garantiert, dass mehrere Verschlüsselungen desselben Strings zu unterschiedlichen Ergebnissen führen.
Geheimtexte.
Um zu sehen, wie dies verwendet werden kann, nehmen wir an, ein Entwickler möchte sensible
ID in einem Nutzer-Cookie. Sie könnte eine Klasse wie diese bereitstellen:
class IdEncrypter {
public static IdEncrypter createFromAead(Aead aead);
public String encrypt(long id) throws GeneralSecurityException;
public long decrypt(String encrypted) throws GeneralSecurityException;
};
Durch Übergabe eines Aead
werden die folgenden Attribute abgerufen:
- Der Code teilt Ihnen mit, dass für die Ausführung von
IdEncrypter
ein
Verschlüsselungsschema mit den Sicherheitseigenschaften von Aead
.
Alternativ kann ein
DeterministicAead
würde das nicht ausreichen – IdEncrypter
erfordert, dass zwei Verschlüsselungen des
IDs unterschiedlich sind. Wenn Sie dagegen eine Instanz von
ein AES-GCM-Verschlüsselungstools (eine bestimmte Instanz eines Aead
) zu verwenden wäre,
Streng: Jeder Aead reicht aus, damit IdEncrypter
seine Aufgabe erledigen kann,
ein bestimmter Algorithmus sein.
- Bei einer Sicherheitsüberprüfung kann dies berücksichtigt werden. Ein Sicherheitsprüfer macht
nicht das gesamte Code-Repository durchgehen müssen,
Jemand hat eine abgeleitete Klasse von
Aead
erstellt, die nicht sicher verwendet werden kann
mit IdEncrypter
. Stattdessen bietet Tink Sicherheitsfunktionen,
Aead-Objekte bestehen. Der Prüfer kann dann prüfen, ob diese ausreichend sind.
Insbesondere der zweite Punkt erfordert viel Sorgfalt. Nutzer bitten oft um Hinzufügen
Algorithmen, die „nicht ganz“ ein Aead
. Der vorherige Punkt veranschaulicht,
Das ist gefährlich, wenn eine Implementierung von Aead
verfügbar ist, die
nicht die erforderlichen Sicherheitsgarantien bieten,
kann IdEncrypter
unsicher werden
und der Entwickler, der eine Sicherheitsüberprüfung durchführt,
zusätzlichen Code untersuchen muss,
um zu prüfen, ob das Objekt korrekt instanziiert wurde.
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-07-25 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-25 (UTC)."],[[["\u003cp\u003eTink is an open-source cryptography library designed for easy and secure implementation of common cryptographic tasks, even for users without a cryptography background.\u003c/p\u003e\n"],["\u003cp\u003eTink prioritizes security by adding protections on top of existing libraries like BoringSSL, using distinct APIs for potentially risky operations, and ensuring ciphertext compatibility with other libraries.\u003c/p\u003e\n"],["\u003cp\u003eTink promotes cryptographic agility by enabling easy key and algorithm changes, and it supports integration with external key management systems like Amazon KMS and Google Cloud KMS.\u003c/p\u003e\n"],["\u003cp\u003eDesigned with security reviews in mind, Tink utilizes interfaces with clear security guarantees and the concept of keysets for enhanced security and code clarity.\u003c/p\u003e\n"],["\u003cp\u003eGoogle, Square, and Citadel are among the many companies that utilize Tink, further demonstrating its reliability and widespread adoption within various applications and systems.\u003c/p\u003e\n"]]],["Tink, a Google-developed open-source cryptography library, simplifies secure cryptographic implementation for users, even without cryptography expertise. It's designed for simplicity, security, and compatibility, supporting key rotation and external Key Management Systems (KMS). Tink prioritizes cryptographic agility, enabling easy key and algorithm changes, and facilitates security reviews by providing clear interfaces and security guarantees. It uses primitives, keysets, and comprehensive key specifications to achieve these goals, ensuring secure, verifiable, and adaptable cryptographic operations.\n"],null,["# What is Tink?\n\nTink is an open-source cryptography library written by cryptographers and\nsecurity engineers at Google. Tink's secure and simple APIs reduce common\npitfalls through user-centered design, careful implementation and code reviews,\nand extensive testing. See the [Goals](#tink_goals) section on this page for\nmore insight into which objectives Tink was designed to fulfil.\n\nTink helps users without a cryptography background safely implement common\ncryptographic tasks. At Google, Tink has been deployed in hundreds of products\nand systems.\n\nWhy should I use Tink?\n----------------------\n\nThe most important reasons to use Tink are:\n\n- **It's simple to use**\n\n Cryptography is difficult to get right. With Tink, you can\n [encrypt](/tink/encrypt-data) or [sign data](/tink/digitally-sign-data) with\n built-in security guarantees using just a few lines of code. Tink can also\n help you rotate keys or secure keys using external Key Management Systems\n (KMSs).\n- **It's secure**\n\n Tink adds security protections on top of well known libraries like BoringSSL\n and Java Cryptography Architecture and shows them right in the interfaces,\n so auditors and tools can quickly find gaps. Tink also separates APIs that\n are potentially dangerous, so you can monitor them.\n- **It's compatible**\n\n Tink ciphertexts are compatible with existing cryptography libraries. Tink\n also supports [encrypting or storing keys](/tink/client-side-encryption) in\n Amazon KMS, Google Cloud KMS, Android Keystore, and iOS Keychain.\n\nWho's using Tink?\n-----------------\n\nTink is widely used by many companies, including Google, Square, and Citadel, as\nwell as hundreds of Google Cloud customers and Google Pay partners. Tink also\npowers the Jetpack Security library, which secures many popular Android apps\nlike Slack, Adidas, AirBnb, and Nextdoor.\n\nTink Goals\n----------\n\nWhat are the main goals of Tink compared to other cryptographic libraries, and\nwhat are the main mechanisms which Tink uses to achieve these goals?\n\nIn short, Tink has two goals:\n\n1. *Promote cryptographic agility*: Users should be able to change keys and algorithms in a simple way.\n2. *Enable security reviews*: Tink aims to allow users to write code whose security can be reviewed locally, by providing interfaces which give clear security guarantees.\n\nThe main mechanisms Tink uses to achieve these goals are as follows:\n\n1. Tink provides primitives and interfaces as important abstractions. These abstractions allow users to write code which does not specify the exact algorithm to be used, but instead specifies the expected security notion.\n2. Tink uses the notion of a \"keyset\", which is a set of keys that are associated with a particular primitive. This results in users writing code which works with multiple keys.\n3. In Tink, keys are not only specified by the underlying key material, but also the cryptographic algorithm, as well as all parameters. This means that a Tink key always selects a unique cryptographic function from all possible functions which can exist, and leaves no room for interpretation.\n\nThe following sections explain these concepts in more detail.\n\n### Cryptographic agility\n\nConsider [Software Engineering at Google](https://abseil.io/resources/swe-book),\na book about lessons learned in the field of software engineering, with the\nsubtitle \"lessons learned from programming over time\". In it, the authors go to\ngreat lengths to implore the implications of the fact that things change. This\nfact also impacted much of the design of Tink. In cryptography, it is important\nthat one prepares for change. Keys will leak, and algorithms will be broken.\nBeing able to switch out keys and algorithms is crucial for many users, and\nbeing prepared is prudent.\n\n### Security reviews and local properties\n\nTink promotes the use of interfaces, such as our AEAD interface, which allows\nusers to encrypt data. Among [other security guarantees](https://developers.google.com/tink/aead#security_guarantees), an AEAD\nguarantees that multiple encryptions of the same string result in different\nciphertexts.\n\nTo see how this can be used, suppose an engineer wants to store some sensitive\nID in a user cookie. They might provide a class such as this: \n\n class IdEncrypter {\n public static IdEncrypter createFromAead(Aead aead);\n\n public String encrypt(long id) throws GeneralSecurityException;\n public long decrypt(String encrypted) throws GeneralSecurityException;\n };\n\nPassing an `Aead` obtains the following properties:\n\n1. The code communicates that for `IdEncrypter` to do its job, it requires an encryption scheme with the security properties an [`Aead` provides](https://developers.google.com/tink/aead#security_guarantees). Alternatively, a [`DeterministicAead`](https://developers.google.com/tink/deterministic-aead) wouldn't be enough -- the `IdEncrypter` requires that two encryptions of the same id are different. On the other hand, taking as parameter an instance of an AES GCM encrypter (one particular instance of an `Aead`) would be overly strict: any Aead is enough for `IdEncrypter` to do its job, and it does not need to be one specific algorithm.\n2. A security review can take this point into account. A security reviewer does not need to go through all of the entire code repository to check if somewhere, someone made a subclass of `Aead` which is not secure for use with `IdEncrypter`. Instead, Tink provides security properties which all Aead objects have, and the reviewer can check that these are sufficient.\n\nIn particular the second point requires a lot of care. Users often ask to add\nalgorithms which are 'not quite' an `Aead`. The previous point illustrates why\nthis is dangerous: if there is any implementation of `Aead` available which does\nnot provide the required security guarantees, `IdEncrypter` can become insecure,\nand the engineer performing a security review needs to examine additional code\nto check that the object is instantiated correctly."]]