TugasRSA
description
Transcript of TugasRSA
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan di bidang telekomunikasi dan komputer memungkinkan setiap orang
berkomunikasi dan bertukar informasi secara bebas, kapan saja dan di mana saja. Namun di
sisi lain, media komunikasi umum yang digunakan secara bebas oleh siapapun sangat rawan
penyadapan informasi oleh pihak-pihak yang tidak absah. Oleh karena itu diperlukan ilmu
berhubungan dengan aspek keamanan informasi itu yang disebut dengan kriptografi.
Kriptografi ditujukan untuk memberi layanan keamanan, salah satunya dalam aspek
kerahasiaan (confidentiality). Kerahasiaan (confidentiality) adalah layanan yang ditujukan
untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak dengan cara
menyandikan plaintext (pesan asli) menjadi ciphertext (pesan sandi) yang disebut enkripsi.
Sedangkan proses pengembalian ciphertext menjadi plaintext disebut dekripsi. Proses
enkripsi dan dekripsi tersebut menggunakan algoritma kriptografi atau disebut juga cipher.
Rivest Shamir Adleman (RSA) adalah salah satu algoritma kriptografi asimetris
(kriptografi kunci-publik) yaitu menggunakan dua kunci yang berbeda (private key dan
public key). Kekuatan algoritma RSA tidak hanya terletak pada panjang kuncinya (semakin
panjang kunci, maka semakin lama waktu kerja) dan penggunaan kunci-publik dan kunci
privat pada umumnya. Kekuatan utama dari algoritma RSA didasarkan pada sulitnya
memfaktorkan bilangan besar menjadi faktor-faktor primanya: faktorkan n menjadi dua
faktor primanya, p dan q, sedemikian sehingga n = p ∙ q. Walaupun demikian, RSA yang
populer sampai saat ini dan masih sulit untuk dipecahkan memiliki celah keamanan dengan
hanya mengetahui ciphertext dan kunci publiknya. Salah satu teknik serangan pada RSA
adalah dengan memanfaatkan celah pada “keunggulannya‟ yaitu dengan memfaktorkan kunci
publik n. Kelemahan inilah yang dimanfaatkan untuk melakukan serangan atau hacking untuk
menguji keamanan algoritma RSA dalam dalam merahasiakan pesan dan mengetahui
kelemahan-kelemahannya. Pada makalah ini peulis akan menjelaskan secara lebih detail
mengenai metode Kriptografi RSA.
1.2 Rumusan Masalah
Berdasarkan latar belakang tersebut, rumusan masalah yang akan dibahas sebagai
berikut ini.
1. Apa pengertian Rivest Shamir Adleman (RSA) ?
2. Bagaimana cara kerja Rivest Shamir Adleman (RSA) ?
3. Apa kekurangan dan kelebihan Rivest Shamir Adleman (RSA)?
1.3 Tujuan dan Manfaat
Adapun tujuan dari penulisan makalah adalah sebagai berikut ini.
1. Sebagai salah satu pembahasan untuk tugas mata kuliah Isu dan Prinsip Proteksi
Teknologi Informasi.
2. Untuk menjelaskan kepada pembaca materi mengenai Rivest Shamir Adleman (RSA).
Manfaat yang dapat diambil dari disusunnya makalah ini antara lain sebagai bahan
untuk memberikan pengetahuan dan dapat dijadikan sebagai bahan literature untuk menjawab
pertanyaan-pertanyaan mendasar mengenai Rivest Shamir Adleman (RSA).
BAB II
PEMBAHASAN
2.1 Rivest Shamir Adleman (RSA)
Algoritma RSA dibuat oleh tiga orang peneliti dari MIT (Massachussets Institute of
Technology) pada tahun 1976, yaitu Ron Rivest, Adi Shamir dan Leonard Adleman. RSA
adalah salah satu teknik kriptografi dimana kunci untuk melakukan enkripsi berbeda dengan
kunci untuk melakukan dekripsi. Kunci untuk melakukan enkripsi disebut sebagai kunci
publik, sedangkan kunci untuk melakukan dekripsi disebut sebagai kunci privat. Orang yang
mempunyai kunci publik dapat melakukan enkripsi tetapi yang dalam melakukan dekripsi
hanyalah orang yang memiliki kunci privat. Kunci publik dapat dimiliki oleh sembarang
orang, tetapi kunci privat hanya dimiliki oleh orang tertentu saja.
2.2 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.
2.3 Proses Algoritma RSA
Proses atau cara kerja dari algoritma RSA dapat dilihat sebagai berikut:
1. Menentukan dua bilangan prima p ≠ q secara acak dan terpisah untuk tiaptiap p dan q.
2. Melakukan perhitungan n = p*q. (n merupakan hasil perkalian dari p dikalikan
dengan q)
3. Melakukan perhitungan nilai totient φ (n)= (p-1)(q-1).
4. Menentukan nilai kunci enkripsi e dengan syarat bahwa nilangan tersebut merupakan
bilangan bulat (integer) 1 < e < φ(n) dimana nilai GCD (φ(n), e)=1.
5. Menghitung kunci enkripsi yang dilakukan dengan perhitungan kunci dekripsi dengan
rumus d ≡ e -1
6. Setelah mendapatkan kunci-kunci tersebut maka dapat dilakukan proses enkripsi
maupun proses dekripsi. mod φ(n).
7. Rumus untuk melakukan proses enkripsi adalah C = MKe mod
8. Rumus untuk melakukan proses dekripsi adalah M = CKd mod n
2.4 𝜙Euler𝜙˗Euler atau ditulis𝜙(𝑛) adalah fungsi yang mengembalikan jumlah bilangan integer
a dalam 0 < 𝑎𝑎 < 𝑛𝑛 dan a relatif prima dengan n (relatif prima jika gcd(a, n) = 1) . Hasil 𝜙(𝑛) untuk empat kasus dasar adalah:
1. 𝜙( 1) = 0.
2. 𝜙(𝑝) = 𝑝 −apabila 𝑝 ∈ bilangan prima.
3. 𝜙(𝑝 × 𝑞) = 𝜙(𝑝) × 𝜙𝑞) apabila 𝑔cd(𝑝,𝑞) = 1
4. 𝜙(𝑝𝑒) = 𝑝𝑒− 𝑝𝑒−1 apabila 𝑝 ∈ bilangan prima.
2.5 Pembangkitan Kunci RSA
Pemilik kunci harus membangkitkan kunci publik dan privat untuk dapat
menggunakan RSA. Kedua kunci ini membutuhkan dua bilangan prima besar agar sulit untuk
difaktorisasi. Berikut variabel-variabel yang dibutuhkan untuk RSA:
(p, q)←bilangan prima acak besar
n←p · q, sehingga ϕ(n)←(p – 1)· (q – 1)
e←kunci enkripsi: bilangan acak dalam rentang 1 < e < ϕ(n),
dengan syarat gcd(e, ϕ(n)) = 1
d←kunci dekripsi:e-1 mod ϕ(n)
Ke = (e, n)
Kd = (d,n)
P = plain text
C = cipher text
2.5.1 Enkripsi RSA
Proses enkripsi RSA menggunakan kunci publik yang telah dibangkitkan sebelumnya.
Enkripsi pada RSA menggunakan fungsi eksponensial modulokunci enkripsi e
berikut:
C = MKe mod n
2.5.2 Dekripsi RSA
Untuk mengembalikan cipher text menjadi plain text, dekripsi RSA juga berupa
fungsi eksponensial modulo dengan menggunakan kunci privat. Berikutproses dekripsi
RSA :
2.6 Ancaman yang Mungkin Menyerang RSA
Sistem pengenkripsian RSA mempunyai kemungkinan-kemungkinan kelemahan yang
bisa diserang oleh para eavesdropper (penyadap, penguping), berikut adalah kelemahan-
kelemahan dalam RSA yang sebaiknya dihindari:
• Nilai n terlalu kecil, sehingga mudah untuk difaktorisasi
• Jumlah nilai eksponen en yang terlalu kecil
• Ukuran kunci yang terlalu kecil, sehingga sandi dapat dijebol dengan brute force
attack
• Nilai d terlalu kecil
• Pengunaan nilai modulus yang familiar, hal ini memudahkan para hacker untuk
menjebol sandi yang ada
2.7 Keuntungan dan Kerugian RSA
Keuntungan utama dari RSA yang merupakan kriptografi kunci publik adalah
menambah keamanan dan kenyamanan. Kunci privat tidak pernah diperlukan untuk dikirim
atau diberi tahu ke orang lain. Pada sebuah sistem kunci rahasia, secara terangterangan kunci
rahasia ini harus dikirim (bisa secara manual atau melalui sebuah saluran komunikasi) dan
akan terjadi suatu kemingkinan dimana penyerang dapat mencari tahu kunci rahasia tersebut
saat proses pengiriman.
Keuntungan utama lainnya adalah sistem RSA yang merupakan sistem kunci publik
ini dapat menyediakan sebuah metode untuk tanda tangan digital atau tanda tangan
elektronik. Autentikasi melalui kunci rahasia memerlukan pembagian dari beberapa rahasia
dan terkadang juga memerlukan rasa kepercayaan terhadap pihak ketiga. Sebagai hasilnya,
pengirim dapat menolak pesan autentikasi sebelumnya dengan cara membuktikan bahwa
rahasia yang dibagikan bagaimanapun caranya disetujui oleh pihak lain yang berbagi rahasia
tersebut. Autentikasi kunci publik, di lain sisi, mencegah kejadian penolakan seperti ini.
Setiap user mempunyai tanggung jawab sendiri untuk menjaga kunci privatnya masing-
masing. Jenis autentikasi yang seperti ini sering disebut nonrepudation.
Kekurangan dari pemakaian kriptografi kunci publik, dalam hal ini RSA, adalah
dalam masalah kecepatan. Banyak metode enkripsi kunci rahasia yang populer yang memiliki
kecepatan enkripsi-dekripsi yang lebih cepat dibandingkan dengan metode enkripsi kunci
publik yang ada sekarang. Namun kriptografi kunci publik dapat digunakan dengan
kriptografi kunci rahasia untuk mendapatkan metode enkripsi yang terbaik di dunia. Untuk
enkripsi, solusi terbaik adalah dengan cara mengkombinasi sistem kunci publik dan sistem
kunci rahasia untk mendapatkan kedua keuntungan yang dimiliki oleh kedua metode enkripsi
ini, keuntungan keamanan dari segi sistem kunci publik, dan keuntungan kecepatan dari segi
sistem kunci rahasia. Kriptografi kunci publik dapat menjadi lemah terhadap pemalsuan
identitas user, bagaimana pun juga, walupun jika kunci privat dari pemakai tidak tersedia.
Sebuah serangan yang sukses pada sebuah otoritas sertifikasi akan memperbolehkan lawan
untuk menyelinap siapapun yang lawan pilih dengan cara memilih sertifikat kunci publik dari
sebuah otoritas yang memilikinya untuk menggabungkan kunci tersebut ke nama user yang
lain.
2.8 Aplikasi enkripsi RSA(Rivest Shamir Adleman)/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package rsaisudewi;
import java.util.Scanner;
/**
*
* @author Dewi
*/
public class RSAisudewi {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int p,q,n,Tn,Kd,Ke,M,H_EN,H_DE;
String GCD;
int[] gcd = new int[100];
int[] kd = new int [100];
Scanner scan = new Scanner (System.in);
//prosesRSA proses = new prosesRSA();
System.out.print("Inputkan nilai p: ");
p =scan.nextInt() ;
System.out.print("Inputkan nilai q: ");
q =scan.nextInt() ;
n=Val(p,q);
System.out.println("Hasil nilai n:(p*q) : " +n);
Tn=TotN(p,q);
System.out.println("Hasil totient euler Tn:(p-1)*(q-1) : " +Tn);
System.out.println("Hasil dari Kd: ");
/*int Kd=1;
for(int x=0;x<Tn;){
kd[x]=Kd;
System.out.print(Kd+", ");
Kd++;
x++;
}*/
System.out.println(" ");
gcd=fpb1(Tn);
System.out.println("Hasil nilai Kd : ");
for(int x=0;x<Tn;x++){
if(gcd[x]!=0){
System.out.print(gcd[x]+", ");
}
}
System.out.println(" ");
System.out.print("Input nilai Kd yang akan digunakan :");
Kd=scan.nextInt();
Ke=ke(Tn,Kd);
System.out.println("Input nilai dari Ke : " +Ke);
System.out.print("Input nilai Angka(M) yang akan di Enkripsi :");
M=scan.nextInt();
H_EN=enkripRSA(M,Tn,Ke);
System.out.println("Hasil nilai Enkripsi Angka("+M+") dengan
Ke("+Ke+") adalah "+H_EN);
H_DE=dekripRSA(H_EN,Tn,Kd);
System.out.println("Hasil nilai Deskripsi "+ +H_EN +" dengan
Kd("+Kd+") adalah "+H_DE);
}
public static int Val(int n, int m){
int b=n*m;
return b;
}
public static int TotN(int n, int m){
int TotN=(n-1)*(m-1);
return TotN;
}
public static int[] fpb1(int TotN){
int r, val, q=0;
int gcd[]= new int[TotN];
for (r=1; r<=TotN; r++){
val=fpb2(TotN, r);
if (val==1){
gcd[q]=r;
q++;
}
}
return gcd;
}
public static int fpb2(int TotN, int r){
int x, y, t, p=0;
if (TotN>r){
x=TotN;
y=r;
} else{
x=r;
y=TotN;
}
for (t=1; t<=x; t++){
if (y>=t && x % t==0 && y % t==0){
p=t;
}
}
return p;
}
public static int ke(int TotN, int kd){
int y, ke=0;
for (y=1; y<TotN; y++){
if (y*kd % TotN==1){
ke=y;
}
}
return ke;
}
public static int enkripRSA(int m, int n, int ke){
int tes= (int) Math.pow(m, ke) % n;
return tes;
}
public static int dekripRSA(int c, int n, int kd){
int tes= (int) Math.pow(c, kd) % n;
return tes;
}
}
Kode Program 2.1 RSAisuDewi
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package rsaisudewi;
/**
*
* @author Dewi
*/
public class RSAproses {
public static int Val(int n, int m){
int b=n*m;
return b;
}
public static int TotN(int n, int m){
int TotN=(n-1)*(m-1);
return TotN;
}
public static int[] fpb1(int TotN){
int r, val, q=0;
int gcd[]= new int[TotN];
for (r=1; r<=TotN; r++){
val=fpb2(TotN, r);
if (val==1){
gcd[q]=r;
q++;
}
}
return gcd;
}
public static int fpb2(int TotN, int r){
int x, y, t, p=0;
if (TotN>r){
x=TotN;
y=r;
} else{
x=r;
y=TotN;
}
for (t=1; t<=x; t++){
if (y>=t && x % t==0 && y % t==0){
p=t;
}
}
return p;
}
public static int Ke(int TotN, int kd){
int y, ke=0;
for (y=1; y<TotN; y++){
if (y*kd % TotN==1){
ke=y;
}
}
return ke;
}
public static int enkripRSA(int m, int n, int ke){
int tes= (int) Math.pow(m, ke) % n;
return tes;
}
public static int dekripRSA(int c, int n, int kd){
int tes= (int) Math.pow(c, kd) % n;
return tes;
}
}
Kode Program 2.2 RSAproses
Kode program 2.2 merupakan sintaks dari proses yang dilakukan pada metode
RSA(Rivest Shamir Adleman).
2.5.1 Uji Coba Aplikasi
Uji coba aplikasi akan membahas hasil atau output yang telah dibuat. Penjelasan
mengenai hasil uji coba dari aplikasi enkripsi dan deskripsi RSA (Rivest Shamir Adleman)
akan dijabarkan pada Gambar 2.1.
Gambar 2.1 Uji Coba Aplikasi Enkripsi dan Deskripsi RSA
Gambar 2.1 menunjukkan program yang dijalankan dengan menginputkan dua
bilangan prima yaitu nilai p dan q yang menghasilkan nilai n yaitu 77. Hasil totient eulernya
dengan rumus Tn=(p-1)*(q-1)=60. Lalu ditampilkan hasil nilai dari Kd yaitu bilangan prima
sampai 60. Lalu selanjutnya menginputkan nilai Kd yang akan digunakan yaitu 11, lalu nilai
Ke yaitu 11 dan menginputkan nilai M yang akan dienkripsi yaitu 3 dan hasil enkripsi M=3
dengan Ke=11 adalah 27 dan hasil deskripsi 27 dengan Kd=11 adalah 7.
BAB III
PENUTUP
3.1 Kesimpulan
RSA adalah salah satu teknik kriptografi dimana kunci untuk melakukan enkripsi
berbeda dengan kunci untuk melakukan dekripsi. Kunci untuk melakukan enkripsi disebut
sebagai kunci publik(Ke), sedangkan kunci untuk melakukan dekripsi disebut sebagai kunci
privat(Kd). 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.
DAFTAR PUSTAKA
http://repository.usu.ac.id/bitstream/handle/123456789/43626/Chapter%20II.pdf?sequence=4
http://eprints.undip.ac.id/25130/1/J2A006004-ARIF.pdf