Tink Java 설정

Tink를 설치하고 설정한 후 다음 단계를 진행합니다.

Tink Java

코어 Java 라이브러리는 tink-java이며 최신 버전은 1.16.0입니다. Tink Java는 Java 8 이상을 지원합니다.

Maven

Maven을 사용하여 Tink Java를 포함할 수 있습니다.

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

Bazel

Maven 출시 아티팩트

Bazel 사용자가 Tink Java를 종속 항목으로 추가하는 권장 방법은 WORKSPACE 파일에서 rules_jvm_external 도구를 사용하여 Maven 출시 아티팩트를 설치하는 것입니다.

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.16.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

소스에서 빌드

특정 커밋을 고정하기 위해 소스에서 tink-java를 빌드하려면 WORKSPACE 파일에 http_archive로 포함하면 됩니다.

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 Android

핵심 Android 라이브러리는 tink-java이며 최신 버전은 1.16.0입니다.

Tink Android는 API 수준 24부터 완전히 지원됩니다. Tink의 대부분은 API 수준 21부터 작동할 것으로 예상됩니다. API 수준 21에서 Tink가 즉시 실행되지 않는 부분은 다음과 같습니다.

  • JWT 라이브러리는 java.util.Optional와 같은 클래스를 사용하므로 API 수준 24가 필요합니다. 이 제한은 디슈가링으로 방지할 수 있습니다.

  • com.google.crypto.tink.integration.android의 클래스는 API 수준 23부터 완전히 테스트됩니다.

  • com.google.crypto.tink.streamingaead의 일부 API는 API 수준 24부터만 사용할 수 있는 SeekableByteBufferChannel를 사용합니다.

기술적 이유로 Google은 Google 내부 인프라에서 Android용 Tink만 테스트합니다. 이로 인해 문제가 발생하지는 않을 것으로 예상되지만 문제가 발생하면 문제를 신고해 주세요.

Tink Android에는 ProGuard 구성이 필요하지 않습니다.

Gradle

Gradle에서 tink-android를 사용할 수 있습니다.

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

AWS KMS 확장 프로그램

Tink Java AWS KMS 확장 프로그램은 1.11.0이 최신 버전인 tink-java-awskms입니다.

Maven

Maven을 사용하여 Tink Java AWS KMS 확장 프로그램을 포함할 수 있습니다.

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

Bazel

Maven 출시 아티팩트

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:tink와 함께 com.google.crypto.tink:tink-awskms Maven 아티팩트를 설치할 수 있습니다.

# ...

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

소스에서 빌드

특정 커밋을 고정하기 위해 소스에서 tink-awskms를 빌드하려면 WORKSPACE 파일에 http_archive로 포함하면 됩니다.

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.16.0/tink-java-1.16.0.zip"],
    strip_prefix = "tink-java-1.16.0",
    sha256 = "6bf0bb13281257fdf07d70abfc025f0e3ab18abd22646b1ada3fe297f7feaedb",
)

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.11.0/tink-java-awskms-1.11.0.zip"],
    strip_prefix = "tink-java-awskms-1.11.0",
    sha256 = "18f8faa7ba0019fc584f9e03f94221ebbcc83f059568d2277a4866003153e151",
)

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",
    ],
)

Google Cloud KMS 확장 프로그램

Tink Java Google Cloud KMS 확장 프로그램은 1.10.0이 최신 버전인 tink-java-gcpkms입니다.

Maven

Maven을 사용하여 Tink Java Google Cloud KMS 확장 프로그램을 포함할 수 있습니다.

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

Bazel

Maven 출시 아티팩트

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:tink와 함께 com.google.crypto.tink:tink-gcpkms Maven 아티팩트를 설치할 수 있습니다.

# ...

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

소스에서 빌드

특정 커밋을 고정하기 위해 소스에서 tink-gcpkms를 빌드하려면 WORKSPACE 파일에 http_archive로 포함하면 됩니다.

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.16.0/tink-java-1.16.0.zip"],
    strip_prefix = "tink-java-1.16.0",
    sha256 = "6bf0bb13281257fdf07d70abfc025f0e3ab18abd22646b1ada3fe297f7feaedb",
)

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 앱

Tink Java Apps 라이브러리는 Google 결제 수단 토큰, Google AdMob 리워드 광고의 서버 측 인증, RFC 8291 - 웹 푸시용 메시지 암호화를 구현하며 최신 버전은 1.11.0입니다.

Maven

Maven을 사용하여 Tink Java 앱 라이브러리를 포함할 수 있습니다.

<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

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:apps-* Maven 아티팩트를 설치할 수 있습니다.

# ...

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",
    ],
)

다음 단계

Tink 설정을 완료한 후 표준 Tink 사용 단계를 계속 진행합니다.

  • 원시 유형 선택: 사용 사례에 따라 사용할 원시 유형을 결정합니다.
  • 키 관리 – 외부 KMS로 키 보호, 키 집합 생성, 키 순환