Tutorial Pemrograman Kriptografi C++ dan Java

Zae
(Sumber : Buku Kriptografi,Rinaldi Munir)
Protokol: aturan yang berisi rangkaian langkah-langkah, yang melibatkan dua atau lebih orang, yang dibuat untuk menyelesaikan suatu kegiatan.

Protokol kriptografi: protokol yang menggunakan kriptografi. Orang yang berpartisipasi dalam protokol kriptografi memerlukan protokol tersebut misalnya untuk:
- berbagi komponen rahasia untuk menghitung sebuah nilai,
- membangkitkan rangkaian bilangan acak,
- meyakinkan identitas orang lainnya (otentikasi),
- dll

• Protokol kriptografi dibangun dengan melibatkan beberapa algoritma kriptografi.

• Sebagian besar protokol kriptografi dirancang untuk dipakai oleh kelompok yang terdiri dari 2 orang pemakai, tetapi ada juga beberapa protokol yang dirancang untuk dipakai oleh kelompok yang terdiri dari lebih dari dua orang pemanaki (misalnya pada aplikasi teleconferencing)

• Untuk mendemonstrasikan protokol kriptografi, kita menggunakan nama-nama pemain sebagai berikut:

Alice : orang pertama (dalam semua protokol)
Bob : orang kedua (dalam semua protokol)
Carol : orang ketiga dalam protokol tiga- atau empat- orang
Dave : orang keempat dalam protokol empat-orang
Eve : penyadap (eavesdropper)
Trent : juru penengah (arbitrator) yang dipercaya

1.Protokol Komunikasi dengan Sistem Kriptografi Simetri.

Protokol 1:
(1) Alice dan Bob menyepakati algoritma kriptografi simetri yang akan digunakan.
(2) Alice dan Bob menyepakati kunci yang akan digunakan.
(3) Alice menulis pesan plainteks dan mengenkripsinya dengan kunci menjadi cipherteks.
(4) Alice mengirim pesan cipherteks kepada Bob.
(5) Bob mendekripsi pesan cipherteks dengan kunci yang sama dan membaca plainteksnya.

•Eve mendengar semua percakapan antara Alice dan Bob pada protokol ini.
-jika Eve menyadap transmisi pesan pada langkah (4), ia harus mencoba mengkriptanalisis cipherteks untuk memperoleh plainteks tanpa mengetahui kunci.
-jika ia mendengar pembicaraan pada langkah (1)dan (2), maka ia mengetahui algoritma dan kunci yang digunakan, sehingga ia dapat mendekripsi cipherteks dengan kunci tsb.

•Protokol kriptografi di atas tidak bagus karena kunci harus tetap rahasia sebelum, sepanjang, dan setelah protokol. Langkah (1) dapat dilakukan dalam mode publik, namun langkah (2) harus dilakukan dalam mode rahasia. Sistem kriptografi kunci-publik dapat memecahkan masalah distribusi kunci ini.

2.Protokol Komunikasi dengan Sistem Kriptografi Kunci-Publik.

Protokol 2:
(1)Alice dan Bob menyepakati algoritma kriptografi kunci-publik yang akan digunakan.
(2)Bob mengirimi Alice kunci publiknya (kunci publik Bob).
(3)Alice mengenkripsi pesannya dengan kunci publik Bob kemudian mengirimkannya ke Bob
(4)Bob mendekripsi pesan dari Alice dengan kunci rahasia miliknya (kunci rahasia Bob).

•Pada umumnya, pengguna di jaringan menyepakati algoritma kriptografi kunci-publik yang digunakan. Setiap pengguna jaringan mempunyai kunci publik dan kunci rahasia, yang dalam hal ini kunci publik dipublikasikan melalui basisdata yang dapat diakses bersama. Dengan demikian, protokol kriptografi kunci-publik menjadi lebih sederhana sebagai berikut:

Protokol 3:
(1)Alice mengambil kunci publik Bob dari basisdata kunci-publik.
(2)Alice mengenkripsi pesannya dengan kunci publik Bob kemudian mengirimkannya kepada Bob.
(3)Bob mendekripsi pesan dari Alice dengan kunci rahasia miliknya (kunci rahasia Bob).

•Eve yang mendengar pembicaraan selama protokol ini akan mendapatkan kunci publik Bob, tetapi Eve tidak dapat mendekripsi cipherteks karena ia tidak mengetahui kunci rahasia Bob.

•Dalam dunia nyata, sistem kriptografi kunci-publik bukanlah pengganti sistem kriptografi sismetri. Sistem kriptografi kunci-publik tidak digunakan untuk mengenkripsi pesan, melainkan untuk mengenkripsi kunci pada sistem kriptografi simetri.

•Dengan sistem kriptogfai kunci-publik, maka pertukaran kunci pada sistem kriptografi simetri dapat dilakukan dengan protokol kriptografi kunci-publik sebagai berikut:

Protokol 4:

(1)Bob mengirimi Alice kunci publiknya.
(2)Alice membangkitkan kunci simetri K, mengenkripsikannya dengan kunci publik (PK) Bob, dan mengirimkannya ke Bob,

EPK(K)

(3)Bob mendekripsi pesan dari Alice dengan menggunakan kunci rahasianya (SK) untuk mendapatkan kembali kunci simetri K,

DSK(EPK(K)) = K

(4)Baik Alice dan Bob dapat saling berkirim pesan dengan sistem kriptografi simetri dengan menggunakan kunci K.

•Dua gabungan sistem kriptografi yang digunakan pada protokol 4 di atas disebut hybrid cryptosystem dan kunci sismetri yang dipertukarkan disebut session key.

•Dengan protokol 4 di atas, kita katakan bahwa sistem kriptografi kunci-publik berhasil memecahkan masalah manajemen kunci yang sangat penting, yaitu pertukaran kunci.

3.Protokol untuk Sidik Dijital (Digital Signature)


a.Menandatangani Dokumen dengan Sistem Kriptografi Simetri dan Seorang Juru Penengah.

Alice ingin menandatangani dokumen digital (pesan atau arsip) dan mengirimkannya ke Bob. Ia meminta Trent sebagai juru penengah (misalnya pengacara) antara Alice dan Bob (diperlukan jika sewaktu-waktu ada pertengkaran antara Alice dan Bob). Trent akan memberikan sidik berupa sertifikasi terhadap dokumen yang dikirim oleh Alice. Sistem kriptografi yang digunakan adalah simetri. Trent memberikan kunci rahasia KA kepada Alice dan kunci rahasia KB kepada Bob (KA dan KB berbeda).

Protokol 5:
(1)Alice mengenkripsi dokumen dengan KA dan mengirimkannya kepada Trent.
(2)Trent mendekripsi dokumen dari Alice dengan KA.
(3)Trent menambahkan pada dokumen yang sudah didekripsi sebuah pernyataan sertifikasi bahwa dia telah menerima dokumen itu dari Alice, kemudian mengenkripsi keseluruhannya dengan KB.
(4)Trent mengirim cipherteks yang dihasilkan kepada Bob.
(5)Bob mendekripsi cipherteks dengan KB. Ia membaca dokumen dan sertifikasi dari Trent bahwa Alice yang mengirimkan dokumen tersebut.

•Karakteristik pemberian tanda tangan dengan prtotokol 5 adalah sbb:
1.Sidik (signature) pasti otentik, karena Trent adalah juru penegah yang dipercaya, Trent mengetahui bahwa dokumen dari Alice. Sertifikasi dari Trent berlaku sebagai bukti bagi Bob.
2.Sidik tidak dapat digunakan lagi untuk dokumen yang lain. Jika Bob menggunakan sertifikasi dari Trent untuk dokumen yang lain, maka kecurangan Bon ini dapat diketahui oleh Trent sbb:
-Trent meminta dokumen tersebut dari Bob.
-Trent mengenkripsi dokumen tersebut dengan KA dan membandingkannya dengan cipherteks dari Alice.
-Jika hasil enkripsi dokumen dari Bob tidak sama dengan cipherteks dari Alice, maka Bob telah mekakukan kecurangan.

3.Dokumen yang sudah ditandatangani tidak dapat diubah. Trent dapat membuktikan bahwa dokumen sudah berubah dengan cara yang sama seperti 2 di atas.
4.Sidik tidak dapat disangkal. Jika Alice menyangkal bahwa dia yang mengirim dokumen, sertifikasi dari Trent dapat menyanggah sangkalan Alice.


•Protokol 5 di atas tidak praktis karena membutuhkan pihak ketiga (Trent) untuk memberikan sertifikasi keabsahan dokumen dan prosesnya memakan waktu.


b. Menandatangani Dokumen dengan Sistem Kriptografi Kunci-Publik.

Protokol 6:
(1)Alice mengenkripsi dokumen dengan kunci rahasianya. Ini sekaligus juga berarti Alice telah memberikan sidik (signature) pada dokumennya.
(2)Alice mengirim dokumen yang terenkripsi kepada Bob.
(3)Bob mendekripsi dokumen dengan kunci publik Alice. Ini sekaligus juga berarti Bob telah memverifikasi sidik pada dokumen.

•Protokol 6 tidak membutuhkan pihak ketiga (Trent) untuk memberikan tandatangan (Trent hanya diperlukan untuk mensertifikasi bahwa kunci publik Alice memang benar milik Alice).

•Protokol 6 memiliki karakteristik yang sama seperti pada protokol 5.


c. Menandatangani Dokumen dengan Sistem Kriptografi Kunci-Publik dan Fungsi Hash Satu-Arah

Protokol 7:
(1)Alice meringkas dokumennya menjadi message digest dengan fungsi hash satu-arah.
(2)Alice mengenkripsi message digest dengan kunci rahasianya. Hasil enkripsinya disertakan (embedded) pada dokumen. Ini berarti Alice telah memberi sidik dijital pada dokumennya.
(3)Alice mengirim dokumen yang sudah diberi sidik dijital kepada Bob.
(4)Bob meringkas dokumen dari Alice menjadi mesaage digest dengan fungsi hash yang sama. Bob mendekripsi sidik dijital yang disertakan pada dokumen Alice. Jika hasil dekripsinya sama dengan message digest yang dihasilkan, maka sidik dijital tersebut sah.

.Jika dokumen yang sama ingin ditandatangani oleh dua orang (Alice dan Bob), maka orang ketiga, Carol, dibutuhkan pada proses verifikasi. Protokolnya adalah sebagai berikut:

Protokol 8:

(1)Alice memberi sidik dijital pada message digest dari dokumen.
(2)Bob memberi sidik dijital pada message digest dari dokumen.
(3)Bob mengirimkan sidik dijitalnya kepada Alice.
(4)Alice mengirim dokumen yang sudah diberi sidik dijitalnya dan sidik dijital dari Bob kepada Carol.
(5)Carol memverifikasi sidik dijital Alice dan sidik dijital Bob (Carol mengetahui kunci publik Alice dan kunci publik Bob).


4.Protokol untuk Sidik Dijital dengan Enkripsi


•Protokol ini dapat dianalogikan seperti pengiriman surat yang menggunakan amplop tertutup. Tanda tangan pada surat memberikan bukti kempemilikan, hal ini sama dengan fungsi sidik dijital pada pada dokumen elektrinis. Sedangkan amplop memberikan perlindungan keamanan (privacy), hal ini sama dengan fungsi enkripsi pada dokumen.

•Sidik dijital diberikan dengan menggunakan kunci rahasia pengirim (lihat protokol 6) dan dokumen dienkripsi dengan kunci publik penerima.

•Protokolnya adalah sbb:

Protokol 9:

(1)Alice menandatangi dokumen atau pesan (M) dengan menggunakan kunci rahasianya (SK-A).
SSK-A(M)
(2)Alice mengenkripsi dokumen yang sudah ditandatangi dengan kunci publik Bob (PK-B) dan mengirimkannya kepada Bob
EPK-B(SSK-A(M))
(3)Bob mendekripsi cipherteks yang diterima dengan kunci rahasianya (SK-B).
DSK-B(EPK-B(SSK-A(M))) = SSK-A(M))
(4)Bob melakukan verifikasi dengan mendekripsi hasil pada langkah 3 dengan menggunakan kunci publik Alice dan sekaligus mendapatkan kembali dokumen yang belum dienkripsi.
VPK-A( SSK-A(M)) = M

•Menandatangani dokumen sebelum mengenkripsikannya adalah cara yang alamiah. Dalam kehidupan sehari-hari, kita menulis surat, menandatanganinya, dan memasukkannya ke dalam amplop. Bila Alice memasukkan surat ke dalam amplop, kemudian menandatangani amplop, maka keabsahannya diragukan. Jika Bob memperlihatkan surat Alice tersebut kepada Carol, maka Carol mungkin menuduh Bob berbohong tentang isi surat tersebut.
•Alice tidak harus menggunakan menggunakan kunci publik/kunci rahasia yang sama untuk enkripsi dan tanda tangan. Alice dapat menggunakan dua pasang kunci: sepasang untuk enkripsi dan sepasang untuk pemberian tanda tangan.
•Misalkan Bob ingin mengkonfirmasi bahwa dia telah menerima dokumen dari Alice. Maka, Bob mengirimkan konfirmasi “tanda terima” kepada Alice. Protokol pengiriman pesan tanda terima adalah sebagai berikut:
Protokol 10:
(1)Alice menandatangi dokumen atau pesan (M) dengan menggunakan kunci rahasianya (SK-A), mengenkripsikannya dengan kunci publik Bob (PK-B) dan mengirimkannya kepada Bob
EPK-B(SSK-A(M))
(2)Bob mendekripsi cipherteks yang diterima dengan kunci rahasianya (SK-B), memverifikasi sidik dijital dengan kunci publik Alice dan sekaligus mendapatkan kembali dokumen yang belum dienkripsi.
VPK-A(DSK-B(EPK-B(SSK-A(M)))) = M
(3)Bob menandatangani dokumen (M) dengan kunci rahasianya (SK-B), mengenkripsikannya dengan kunci publik Alice (PK-A), dan mengirimkannya ke Alice.
EPK-A(SSK-B(M))
(4)Alice mendekripsi dokumen dengan kunci rahasianya (SK-A) dan memverifikasi sidik dijital dengan kunci publik Bob (PK-B).
VPK-B(DSK-A(EPK-A(SSK-B(M)))) = M ’
Jika M ’ yang dihasilkan sama dengan dokumen yang dikirim oleh Alice (M), maka Alice tahu bahwa Bob menerima dokumennya dengan benar.

tag : kriptografi,kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi, kriptografi