ENKRIPSI DAN DEKRIPSI
PENGERTIAN ENKRIPSI DAN DEKRIPSI
Enkripsi adalah suatu proses mengubah sebuah
teks murni (plaintext) menjadi sebuah runtutan karakter atau data yang
terlihat tidak berarti dan mempunyai urutan bit yang tidak beraturan, disebut ciphertext.
Proses pengubahan kembali ciphertext menjadi plaintext
disebut dekripsi.
PENYANDIAN MONOALFABETIK DAN
POLIALFABETIK
Penyandian Monoalfabetik, merupakan
setiap huruf digantikan dengan sebuah huruf. Huruf yang sama akan memikili
pengganti yang sama. Misalnya huruf “a” digantikan dengan huruf “e”, maka
setiap huruf “a” akan digantikan dengan huruf “e”. Metode pada Penyandi
Monoalfabetik :
a. Caesar
Metode Caesar Cipher yang digunakan
oleh Julius Caesar. Pada prinsipnya, setiap huruf digantikan dengan huruf yang
berada tiga (3) posisi dalam urutan alfabet. Sebagai contoh huruf “a”
digantikan dengan huruf “D” dan seterusnya.Transformasi yang digunakan adalah:
plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
b. ROT13
plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
b. ROT13
Pada sistem ini sebuah huruf
digantikan dengan huruf yang letaknya 13 posisi darinya. Sebagai contoh, huruf
“A” digantikan dengan huruf “N”, huruf “B” digantikan dengan huruf “O”, dan
seterusnya.
Penyandian Polialfabetik, merupakan
suatu enkripsi dilakukan dengan mengelompokkan beberapa huruf menjadi sebuah
kesatuan (unit) yang kemudian dienkripsi. Metode pada Penyandi Polialfabetik
adalah Playfair. Playfair ini menggunakan tabel 5×5. Semua alfabet kecuali J
diletakkan ke dalam tabel. Huruf J dianggap sama dengan huruf I, sebab huruf J mempunyai
frekuensi kemunculan yang paling kecil. Berikut ini aturan-aturan proses enkripsi
pada Playfair:
1. Jika kedua
huruf tidak terletak pada baris dan kolom yang sama, maka huruf pertama menjadi
huruf yang sebaris dengan huruf pertama dan sekolom dengan huruf kedua. Huruf
kedua menjadi huruf yang sebaris dengan huruf kedua dan sekolom dengan huruf
pertama. Contohnya, SA menjadi PH, BU menjadi EP.
2. Jika kedua
huruf terletak pada baris yang sama maka huruf pertama menjadi huruf setelahnya
dalam baris yang sama, demikian juga dengan huruf kedua. Jika terletak pada
baris kelima, maka menjadi baris pertama, dan sebaliknya. Arahnya tergantung
dari posisi huruf pertama dan kedua, pergeserannya ke arah huruf kedua.
Contohnya, AH menjadi TR, LK menjadi KG, BE menjadi CI.
3. Jika kedua
huruf terletak pada kolom yang sama maka huruf pertama menjadi huruf setelahnya
dalam kolom yang sama, demikian juga dengan huruf kedua. Jika terletak pada
kolom kelima, maka menjadi kolom pertama, dan sebaliknya. Arahnya tergantung
dari posisi huruf pertama dan kedua, pergeserannya ke arah huruf kedua.
Contohnya, DS menjadi LY, PA menjadi GW, DH menjadi HY.
4. Jika kedua
huruf sama, maka letakkan sebuah huruf di tengahnya (sesuai kesepakatan).
5. Jika jumlah
huruf plainteks ganjil, maka tambahkan satu huruf pada akhirnya, seperti pada aturan
ke-4.
METODA
ENKRIPSI DES
Berbagai pakar kriptografi telah
mengembangkan berbagai macam algoritma enkripsi seperti
AES,Lucifer,OTP,IDEA,Triple DES,DES,dsb. Diantara berbagai macam jenis
algoritma, DES merupakan algoritma yang paling terkenal dan paling banyak
digunakan di internet semisal untuk aplikasi e-commerce,perbankan,dll.
Proses Kerja DES
Cara kerja DES secara sederhana dapat digambarkan
sebagai berikut :
Blok Plaintext 64 bit
Invers inisial
permutasi
Ronde-16
Inisial permutasi
Blok Ciphertext
64-bit
Ronde-2
Ronde-1
Initial Permutation
Plaintet sebesar 64-bit akan dipecah menjadi 2 bagian
yaitu Left (L) dan Right.Bit-bit dari plaintext akan mengalami permutasi
sehingga susunannya akan berubah sebagai berikut :
[58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
Blok kiri (L)
Blok Kanan (R)
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7]
Maksud daripada keterangan di atas adalah, bit yang
pada plaintext terletak pada urutan ke 58, setelah di Inisial permutasi
posisinya berubah yang tadinya berada di urutan ke 58 menjadi urutan ke-1 atau
yang pertama.Jika diperhatikan, bit-bit bernomor genap setelah dipecah berada
di blok L (kiri) dan bit yang bernomor ganjil terletak di blok R
(kanan).Permutasi diatas menggunakan sebuah urutan yang ditunjukkan oleh arah
panah berwarna merah.Dimulai pada kolom paling kanan dan bit-bit yang ada akan
bergerak secara urut dengan vertikal ke arah bawah.Sebagai contoh pada blok L,
bilangan genap asli terkecil adalah 2 sehingga dimulai
dengan angka 2 lalu 4,6,8 lalu
menuju kolom di sebelah kirinya 10,12,dst.
16 Ronde pada DES
Algoritma DES mengalami 16 ronde untuk membentuk
sebuah cipher.Pada setiap ronde, blok R (kanan) tidak akan mengalami perubahan
apapun karena hanya akan dipindah menjadi blok L pada ronde selanjutnya.Namun
blok R akan digunakan bersamaan dengan subkey 56-bit untuk diolah pada fungsi F
dan akan di XOR-kan dengan blok L (kiri).Jika bingung dengan penjelasan di
atas, coba perhatikan dan amati skema pada masing-masing ronde DES di halaman
selanjutnya.
Li (32 bit) Ri (32 bit)
Subkey 56 bit
Ki+1
F
XOR
Dapat dihasilkan beberapa persamaan sebagai berikut :
Li+1 (32 bit) Ri+1 (32 bit)
1. L i+1 = R i
2.R i+1 = L i .. F(K i+1 , Ri)
Ket :
.. = Operasi XOR
Fungsi F merupakan satu-satunya fungsi linier yang
nilainya berubah-ubah tergantung pada nilai Blok R (kanan) dan sub-key 56bit.
R i (32 bit) K i (56 bit)
Ekspansi
48 bit
Penghapusan
byte terakhir
..
S1 S2 S3 S4 S5 S6 S7 S8
48 bit
Permutasi Ket :
.. = Operasi XOR
S1 - S8 = Subsitution-box (S-box)
32 bit
susunannya akan berubah sebagai berikut :
Fungsi F dapat dilihat pada gambar diatas.Blok R
(kanan) di-ekspansi sehingga
[32 1 2 3 4 54 5 6 7 8 9
8 9 10 11 12 13 12 13 14 15 16 17
16 1718 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32 1]
Angka-angka yang dicetak tebal merupakan bit-bit yang
akan ditambahkan pada input sebesar 32 bit agar menjadi 48 bit.Angka tersebut
akan muncul 2 kali seperti angka 1,4,5, dst.Bilangan yang dicetak tebal juga
bertambah dengan aturan (a,a+8,a+16,a+24 dengan a sebagai bilangan minimum pada
satu kolom)secara vertikal.Jika angka yang dicetak tebal dihilangkan maka akan
muncul bit-bit yang berurutan.Jadi bit pertama yang akan di-outputkan oleh blok
ekspansi adalah bit ke 32pada input ekspansi.
Hasil dari output ekspansi akan di
XOR dengan subkey yang telah mengalami penghapusan byte terakhir (1 byte=8 bit)
yang diubah ukurannya dari 56 bit menjadi 48 bit.Hasil XOR tadi adalah sebuah
bilangan 48 bit yang akan dibagi secara merata kepada 8 Substitution Box sehingga
masing-masing box akan di-input sebesar 6 bit (48/8=6).Substitution box yang
agak gamblang dapat dilihat pada gambar di bawah ini :
CL Si CR
Ket:
CL = Control Left (kontrol kiri)
CR = Control Right (kontrol kanan)
dari 6 bit input pada S-box, bit paling kiri akan
dimasukkan pada CL (Control Left) dan bit paling kanan akan dimasukkan pada CR
(Control Right) sedangkan 4 bit sisanya akan dianggap sebagai input yang
biasa-biasa saja ,.
Output dari masing-masing S-box akan menjadi bilangan
sepanjang 4 bit sehingga output total dari 8 S-box menjadi 32 bit
(4*8=32).Lantas, bagaimana pengolahan input pada masing-masing S-box ? OK, saya
akan memberikan salah satu contoh yaitu pada S-box yang pertama.Amati tabel di
bawah ini :
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Contoh :
input pada S-box ke adalah 110010.Berapa nilai
outputnya ?
Jawab:
Bit paling kiri akan dijadikan CL dan bit paling kanan
akan dijadikan CR.
110010
CL=1
CR=0
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Bit ke 2 sampai bit ke 5 harus diubah ke bilangan
basis 10 atau bilangan
desimal.
Dari contoh di atas bit ke 2 sampai ke 5 bernilai
1001.
1001(2) = 9(10)
Bit
kontrol Nilai input 4 bit
CL CR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 7 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Pertemuan antara baris dan kolom di atas merupakan
output dari s-box pertama yang kemudian harus diubah dalam bentuk biner.
12(10) = 1100(2)
Jadi jika input dari s-box pertama adalah 110010 maka
outputnya bernilai 1100.
Jika seluruh input pada S-box telah didapatkan hasil
yang panjangnya 32 bit maka hasil tersebut akan dipermutasi dengan aturan :
[16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25]
Jadi, jika input dari blok permutasi pada bit ke 16
akan berubah menjadi bit pertama dari
output blok permutasi.
MENGGUNAKAN ALGORITMA DES PADA APLIKASI OPENSSL
Openssl merupakan toolkit
kriptografi yang merupakan inplementasi dari secure socket layer (SSL)
sebagaimana pada manual pages-nya
OpenSSL is a cryptography toolkit implementing the
Secure Sockets Layer (SSL v2/v3)and Transport Layer Security (TLS v1) network
protocols and related cryptography standards required by them.
Openssl masih berupa tool command
line yang bisa digunakan untuk mengenkrip pesan dengan algoritma simetris
maupun dengan fungsi hash satu arah.Di sini saya mencoba menjelaskan bagaimana menggunakan
openssl untuk mengenkrip plaintext menggunakan algoritma DES.Openssl yang
digunakan merupakan OpenSSL 0.9.7e yang dirilis tanggal 25 oktober 2004 pada
distro mandriva 2005.
Sebagai contoh saya akan membuat sebuah plaintext
untuk dienkrip menggunakan openssl.Misalnya text tersebut berisi :
phpinfo();
?>
Plaintext tersebut disave dengan nama plaintext.php di
direktori home.
$ ls
plaintext.php
kemudian saya enkrip menggunakan openssl.
$ openssl enc -e -des -in plaintext.php -out
ciphertext.php
maka akan ada perintah untuk memasukkan key.Sebagai
contoh key yang saya gunakan adalah hacker.Dan akan ada konfirmasi yang kedua
untuk melakukan pengecekan.
enter des-cbc encryption password:
Verifying - enter des-cbc encryption password:
maka akan muncul sebuah file baru bernama
ciphertext.php
$ ls
plaintext.php
ciphertext.php
isi dari ciphertext.php dapat dilihat menggunakan text
editor.
Salted__¢$Χ#ú8#YÑÏP³#{,ä¯#ç^iS#0Ò
Lalu untuk mendekripsinya dapat digunakan perintah
$ openssl enc -d -des -in ciphertext.php -out
plaintext2.php
Maka akan ada konfirmasi key.Anda hanya perlu
memasukkan satu kali tanpa verifikasi.jika key yang dimasukkan salah maka akan
muncul pesan error sbb :
bad decrypt
32416:error:06065064:digital envelope
routines:EVP_DecryptFinal:bad
decrypt:evp_enc.c:450:
Jika key-yang dimasukkan benar maka akan muncul file
beru bernama plaintext2.php yang isinya sama dengan plaintext.php.
Mengenai openssl anda dapat mempelajarinya sendiri
lewat man pages-nya atau dari howtos-howtos yang ada di internet karena saya
tidak bisa membahas secara rinci di sini.Openssl juga mendukung
algoritma-algoritma lain seperti blowfish, AES, IDEA, rc2, rc4, rc5 dan juga
fungsi hash seperti md5 dan sha1.
PUBLIC KEY
Metode enkripsi kunci publik
menawarkan keamanan yang lebih tinggi dan lebihkompleks daripada metode
konvensional.Metode enkripsi kunci publik membutuhkan dua buah kunci di dalam algoritmanya,
yaitu kunci publik dan kunci pribadi. Kunci publik digunakan untuk mengenkripsi
plaintext menjadi ciphertext dan kunci ini tidak terlalu bersifat rahasia
sehingga dapat diketahui oleh banyak orang. Kunci pribadi digunakan untuk
mendekripsi ciphertext menjadi plaintext dan kunci ini bersifat rahasia
sehingga hanya user saja yang boleh mengetahui kunci ini.
Syarat yang harus dipenuhi di dalam
metode enkripsi kunci publik :
1. Mudah bagi
user untuk membentuk sepasang kunci (kuncipublik dan kunci pribadi)
2. Mudah bagi
user lain untuk mengetahui kunci publik milik kitadan kemudian mengenkripsi
pesan yang akan dikirimkankepada kita dengan kunci tersebut.
3. Mudah bagi
penerima pesan untuk mendekripsi pesanciphertext yang telah diterima dengan
kunci pribadi yang dimilikinya.
4. Tidak mudah
bagi musuh untuk mengetahui kunci publik untuk menentukan kunci pribadi yang
dimiliki oleh user lain.
ENKRIPSI MENGGUNAKAN ALGORITMA RSA
Sebagai media komunikasi umum, suatu jaringan sangat rawan terhadap
penyadapan, pencurian, dan pemalsuan informasi. Proses pengiriman data pada
suatu jaringan harus menjamin keamanan dan keutuhan, jika tidak, akan terjadi kemungkinan-kemungkinan seperti yang dijelaskan sebelumnya.Untuk itu salah satu cara untuk mengamankan data dari kejadian-kejadian tersebut,diperlukan penyandian
terhadap data yang akan dikirim. Penyandian ini sangat penting, apalagi dalam sektor-sektor strategis seperti bisnis, perbankan, atau pemerintahan sangat memerlukan teknologi penyandian Informasi.
suatu jaringan harus menjamin keamanan dan keutuhan, jika tidak, akan terjadi kemungkinan-kemungkinan seperti yang dijelaskan sebelumnya.Untuk itu salah satu cara untuk mengamankan data dari kejadian-kejadian tersebut,diperlukan penyandian
terhadap data yang akan dikirim. Penyandian ini sangat penting, apalagi dalam sektor-sektor strategis seperti bisnis, perbankan, atau pemerintahan sangat memerlukan teknologi penyandian Informasi.
Ilmu menyandi (kriptografi) sebetulnya adalah
ilmu yang sudah dikenal bahkan semenjak jaman Julius Caesar (sebelum masehi).
Ilmu ini tidak hanya mencakup teknik-teknik menyandikan informasi, tetapi juga
teknik untuk membongkar sandi.
Enkripsi adalah suatu proses mengubah sebuah teks murni (plaintext) menjadi sebuah runtutan karakter atau data yang terlihat tidak berarti dan mempunyai urutan bit yang tidak beraturan, disebut ciphertext. Proses pengubahan kembali ciphertext menjadi plaintext disebut dekripsi. Terdapat banyak algoritma penyandian di dunia ini, yang paling banyak dipakai di dunia adalah DES dan RSA. Di samping DES dan RSA, masih ada banyak sandi lain seperti MD2 (dipakai GSM), IDEA, RC2, dll. Akan tetapi, DES dan RSA adalah yang paling populer dan paling banyak dipakai.
RSA banyak dipakai oleh banyak perangkat lunak di dunia, contohnya adalah pada program browser internet MS Internet Explorer dan Netscape. Salah satu sistem penyandian yang juga banyak dipakai adalah DES (Data Encryption Standard). Mekanisme kerja RSA cukup sederhana dan mudah mengerti, tetapi kokoh. Sampai saat ini satu-satunya cara untuk mendobraknya adalah dengan cara mencoba satu persatu kombinasi kunci yang mungkin atau yang biasa disebut brute force attack. Sehingga penentuan tingkat keamanan suatu sandi dari kemungkinan
dibongkar adalah seberapa panjang dari sandi (ukuran kunci) terebut. Karena jika semakin panjang suatu kode, maka semakin banyak pula kombinasi kunci yang mungkin ada.
RSA sendiri dibuat pada tahun 1978. RSA adalah singkatan dari nama para penemunya, yaitu Ron Rivest, Adi Shamir, dan Leonard Adleman. RSA adalah salah satu algoritma penyandian yang paling banyak mengundang kontroversi, selain DES. Sejauh ini belum seorang pun yang berhasil menemukan lubang sekuriti pada DES dan RSA, tetapi tak seorang pun juga yang berhasil memberikan pembuktian ilmiah yang memuaskan dari keamanan kedua teknik sandi ini. Untuk menyandi informasi dan untuk menerjemahkan pesan tersandi sebuah algoritma penyandian memerlukan sebuah data biner yang disebut kunci. Tanpa kunci yang cocok orang tidak bisa mendapatkan kembali pesan asli dari pesan tersandi.
Pada DES digunakan kunci yang sama untuk menyandi (enkripsi) maupun untuk menterjemahan(dekripsi), sedangkan RSA menggunakan dua kunci yang berbeda. Isitilahnya, DES disebut sistem sandi simetris sementara RSA disebut sistem sandi asimetris. Kedua sistem ini memiliki keuntungan dan kerugiannya sendiri. Sistem sandi simetris cenderungjauh lebih cepat sehingga lebih disukai oleh sementara kalangan industri. Kejelekannya, pihak-pihak yang ingin berkomunikasi secara privat harus punya akses ke sebuah kunci DES bersama. Walaupun biasanya pihak-pihak yang terkait sudah saling percaya, skema ini memungkinkan satu pihak untuk memalsukan pernyataan dari pihak lainnya.
RSA yang menggunakan algoritma asimetrik mempunyai dua kunci yang
berbeda, disebut pasangan kunci (key pair) untuk proses enkripsi dan
dekripsi. Kunci-kunci yang ada pada pasangan kunci mempunyai hubungan secara
matematis, tetapi tidak dapat dilihat secara komputasi untuk mendeduksi kunci
yang satu ke pasangannya. Algoritma ini disebut kunci publik, karena kunci
enkripsi dapat disebarkan.Orang- orang dapat menggunakan kunci publik ini, tapi
hanya orang yang mempunyai kunci privat sajalah yang bisa mendekripsi data
tersebut.
MEKANISME DASAR KERJA RSA
Tingkat keamanan algoritma penyandian RSA sangat bergantung pada ukuran
kunci sandi tersebut (dalam bit), karena makin besar ukuran kunci, maka makin besar
juga kemungkinan kombinasi kunci yang bisa dijebol dengan metode mengencek
kombinasi satu persatu kunci atau lebih dikenal dengan istilah brute
force attack. Jika dibuat suatu sandi RSA dengan panjang 256 bit,
maka metode brute force attack akan menjadi tidak ekonomis dan sia-sia
dimana para hacker pun tidak mau/sanggup untuk menjebol sandi tersebut.
Proses Pembuatan Kunci
Dalam membuat
suatu sandi, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci
privat dalah sebagai berikut :
- Pilih dua bilangan prima p dan q secara acak , p ≠q. Bilangan ini harus cukup besar (minimal 100 digit).
- Hitung N = pq. Bilangan N disebut parameter sekuriti.
- Hitung φ = (p-1)(q-1).
- Pilih bilangan bulat (integer) antara satu dan φ (1<e< φ) yang tidak mempunyai faktor pembagi dari φ.
- Hitung d hingga de ≡ 1 (mod φ).
Keterangan :
- Langkah 3 dan 4 dapat dihasilkan dengan cara algoritma Euclidean
- Langkah 4 dapat dihasilkan dengan menemukan integer x sehingga d = (x(p-1)(q-1) + 1)/e menghasilkan bilangan bulat, kemudian menggunakan nilai dari d (mod (p-1)(q-1))
Setelah melalui cara ini, maka
kita akan mendapatkan kunci publik dan kunci privat. Kunci publik terdiri dari
dua elemen, yaitu :
- N, merupakan modulus yang digunakan
- e, eksponen publik atau eksponen enkripsi dan kunci privat, yang terdiri dari :
- N, merupakan modulus yang digunakan, sama seperti pada kunci publik
- d, eksponen pribadi atau eksponen deskripsi, yang harus dijaga kerahasiaanya
Nilai p dan q sebaiknya dibuang atau dijaga kerahasiaannya,
karena terdapat N dimana p dan q adalah faktor
pembagi dari N. Walaupun bentuk ini memperbolehkan dekripsi secara
cepat dan signing menggunakan Chinese Remainder Theorem
(CRT), hal ini mejadi lebih tidak aman karena bentuk ini memperbolehkan side
channel attacks. Side channel attacks adalah sebuah
serangan yang berdasarkan informasi yang dikumpulkan dari implementasi fisik (atau
kelemahan secara fisik) dari sebuah sistem kriptografi, dibanding dengan
kelemahan teoritis dari algoritmanya sendiri. Sebagai contohnya, faktor-faktor kurun
waktu dari informasi, konsumsi tenaga, bahkan suara yang ditimbulkan dapat
membantu mempermudah informasi yang bisa diambil untuk menjebol sistem
tersebut.
Proses Enkripsi Pesan
Misalkan pada suatu kasus si A ingin mengirim pesan m kepada
si B. A mengubah m menjadi angka n<N, menggunakan protokol
yang sebelumnya telah disepakati dan dikenal sebagai padding scheme. Padding
scheme harus dibangun secara hati-hati
sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Contohnya, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pessan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n = 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan.
sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Contohnya, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pessan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n = 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan.
Maka A mempunyai nilai n dan mengetahui N dan e, yang telah
diumumkan oleh B. A kemudian menghitung ciphertext c yang terkait pada
n : c = ne mod N (1) Perhitungan tersebut
dapat diselesaikan dengan menggunakan metode exponentation by squaring,
yaitu sebuah algoritma yang dipakai untuk komputasi terhadap sejumlah nilai
integer yang besar dengan cepat. Kemudian A mengirimkan nilai c kepada
B.
Proses Dekripsi Pesan
B sudah menerima c dari A, dan mengetahui kunci privat yang
digunakan B. B kemudian mengembalikan nilai n dari c dengan
langkah-langkah sebagai berikut : n = cd mod N (2) Perhitungan
diatas akan menghasilkan n, dengan begitu B dapat mengembalikan pesan
semula m. Prosedur dekripsi bekerja karena cd ≡ (n)d
≡ (mod N) (3) Kemudian, karena ed ≡ 1 (mod p-1) dan ed
≡ 1 (mod q-1), hasil dari Fermat's little theorem. ned
≡ n (mod p) (4) dan ned
≡ n (mod q) (5) Karena p dan q
merupakan bilangan prima yang berbeda, mengaplikasikan Chinese remainder
theorem akan menghasilkan dua macam kongruen ned ≡ n (mod pq) (6)
Serta cd ≡ n (mod N) (7)
Contoh Penghitungan RSA
Sebagai contoh untuk mengenal lebih dalam sistem kerja enkripisi RSA.
Misalnya kita mau mengenkripsi kata “SECRET” dengan RSA, lalu kita dekripsi
kembali ke dalam plaintext. Karena p dan q berjumlah
minimal 100 digit atau lebih, nilai d dan e bisa berjumlah
sama dengan 100 digit dan nilai N akan berjumlah 200 digit. Untuk itu di
contoh pemakaian berikut, kita akan memakai angka-angka yang kecil agar mudah
dalam penghitungan. Cara pengerjaannya adalah :
- Kita pilih p = 3 dan q = 5
- Hitung N = pq = 3*5 = 15
- Nilai e harus merupakan bilangan prima yang lebih besar dan relatif dekat dengan (p-1)(q-1) = (2)(4) = 8, sehingga kita pilih e = 11. Angka 11 adalah bilangan prima terdekat dan lebih besar daripada 8
- Nilai d harus dipilih sehingga(ed - 1) (p-1)(q-1) adalah sebuah integer. Lalu nilai (11d - 1) / [(2)(4)] = (11d - 1) / 8 juga merupakan integer. Setelah melalui proses penghitungan, salah satu nilai yang mungkin adalah d = 3.
- Lalu kita masukkan kata yang akan dienkripsi, “SECRET”.Kita akan mengkonversi string ini ke representasi desimal menggunakan nilai karakter ASCII, yang akan menghasilkan nilai ASCII 83 69 67 82 69 84
- Pengirim
akan mengenkripsi setiap digit angka pada saat yang bersamaan menggunakan
nilai kunci publik (e, n) = (11,15). Lalu setiap
karakter ciphertext akan masuk ke persamaan
Ci = Mid mod 15 Yang akan menghasilkan nilai digit masukan adalah 0x836967826984 yang akan dikirim sebagai 0x2c696d286924 - Penerima
akan mendekripsi setiap digit angka menggunakan nilai kunci privat (d,
n) = (3, 15).
Lalu, setiap karakter plaintext akan masuk persamaan Mi = Ci3 mod 15
String masukan yang bernilai 0x2c696d286924, akan dikonversi kembail menjadi
0x836967826984, dan akhirnya angka-angka tersebut akan diubah kembali menjadi bentuk
string plaintext yang bernilai “SECRET” Dari contoh di atas kita dapat menangkap suatu
kelemahan dari pemakaian p dan q yang bernilai kecil yaitu bisa kita lihat di digit ke-4, ke-6 dan ke-9 tidak berubah saat dienkripsi, dan nilai 2 dan 8 dienkripsi
menjadi 8 dan 2, yang berarti dienkripsi menjadikebalikannya.Tapi kesimpulan yang bisa diambil dari contoh yang sederhana ini adalah RSA dapat digunakan dalam penyandian dalam pengiriman informasi.
Tidak ada komentar:
Posting Komentar