Kriptografi dengan Teknologi Java


Saat ini isu penyadapan menjadi isu lama yang muncul kembali. Masih ingat Indonesia dibuat marah dengan aksi yang dilakukan Australia yang menyadap sejumlah pejabat negara. Begitu juga dengan beberapa negara Eropa yang memprotes aksi Amerika yang menyadap mereka. Sepintas memang penyadapan adalah hal yang tidak etis apalagi dilakukan oleh negara sahabat. Namun, sebenernya penyadapan juga diperlukan untuk kepentingan suatu negara tak terkecuali.  Di sinilah terdapat dua kepentingan, yaitu mengamankan data dan mendapatkan data untuk kepentingan nasional.

Seharusnya penyadapan bukanlah hal yang  perlu dikhawatirkan jika kita menerapkan kebijakan untuk mengamankan data. Prosedur atau tata kelola sehebat apa pun tidak berarti apa-apa jika tidak memperhatikan hal yang terlihat kecil, tapi sebenernya cukup komplek diterapkan, yaitu mengamankan data.

Ada dua teknik yang dapat digunakan untuk mengamankan data, yaitu steganografi dan kriptografi. Pada steganografi dibuat seolah-oleh tidak ada pesan, di mana pesan disisipkan dalam suatu pesan tertentu, sebagai contoh digital watermarking di mana disisipkan pesan rahasia ke dalam sebuah gambar secara digital. Sedangkan kriptografi melakukan tranposisi kata-kata atau subtitusi kata-kata Pada artikel ini akan lebih fokus membahas kriptografi.

Contoh transposisi sederhana pada teknik kriptografi adalah pada pesan yang ditulis mendatar, namun dikirim secara vertikal. Sedangkan contoh substitusi adalah caesar cipher di mana kata digeser 3 huruf. Pada kasus kriptografi digital terdapat 3 komponen kriptografi, yaitu (1) plain teks, yaitu pesan/berita/teks asli; (2) cipher text, yaitu teks yang sudah diproses pengacakan atau diganti baik melalui transposition maupun substitusi;  dan (3) algoritma dan kunci di mana algoritma berperan dalam proses substitusi dan kunci menyatakan jumlah pergeserannya. Pada prinsipnya kriptografi ini memiliki 3 fungsi yaitu: (1) mengamankan data dengan mengacak data sehingga sulit untuk dibaca (confidentiality); (2) meyakinkan tidak ada perubahan data (Integrity); dan  (3) memastikan identitas seseorang dengan digital signature (Authentication).

Dalam kriptografi terdapat dua jenis sistem kriptografi, yaitu: (1) kriptografi simetrik di mana kunci untuk mengunci dan membuka adalah sama, yaitu menggunakan kunci private; dan (2) kriftogafi asimetrik di mana kunci untuk mengunci dan kunci untuk membuka berbeda. Di sini digunakan kunci private dan kunci publik.

Pada kriptografi simetrik yang menggunakan satu kunci mempunyai masalah yang harus diselesaikan, yaitu masalah bagaimana mendistribusi kunci sehingga pengiriman kunci membutuhkan saluran khusus dan masalah jumlah kunci yang akan meledak secara eksponensial. Namun demikian mekanisme kriptografi ini memiliki keuntungan seperti operasi yang cepat, sebagai contoh algoritma DES, IDEA, AES, Blowfish.

Pada Kriptografi asimetrik digunakan kunci yang berbeda untuk enkripsi dan dekripsi. Pada kriptografi ini jumlah kunci yang dihasilkan menjadi lebih sedikit dibandingkan enkripsi dengan kunci privat. Namun, kriptografi ini membutuhkan komputasi yang tinggi (membutuhkan waktu yang lebih lama), membutuhkan penyimpanan kunci publik (Certificate Authority) yang terpercaya, dan pengelolaan kunci bisa menjadi kompleks. Contoh algoritma kriptografi ini adalah RSA, Diffie-Hellman. kriptografi ini diterapkan pada Secure Socket Layer (SSL), yaitu HTTPS, SSH, atau STUNNEL dan diterapkan pada Pretty Good Privacy (PGP) dan GNU Privacy Guard (GPG).

Mengimplementasikan algoritma kriptografi bukanlah pekerjaan yang mudah. Namun demikian Java memberikan API untuk kriptografi bernama Java Cryptography API (JCA) yang memudahkan pengembang dalam menerapkan kriptografi dalam aplikasinya sehingga pengembang lebih fokus kepada bisnis logik aplikasi yang mereka bangun. API yang disediakan untuk kriptografi tersebut adalah:  (1) obyek cipher yang melakukan enkripsi (javax.crypto.Cipher); (2) kunci-kunci kripftografi (java.security.Key); (3) dan API untuk mengembalikan byte ke dalam obyek-obyek kunci (java.security.KeyFactory).

Langkah-langkah enkripsi di Java meliputi : (1) import paket API; (2) buat sebuah obyek cipher; (3) Inisiasi obyek cipher dengan skema yang diinginkan di dalam mode enkripsi dan dekripsi; (4) masukkan obyek data yang ingin dienkrip; (3) baca teks cipher; dan (4) dekripsi data tersebut dengan cara yang sama.

Berikut ini contoh kode program Java yang melakukan kriptografi simetrik dengan menggunakan DES.

Symetric Java Cripto

Keluaran dari program tersebut ditunjukkan sbagai berikut.

Symetric Java Cripto Output

Berikut ini contoh kode program Java yang melakukan kriptografi asimetrik dengan menggunakan RSA.

Asymetric Java Cripto

Keluaran dari program tersebut ditunjukkan sebagai berikut.

Asymetric Java Cripto Output


Tinggalkan Balasan