Manual Perhitungan Enkripsi Dan Dekripsi Algoritma RSA - Rivest Shamir Adleman

a. Analisa Algoritma Kunci Publik RSA ?

RSA melibatkan kunci publik dan kunci privat Kunci publik dapat diketahui semua orang dan digunakan untuk mengenkripsi pesan. Pesan dienkripsi dengan kunci publik hanya dapat didekripsi menggunakan kunci privat. Kunci untuk algoritma RSA yang dihasilkan dengan cara berikut:

1. Pilih dua yang berbeda perdana nomor p dan q. Untuk tujuan keamanan, bilangan bulat p dan q harus dipilih secara acak dengan menggunakan Metode LCG dan menggunakan tes primality dengan metode The Sieve Of Eratosthenes.

2. Hitung n = pq. n digunakan sebagai modulus untuk kunci publik dan privat.

3. Hitunglah Φ(n) = (p - 1) (q - 1), di mana Φ adalah fungsi totient Euler.

4. Pilih e bilangan bulat sedemikian sehingga 1 < e < Φ (n) dan FPB (e, Φ (n)) = 1, e dan Φ yaitu (n) adalah relatif prima ( coprime )

5. Tentukan d = e mod Φ invers perkalian dari mod Φe (n). dengan rumus berikut


d= 1 + k Φ(n)/e

d adalah eksponen disimpan sebagai kunci pribadi. Kunci publik terdiri dari modulus n dan e (atau enkripsi) eksponen publik. Kunci privat terdiri dari modulus n dan (atau dekripsi) swasta eksponen d yang harus dirahasiakan. Untuk perancangan aplikasinya dapat dilihat pada flowchart berikut



b. Enkripsi dan Dekripsi RSA Kunci Publik


b.1 Enkripsi

Bob mengirimkan kunci publik nya Alice dan menjaga rahasia kunci pribadi. Alice mengirim pesan “POT” ke Bob. Dia pertama kali merubah pesan "POT" kedalam bentuk ASCII, sehingga pesan yang disampaikan menjadi plainchar yang sudah dikonversi kedalam ASCII. Hal ini dapat dilakukan dengan cepat menggunakan metode exponentiation dengan mengkuadratkan yaitu dengan rumus Mollin :C = p e (mod n)


Alice kemudian mengirimkan hasil c kepada Bob. Misalkan, Plaintext yang dikirim adalah "POT" kemudian dikonversi ke ASCII maka :
plainchar (1) = "P" ? P1 = 80 ………………. (P1)
plainchar (2) = "O" ? P2 = 79………………. (P2)
plainchar (3) = "T" ? P3 = 84 ……………….(P3)

setelah dikonversi ke ASCII yaitu : ( 80, 79, 84 ). Hasil inilah yang di enkripsi Alice dengan persamaan (3.2) kemudian dikirim kepada Bob

Bob mengirimkan kunci publik nya alice dan menjaga rahasia (n, e) untuk kunci pribadi Bob, maka keinginan untuk mengirim pesan T (plainchar) ke Bob, Alice pertama kali merubah menjadi T bilangan bulat, sedemikian sehingga skema bantalan Alice kemudian menghitung ciphertext 0 < m < n dengan menggunakan protokol yang disepakati reversibel dikenal sebagai c sesuai dengan rumus diatas.

Hal ini dapat dilakukan dengan cepat menggunakan metode exponentiation dengan mengkuadratkan. Alice kemudian mengirimkan T kepada Bob. Perancangan aplikasinya dapat dilihat pada flowchart berikut :


b.2.Dekripsi
Bob dapat memulihkan P (plaintext) dari C (chipertext) dengan menggunakan kunci pribadinya d eksponen melalui komputasi (3.1) Kunci pribadi Bob adalah ( d , n ). Untuk melakukan enkripsi RSA, teks asli disusun menajdi blok x1, x2, ….. sedemikian sehingga setiap blok mempresentasikan nilai di dalam rentang 0 sampai r-1. Setiap blok x1 di enkripsi menjadi blok y1 dengan rumus :
P = c d (mod n). Perancangan aplikasinya dapat dilihat pada flowchart berikut :


Contoh Kasus
Setelah dilakukan kombinasi pembangkitan bilangan acak dengan metode LCG dan The Sieve of Eratosthenes, maka bilangan yang akan muncul akan acak pula. Misalkan bilangan yang muncul adalah :
p = 13
q = 5


1. Hitung n = p.q memberikan
n = 13 . 5
n = 65


2. Hitunglah totient dari produk sebagai Φ(n) = (p - 1) (q - 1) memberikan
Φ(n) = (13-1) (5-1)
Φ(n) = 48


3. Ambil bilangan bulat e dengan syarat 1 < e < Φ(n), relatif prima dengan 48. Yang memiliki FPB = 1 dengan 48.
Misalkan e = 17.
Kunci publik adalah (n = 65, e = 17)

4. encode pesan ke ASCII misalkan plaintext yang dikirim adalah "POT"
plainchar (1) = "P" → P1 = 80 ………………. (P1)
plainchar (2) = "O" → P2 = 79………………. (P2)
plainchar (3) = "T" → P3 = 84 ……………….(P3)


5. Enkripsi pesan dengan rumus (3.2) maka :
80 17 mod 65 = 45 ……………….(C1)
80 17 mod 65 = 14 ……………….(C2)
80 17 mod 65 = 54 ……………….(C3)




8. Hasil Dekripsi adalah ( “80”, “79”, “84” ) = (“POT’’)


Membangkitkan Bilangan Acak Dengan Linear Congruential Generator
Bilangan acak adalah bilangan yang tidak dapat diprediksi kemunculannya. Tidak ada komputasi yang benar – benar menghasilkan deret bilangan acak secara sempurna. Banyak algoritma atau metode yang dapat digunakan untuk membangkitkan bilangan acak salah satunya adalah pembangkit bilangan acak Linear Congruential Generator (LCG).

LCG mempunyai periode tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari itu. LCG mempunyai periode penuh (m – 1) jika memenuhi syarat sebagai berikut :
1. b relatif prima terhadap m
2. a-1 dapat dibagi dengan semua faktor prima dari m
3. a-1 adalah kelipatan 4 jika m adalah kelipatan 4
4. m > maks ( a, b, x0 )
5. a > 0, b >

Dari beberapa syarat tersebut Schneier, (1996) merekomendasikan beberapa nilai konstanta a, b, dan m yang bagus untuk LCG dapat dilihat pada tabel berikut :

Tabel 1 Tabel Sampel Query
Dokumen Term yang mewakili dokumen
Q data keterangan mentah belum diolah belum bisa dijadikan acuan mengambil suatu keputusan
D1 data data mentah sekumpulan
D2 belum belum bisa data diolah fakta informasi mentah menyajikan
D3 acuan belum belum bisa data dijadikan diolah informasi keputusan
mentah pengambilan

Untuk perancangan aplikasinya dapat dilihat pada flowchart berikut :

Pengujian Bilangan Prima Dengan The Sieve of Eratosthenes

Berikut langkah-langkah sederhanal untuk menentukan bilangan prima melalui pengeksekusian. Ilustrasi langkah-langkah ini di kemukakan dari teori The Sieve of Eratosthenes. Adapun eksekusi bilangan prima tersebut dimulai dari 2 sampai seterusnya hingga secara keseluruhan bilangan tersebut menjadi prima untuk seluruh bilangan sisanya. Berikut tahapan eksekusi yang dilakukan yaitu:
Eksekusi 1:




No comments:

Post a Comment

Manual Perhitungan Algoritma Dan Aplikasinya