Memahami Konsep Utama di Tink

Saat Anda mulai menggunakan Tink untuk pertama kalinya, ada beberapa konsep utama yang harus Anda pahami sebelum memulai perjalanan Anda; hal ini dijelaskan di bagian berikut.

Primitif

Tink menggunakan primitif sebagai elemen penyusun kriptografis yang mengelola algoritma dasar sehingga pengguna dapat melakukan tugas kriptografi dengan aman. Primitif menentukan detail algoritma kriptografi dan jenis kunci.

Primitif yang didukung oleh Tink:

  • Enkripsi yang Diautentikasi dengan Data Terkait (AEAD): Primitif yang paling umum untuk enkripsi data; cocok untuk sebagian besar kebutuhan enkripsi. AEAD memberikan kerahasiaan teks biasa, dan memungkinkan verifikasi integritas dan keasliannya. Lihat Enkripsi yang Diautentikasi dengan Data Terkait (AEAD).
  • Enkripsi deterministik: Primitif yang selalu menghasilkan teks cipher yang sama untuk teks biasa dan kunci tertentu. Hal ini dapat berisiko, karena penyerang hanya perlu mengetahui ciphertext mana yang sesuai dengan input teks biasa yang diberikan untuk mengidentifikasinya. Lihat AEAD Deterministik.
  • Tanda tangan digital: Primitif asimetris (lihat Enkripsi kunci asimetris) untuk mengonfirmasi keaslian dan integritas data yang ditandatangani. Lihat Tanda tangan digital.
  • Enkripsi hybrid: Primitif yang menggabungkan enkripsi kunci asimetris dan enkripsi kunci simetris (lihat Enkripsi kunci asimetris dan Enkripsi kunci simetris). Enkripsi hybrid menggabungkan efisiensi enkripsi simetris dengan kenyamanan enkripsi kunci publik. Untuk mengenkripsi pesan, kunci simetris baru akan dibuat dan digunakan untuk mengenkripsi data teks biasa, sedangkan kunci publik penerima digunakan hanya untuk mengenkripsi kunci simetris. Teks tersandi terakhir terdiri dari ciphertext simetris dan kunci simetris yang terenkripsi. Lihat Enkripsi hybrid.
  • Message Authentication Code (MAC): Primitif simetris (lihat Enkripsi kunci simetris) untuk mengonfirmasi keaslian dan integritas data. Lihat Message Authentication Code (MAC).
  • Streaming AEAD: Primitif yang menyediakan enkripsi terautentikasi untuk streaming data; berguna jika data yang akan dienkripsi terlalu besar untuk diproses dalam satu langkah. Lihat AEAD Streaming.

Lihat primitif yang didukung menurut bahasa untuk mengetahui informasi kompatibilitas.

Untuk mengetahui info selengkapnya, lihat desain primitif.

Jenis kunci

Jenis kunci menerapkan primitif tertentu. Sebagian besar primitif memiliki beberapa jenis kunci yang dapat dipilih, bergantung pada persyaratan Anda untuk keamanan, runtime, dan ruang. Misalnya, AES128_GCM adalah AEAD yang cepat dan efektif untuk sebagian besar kebutuhan. Lihat selengkapnya di Jenis kunci yang didukung menurut bahasa.

Keyset & tuas keyset

Tink menggunakan set kunci untuk mengelola kunci. Pada dasarnya, keyset adalah kumpulan kunci yang memfasilitasi rotasi kunci. Properti yang perlu diperhatikan dari keyset adalah:

  • Setiap kunci dalam {i>keyset<i} memiliki ID unik, yang bersifat unik di dalam sebuah {i>keyset<i}. ID ini biasanya ditambahkan sebagai awalan ke setiap ciphertext, tanda tangan, atau tag yang dihasilkan untuk menunjukkan kunci mana yang digunakan (lihat cara Tink menandai ciphertext untuk mengetahui info selengkapnya).
  • Hanya satu kunci pada satu waktu dalam keyset yang bersifat utama. {i>Primary key<i} di {i>keyset<i} adalah kunci yang "sedang digunakan" saat ini.
  • Semua kunci dalam keyset harus merupakan implementasi dari primitif yang sama (seperti AEAD), tetapi dapat memiliki jenis kunci yang berbeda (misalnya, kunci AES-GCM dan XCHACHA20-POLY1305).

Setiap implementasi Tink menyediakan API untuk membuat atau mengedit keyset. Namun, sebaiknya gunakan alat CLI kami Tinkey.

Pengguna beroperasi melalui keyset menggunakan tuas keyset. Tuas keyset membatasi eksposur materi kunci sensitif yang sebenarnya. Hal ini juga mengabstraksikan keyset yang memungkinkan pengguna mendapatkan primitif yang "menggabungkan" seluruh keyset. Misalnya, Anda bisa mendapatkan primitif AEAD dari keyset dengan kunci N; enkripsi dan dekripsi dengan primitif yang diperoleh, kemudian menggunakan kunci utama dalam keyset.

Untuk mengetahui info selengkapnya, lihat desain keyset.