Kerberos dibangun dari tiga komponen utama yang disebut tiga kepala: client, Key Distribution Center, dan service server. Episode ini membedah setiap komponen, realm, principal, ticket, kunci kriptografi, hingga trust model yang menjadi pondasi seluruh protokol.

Di episode 1 kemarin kalian sudah tahu mengapa Kerberos ada: menjawab masalah autentikasi tradisional dengan tiket terenkripsi, mutual authentication, dan SSO. Sekarang saatnya membongkar bagaimana protokol ini bekerja — mulai dari siapa saja pelaku di dalamnya, bagaimana identitas direpresentasikan, hingga bagaimana kepercayaan dibangun di antara mereka.
Episode ini akan memperkenalkan seluruh kosakata Kerberos: tiga kepala arsitektur (client, KDC, service server), konsep realm dan principal, tiket dan TGT, kunci jangka panjang versus session key, hingga trust model dengan KDC sebagai pihak ketiga terpercaya. Anggap episode ini sebagai "peta konsep" — di episode 3 kita akan menyalakan mesinnya dan melihat alur autentikasinya berjalan langkah demi langkah.
Kerberos bekerja dengan tiga pihak, persis seperti nama mitologinya:
+-----------+ +--------------------+ +---------------+
| CLIENT | <---> | KDC | <---> | SERVICE |
| (pemakai) | tiket | AS + TGS + DB | kunci | SERVER |
+-----------+ +--------------------+ +---------------+KDC adalah jantung Kerberos — pihak ketiga yang dipercaya oleh semua orang. Ia terdiri dari tiga komponen yang saling melengkapi:
| Komponen | Peran |
|---|---|
| Authentication Server (AS) | Melayani login awal: memverifikasi identitas client dan menerbitkan TGT |
| Ticket Granting Server (TGS) | Menerbitkan tiket layanan (service ticket) untuk mengakses service tertentu |
| Kerberos Database | Menyimpan semua principal dan kuncinya — "daftar penduduk" realm |
KDC menyimpan kunci jangka panjang setiap principal. Karena kunci ini disimpan di satu tempat, KDC benar-benar menjadi single source of truth — dan karena itu juga menjadi target paling menarik bagi attacker, sebuah topik yang akan kita bahas di episode 21 (Golden Ticket attack).
Client adalah pengguna atau service yang meminta akses ke layanan. Ia memegang password yang diturunkan menjadi kunci jangka panjang — tapi kunci ini tidak pernah dikirim ke jaringan. Client berkomunikasi dengan KDC untuk mendapatkan tiket, lalu memakai tiket tersebut untuk mengakses service.
Service server adalah layanan yang menyediakan resource — misalnya SSH server, file server, atau web server. Ia memegang kunci jangka panjang miliknya sendiri yang disimpan di keytab, dan hanya bisa membuka tiket yang diterbitkan khusus untuknya.
Realm adalah batas administratif Kerberos — semacam "kerajaan" yang memiliki KDC dan database principal sendiri. Konvensi penamaannya selalu huruf besar, mengikuti nama domain. Contoh: domain example.com biasanya memakai realm EXAMPLE.COM.
Satu realm adalah satu lingkup kepercayaan. Dua realm yang berbeda bisa saling mempercayai melalui cross-realm trust (episode 10), tapi di dalam satu realm, semua principal diatur oleh satu KDC. Inilah unit organisasi yang akan kalian bangun di lab episode 5 dengan nama EXAMPLE.COM.
Principal adalah identitas unik di dalam realm — setiap entitas yang bisa diautentikasi memiliki satu principal. Formatnya:
primary/instance@REALM| Jenis Principal | Contoh | Keterangan |
|---|---|---|
| User | arman@EXAMPLE.COM | Identitas pengguna biasa |
| Service | host/client1.example.com@EXAMPLE.COM | Service di host tertentu |
| Service | HTTP/www.example.com@EXAMPLE.COM | Web service dengan SPN HTTP |
| Cross-realm | krbtgt/EXAMPLE.COM@OTHER.COM | Kunci kepercayaan antar realm |
| Admin | admin/admin@EXAMPLE.COM | Principal dengan hak administrasi |
Perhatikan pola service/host@REALM: instance (bagian setelah garis miring) membedakan service yang sama di host yang berbeda. Dua service di host berbeda tidak akan tertukar tiketnya karena principal-nya berbeda. Ini konsep yang akan kalian temui terus di episode 7 tentang service principals dan keytabs.
Kerberos sepenuhnya berbasis kriptografi simetris — satu kunci untuk enkripsi dan dekripsi. Ada dua jenis kunci yang perlu kalian bedakan:
Long-term key adalah "kunci rumah" yang jarang berganti; session key adalah "kunci kamar hotel" yang berlaku hanya selama menginap. Jenis enkripsi yang didukung modern: AES128 dan AES256 (dengan HMAC-SHA1 maupun varian SHA256/SHA384). DES dan 3DES sudah dianggap lemah dan tidak direkomendasikan — detailnya akan kita bedah di episode 11.
Ticket adalah blok data terenkripsi yang menjadi "kartu akses" Kerberos. Ada dua jenis:
| Jenis | Nama | Diterbitkan oleh | Kegunaan |
|---|---|---|---|
| TGT | Ticket-Granting Ticket | AS | Bukti sudah login; dipakai untuk meminta tiket layanan |
| Service ticket | Ticket layanan | TGS | Akses ke satu service tertentu |
Setiap ticket berisi identitas pemegang, alamat target, masa berlaku, dan — yang terpenting — session key yang disalin dalam bentuk terenkripsi. Penerima tiket membukanya dengan kunci jangka panjang miliknya dan mengambil session key untuk percakapan selanjutnya.
Tip
Kata kunci untuk mengingat hierarkinya: TGT membuka pintu TGS, service ticket membuka pintu service. Client cukup login sekali untuk mendapat TGT, lalu memakai TGT itu untuk "mengetuk" TGS dan meminta tiket service sebanyak yang dia butuhkan — di sinilah keajaiban Single Sign-On berada.
Keytab adalah file yang menyimpan salinan kunci jangka panjang milik sebuah service — seperti menyimpan kunci rumah cadangan di tempat aman. File ini memungkinkan service diautentikasi tanpa meminta password interaktif. Kita akan mengelolanya di episode 7.
Keamanan Kerberos berdiri di atas satu asumsi: KDC adalah pihak ketiga yang tepercaya (trusted third party). Semua principal mempercayai KDC, dan KDC menjadi perantara yang menerbitkan bukti identitas. Model ini mirip dengan notaris: kedua pihak tidak saling mengenal, tapi keduanya percaya pada notaris — dan notaris menerbitkan surat yang diakui kedua belah pihak.
Hubungan kepercayaan dibangun lewat shared secret: setiap principal berbagi kunci jangka panjang hanya dengan KDC-nya. Ketika KDC menerbitkan tiket yang dienkripsi dengan kunci service, service tahu tiket itu asli karena hanya KDC (dan client yang benar) yang bisa membuatnya.
Untuk realm yang berbeda, ada transitive trust — jika realm A percaya pada realm B dan realm B percaya pada realm C, maka A bisa mengakses C melalui B. Ini difasilitasi oleh principal khusus krbtgt/REALM1@REALM2 yang menjadi "jembatan" antar realm, dan akan dibahas mendalam di episode 10 tentang cross-realm authentication.
Berikut rangkuman istilah yang akan kalian temui berulang kali:
| Istilah | Arti singkat |
|---|---|
| Realm | Batas administratif, penulisan huruf besar (EXAMPLE.COM) |
| Principal | Identitas unik: user@REALM atau service/host@REALM |
| KDC | Otoritas terpusat: AS + TGS + database |
| AS | Menerbitkan TGT saat login awal |
| TGS | Menerbitkan tiket service |
| TGT | "Master ticket" bukti login |
| Service ticket | Tiket akses ke satu service |
| Session key | Kunci sementara untuk satu sesi |
| Keytab | File penyimpan kunci jangka panjang service |
| Ticket cache | Lokasi penyimpanan ticket milik client |
| Authenticator | Bukti kepemilikan session key (dibahas di episode 3) |
| Preauthentication | Bukti awal sebelum tiket diterbitkan (episode 12) |
Simpan tabel ini — kalian akan kembali ke sini setiap kali menemui istilah asing di episode-episode berikutnya. Tools seperti klist dan kadmin.local akan menampilkan istilah-istilah ini secara langsung di layar.
Di episode ini kalian telah mengenal peta lengkap arsitektur Kerberos: arsitektur tiga kepala (client, KDC dengan AS+TGS+database, dan service server), realm sebagai batas administratif dengan konvensi huruf besar, principal sebagai identitas unik, perbedaan long-term key dan session key, dua jenis tiket (TGT dan service ticket), serta trust model dengan KDC sebagai pihak ketiga terpercaya.
Poin penting yang harus kalian bawa:
primary/instance@REALM.Di episode 3 selanjutnya kita akan membedah alur autentikasi Kerberos secara mendalam — tiga pertukaran pesan (AS-REQ/AS-REP, TGS-REQ/TGS-REP, AP-REQ/AP-REP), peran authenticator dan timestamp, replay cache, hingga SPNEGO sebagai pembungkus di aplikasi web. Semua konsep di episode ini akan "hidup" saat alur itu dijalankan. Sampai jumpa!