BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem merupakan proses identifikasi terhadap hal-hal yang diperlukan sistem, sehingga sistem bekerja sesuai dengan tujuan utama. Hal-hal yang perlu dianalisis
berupa: apa saja yang akan menjadi input dari sistem, proses apa yang akan dilakukan sistem terhadap input tersebut dan output apa yang dihasilkan oleh sistem. Serangkaian
analisis tersebut dijabarkan sebagai berikut: 3.1.1.
Analisis masalah Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya
sebuah sistem, sehingga dapat berjalan sesuai dengan tujuannya. Permasalahan yang diangkat dari penelitian ini adalah mengimplementasi algoritma Rijndael untuk
mengenkripsi pesan rahasia yang selanjutnya kunci Rijndael ini akan dienkripsi menggunakan algoritma ElGamal kurva eliptik. Pesan rahasia yang akan dienkripsi
berupa plain-text dan berbagai tipe file, seperti file dengan ekstensi
.txt
,
.rtf
,
.docx
,
.xlsx
, .
pptx
, dan file lainnya. Analisis masalah ini secara spesifik diilustrasikan pada Gambar 3.1. Diagram
Ishikawa tulang ikan atau cause-and-effect digunakan untuk mengidentifikasi dan menggambarkan sebab dan akibat masalah-masalah dalam suatu sistem.
Melindungi Pesan Rahasia Menggunakan Algoritma Kriptografi Simetri yang akan Dikirim Melalui
Internet dan Mengamankan Distribusi Pesan Rahasia tersebut Beserta
Kuncinya yang telah Terenkripsi Menggunakan Algoritma Kriptografi Asimetri
Metode Manusia
File yang umum digunakan berekstensi .txt, .rtf, .docx, .xlsx, .pptx
Kurang percaya kepada pihak ketiga sebagai perantara pengiriman pesan
Algoritma kunci publik yang memerlukan waktu
enkripsi dekripsi cukup lama
Kriptografi asimetri selalu diterapkan pada komputer
dengan spesifikasi yang tinggi Perlunya algoritma kriptografi yang
mengenkripsidekripsi file dengan cepat
File yang bersifat pribadi privacy file
Gambar 3.1: Diagram Ishikawa untuk mengidentifikasi masalah.
Universitas Sumatera Utara
3.1.2. Analisis kebutuhan
Analisis kebutuhan sistem terdiri dari dua bagian, yaitu kebutuhan fungsional yang mencakup hal-hal apa saja yang harus dilakukan oleh sistem dan non-fungsional yang
mencakup karakteristik yang menentukan kualitas yang dimiliki oleh sistem. Adapun kebutuhan fungsional sistem yang akan dirancang sebagai berikut:
b. Membaca file dan menuliskannya kembali.
c. Membangkitkan bilangan prima yang cukup besar dengan metode Miller-Rabin.
d. Mengenkripsidekripsi plain-text string, file teks atau file lainnya menggunakan
algoritma Rijndael. e.
Mengenkripsidekripsi kunci Rijndael dengan algoritma ElGamal kurva eliptik. f.
Mengirim pesan acak cipher melalui email. Dan kebutuhan non-fungsional sistem ini terdiri dari:
a. Performa
Sistem dapat mengenkripsi file dengan hanya memerlukan waktu yang tidak terlalu lama dan mendekripsi pesan acak cipher kembali sesuai dengan keadaan aslinya.
b. Ekonomi
Sistem akan dirancang sedemikian rupa tanpa harus memerlukan perangkat lunak tambahan, sehingga mengurangi beban biaya.
c. Efisiensi
Sistem akan dirancang user-friendly dan sesederhana mungkin sehingga memudah- kan pengguna dalam menjalankannya.
d. Keamanan
Sistem akan menyimpan kunci privat yang sudah pernah digunakan ke dalam database yang nantinya tidak bisa digunakan kembali selama kurun waktu 5 tahun.
3.1.3. Analisis proses
Analisis proses bertujuan untuk mengetahui tahapan dan cara kerja sistem secara spesifik. Dalam sistem ini terdapat dua proses utama, yaitu enkripsidekripsi file
menggunakan algoritma AES Rijndael dan enkripsidekripsi kunci dari block cipher AES menggunakan algoritma kriptografi kunci publik ElGamal kurva eliptik. Proses
pengenkripsian kunci ini memerlukan bilangan prima yang cukup besar yang akan dibangkitkan menggunakan metode Miller-Rabin.
Universitas Sumatera Utara
Pada proses enkripsi, input yang akan diproses hanya ada dua, yaitu kunci dan naskah asli. Maka, output yang dihasilkan oleh proses pun juga ada dua, yaitu kunci
acak cipher-key dan naskah acak cipher. Kriptografi Rijndael hanya akan memroses naskah asli, sedangkan kriptografi ElGamal kurva eliptik hanya akan memroses kunci
dari block cipher Rijndael. Demikian pula pada proses dekripsi, kunci acak cipher-key akan diproses oleh
kriptografi ElGamal kurva eliptik sehingga menghasilkan ouput kunci asli. Sedangkan naskah acak akan diproses oleh kriptografi Rijndael sehingga menghasilkan naskah asli.
ElGamal Kurva Eliptik
Kunci Naskah
asli
Rijndael AES
Pembangkit Bilangan Prima
Miller-Rabin
Kunci acak
Naskah acak
Proses
Enkripsi Dekripsi
Gambar 3.2: Analisis proses terhadap input yang diterima dan output yang dihasilkan. Kunci hanya berupa string plain-text dengan besar maksimal 32 byte. Ini setara
dengan AES-256 yang merupakan AES dengan kunci terpanjang, di mana besarnya adalah
. Oleh karena =
, maka =
. Sedangkan naskah asli dapat berupa string atau berbagai jenis file yang umum digunakan.
Misalkan sebuah kunci Muhammad_Rez ΔNst dengan panjang karakter 16.
Jika dilihat dari panjang karakternya, maka kunci ini akan diproses dengan AES-128 yang hanya memiliki 4 word, sehingga representasinya dalam blok ditunjukkan pada
Gambar 3.3. Perlu diingat bahwa sebuah blok hanya dapat menyimpan karakter sebesar 1 byte. Sementara karakter
Δ berukuran lebih dari 1 byte, sehingga diperlukan 2 blok untuk dapat menyimpan karakter tersebut. Jadi, kunci Muhammad_Rez
ΔNst tidak bisa digunakan untuk melakukan proses kriptografi menggunakan AES-128, melainkan
dengan AES-192. Ini dikarenakan besar kuncinya lebih dari 128 bit. Selanjutnya, didefinisikan aturan sebagai berikut:
Universitas Sumatera Utara
Jika besar kunci tidak lebih dari 128 bit 4 word, gunakan AES-128. Jika besar kunci antara 128 dan 192 bit 6 word, gunakan AES-192.
Selebihnya gunakan AES-256 8 word, jika besar kunci lebih dari 256 bit proses
tidak dapat dilanjutkan.
M0x4d m0x6d _0x5f Δ0x394
u0x75 m0x6d R0x52 N0x4e h0x68 a0x61 e0x65 s0x73
a0x61 d0x64 z0x7a t0x74
Gambar 3.3: Blok dari kunci Muhammad_Rez ΔNst.
Berikutnya melakukan proses key schedule yang nantinya diperlukan pada transformasi addRoundKey. Telah ditetapkan bahwa sistem ini akan menggunakan blok
sebesar 8 word, sehingga apapun nilai yang diinisialisasi sebelumnya berdasar-
kan panjang kunci, proses enkripsi maupun dekripsi tetap akan dilakukan sebanyak 14 putaran
= . Dengan demikian, proses key schedule ini akan menghasilkan
expanded key sebesar =
atau setara dengan 120 word, dan berikut adalah pseudocode-nya.
keyScheduleexpandedKey[][] 1.
W ← [4], n ← 15 2.
if Nk = 4, n ← 30 3.
else if Nk = 6, n ← 20 4.
for i ← Nk; i Nk n; i ← i + 1 5.
if i ≡ 0 mod Nk
6. W[0] ← subBytesexpandedKey[i - 1][1] XOR Rcon[i Nk - 1]
7. for j
← 1; j 4; j ← j + 1 8.
W[j] ← subBytesexpandedKey[i - 1][j + 1 4] 9.
else if Nk = 8 and i ≡ 4 mod Nk
10. for
j ← 0; j 4; j ← j + 1 11.
W[j] ← subBytesexpandedKey[i - 1][j] 12.
else, for j ← 0; j 4; j ← j + 1
13. W[j] ← expandedKey[i - 1][j]
14. for
j ← 0; j 4; j ← j + 1 15.
expanded Key[j] ← expandedKey[i - Nk][j] XOR W[j]
16. return expandedKey
Tahap selanjutnya adalah membaca naskah asli yang menjadi input dari proses kriptografi Rijndael AES. Seperti yang telah dijelaskan sebelumnya, bahwa naskah
asli dapat berupa string atau file yang terbaca sebagai himpunan karakter berhingga. Himpunan karakter tersebut selanjutnya disimpan sebagai array-
membentuk
Universitas Sumatera Utara
himpunan blok, sehingga dapat lebih mudah ditransformasi dalam proses kriptografi Rijndael. Banyaknya blok yang dihasilkan dari himpunan karakter ini dapat dihitung
dengan cara membagi panjang himpunan karakter dengan 32 telah ditetapkan sebelum- nya
= . Oleh karena panjang himpunan karakter ini tidak selalu kelipatan 32, _
, maka akan ada kemungkinan 1 blok terakhir yang tidak dapat terisi penuh. Sebagai contoh string sebagai berikut:
Lorem_ipsum_dolor_sit_amet,consectetur_adipiscing_elit._Mauris_et_ magna_ut_erat_elementum_cursus_in_quis_ipsum.
. Diketahui panjang karakternya adalah 111, maka akan menghasilkan blok sebanyak
= dan karakter sisa sebanyak =
. Karakter sisa ini tidak disimpan sebagai array-
, tetapi disimpan sebagai array- . Hal ini di-
karenakan _
, sehingga tidak perlu menyimpan himpunan karakter yang sedikit di tempat penyimpanan yang terlalu besar.
Setelah pembacaan naskah asli selesai, tahap terakhir adalah melakukan enkripsi menggunakan algoritma kriptografi Rijndael dan seluruh alur prosesnya ditunjukkan
pada Gambar 3.4. Kunci block cipher Rijndael yang telah diinisialisasi, selanjutnya diproses menggunakan kriptografi ElGamal kurva eliptik. Berdasarkan Gambar 3.2,
proses kriptografi ElGamal kurva eliptik menunggu proses pembangkit bilangan prima Miller-Rabin sebelum bisa memproses kunci. Proses pembangkitan bilangan prima
tersebut akan menghasilkan output bilangan prima yang cukup besar yang selanjutnya menjadi finite field
� .
Miller-Rabin merupakan algoritma percobaan apakah suatu bilangan adalah prima atau komposit secara probabilistik. Jadi, prosesnya adalah
memilih sebuah bilangan ganjil yang sangat besar lalu diperiksa menggunakan algoritma Miller-Rabin, apakah prima atau komposit. Jika mungkin prima, proses
selesai. Jika komposit, proses terus berlanjut dengan memilih bilangan ganjil yang sangat besar lainnya hingga ditemukan bilangan yang mungkin prima. Berikut adalah
pseudocode Miller-Rabin:
probablePrimen, a 1. if n = even or 1 gcd , n n, return composite
2. q ← odd, n – 1 ≡ q mod n
3. ← mod n
4. if ≡ 1 mod n, return prime
5. for i ← 0; i k – 1; i ← i + 1
6. if
≡ -1 mod n, return prime 7.
← mod n 8.
return composite
Universitas Sumatera Utara
key, message
Mulai
Selesai
i = 16?
Nb = 8; i = key.length;
Nk = 4;
Nk = 6;
Nk = 6; expandedKey[] = keyScheduleNk
Yes i 16
i = 24? i 24
i = 32? Yes
Yes No
No
No
i = i + 1; encryptblock[i], expandedKey[i Nb];
i = message.length; size = i 32;
left = i mod 32; i = 0;
block[] = fillBlocksmessage;
i size? Yes
left 0? No
j = left;
Yes
Selesai
j = 16?
Nb = 4;
Nb = 6;
encryptblock[i], expandedKey[i Nb];
Yes j 16
j = 24? Yes
No
No No
Gambar 3.4: Flowchart proses Rijndael. Alur proses berikutnya sama seperti ditunjukkan pada Gambar 3.2, yaitu proses
pengenkripsian kunci. Dan berikut adalah penjelasannya: Proses pembangkitan persamaan kurva eliptik ∈ � hanya menginisialisasi dua
variabel , ∈ � dengan bilangan bulat acak yang memenuhi
+ ≠ .
Universitas Sumatera Utara
Proses pemilihan sebuah titik acak ∈ � berarti mencari pasangan nilai dan anggota
� yang memenuhi persamaan =
+ + . Pencarian dimulai
dengan menyubstitusikan = hingga = − . Selama iterasi, hitung nilai ,
kemudian periksa apakah merupakan akar kuadrat modulo . Cara terbaik untuk
mengetahuinya adalah dengan menerapkan algoritma quadratic reciprocity dengan simbol Legendre, dan berikut adalah pseudocode-nya:
quadraticReciprocityvalue, modulus 1.
if modulus = composite or value and modulus = even, return 2.
if value = -1 3.
if modulus ≡ 1 mod 4, return 1
4. if modulus
≡ 3 mod 4, return -1 5.
if value = 2 6.
if modulus ≡ 1 or 7 mod 8, return 1
7. if modulus
≡ 3 or 5 mod 8, return -1 8.
if value ≡ 3 mod 4 and modulus ≡ 3 mod 4, return legendre 9.
if value ≡ 1 mod 4 or modulus ≡ 1 mod 4, return -legendre
Algoritma quadratic reciprocity dipanggil secara rekursif hingga menghasilkan output 1 yang berarti
merupakan akar kuadrat modulo ,
atau -1 yang berarti
bukan akar kuadrat modulo
. Selanjutnya, jika merupakan
akar kuadrat modulo , hentikan iterasi yang berarti pasangan nilai dan pertama yang memenuhi telah ditemukan dan hitung nilai
√ ±
+
. Jadi, untuk setiap nilai akan berpasangan dengan dua nilai . Titik pertama
= ,
∈ �
yang telah ditemukan, kemudian ditambahkan berdasarkan hukum penambahan pada kurva eliptik dengan bilangan bulat acak yang akan menghasil-
kan titik baru, yaitu titik acak
∈ � .
Proses pemilihan kunci rahasia hanya menginisialisasi variabel
�
dengan bilangan bulat acak yang besar.
Proses pembuatan kunci publik hanya menghitung nilai
�
=
�
∈ � , yaitu
penambahan titik ∈
� dengan kunci rahasia
�
pada kurva eliptik. Proses pengubahan plain-text menjadi titik-titik pada ∈ � ditentukan dengan
aturan seperti dijelaskan pada contoh berikut: Misalkan string
MuhammadReza
akan menjadi
� = { ,
, ,
, ,
, ,
, ,
, ,
}.
Nilai-nilai pada
�
bersesuai dengan kode karakter UTF-8.
Universitas Sumatera Utara
Proses pemilihan kunci ephemeral hanya menginisialisasi variabel dengan bilangan bulat acak.
Proses pengenkripsian pesan ∈ � menggunakan kriptografi ElGamal kurva eliptik akan menghasilkan dua nilai, yaitu
dan . Masing-masing nilai
dan dihitung dengan persamaan
= ∈
� dan =
+
�
∈ � .
Berikut adalah pseudocode-nya.
encryptM[],
�
, P 1.
C ← [M.length][2] 2.
for i ← 0; i M.length; i ← i + 1 3.
k ← random integer
4. C[i][0]
← P.sumk 5.
tmp ← Q.sumk
6. C[i][2]
← M[i].sumtmp 7.
return C
Proses dekripsi merupakan kebalikan invers dari alur proses enkripsi. Seperti ditunjukkan pada Gambar 3.2, output pada proses enkripsi akan menjadi input pada
proses dekripsi. Jadi, jika pada proses enkripsi yang pertama sekali diproses adalah naskah asli dilanjutkan dengan memroses kunci, maka proses dekripsi akan melakukan
alur proses yang berlawanan, yaitu dengan memroses kunci acak cipher-key terlebih dahulu yang kemudian dilanjutkan dengan memroses naskah acak cipher untuk
mendapatkan kembali naskah asli.
3.2. Pemodelan Sistem