Analisis Sistem ANALISIS DAN PERANCANGAN SISTEM

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