MODUL 4
KRIPTOGRAFI DENGAN OPENSSL
SYMMETRIC ENCRYPTION DAN MESSAGE
INTEGRITY
Dalam praktikum kali ini, kita akan menggunakan perintah OpenSSL seperti berikut:
enc dgst rand speed
openssl enc
Perintah OpenSSL enc berguna untuk meng-encrypt dan meng-decrypt blok data dengan
beberapa rutin cipher yang simetris. Untuk melihat secara detil perintah enc, lakukan
perintah berikut ini:
Openssl enc –h
dimana:
-encryption_algorithm, menunjukkan algoritma symmetric cryptography yang
digunakan untuk encrypt dan/atau decrypt (misalnya: -aes128, -aes-cbc-256, -rc4,
dimana detilnya dapat didapatkan dari perintah openssl enc –h);
-e menunjukkan bahwa pengoperasian adalah encryption.
-d menunjukkan bahwa pengoperasian adalah decryption.
Network Security Prodi Telekomunikasi PENS
openssl dgst
Perintah OpenSSL dgst untuk menghitung blok digest data yang menggunakan algoritma
yang berbeda. Untuk melihat daftar parameter, lakukan perintah berikut ini:
openssl dgst –h
sedangkan detil desripsi perintah dgst, seperti biasanya melalui perintah: man dgst.
Dan sintak dari perintah dgst adalah sebagai berikut:
Openssl dgst [-digest_algorithm][-out file_output]
file_input
dimana:
-digest_algorithm, menunjukkan algoritma digest (misalnya: -md5, dimana detilnya
dapat didapatkan dari perintah openssl dgst –h);
-out file_output menunjukkan file hasil operasi algoritma digest.
cile_input menunjukkan file yang berisi data dalam proses perhitungan digest
(Catatan: dgst tidak menggunakan option -in, tetapi file yang berisi data dimana
digest membutuhkan untuk dihitung sampai pada parameter terakhir dari perintah).
-binary menunjukkan bahwa output harus diciptakan dalam format binary. Secara
default, OpenSSL menciptakan output dalam format cetak.
openssl speed
perintah openssl speed dapat digunakan untuk mengukur kinerja dari berbagai algoritma
yang diimpelementasikan oleh OpenSSL. Untuk mengukur kinerja dari algoritma tertentu,
digunakan perintah berikut:
openssl speed algorithm_name
openssl rand
perintah ini digunakan untuk menciptakan sebuah pseudo-random string dengan satuan
nbyte dan disimpan dalam file file_name.
openssl rand –out file_name nbyte
perintah lainnya
Dalam percobaan, pertukaran data antar komputer adalah sangat penting dan sering kali
terjadi. Untuk tujuan ini, maka perlu adanya skenario, dimana satu entitas bertindak
sebagai client dan lainnya sebagai server. Dalam hal ini scp utility sebagai client dan ssh
server sebagai server.
Network Security Prodi Telekomunikasi PENS
1.4 PERCOBAAN
1. Percobaan symmetric cryptography
1.1 Symmetric encryption
PERCOBAAN 1.
Pada percobaan ini, kita akan menggunakan OpenSSL yaitu enc untuk meng-encrypt blok
data. Dari file teks ptext yang berisi pesan yang akan di-encrypt, misalnya “pesan
rahasia”. Setelah tercipta file ptext, cek bahwa ukurannya tepat 13 byte (ukuran
tergantung dari isi pesan).
Data yang berada dalam file ptext dapat di-encrypt menggunakan algoritma AES dengan
perintah sebagai berikut, dimana IV diciptakan oleh OpenSSL dari password yang dientri.
Teks yang ter-encrypt akan disimpan dalam file ctext.
openssl enc –e –in ptext –out ctext –aes-128-cbc –nosalt –p
selanjutnya akan ditanyakan password. Catatan bahwa password ini hanya digunakan
oleh OpenSSL enc untuk menciptakan sebuah key dan IV. Anda akan mendapatkan
tampilan kira-kira seperti berikut:
enter aes-128-cbc encryption password:
Verifying – enter aes-128-cbc encryption password:
key=E35272828788388388090F5AB88B
iv =A1236242279808C3A8290F5AE8FE
Silahkan ganti perintah di atas dengan menggunakan algoritma DES dan 3DES,
kemudian catat outputnya. Tulis perintah dengan menggunakan DES dan 3DES dalam
kotak berikut ini.
PERTANYAAN:
Apa saja yang dibutuhkan untuk menerapkan algoritma DES, 3DES dan AES ?
(petunjuk: pikirkan ukuran dari data yang akan di-encrypt apakah lebih kecil atau lebih
besar dari ukuran blok algoritma). Tulis kemungkinan-kemungkinan dan perintahnya
dalam kotak di bawah ini.
Berapa panjang file ctext yang dibangkitkan ? bandingkan panjang file ctext dengan
panjang file ptext. Apakah ada perbedaan ?
Sebagai kesimpulan: apa yang terjadi ketika perintah berikut ini digunakan untuk meng-
encrypt pesan ini: “pesan ini adalah sangat rahasia jangan sampai bocor” ?
Coba jalankan perintah tersebut dengan pesan lain. Apakah Anda mendapatkan error ?
Apa yang terjadi jika Anda menjalankan perintah berikut ini:
openssl enc –e –in ptext –out ctext_rc4 –K <key> -iv 0 –rc4 –p –base64
sekarang cari perintah untuk men-decrypt pesan yang sudah ter-encrypt untuk file
ctext_rc4 dan file ctext_aes_128_cbc, kemudian tulis perintah yang digunakan untuk
men-decrypt tersebut dalam kotak berikut. Simpan hasil proses decrypt dalam sebuah file
dtext_rc4 dan dtext_aes_128_cbc.
Verifikasi apakah decryption tersebut benar, cek isi dari file dtext_rc4 dan
dtext_aes_128_cbc.
b. Ajeng mengirim pesan yang sudah ter-encrypt dalam file ctext ke Citra dengan
menggunakan perintah berikut:
c. Citra mencoba untuk mendapatkan key (dengan teknik brute force attack) yang
digunakan oleh Ajeng untuk meng-encrypt pesan teks.
PERTANYAAN:
Apakah Anda mendapatkan kesulitan dalam memperoleh key yang digunakan ?
mengapa?
hexedit ctext
Bentuk tiga grup; Ajeng, Bayu, dan Citra. Kemudian proses permasalahan berikut ini:
a. Ajeng dan Bayu memilih key.
b. Ajeng menyiapkan pesan baru yang hanya berisi digit desimal dan meng-encrypt
nya dengan menggunakan algoritma RC4 dan key di-share ke Bayu.
c. Ajeng mengirimkan pesan yang ter-encrypt ke Citra. Citra berusaha untuk
memodifikasi pesan yang ter-encrypt tersebut sebelum mengirimkannya ke Bayu.
d. Bayu harus memeriksa apakah pesan yang ter-encrypt yang diterimanya dari Citra
sudah dalam keadaan dimodifikasi atau tidak.
PERTANYAAN:
Apa yang harus dilakukan oleh Citra terhadap pesan yang dikirim Ajeng, sedemikian
rupa sehingga pesan yang telah dimodifikasinya tidak dapat diketahui oleh Bayu ?
Apa yang terjadi jika Anda menggunakan AES-128-CBC sebagai ganti dari RC4 ?
(cobalah)
Apa yang terjadi jika Anda menggunakan AES-128-ECB sebagai ganti dari RC4 ?
(cobalah)
PERTANYAAN:
Apakah Anda dapat menemukan pesan teks mana yang telah di-encrypt dengan cara
membandingkannya dengan pesan ciphertext dengan dua pesan teks ?
Kemudian isi Tabel 1 dengan hasil yang didapatkan ketika meng-encryptI file-file
tersebut dengan algoritma yang berbeda-beda dan dengan panjang yang berbeda. Untuk
mengevaluasi waktu yang dibutuhkan oleh operasi encryption, gunakan perintah time
berikut:
time the_openssl_encryption_command
PERTANYAAN:
Waktu mana yang terbesar ?
Network Security Prodi Telekomunikasi PENS
Apakah waktu untuk decryption juga akan berbeda dengan menggunakan algoritma yang
ada dalam Tabel 1 tersebut ? waktu mana yang terbesar ? (cobalah).
OpenSSL juga menyediakan perintah untuk mengukur waktu contoh:
Sekarang dengan menggunakan perintah speed dari OpenSSL, bandingkan hasilnya untuk
algoritma di Tabel 1. Mana yang paling besar waktunya ?
2. Algoritma digest
2.1 Komputasi dan verifikasi dari message digest
PERCOBAAN 6.
Buat pesan misalnya “pesan percobaan fungsi digest!”, simpan dalam file teks msg, dan
hitung digest MD5, SHA1, SHA256. Simpan hasilnya ke dalam file MD5dgst, SHA1dgst
dan SHA256dgst. Cari perintah OpenSSL untuk menghitung digest dan tulis dalam kotak
di bawah ini.
PERTANYAAN:
Sekarang coba modifikasi pesan misalnya dengan menghapus tanda “!” dalam pesan,
kemudian hitung kembali digest-nya. Apa yang dapat Anda bandingkan dengan hasil di
sebelumnya ?
Misalkan pesan yang akan dihitung digest-nya adalah “passwordku123”. Bagaimana
Anda dapat menggunakan symmetric cryptography AES untuk menghitung digest dari
pesan tersebut ?
Bandingkan hasil di atas dengan penggunaan utility crypt yang sudah disediakan dalam
Linux. Deskripsi lengkapnya silahkan menggunakan perintah: man crypt
Network Security Prodi Telekomunikasi PENS
PERTANYAAN:
Bagaimana Ajeng menggunakan perintah OpenSSL dgst untuk menghitung keyed-digest
dalam pesan msg tersebut ? apa yang Bayu butuhkan agar ia dapat memverifikasi keyed-
digest tersebut ? kapan saatnya Bayu harus melakukan proses verifikasi keyed-digest
yang dikirimkan oleh Ajeng ?
2.4 Kinerja
PERCOBAAN 9.
Kali ini percobaan kita menghitung kinerja dari algoritma digest dengan menggunakan
perintah OpenSSL. Dengan menggunakan metode yang sama seperti dalam sub bab 1.5.
Lengkapi Tabel 2 di bawah ini.
Network Security Prodi Telekomunikasi PENS
PERTANYAAN:
Bandingkan hasil yang Anda peroleh dalam percobaan ini dengan hasil yang diperoleh
dalam sub bab 1.5 (algoritma symmetric cryptography).