Anda di halaman 1dari 8

Network Security Prodi Telekomunikasi PENS

MODUL 4
KRIPTOGRAFI DENGAN OPENSSL
SYMMETRIC ENCRYPTION DAN MESSAGE
INTEGRITY

1.1. TUJUAN PEMBELAJARAN:


1. Mahasiswa memahami teknik symmetric cryptography
2. Mahasiswa memahami algoritma digest
3. Mahasiswa memahami cara penanganan terhadap algoritma tersebut.

1.2. DASAR TEORI


Dalam hal ini, tool yang digunakan adalah open source library OpenSSL
(http://www.openssl.org/), dimana library ini dapat dijalankan di berbagai O/S termasuk
Linux dan Windows.
Semua percobaan menggunakan dasar perintah OpenSSL. Library ini mendukung
berbagai macam fungsi kriptografi yang dapat dijalankan pada terminal console dengan
perintah umum:
openssl command [command_opts][command_args]

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

atau: man enc.


Berikut adalah deskripsi singkat dari perintah yang digunakan:
openssl enc [-encryption_algorithm][-e][-d][-K key][-
iv vector][-in file_input][-out file_output][-nopad]

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

 -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.
 -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.

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.3 TUGAS PENDAHULUAN


1. Berikan beberapa contoh penggunaan symmetric cryptography ?
2. Berikan contoh serangan pada symmetric cryptography ?

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” ?

openssl enc –e –in ptext –out ctext_aes_128_cbc –K <key> -iv <iv>


-aes-128-cbc –nopad –p
Network Security Prodi Telekomunikasi PENS

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.

1.2 Brute force attack


PERCOBAAN 2.
Pada percobaan ini, kita akan mencoba untuk memecahkan algoritma symmetric
cryptography. Bentuk dua grup; Ajeng dan Citra, kemudian lakukan prosedur berikut ini:
a. Ajeng menyiapkan sebuah pesan baru dan menyimpannya dalam file ptext.
Kemudian Ajeng memilih key, yang berupa angka hexadesimal (misal
<short_key>) dan meng-encrypt pesan dengan perintah:

openssl enc –e –in ptext –out ctext –K <short_key> -iv 0 –rc4

b. Ajeng mengirim pesan yang sudah ter-encrypt dalam file ctext ke Citra dengan
menggunakan perintah berikut:

scp ctext gaguk@IPaddress_Citra:/home/gaguk

c. Citra mencoba untuk mendapatkan key (dengan teknik brute force attack) yang
digunakan oleh Ajeng untuk meng-encrypt pesan teks.

Sekarang ambil file bruteforce.enc: yang diencrypt dengan menggunakan perintah


OpenSSL di atas.

PERTANYAAN:
Apakah Anda mendapatkan kesulitan dalam memperoleh key yang digunakan ?
mengapa?

1.3 Memodifikasi pesan ter-encrypt


PERCOBAAN 3.
Sekarang coba modifikasi pesan ter-encrypt. Untuk memodifikasi file binary gunakan
editor heksadesimal, hexedit:

hexedit ctext

(Tekan F1 untuk melihat perintah dalam hexedit)


Network Security Prodi Telekomunikasi PENS

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)

1.4 Mode operasi algoritma symmetric encryption


PERCOBAAN 4.
Pada percobaan ini, kita akan menggunakan file ecb*. Dua file pertama berisi dua pesan
teks. File ketiga adalah pesan ciphertext:

openssl enc –e –in ecb_plain_X –out ecb_enc –K key –iv 0 –des-ecb

PERTANYAAN:
Apakah Anda dapat menemukan pesan teks mana yang telah di-encrypt dengan cara
membandingkannya dengan pesan ciphertext dengan dua pesan teks ?

1.5 Kinerja algoritma symmetric encryption


PERCOBAAN 5.
Pada percobaan ini, kita akan mengevaluasi baik waktu eksekusi dan panjang data dari
algoritma yang digunakan.
Buatlah file-file dengan ukuran yang berbeda-beda (misal: 100B, 10kB, 1MB, 100MB),
untuk tujuan ini gunakan perintah berikut:

openssl rand –out r.txt size_in_bytes

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:

openssl speed aes-128-cbc

Sekarang dengan menggunakan perintah speed dari OpenSSL, bandingkan hasilnya untuk
algoritma di Tabel 1. Mana yang paling besar waktunya ?

100B 10kB 1MB 100MB


DES-CBC
DES-OFB
DES-EDE-
CBC
RC4
AES-128-
CBC
AES-256-
CBC
AES-256-
OFB
Tabel 1. Kinerja dari beberapa algoritma dalam symmetric encryption

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

2.2 Aplikasi dari algoritma digest: keyed digest


PERCOBAAN 7.
Misalnya Ajeng ingin membangkitkan sebuah key digest dari sebuah pesan yang akan
dikirimkan ke Bayu. Ajeng membuat sebuah pesan teks misalnya “coba pesan dengan
keyed digest!” ke dalam file msg.

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.3 Aplikasi dari algoritma digest: file integrity


PERCOBAAN 8.
Kali ini tool yang digunakan adalah sha1sum dan sha1deep untuk menghitung dengan
mudah fungsi hash dari sebuah atau beberapa file. Coba buat directory baru, beri nama
tree, kemudian coba buat beberapa file teks dan subdirectory dalam directory tree
tersebut, copy file gen_tree.sh ke dalam directory tree dan gunakan script tersebut.
Tuliskan ke dalam kotak di bawah ini perintah yang digunakan untuk menghitung digest
dari semua file yang ada di directory tree.

Bentuk dua grup, Ajeng dan Bayu.


a. Ajeng konek secara remote ke PC Bayu melalui SSH dan memodifikasi beberapa file
dalam directory tree.
b. Bayu kemudian mencari file-file mana saja yang telah dimodifikasi oleh Ajeng.
PERTANYAAN:
Apa yang akan dilakukan oleh Ajeng dalam memodifikasi file-file tersebut, sedemikian
rupa sehingga Bayu tidak dapat mengetahui file-file mana saja yang telah dirubah oleh
Ajeng ?
Apa yang harus dilakukan oleh Bayu untuk menjaga dari attack yang dilakukan oleh
Ajeng ? sedikitnya ada dua cara yang dapat dilakukan oleh Bayu. Tulis perintah untuk
mengatasi attack tersebut di dalam kotak di bawah ini.

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

100B 10kB 1MB 100MB


panjang waktu panjang waktu panjang waktu panjang waktu
MD2
MD5
SHA1
RMD160
SHA256
Tabel 2. Panjang digest dan waktu kalkulasi untuk mengukur kinerja algoritma digest

PERTANYAAN:
Bandingkan hasil yang Anda peroleh dalam percobaan ini dengan hasil yang diperoleh
dalam sub bab 1.5 (algoritma symmetric cryptography).

3. Bagaimana kombinasi keduanya?


Dari percobaan yang sudah dilakukan dalam point 1 (algoritma symmetric cryptography)
dan point 2 (algoritma message digest) di atas, bagaimana Anda dapat menggunakan
perintah OpenSSL yang digunakan untuk tujuan mengirimkan pesan atau dokumen yang
sifatnya sangat rahasia, sensitive, dan privasi ke kolega Anda ? Dan bagaimana pula
dengan proses verifikasi atas pesan atau dokumen yang Anda kirim tadi ?

1.5 LAPORAN RESMI


1. Berikan kesimpulan hasil praktikum yang anda lakukan.
2. Simpulkan perbedaan sistem kriptografi simetris berbasis block dan stream.

Anda mungkin juga menyukai