0Pricing
Cryptology Academy · Lektion

Google Tink: sichere Kryptografie auf hoher Abstraktionsebene

Verwenden Sie die auf Keysets basierende API von Tink für gängige kryptografische Operationen – ohne Expertenwissen in Kryptografie.

Google Tink: sichere Kryptografie auf hoher Abstraktionsebene ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Überblick und Motivation von Tink

Tink ist eine von Googles Kryptografie-Team entwickelte Open-Source-Kryptografiebibliothek, die sichere und einfach zu verwendende Kryptografie bereitstellen soll. Die wichtigste Motivation besteht darin, häufige Fehlanwendungsmuster in der Kryptografie zu verhindern, die selbst erfahrenen Entwicklern bei der Nutzung von Low-Level-Bibliotheken unterlaufen. Die API von Tink ist so gestaltet, dass die korrekte Operation den einfachsten Weg darstellt und es schwierig ist, versehentlich unsichere Konfigurationen zu erstellen.

Keyset-basierte Abstraktion

Tink organisiert Schlüssel in Keysets, anstatt einzelne Schlüsselobjekte offenzulegen. Anwendungen arbeiten mit Keyset-Handles und nicht mit rohen Schlüssel-Bytes. Diese Abstraktion verhindert die versehentliche Offenlegung von Schlüsseln, ermöglicht nahtlose Schlüsselrotationen und erlaubt die Speicherung von Schlüsseln in entfernten Key Management Systems, ohne dass die Anwendung das Schlüsselmaterial direkt sieht. Das Keyset-Konzept ist ein zentraler Bestandteil des sicheren Designs von Tink.

AEAD-Schnittstelle

Die AEAD-Schnittstelle (Authenticated Encryption with Associated Data) von Tink stellt Verschlüsselungs- und Entschlüsselungsoperationen bereit. AeadFactory.getPrimitive(keyset) gibt ein Aead-Objekt zurück; der Aufruf von aead.encrypt(plaintext, associatedData) gibt ein Chiffrat zurück. Tink wählt den Verschlüsselungsalgorithmus automatisch anhand des Keysets aus (z. B. AES-256-GCM) und erzeugt eine zufällige Nonce. Die Schnittstelle verbirgt alle Algorithmen-Details, die Nonce-Verwaltung und die Formatkodierung.

MAC-Schnittstelle

Tinks MAC-Schnittstelle stellt Operationen zum Berechnen und Überprüfen von Message Authentication Codes bereit. MacFactory.getPrimitive(keyset) gibt ein Mac-Objekt zurück. mac.computeMac(data) gibt den Authentifizierungstag zurück; mac.verifyMac(tag, data) überprüft ihn und löst bei fehlgeschlagener Überprüfung eine Sicherheitsausnahme aus. Der Standardalgorithmus ist HMAC-SHA256. Die Schnittstelle verhindert häufige Fehler, etwa den Vergleich von MACs mit einem normalen Zeichenkettenvergleich statt mit einem Vergleich in konstanter Zeit.

Schnittstelle für digitale Signaturen

Tink stellt für digitale Signaturen die separaten Schnittstellen PublicKeySign und PublicKeyVerify bereit. Die sign- und verify-Objekte werden aus unterschiedlichen Keyset-Handles abgeleitet (jeweils aus privaten und öffentlichen Schlüsseln). Dadurch wird verhindert, dass versehentlich ein privater Schlüssel zur Überprüfung oder umgekehrt ein öffentlicher Schlüssel zum Signieren verwendet wird. Tinks Implementierungen von Ed25519 und ECDSA P-256 sind die Standardoptionen; deterministisches ECDSA ist verfügbar, um Schwachstellen durch Zufallswerte zu vermeiden.

Schnittstelle für hybride Verschlüsselung

Tinks Schnittstellen HybridEncrypt und HybridDecrypt implementieren ECIES (Elliptic Curve Integrated Encryption Scheme). Hybride Verschlüsselung kombiniert asymmetrischen Schlüsselaustausch mit symmetrischer Verschlüsselung: Der Absender erzeugt einen ephemeren Schlüssel, führt mit dem öffentlichen Schlüssel des Empfängers einen ECDH-Schlüsselaustausch durch, leitet daraus einen symmetrischen Schlüssel ab und verschlüsselt mit AEAD. Dadurch lassen sich große Nachrichten mit asymmetrischen Schlüsseln verschlüsseln, ohne den Overhead einer rein asymmetrischen Verschlüsselung.

Ablauf der Keyset-Rotation

Die Schlüsselrotation in Tink ist sicher und abwärtskompatibel. Gehen Sie bei der Rotation wie folgt vor: Generieren Sie einen neuen Schlüssel und fügen Sie ihn dem Keyset hinzu, markieren Sie den neuen Schlüssel als primär (künftige Verschlüsselungen verwenden ihn) und behalten Sie alte Schlüssel im Keyset, damit vorhandene Chiffretexte entschlüsselt werden können. Alte Chiffretexte lassen sich weiterhin entschlüsseln, weil nicht primäre Schlüssel für die Entschlüsselung verfügbar bleiben. Sobald alle alten Chiffretexte neu verschlüsselt wurden oder abgelaufen sind, löschen Sie die alten Schlüssel aus dem Keyset.

Serialisierung von Keysets

Tink-Keysets werden als JSON oder im binären Protocol-Buffer-Format serialisiert. Das JSON-Format ist menschenlesbar und eignet sich zur Fehlersuche. Das binäre Format ist für den Produktionseinsatz kompakter. Serialisierte Keysets, die private Schlüssel enthalten, müssen vor der Speicherung verschlüsselt werden. Tink unterstützt die Speicherung verschlüsselter Keysets mithilfe einer standardmäßigen symmetrischen AEAD-Verschlüsselung oder die Auslagerung der Speicherung an ein KMS.

KMS-Integration zur Keyset-Verschlüsselung

Tink lässt sich in wichtige KMS-Anbieter integrieren: AWS KMS, Google Cloud KMS und HashiCorp Vault. Statt Keysets mit einem lokalen AEAD-Schlüssel zu verschlüsseln, verpackt Tink den Keyset-Verschlüsselungsschlüssel mithilfe des KMS. Für die eigentliche Verschlüsselung des Keysets wird ein lokal generierter Data Encryption Key (DEK) verwendet; der DEK wird durch den KMS Key Encryption Key (KEK) verschlüsselt. Dieses Vorgehen entspricht dem bei Cloud-Anbietern eingesetzten Envelope-Encryption-Muster.

Streaming-AEAD für große Dateien

Standard-AEAD erfordert, dass die gesamte Nachricht zur Verschlüsselung und Entschlüsselung in den Speicher geladen wird. Tinks Streaming-AEAD-Schnittstelle verschlüsselt große Dateien in Segmenten und ermöglicht so das Streamen der Verschlüsselung und Entschlüsselung, ohne den vollständigen Klartext zwischenzuspeichern. Jedes Segment wird unabhängig authentifiziert; außerdem werden bei der Entschlüsselung die Reihenfolge und Vollständigkeit der Segmente überprüft. Das ist für die Verschlüsselung von Backups, Videos und anderen großen Dateien unerlässlich.

Sprachunterstützung und Ökosystem

Tink ist für Java, Python, Go und C++ mit idiomatischen APIs für jede Sprache verfügbar. Die sprachübergreifende Interoperabilität ist gewährleistet: Eine mit Tink in Python verschlüsselte Datei kann mit Tink in Java entschlüsselt werden. Dadurch eignet sich Tink für Systeme mit mehreren in unterschiedlichen Sprachen implementierten Diensten, die verschlüsselte Daten austauschen müssen. Tink lässt sich außerdem für eine typsichere Keyset-Konfiguration in Protocol Buffers integrieren.

Tink-Keyset-Rotation

Was geschieht bei einer Tink-Keyset-Rotation mit Chiffretexten, die mit dem alten (nicht primären) Schlüssel verschlüsselt wurden?

Zusammenfassung zu Google Tink

Zusammenfassung zu Tink: Die Keyset-basierte Abstraktion verhindert den direkten Zugriff auf Schlüssel, die AEAD-Schnittstelle kapselt die Verwaltung von Nonces und die Auswahl des Algorithmus, die MAC-Schnittstelle verwendet intern eine Überprüfung in konstanter Zeit, die Schnittstellen für digitale Signaturen und hybride Verschlüsselung verhindern eine falsche Verwendung der Schnittstellen, die Schlüsselrotation ist abwärtskompatibel (alte Schlüssel entschlüsseln Daten, bis sie entfernt werden), die KMS-Integration folgt dem Envelope-Encryption-Muster, Streaming-AEAD verarbeitet große Dateien und die sprachübergreifende Interoperabilität ist gewährleistet.

Häufig gestellte Fragen

Ist die Lektion „Google Tink: sichere Kryptografie auf hoher Abstraktionsebene“ kostenlos?

Ja — der vollständige Text von „Google Tink: sichere Kryptografie auf hoher Abstraktionsebene“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Google Tink: sichere Kryptografie auf hoher Abstraktionsebene“?

Verwenden Sie die auf Keysets basierende API von Tink für gängige kryptografische Operationen – ohne Expertenwissen in Kryptografie. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cryptology Academy zu starten?

Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Google Tink: sichere Kryptografie auf hoher Abstraktionsebene“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. libsodium: eine gegen Fehlverwendung robuste Kryptobibliothek
  2. OpenSSL-API: zentrale Strukturen und Fallstricke
  3. Google Tink: sichere Kryptografie auf hoher Abstraktionsebene
  4. Kryptografische Abhängigkeiten prüfen und auswählen
← Zurück zu Cryptology Academy