Tink-Einrichtung

Sie können Tink aus der Quelle erstellen oder sprachspezifische Pakete verwenden. Folgen Sie der Anleitung unten, um loszulegen.

Nachdem Sie Tink installiert und eingerichtet haben, fahren Sie mit den Nächsten Schritten am Ende dieser Seite fort.

C++

Tink bietet die folgenden C++-Bibliotheken:

Tink C++ (tink-cc)

Tink C++ setzt Folgendes voraus:

Tink C++ unterstützt:

  • C++ >= 14
  • Betriebssystem:
    • UbuntuLTS >= 20.04 (x86_64)
    • macOS >= 12.5 Monterey (x86_64)
    • Windows Server 2019 und höher (x86_64)
  • Compiler:
    • GCC >= 7.5.0
    • Apple Clang >= 14
    • MSVC >= 2019
  • Build-System:

CMake

Sie sollten tink-cc als In-Tree-Abhängigkeit hinzufügen. Beispiel:

cmake_minimum_required(VERSION 3.13)
project(YourProject CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 14)
include(FetchContent)

# Import Tink as an in-tree dependency.
FetchContent_Declare(
  tink
  URL       https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.3.0.zip
  URL_HASH  SHA256=363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b
)
FetchContent_GetProperties(tink)
if(NOT googletest_POPULATED)
  FetchContent_Populate(tink)
    add_subdirectory(${tink_SOURCE_DIR} ${tink_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()

add_executable(your_app your_app.cc)
target_link_libraries(your_app tink::static)

Bazel

Bzlmod

Wenn Sie Bazel mit Modulen verwenden, fügen Sie der Datei MODULE.bazel Folgendes hinzu:

bazel_dep(name = "tink_cc", version = "2.3.0")

ARBEITSBEREICH

Wenn Sie Bazel mit WORKSPACE-Dateien verwenden, fügen Sie Ihrer WORKSPACE-Datei Folgendes hinzu:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "tink_cc",
    urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.3.0.zip"],
    strip_prefix = "tink-2.3.0",
    sha256 = "363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b",
)

load("@tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")

tink_cc_deps()

load("@tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")

tink_cc_deps_init()

Tink C++ AWS KMS-Erweiterung (tink-cc-awskms)

Tink C++ Google Cloud KMS setzt Folgendes voraus:

Tink C++ AWS KMS unterstützt:

  • C++ >= 14
  • Betriebssystem:
    • UbuntuLTS >= 20.04 (x86_64)
    • macOS >= 12.5 Monterey (x86_64)
  • Compiler:
    • GCC >= 7.5.0
    • Apple Clang >= 14
  • Build-System:

Bazel

Fügen Sie der Datei WORKSPACE Ihres Projekts Folgendes hinzu:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "tink_cc",
    urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.3.0.zip"],
    strip_prefix = "tink-2.3.0",
    sha256 = "363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b",
)

load("@tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")

tink_cc_deps()

load("@tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")

tink_cc_deps_init()

http_archive(
    name = "tink_cc_awskms",
    urls = ["https://github.com/tink-crypto/tink-cc-awskms/archive/refs/tags/v2.0.1.zip"],
    strip_prefix = "tink-cc-awskms-2.0.1",
    sha256 = "366319b269f62af120ee312ce4c99ce3738ceb23ce3f9491b4859432f8b991a4",
)

load("@tink_cc_awskms//:tink_cc_awskms_deps.bzl", "tink_cc_awskms_deps")

tink_cc_awskms_deps()

Tink C++ Google Cloud KMS-Erweiterung (tink-cc-gcpkms)

Tink C++ Google Cloud KMS setzt Folgendes voraus:

Tink C++ Google Cloud KMS unterstützt:

  • C++ >= 14
  • Betriebssystem:
    • UbuntuLTS >= 20.04 (x86_64)
    • macOS >= 12.5 Monterey (x86_64)
  • Compiler:
    • GCC >= 7.5.0
    • Apple Clang >= 14
  • Build-System:

Bazel

Fügen Sie der Datei WORKSPACE Ihres Projekts Folgendes hinzu:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "tink_cc_gcpkms",
    urls = ["https://github.com/tink-crypto/tink-cc-gcpkms/releases/download/v2.2.0/tink-cc-gcpkms-2.2.0.zip"],
    strip_prefix = "tink-cc-gcpkms-2.2.0",
    sha256 = "ffb9d05c64ca28b5eb54fe79e7c3f93fad68f00e45f74f6b9ce1bd3a32b3d6fd",
)

load("@tink_cc_gcpkms//:tink_cc_gcpkms_deps.bzl", "tink_cc_gcpkms_deps")

tink_cc_gcpkms_deps()

load("@tink_cc_gcpkms//:tink_cc_gcpkms_deps_init.bzl", "tink_cc_gcpkms_deps_init")

tink_cc_gcpkms_deps_init(register_go = True)

Ok

Tink bietet die folgenden Go-Bibliotheken:

Alle Tink-Go-Bibliotheken werden als Go-Module veröffentlicht, die mit Standard-Go-Tools oder Bazel verwendet werden können.

Tink Go (tink-go)

Go-Tools

Führen Sie im Projektverzeichnis den folgenden Befehl aus:

go get github.com/tink-crypto/tink-go/v2@v2.2.0

Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.

Tink Go AWS KMS-Erweiterung (tink-go-awskms)

Go-Tools

Führen Sie den folgenden Befehl im Projektverzeichnis aus:

go get github.com/tink-crypto/tink-go-awskms/v2@2.1.0

Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.

Tink Go Google Cloud KMS-Erweiterung (tink-go-gcpkms)

Go-Tools

Führen Sie den folgenden Befehl im Projektverzeichnis aus:

go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.2.0

Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.

Tink Go HashiCorp Vault-Erweiterung (tink-go-hcvault)

Go-Tools

Führen Sie den folgenden Befehl im Projektverzeichnis aus:

go get github.com/tink-crypto/tink-go-hcvault/v2@v2.2.0

Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.

Java

Tink stellt die folgenden Java-Bibliotheken bereit:

Die Java-Version von Tink unterstützt Java 8 oder höher. Sie können die Tink Java-Maven-Artefakte entweder in Ihr Maven- oder Gradle-Projekt einbinden oder Bazel verwenden.

Tink Android wird ab API-Level 24 vollständig unterstützt. Die meisten Teile von Tink sollten ab API-Level 21 funktionieren. In den folgenden Fällen funktioniert Tink mit API-Level 21 nicht ohne Anpassungen:

  • Für die JWT-Bibliothek ist API-Ebene 24 erforderlich, da sie Klassen wie java.util.Optional verwendet. Diese Einschränkung kann durch Entzuckerung vermieden werden.
  • Die Klassen in com.google.crypto.tink.integration.android werden erst ab API-Level 23 vollständig getestet.
  • Einige APIs in com.google.crypto.tink.streamingaead verwenden SeekableByteBufferChannel, das erst ab API-Ebene 24 verfügbar ist.

Hinweis: Aus technischen Gründen testen wir Tink auf Android-Geräten nur in der internen Google-Infrastruktur. Wir gehen nicht davon aus, dass es dadurch zu Problemen kommt. Sollten sie dennoch auftreten, erstellen Sie bitte eine Anfrage.

Für Tink Android ist keine ProGuard-Konfiguration erforderlich.

Tink Java (tink-java)

Maven

Sie können Tink Java und die Tink-Android-Bibliothek mit Maven einbinden:

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>tink</artifactId>
  <version>1.15.0</version>
</dependency>

Wenn Sie Ihr Targeting auf Android-Geräte ausrichten, können Sie tink-android über Gradle verwenden:

dependencies {
  implementation 'com.google.crypto.tink:tink-android:1.15.0'
}

Bazel

Bazel-Nutzern wird empfohlen, Tink Java als Abhängigkeit hinzuzufügen, indem sie das Maven-Release-Artefakt mit dem Tool rules_jvm_external in ihrer WORKSPACE-Datei installieren:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

RULES_JVM_EXTERNAL_TAG = "6.1"
RULES_JVM_EXTERNAL_SHA ="d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"

http_archive(
    name = "rules_jvm_external",
    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
    sha256 = RULES_JVM_EXTERNAL_SHA,
    url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG)
)

load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

rules_jvm_external_deps()

load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")

rules_jvm_external_setup()

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.15.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Wenn Sie tink-java aus der Quelle erstellen möchten, um beispielsweise ein bestimmtes Commit anpinnen zu können, können Sie es als http_archive in Ihre WORKSPACE-Datei aufnehmen:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

TINK_COMMIT="f4127f6b6ab9c367d41ade1f50db6f0ef9909044"
TINK_SHA256="e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582"

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/archive/%s.zip" % TINK_COMMIT],
    strip_prefix = "tink-%s" % TINK_COMMIT,
    sha256 = TINK_SHA256
)

load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")

tink_java_deps()

load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")

tink_java_deps_init()

# rules_jvm_external is imported and initialized by tink_java_deps and
# tink_java_deps_init.
load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
  artifacts = TINK_MAVEN_ARTIFACTS + # ... other dependencies ...
  repositories = [
      "https://maven.google.com",
      "https://repo1.maven.org/maven2",
  ],
)

Tink Java AWS KMS-Erweiterung (tink-java-awskms)

Maven

Sie können Tink Java und die Tink-Android-Bibliothek mit Maven einbinden:

<dependencies>
  <dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink-awskms</artifactId>
    <version>1.10.1</version>
  </dependency>
</dependencies>

Bazel

Sie können das com.google.crypto.tink:tink-awskms-Maven-Artefakt mit dem Tool rules_jvm_external neben com.google.crypto.tink:tink installieren.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.15.0",
        "com.google.crypto.tink:tink-awskms:1.10.1",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Alternativ können Sie sie als http_archive-Abhängigkeit einschließen:

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.15.0/tink-java-1.15.0.zip"],
    strip_prefix = "tink-java-1.15.0",
    sha256 = "e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582",
)

load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")

tink_java_deps()

load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")

tink_java_deps_init()

http_archive(
    name = "tink_java_awskms",
    urls = ["https://github.com/tink-crypto/tink-java-awskms/releases/download/v1.10.1/tink-java-awskms-1.10.1.zip"],
    strip_prefix = "tink-java-awskms-1.10.1",
    sha256 = "5f08f3a343fb2028784ee2344e102cf4f753b4d23252318b3f8ac48208d3e2fa",
)

load("@tink_java_awskms//:tink_java_awskms_deps.bzl", "TINK_JAVA_AWSKMS_MAVEN_ARTIFACTS")

maven_install(
    artifacts = TINK_MAVEN_ARTIFACTS + TINK_JAVA_AWSKMS_MAVEN_ARTIFACTS + [
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Tink Java Google Cloud KMS-Erweiterung (tink-java-gcpkms)

Maven

<dependencies>
  <dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink-gcpkms</artifactId>
    <version>1.10.0/version>
  </dependency>
</dependencies>

Bazel

Sie können das com.google.crypto.tink:tink-gcpkms-Maven-Artefakt mit com.google.crypto.tink:tink über das Tool rules_jvm_external installieren.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.15.0",
        "com.google.crypto.tink:tink-gcpkms:1.10.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Alternativ können Sie sie als http_archive-Abhängigkeit einschließen:

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.15.0/tink-java-1.15.0.zip"],
    strip_prefix = "tink-java-1.15.0",
    sha256 = "e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582",
)

load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")

tink_java_deps()

load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")

tink_java_deps_init()

http_archive(
    name = "tink_java_gcpkms",
    urls = ["https://github.com/tink-crypto/tink-java-gcpkms/releases/download/v1.10.0/tink-java-gcpkms-1.10.0.zip"],
    strip_prefix = "tink-java-gcpkms-1.10.0",
    sha256 = "ad85625cc4409f2f6ab13a8eef39c965501585e9323d59652cce322b3d2c09a2",
)

load("@tink_java_gcpkms//:tink_java_gcpkms_deps.bzl", "TINK_JAVA_GCPKMS_MAVEN_ARTIFACTS")

maven_install(
    artifacts =  TINK_MAVEN_ARTIFACTS + TINK_JAVA_GCPKMS_MAVEN_ARTIFACTS + [
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Tink Java Apps-Erweiterungen (tink-java-apps)

Maven

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-webpush</artifactId>
  <version>1.11.0</version>
</dependency>

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-paymentmethodtoken</artifactId>
  <version>1.11.0</version>
</dependency>

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-rewardedads</artifactId>
  <version>1.11.0</version>
</dependency>

Bazel

Sie können alle com.google.crypto.tink:apps-*-Maven-Artefakte mit dem Tool rules_jvm_external installieren.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:apps-webpush:1.11.0",
        "com.google.crypto.tink:apps-paymentmethodtoken:1.11.0",
        "com.google.crypto.tink:apps-rewardedads:1.11.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

ObjC

Anleitung auf GitHub

Python

Die Tink-Python-Bibliothek tink-py unterstützt Python 3.8 oder höher auf macOS (x86-64 und ARM64), Linux (x86-64 und ARM64) und Windows (x86-64). Die neueste Version ist 1.10.0. Sie kann lokal mit Pip installiert oder mit Bazel verwendet werden.

Tink Python bietet Integrationen mit AWS KMS, Google Cloud KMS und HashiCorp Vault.

Pippin

Sie können die Tink-Python-Binärversion für Ihr System über PyPI installieren. Führen Sie dazu den folgenden Befehl aus:

pip3 install tink==1.10.0
# Core Tink + Google Cloud KMS extension.
pip3 install tink[gcpkms]==1.10.0
# Core Tink + AWS KMS extension.
pip3 install tink[awskms]==1.10.0
# Core Tink + HashiCorp Vault KMS extension.
pip3 install tink[hcvault]==1.10.0
# Core Tink + all the KMS extensions.
pip3 install tink[all]==1.10.0

Wenn für Ihre Umgebung kein Binärpaket veröffentlicht wird, baut pip das Projekt automatisch mit der in PyPI veröffentlichten Quellverteilung. In diesem Fall müssen Bazel oder Bazelisk und der Protobuf-Compiler installiert sein, damit das Projekt erfolgreich erstellt werden kann.

Bazel

Bazel-Nutzer können Tink Python so in ihre WORKSPACE-Datei aufnehmen:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "tink_py",
    urls = ["https://github.com/tink-crypto/tink-py/releases/download/v1.10.0/tink-py-1.10.0.zip"],
    strip_prefix = "tink-py-1.10.0",
    sha256 = "767453aae4aad6de4fbb4162992184aa427b7b27864fe9912c270b24c673e1cc",
)

load("@tink_py//:tink_py_deps.bzl", "tink_py_deps")
tink_py_deps()

load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()

load("@tink_py//:tink_py_deps_init.bzl", "tink_py_deps_init")
tink_py_deps_init("tink_py")

Nächste Schritte

Nachdem Sie die Einrichtung von Tink abgeschlossen haben, fahren Sie mit den Standardschritten zur Verwendung von Tink fort:

  • Primitive auswählen: Entscheiden Sie anhand Ihres Anwendungsfalls, welche Primitive Sie verwenden möchten.
  • Schlüssel verwalten: Schützen Sie Ihre Schlüssel mit Ihrem externen KMS, generieren Sie Schlüsselsätze und rotieren Sie Ihre Schlüssel.