MODUL 10
KRIPTOGRAFI DENGAN OPENSSL
SYMMETRIC ENCRYPTION
1.1. TUJUAN PEMBELAJARAN:
1. Mahasiswa memahami teknik symmetric cryptography
2. Mahasiswa memahami algoritma digest
3. Mahasiswa memahami cara penanganan terhadap algoritma tersebut.
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.
-K key menunjukkan key yang digunakan dalam operasi symmetric cryptography.
-iv vector menunjukkan inisialisasi vector yang digunakan.
-in file_input menunjukkan file yang berisi data yang di-encrypt atau di-decrypt.
-out file_output menunjukkan file hasil operasi encryption atau decryption.
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
-nopad menunjukkan bahwa padding tidak harus digunakan (Catatan bahwa jika
option ini digunakan dalam symmetric block algorithm, maka panjang dari data yang
di-encrypt seharusnya kelipatan dari panjang blok algoritma.
-p digunakan untuk menghasilkan standar output key dan menginisialisasi vector.
-nosalt , salt terdiri bit acak yang digunakan sebagai salah satu masukan untuk kunci fungsi
turunan.
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.
1.4 PERCOBAAN
1. Bangunlah jaringan seperti berikut :
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
NB:
Jika belum terinstall maka lakukan perintah berikut
# apt-get install openssl
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:
NB:
Untuk aes-128
Key = MD5(passwd + salt)
IV = MD5(Key + Password + Salt)
NB:
ctext adalah hasil proses dari enkripsi.
3. Silahkan ganti perintah di atas dengan menggunakan algoritma DES dan 3DES dan
aes-128-ecb, kemudian catat outputnya. Tulis perintah dengan menggunakan DES dan
3DES.
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
NB:
Untuk mengetahui perintah cipher gunakan : openssl help
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).
Berapa panjang file ctext yang dibangkitkan ? bandingkan panjang file ctext
dengan panjang file ptext. Apakah ada perbedaan ?
4. Sebagai kesimpulan: apa yang terjadi ketika perintah berikut ini digunakan untuk
meng-encrypt pesan ini: “pesan ini adalah sangat rahasia jangan sampai bocor” ?
NB:
Nilai key dan iv dalam bentuk hexadesimal, misal 123ABC
Coba jalankan perintah tersebut dengan pesan lain. Apakah Anda mendapatkan error ?
Mengapa terjadi error, cobalah ganti –nopad dengan –nosalt, apa yg dapat anda
simpulkan.
5. Apa yang terjadi jika Anda menjalankan perintah berikut ini (stream cipher)
openssl enc –e –in ptext –out ctext_rc4 –K <key> -iv 0 –rc4 –p –base64
NB:
Base64 adalah format pengiriman data pada protokol TCP/IP
PERTANYAAN:
Amati dan catat ukuran file hasil enkripsi dari kedua proses diatas
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
hexedit ctext
NB:
Apabila belum terinstall, ketik perintah berikut : # apt-get install hexedit
Perintah penting di hexedit:
F1 untuk mengetahui daftar perintah
F2 untuk menyimpan hasil edit
Ctrl-X untuk keluar
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)
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
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
Misal:
time openssl aes-128-cbc –in r.out
PERTANYAAN:
Waktu mana yang terbesar ?
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 ?
3.Lakukan pengiriman data file hasil enkripsi yaitu ctextasli dan ctextbase64 ke PC
Server. Pada PC Server jalankan wireshark “tidak” pada mode promiscuous.
Proses pengiriman file dengan ftp, untuk mengirim data gunakan perintah put.
4.Amati pada wireshark, hasil pengiriman data mana yang sama dengan poin 2.
zenhadi@eepis-its.edu
Network Security Prodi Telekomunikasi PENS
zenhadi@eepis-its.edu