Anda di halaman 1dari 8

Network Security Prodi Telekomunikasi PENS

MODUL 5
KRIPTOGRAFI DENGAN OPENSSL
ASYMMETRIC CRYPTOGRAPHY

1.1. TUJUAN PEMBELAJARAN:


1. Mahasiswa memahami teknik asymmetric cryptography
2. 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:

genrsa rsa rsaautl rand

Perintah ini akan dijelaskan pada percobaan ini. Sebagai tambahan, pada beberapa
perintah dalam percobaan kali ini, Anda juga akan menggunakan perintah openssl enc
dan dgst, yang sudah dipelajari pada Lab03. Untuk deskripsi lengkap, silahkan
menggunakan perintah man openssl.

openssl genrsa
Untuk melakukan operasi kriptografi asimetris sederhana dengan menggunakan
algoritma RSA, pertama Anda harus membangkitkan sepasang key RSA dengan perintah
openssl genrsa, dengan sintak sebagai berikut:

openssl genrsa [-out filename] [other_options] [numbits]

dimana:
 -out, menyimpan pasangan key yang dibangkitkan oleh algoritma RSA ke dalam file
menunjukkan filename;
 numbits menunjukkan panjang N bit (misalnya RSA modulo);
Network Security Prodi Telekomunikasi PENS

Catatan: perintah man openssl, membantu kita dalam mendeskripsikan pasangan


key yang dibangkitkan oleh algoritma RSA, yaiut private key dan public key. Dimana
keduanya memiliki struktur data yang sama tetapi berbeda nilainya. Public key RSA
dapat dipisahkan dari private key dengan menggunakan perintah tambahan dalam
openssl. Umumnya, public key dan private key disimpan bersama-sama, sehingga kita
menyebutnya sebagai sepasang key.

openssl rsa
untuk mengatur dan menggunakan operasi kriptografi dengan key RSA, Anda dapat
menggunakan perintah openssl rsa dengan sitak sebagai berikut:

openssl rsa [-in file_input] [-out file_out] [-text] [-pubin] [-


pubout]

Dan sintak dari perintah tersebut dapat diterangkan sebagai berikut:


 -in file_input, menunjukkan file input yang berisi public key dan private key RSA;
 -out file_output menunjukkan file hasil operasi algoritma RSA (public dan private
key) RSA;
 -pubin, menunjukkan sebuah flag dimana key dilewatkan melalui opsi –in. dalam hal
ini adalah public key RSA, jika tidak dapat diasumsikan bahwa input key adalah sebuah
private key;
 -pubout, menunjukkan flag untuk membangkitkan output public key RSA saja, jika tidak
hanya private key saja;
 -text, mencetak key dalam format teks. Dalam hal ini key yang ditampilkan menggunakan
format encoded Base64.

openssl pkeyutl
perintah openssl pkeyutl dapat digunakan untuk melakukan proses
enkripsi/dekripsi asimetris, membuat signature dan memverikiasinya, dan pertukaran
key (key exchange) dengan menggunakan berbagai algoritma asimetris. Saat ini,
algoritma-algoritma yang didukung antara lain:
 RSA, untuk proses enkripsi dan dekripsi, proses sign dan verify data.
 Diffie-Hellman (DH) untuk pertukaran key simetris.
 Elliptic Curve (EC) untuk proses sign dan verify dengan ECDSA dan untuk membangun
sebuah key simetris dengan ECDH.

openssl pkeyutl [-in file_input] [-out file_output] [-inkey file_key]


[-pubin] [-sign] [-verify] [-verifyrecover] [-encrypt] [-decrypt]

dimana:
 -in file_input, menunjukkan file input yang berisi pesan yang akan dienkripsi,
dekripsi, sign atau verify;
 -out file_output, menunjukkan file hasil operasi pkeyutl ke dalam file_out;
 -inkey file_key, menunjukkan bahwa file file_key berisi public key atau private
key.
Network Security Prodi Telekomunikasi PENS

 -encrypt/-decrypt, dipakai untuk mengenkrip dengan menggunakan public key


atau mendekrip dengan menggunakan private key ke dalam file input yang ditandai dengan
–in.
 -pubin, menunjukkan flag yang digunakan sebagai input dengan opsi –inkey untuk
public key, jika tidak pkeyutl mengasumsikan bahwa private key digunakan sebagai
input;
 -sign, membangkitkan signature pada file input (dilewatkan dengan –in) dengan
menggunakan key pada opsi –inkey. Sebuah private key dibutuhkan dalam kasus ini.
Lebih jelasnya, jika key RSA digunakan, maka file dalam input dienkrip dengan private key;
 -verifyrecover, menunjukkan verifikasi signature pada file input dengan opsi –in
dengan menggunakan key pada opsi –inkey dan menunjukkan dekripsi data. Perhatikan
bahwa public key RSA dibutuhkan. Opsi ini hanya dapat dilakukan jika key RSA yang
digunakan, pada kenyataannya file input didekrip dengan public key;
 -verify, membentuk signature pada file input dengan menggunakan public key dan
membandingkan signature ini dengan signature lain yang ditunjukkan oleh opsi –sigfile.
Hasilnya adalah berupa nilai Boolean. Signature dianggap valid kalau nilai Boolean adalah
true.

openssl dgst
perintah ini digunakan untuk mengkalkulasi dan memverifikasi sebuah digital signature,
sintak perintah ini adalah:

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-


dss1] [-out filename] [-sign private_key] [-verify
public_key] [-signature signature_file] [file_to_sign]

dimana:
 -sign private_key, menghitung signature pada file file_to_sign, dengan
menggunakan algoritma hash dan private key yang ditunjukkan oleh file private_key;
 -verify public_key, memverifikasi signature yang diaplikasikan dalam file
file_to_sign, dengan menggunakan algoritma digest dan public key yang ditunjukkan
oleh file public_key. Perintah ini merupakan mandatory dimana file signature yang
digunakan dengan opsi –signature;
 -signature signature_file, menunjukkan dimana file yang berisi signature
untuk diverifikasi untuk kasus dengan opsi –verify.

openssl rand
perintah ini membangkitkan nbytes pseudo-random dan menyimpannya ke dalam file
file_name.

openssl rand –out file_name nbytes

untuk detail deskripsi perintah di atas, Anda dapat menggunakan perintah man.
Network Security Prodi Telekomunikasi PENS

SSH dan SCP


Pada percobaan ini, Anda akan diminta untuk melakukan pertukaran pesan antara dua
PC dengan menggunakan tool scp. Konsekuensinya, Anda harus menjalankan server
ssh seperti yang sudah dilakukan pada percobaan sebelumnya.

1.3 TUGAS PENDAHULUAN


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

1.4 PERCOBAAN
1. Prosedur Operasional pada Kriptografi Asimetris
1.1 Key Generation
PERCOBAAN 1:
Atas dasar perintah OpenSSL genrsa, coba Anda tulis perintah untuk membangkitkan
pasangan key dengan ukuran 2048 bit RSA dan menyimpannya ke dalam file rsa.key
dalam kotak di bawah ini:

Setelah Anda membangkitkan pasangan key di atas, sekarang periksa isi dari file
rsa.key dengan menggunakan perintah berikut ini:
openssl rsa –in rsa.key –text

PERTANYAAN:
(a) Apa tujuan dari parameter modulus.publicExponent.privateExponent,
dan prime* ?
(b) Parameter mana yang dapat digunakan untuk membuat public (sebagai bagian dari
public key) dan parameter mana yang digunakan sebagai informasi yang secret atau
sebagai bagian dari private key ?
(c) Bandingkan parameter-parameter tersebut dengan parameter-parameter teman
Anda. Apakah ada parameter yang sama (common) ?, jika “YA” tuliskan bagian
informasi yang mana dan apa tujuannya ?
(d) Misalkan, Anda ingin mendistribusikan RSA public key ke teman Anda. Coba Anda
tuliskan perintah yang digunakan untuk mengekstrak RSA public key dari file
rsa.key ke file rsa.public dalam kotak di bawah ini dan coba lihat isi dari file
rsa.public tersebut.

1.2 Enkripsi dan dekripsi dengan algoritma RSA


PERCOBAAN 2:
Pada percobaan ini, Anda akan mengenkripsi dan mendekripsi sebuah blok data dengan
menggunakan algoritma RSA dan RSA key yang sudah Anda bangkitkan pada percobaan
Network Security Prodi Telekomunikasi PENS

sebelumnya. Buat sebuah pesan teks, misalnya “Ini adalah pesan yang sangat rahasia”
(tanpa tanda “), dan simpan ke dalam file plain.
(a) PERTANYAAN awal: bagaimana Anda menggunakan pasangan RSA key untuk
memastikan kerahasiaan dari file plain tersebut ? RSA key mana yang harus Anda
gunakan ?
(b) Tulis perintah OpenSSL untuk mengenkripsi file plain, dan simpan hasilnya dalam
file encRSA (PETUNJUK: gunakan perintah pkeyutl – silahkan dilihat di
pembahasan sebelumnya tentang penggunaan perintah pkeyutl).

(c) Coba Anda jalankan perintah di bawah ini:


openssl rsautl –encrypt –in plain –inkey rsa.key –out encRSA
PERTANYAAN: apa tujuan perintah di atas dan key yang mana digunakan dalam
perintah tersebut ?
(d) Coba Anda tulis perintah untuk mengdekripsi pesan terenkripsi di atas dalam kotak
berikut ini dan simpan hasilnya ke dalam file rsaplain.

Catatan: Secara teori, RSA dapat mengenkripsi pesan apapun yang direpresentasikan
sebagai nilai biner yang lebih kecil daripada nilai dari modulo (yaitu sebuah string 2048
bit untuk sebuah RSA key 2048 bit). Akan tetapi, format dalam PKCS#1 memiliki
pembatasan karena proses enkapsulasi pesan menjadi pesan terenkripsi, dan juga
disebabkan karena pemakaian padding. Dalam prakteknya, jika Anda memiliki N Byte
RSA key, Anda dapat melakukan proses enkripsi/dekripsi dengan perintah OpenSSL jika
dan hanya jika data (plaintext) panjangnya maksimum N – 11 Byte.

1.3 Signing dan verifying dengan algoritma RSA


PERCOBAAN 3:
Perintah pkeyutl digunakan tidak hanya untuk proses enkripsi/dekripsi data, tapi juga
dapat digunakan untuk proses sign/verify data.
(a) Dengan menggunakan perintah OpenSSL rsautl, coba Anda tulis perintah yang
digunakan untuk menandatangani (sign) sebuah file teks plain, dan simpan
hasilnya yang berupa signature ke dalam file sig. Kemudian, tuliskan juga perintah
OpenSSL rsautl yang digunakan untuk memverifikasi (verify) signature dari file
sig dalam kotak berikut ini.

PERTANYAAN: key apa yang digunakan untuk proses sign/verify tersebut ?


Network Security Prodi Telekomunikasi PENS

2. Aplikasi pada Kriptografi Asimetri


2.1 Session key
PERCOBAAN 4:
Pada percobaan ini, kita ambil contoh A dan B ingin melakukan pertukaran data/pesan
yang terenkripsi dengan algoritma simetris AES, akan tetapi mereka tidak ingin
menggunakan sebuah key untuk di-share satu sama lain. Pada percobaan ini, coba Anda
bagi menjadi dua grup (satu grup sebagai A dan lainnya sebagai B) dan coba untuk
diatur dan didisain sebuah solusi dengan menggunakan perintah OpenSSL yang sudah
Anda ketahui sejauh ini (baik untuk pemakaian dalam kriptografi simetris maupun
asimetris), sedemikian rupa sehingga A dapat mengirimkan file rsaplain yang
dienkripsi dengan algoritma AES ke B meskipun A dan B tidak memiliki shared secret
key ? (Catatan: B seharusnya mampu mendekripsi dengan benar ciphertext yang
diterimanya dari A).
Misalnya A melakukan perintah berikut:
echo key > aeskey
openssl enc –e –aes-128-cbc –in rsaplain –out msg.enc –kfile aeskey –iv 0
openssl pkeyutl –encrypt –in aeskey –inkey rsa.key –out aeskey.enc

Kemudian msg.enc dan aeskey.enc dikirim ke B.


rsa.key juga dikirim ke B.

(a) PERTANYAAN: error apa yang dialami oleh A (paling tidak ada 2 error di sini)
(b) Dengan menggunakan perintah OpenSSL enc dan pkeyutl, tulis perintah dengan
urutan yang benar yang harus dilakukan oleh A dan B dalam kotak di bawah ini:

(c) Serangan (attack) jenis apa yang dapat dilakukan oleh C agar dapat mendapatkan
dan memodifikasi pesan yang dilakukan oleh A dan B? dan bagaimana Anda dapat
mengatasi jenis serangan seperti ini?
(d) Algoritma asimetris apa lagi yang dapat digunakan oleh A dan B sebagai ganti
algoritma RSA? dan coba Anda tulis perintahnya dalam kotak di bawah ini.

2.2 Digital signature


PECOBAAN 5:
Misalnya sekarang A ingin memproteksi data/pesan yang dikirim ke B. Bentuk dua grup
dan disain sebuah solusi dimana A menandatangani (sign) file rsaplain, dan B
memverifikasi (verify) signature terhadap file rsaplain tersebut.
(a) Dengan menggunakan perintah dgst dan pkeyutl, tulis perintahnya dengan
urutan yang benar untuk proses sign dan verifiy tersebut dalam kotak berikut ini:

(b) Apa yang terjadi pada saat C memodifikasi data yang dikirim oleh A ke B?. Dalam
prakteknya, apa yang terjadi jika C memodifikasi data aslinya atau jika C
Network Security Prodi Telekomunikasi PENS

memodifikasi signature? Dan apa yang terjadi jika C mengganti public key dari B
dengan public key nya C?

Catatan bahwa, disamping perintah pkeyutl, Anda juga dapat menggunakan perintah
dgst untuk melakukan proses signing dan verifying. Sebagai contoh, Anda dapat
membangun digital signature terhadapt file teks msg dengan perintah OpenSSL berikut
ini:
openssl dgst –sha1 –sign RSAkey –out msg.sig msg

(c) Coba Anda tulis perintah untuk memverifikasi signature dari perintah di atas dalam
kotak berikut ini:

(d) Apa perbedaannya dengan perintah yang menggunakan pkeyutl ?

2.3 Proses autentikasi


PERCOBAAN 6:
Pada percobaan ini, Anda akan menggunakan fungsi RSA (dan perintah pkeyutl)
untuk mengimplementasikan protokol challenge-response. Bentuk dua grup (A dan B)
dan lakukan proses berikut:
A: mengirimkan public key nya ke B.
B: membangkitkan sebuah string random dan disimpan ke file random dan
mengenkripsinya dengan menggunakan public key nya A: hasilnya disimpan ke dalam
file challenge. Coba Anda tulis perintah untuk melakukan proses tersebut, dengan
menggunakan perintah rand dan pkeyutl ke dalam kotak berikut ini:

B: mengirimkan file challenge ke A.


A: mendekripsi file challenge dan mendapatkan sebuah respon (simpan ke dalam file
response). Dengan menggunakan perintah pkeyutl, coba Anda tulis perintah yang
digunakan untuk proses itu di dalam kotak berikut ini:

Kemudian A mengirimkan file response ke B.


B: memverifikasi response yang duterima dari A apakah response yang diterima
valid atau tidak (gunakan perintah diff –b untuk melakukan pengecekan).

2.4 Digital certificate


PERCOBAAN 7:
Pada percobaan ini, A dan B ingin saling mengirimkan data dengan aman (secure).
Misalkan A dan B punya teman C dan C mengetahui public key A dan B. Sedangkan A dan
B juga mengetahui public key dari C.
PERTANYAAN: bagaimana C dapat membantu A dan B untuk saling mengirimkan pesan
dengan aman? (petunjuk: C mungkin saja bertindak sebagai user ilegal atas
pengetahuannya terhadap public key A dan B).
Misalkan C melakukan proses berikut ini:
Network Security Prodi Telekomunikasi PENS

- Memodifikasi file yang berisi public key A, misalnya a.pubkey, dengan cara
melakukan perintah berikut:
echo “ini adalah public key A, C boleh menggunakannya” >>
a.pubkey
- C sign (dengan perintah dgst) file a.pubkey yang sudah dimodifikasi tadi.
- C mengirimkan file a.pubkey dan file signature ke A.
- Dengan cara yang sama C juga melakukannya ke B.
Coba apa yang dapat Anda simpulkan dari percobaan ini?

3. Performance
PERCOBAAN 8:
Dengan menggunakan perintah OpenSSL speed untuk membandingkan performansi
dari algoritma:
- RSA dengan panjang key 512, 1024, 2048 dan 4096 bit.
Apakah performansi algoritma RSA akan turun terhadap perubahan panjang key?
Apa perbedaan antara perintah yang menggunakan public key dan private key?
- Digital signature dengan 1024 bit RSA, 1024 bit DSA, 160 bit ECDSA (ecdsap160).
Apa perbedaan yang Anda temukan? Apakah elliptic curve cryptography (ECC) lebih
efisien daripada RSA/DSA? Apakah juga lebih efisien untuk sign atau verify dengan
menggunakan DSA/ECDSA? Ataukah lebih efisien saat sign atau verify dengan
menggunakan RSA?
- High security dengan 2048 bit RSA, 2048 bit DSA, 256 bit ECDSA (ecdsap256).
(Catatan bahwa dalam prakteknya 256 bit ECC menjamin level security yang sama
dengan 3072 bit RSA/DSA). Apa perbedaan yang Anda temukan dibandingkan
dengan step sebelumnya? Bagaimana performansi untuk RSA/DSA dan ECDSA
dengan penambahan panjang bit key (dan juga bagaimana dengan level security
nya)?
- Simetris, asimetris kriptografi dan digest dengan 2048 bit RSA, 2048 bit DSA, 128 bit
AES dan SHA-256. (Catatan, 128 bit AES menjamin level security yang sama dengan
3072 bit RSA/DSA). Apa yang dapat Anda bandingkan dari hasil yang didapat?
Seberapa cepat kriptografi simetris (aes-128-cbc, sha256) jika dibandingkan
dengan kriptografi asimetris (rsa2048, dsa2048)?

1.5 LAPORAN RESMI


1. Berikan kesimpulan hasil praktikum yang anda lakukan.
2. Berikan satu contoh software aplikasi kriptografi asimetris dan jelaskan
penggunaannya.

Anda mungkin juga menyukai