Keamanan Sistem Komputer dengan Algoritma RSA


KEAMANAN SISITEM KOMPUTER 
oleh: Maulida Nabila Akbar
201731268
A. Algoritma

1. Hubungan Keamanan Sistem Komputer dengan Kriptografi RSA

Keamanan komputer merupakan hal terpenting ketika kita mengoperasikan komputer untuk keperluan apapun. Perusahaan besar mestinya memberi porsi lebih untuk meningkatkan keamanan komputer. Alasannya sederhana, apabila keamanan komputer lemah maka hal-hal yang tidak diinginkan pun dapat terjadi dengan mudahnya. Oleh sebab itu, pengguna komputer yang pintar tentu melihat sisi waspada sehingga mengerahkan kemampuan untuk sebisa mungkin keamanan komputer tergolong optimal. Salah satu pengamanannya yaitu dengan menggunakan Algoritma RSA,mengapa?

Karena Keamanan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini n = p × q.

Sekali n berhasil difaktorkan menjadi p dan q, maka φ(n) = (p 1)x(q 1) dapat dihitung. Selanjutnya, karena kunci enkrispi PK diumumkan (tidak rahasia), maka kunci dekripsi SK dapat dihitung dari persamaan PK SK 1 (mod φ(n)).

Penemu algoritma RSA menyarankan nilai p dan q panjangnya lebih dari 100 digit. Dengan demikian hasil kali r = p × q akan berukuran lebih dari 200 digit. Menurut Rivest dan kawan-kawan, uasaha untuk mencari faktor bilangan 200 digit membutuhkan waktu komputasi selama 4 milyar tahun! (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik).

Untunglah algoritma yang paling mangkus untuk memfaktorkan bilangan yang besar belum ditemukan. Inilah yang membuat algoritma RSA tetap dipakai hingga saat ini. Selagi belum ditemukan algoritma yang mangkus untuk memfaktorkan bilangan bulat menjadi faktor primanya, maka algoritma RSA tetap direkomendasikan untuk menyandikan pesan.



2. Algoritma RSA

Pengertian RSA di bidang kriptografi adalah sebuah algoritma pada enkripsi public key. RSA merupakan algoritma pertama yang cocok untuk digital signature seperti halnya ekripsi, dan salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara luas dalam protokol electronic commerce, dan dipercaya dalam mengamankan dengan menggunakan kunci yang cukup panjang.

Sejarah Algortima RSA dijabarkan pada tahun 1977 oleh tiga orang : Ron Rivest, Adi Shamir dan Len Adleman dari Massachusetts Institute of Technology. Huruf RSA itu sendiri berasal dari inisial nama mereka (Rivest-Shamir-Adleman).

Clifford Cocks, seorang matematikawan Inggris yang bekerja untuk GCHQ, menjabarkan tentang sistem ekuivalen pada dokumen internal pada tahun 1973. Penemuan Clifford Cocks tidak terungkap hingga tahun 1997 karena alasan top-secret classification.

Algoritme tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983 di Amerika Serikat sebagai U.S. Patent 4.405.829. Paten tersebut berlaku hingga 21 September 2000. Semenjak Algoritma RSA dipublikasikan sebagai aplikasi paten, regulasi di sebagian besar negara-negara lain tidak memungkinkan penggunaan paten. Hal ini menyebabkan hasil temuan Clifford Cocks di kenal secara umum, paten di Amerika Serikat tidak dapat mematenkannya.



Proses Pembentukan Kunci :

1.Pilih dua bilangan prima p dan q, (usahakan p > q)

2. hitung n=p x q

3. hitung Φ(n)=(p-1) x (q-1)

4. pilih kunci publik yang relatif prima dengan Φ(n)

5. Hitung kunci private dengan  SK=1+Φ(n)/PK



Proses Enkripsi :

1. Ubahlah plaintext kedalam kode ASCII

2.Karakter ASCII disimpan dalam blok-blok atau byte.

3. Lakukan perkalian dalam tiap blok untuk mendapatkan ciphertext dengan rumus :

C=p^e mod n



Proses Dekripsi :

1. Ubahlah plaintext kedalam kode ASCII

2.Karakter ASCII disimpan dalam blok-blok atau byte.

3. Lakukan perkalian dalam tiap blok untuk mendapatkan plaintext dengan rumus :

P=c^d mod n



FLOWCHART Algoritma RSA

 

Keterangan :

Mulai,

Pertama, masukkan bilangan prima p dan q, dimana p tidak sama denga q tetapi p>q.

Kedua, hitung n dan Ф(n)

Ketiga,masukkan nilai e atau kunci publik yang relatif prima terhadap

n dimana 1 < e < n-1.

Keempat, hitung d atau kunci pribadi.

Kelima, tentukan kunci publik (e,n) dan kunci pribadi (d,n)

Keenam, masukkan pesan atau plaintext.

Ketujuh,ubah pesan atau plaintext tersebut kedalam kode ASCII

Kedelapan,hitung C dimana akan menghasilkan output cipher text (pada langkah ke9).

Jika pesan atau plaintext yang telah di enkripsi ingin di ubah kembali ke plaintext atau di dekripsi maka dilanjutkan ke langkah ke10 yaitu hitung nilai d dimana akan menghasilkan output plaintext(pada langkah ke11).

Kemudian,selesai.



3. STUDI KASUS yang diambil ialah :

Kasus Peretasan Penjualan Tiket Online Citilink Indonesia

Dalam kasus tersebut Pihak Citilink juga mengalami kerugian sebesar Rp1.973.784.434 karena ada sejumlah orang yang membeli tiket dari sindikat peretas tersebut melakukan pembatalan dan refund.

Ada kemungkinan dari sisi maskapai Citilink sendiri yang rentan seperti belum membatasi penyaringan terhadap special character yang memungkinkan seorang penyerang untuk menarik konten di database dari halaman front end aplikasi (dikenal SQL Injection).

Umumnya dari hasil ini, seseorang dapat mempergunakan data untuk login ke halaman yang lebih tertentu (seperti halaman admin) atau dapat juga untuk mengambil data sensitif pengguna lain.

Namun Taufik menambahkan, bila ditarik dari kesimpulan tersebut, masih terlalu banyak hal yang dapat dijadikan dugaan karena tidak hanya SQL Injection yang dapat membuat seseorang berhasil memperoleh akses masuk.

Peretas tersebut melakukan atau login ke akun maskapai Citilink, kemudian membagikan atau menjual tiket tersebut secara murah ke sosial media Facebook.





Pada algoritma RSA kami menerapkan keamanan pada saat seseorang berusaha login, misalnya pada kasus diatas, Maka akan diterapkan kunci publik yang dimiliki semua pegawai citilink dimana kunci publik tersebut digunakan untuk membuka pesan yang dikirimkan oleh pegawai lain misalnya A, kemudian si A ini memiliki kunci pribadi yang tidak diketahui orang lain dan hanya dia saja yang tahu.



kemudian jika si A ingin login maka akan muncul username dan password beserta kunci pribadi itu. Sehingga seseorang tidak akan bisa masuk dengan mudahnya ke dalam akun citilink.



4. Syntax Program Menggunakan Bahasa Pemrograman C++



#include<iostream>

#include<math.h>

#include<string.h>

#include<stdlib.h>



using namespace std;



long int p, q, n, t, flag, e[100], d[100], temp[100], j, m[100], en[100], i;



string msg;

int prime(long int);

void ce();

long int cd(long int);

void encrypt();

void decrypt();



int prime(long int pr){

                int i ;

                j=sqrt(pr);

               

                for (i=2 ; i<=j ; i++){

                                if (pr%i==0)

                                return 0 ;

                }

                return 1 ;

}



int main (){

                cout<<"\nMASUKKAN ANGKA PRIMA : ";

                cin>>p;

                flag=prime(p);

                if (flag==0){

                                cout<<"\nINPUT SALAH"<<endl;

                                exit(1);

                }

                cout<<"\nMASUKKAN BILANGAN PRIMA LAINNYA : ";

                cin>>q;

                flag=prime(q);

                if (flag==0 || p==q){

                                cout<<"\nINPUT SALAH"<<endl;

                                exit(1);

                }

               

                cout<<"\nMASUKKAN PESAN"<<endl;

               

                fflush(stdin);

                getline(cin,msg);

                for(i=0; msg[i] != '\0'; i++)

                m[i]=msg[i];

               

                n=p*q;

               

                t=(p-1)*(q-1);

               

                ce();

                cout<<"\nANGKA TERSEDIA DARI E DAN D"<<endl;

                for (i=0; i<j -1; i++)

                cout<<e[i]<<"\t"<<d[i]<<"\n";

               

                encrypt();

                decrypt();

                return 0;

}



void ce(){

                int k;

                k=0;

                for(i=2; i<t; i++){

                if(t%i==0)

                continue;

                flag=prime(i);

                if (flag==1 && i !=q){

                                e[k]=i;

                                flag=cd(e[k]);

                                if (flag>0){

                                                d[k]=flag;

                                                k++;

                                }

                                if (k==99)

                                break;

                }

                }

}



long int cd(long int x){

                long int k=1;

                while(1){

                                k=k+t;

                                if(k%x==0)

                                return (k/x);

                }

}



void encrypt(){

                long int pt,ct,key=e[0], k, len;

                i=0;

                len=msg.length();

               

                while(i != len){

                                pt=m[i];

                                pt=pt-96;

                                k=1;

                                for(j=0; j<key; j++){

                                                k=k*pt;

                                                k=k%n;

                                }

                                temp[i]=k;

                                ct=k+96;

                               

                                en[i]=ct;

                                i++;

                }

                en[i]=-1;

                cout<<"\nPESAN ENKRIPSI"<<endl;

                for(i=0; en[i] != -1; i++)

                printf("%c",en[i]);

}



void decrypt(){

                long int pt,ct,key=d[0],k;

                i=0;

                while(en[i] != -1){

                                ct=temp[i];

                                k=1;

                                for(j=0; j<key; j++){

                                                k=k*ct;

                                                k=k%n;

                                }

                                pt=k+96;

                                m[i]=pt;

                                i++;

                }

               

                m[i]=-1;

                cout<<"\nPESAN DEKRIPSI"<<endl;

                for(i=0; m[i] !=-1; i++)

                printf("%c",m[i]);

}



5. LINK BLOG

Kelompok 6 :








6. SUMBER







B.Analisa Algoritma

1. Hubungan Keamanan Sistem Komputer antara RSA dan Block Cipher

Algoritma kriptografi block cipehr beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blik bit yang panjangnya sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali enkripsi (1 karakter sama dengan 8 bit dalam pengkodean ASCII).

Algoritma RSA dan Block Cipher memiliki hubungan dalam keamanan data atau pesan yang diubah kedalam kode ASCII. Dari segi keamanan, algoritma block cipher ini melindungi kerahasiaan data yang dikirim melalui media telekomunikasi dan melindungi kerahasiaan data yang disimpan pada media penyimpanan. Kelemahan dari sistem ini adalah baik pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara yang aman untuk memberitahukan kunci kepada penerima pesan.

Contoh lain :



2.Block Cipher

Blok cipher merupakan algoritma kriptografi simetrik yang mengenkripsi satu blok plaintext dengan jumlah bit tertentu dan menghasilkan blok ciphertext dengan jumlah bit yang sama. Misalkan ukuran blok plaintext yang dienkripsi adalah 64 bit, maka akan menghasilkan ciphertext yang berukuran 64 bit. 



Sejarah : 

Algoritma blok cipher menggabungkan beberapa teknik kriptografi klasik  dalam proses enkripsi. Dengan kata lain, cipher blok dapat diacu sebagai super-enkripsi.

Mode operasi paling awal, ECB, CBC, OFB, dan CFB , tahun 1981 dan ditentukan dalam FIPS 81, Mode DES Operasi. Pada tahun 2001, Lembaga Standar dan Teknologi Nasional AS (NIST) merevisi daftar mode operasi yang disetujui dengan memasukkan AES sebagai chiper block dan menambahkan mode RKPT di SP800-38A, Rekomendasi untuk Blok Cipher Mode Operasi. Akhirnya, pada bulan Januari 2010, NIST menambahkan XTS-AES di SP800-38E, Rekomendasi untuk Blok Cipher Mode Operasi: Mode XTS-AES untuk Kerahasiaan pada Perangkat Penyimpanan. Mode kerahasiaan lainnya ada yang belum disetujui oleh NIST. 



Cara kerja : 

- enkripsi : merubah plaintext menjadi chipertext. dengan menggunakan key yang kita tentukan sebelumnya. dengan key tersebut plaintext di XOR dengan key maka mendapat hasil chipertext yang akan di ganti dengan kode ascii.

- dekripsi : merubah chipertext menjadi plaintext. dengan menggunakan key yang telah di gunakan sebelumnya terhadap proses enkripsi lalu di XOR kembali. maka hasil dari XOR tersebut menjadi plaintext kembali.


Flowchart
Electronic Code Book.
https://ilmukriptografi.files.wordpress.com/2012/04/ecb.jpg?w=595
Electronic Code Book

Metode standar dari Block Cipher, yaitu masing – masing blok plainteks dienkripsi dengan kunci yang sama secara independen. Kelemahan utama dari metode ini adalah mudahnya pendeteksian, terutama jika ada blok  – blok data yang sama dan dienkripsi dengan kunci yang sama maka akan menghasilkan cipherteks yang sama pula. Hal inilah yang menyebabkan mengapa disebut Electronic Code Book,karena seolah kita dapat mengetahui dan membuat sebuah kamus atau ensiklopedi dari plainteks dan cipherteks dengan kunci yang sama.

2. Cipher Block Chaining
https://ilmukriptografi.files.wordpress.com/2012/04/cbc.jpg?w=595
Cipher Block Chaining Scheme
Untuk mengatasi kekurangan yang dimiliki oleh ECB, maka dibentuklah metode Cipher Block Chaining Ini. Pada dasarnya, konsep enkripsinya sama dengan ECB, namun ada perbedaan disini, bahwa plaintext yang akan dienkripsi, terlebih dahulu dilakukan XOR dengan ciphertext fase sebelumnya. Untuk fase pertama digunakanlah Initialization Vector sebagai nilai awal, yang kemudian di XOR dengan blok plaintext yang selanjutnya dilakukan enkripsi dengan kunci yang telah disepakati. Selanjutnya, blok ciphertext yang dihasilkan, selain dikeluarkan melalui output, blok ciphertext tersebut dilakukan XOR lagi dengan blok plaintext yang selanjutnya.
Pada metode dekripsi, yang dilakukan terlebih dahulu adalah mendekripsi blok ciphertext yang kemudian dilakukan XOR dengan ciphertext sebelumnya, dimana untuk fase awal digunakan Initialization Vector yang sama dengan pada saat enkripsi. Selanjutnya, blok ciphertext ini diXOR dengan blok ciphertext selanjutnya setelah dilakukan proses dekripsi.


3. Pengetesan Algoritma RSA dan Block Cipher



Menggunakan Nama dan NIM

RSA :

 



4. Persamaan dan Perbedaan RSA da Block Cipher

dari kedua algoritma tentu saja memiliki persamaan dan perbedaan jadi berikut adalah persamaan dan perbedaan dari kedua algoritma tersebut

Persamaan :

1)         Keduanya sama sama mengubah pesan kedalam kode ASCII

2)       Keduanya merupakan Algoritma Kriptografi Asimetris

3)       RSA dan Block Cipher sebelum dilakukan enkripsi, plaintext yang ada dibagi bagi menjadi blok-blok yang sama.

Perbedaan :

1)         RSA memiliki 2 kunci yaitu public key dan private key, sedangka Block Cipher hanya memiliki 1 kunci yaitu public key.

2)       Keamanan data atau pesan pada RSA lebih terjamin dibandingkan dengan Block Cipher

3)       RSA sangat sulit dalam enkripsi dan dekripsinya sedangkan Block Cipher mudah.


dari persamaan dan perbedaan di atas kita dapat mengetahui apa saja yang membedakan dan apa saja yang menjadikan kedua algoritma tersebut dapat dikatakan sama.


5. LINK BLOG

KELOMPOK ALGORITMA KRIPTOGRAFI BLOCK CIPHER

Kelompok 7 :






6. SUMBER






C. KESIMPULAN

Berdasarkan hasil analisis dan perhitungan algoritma RSA dapat disimpulkan bahwa:

• Keamanan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini r = p × q.

• Semakin tinggi angka yang digunakan maka akan semakin sulit pula pesan/sandi dapat ditebak oleh pihak ketiga.

• Untuk menjaga keamanan dari serangan maka dapat menggunakan atau menerapkan Algoritma RSA ini dibandingkan dengan Block Cipher yang hanya memiliki 1 key saja yang dapat diketahui banyak orang sehingga sangat mudah untuk seseorang bisa masuk/diretas.






Komentar

Postingan populer dari blog ini

Keamanan Sistem Komputer dengan Algoritma RSA

SIMULASI DAN PEMODELAN - FORECASTING

SIMULASI PEMODELAN - MODEL ANTRIAN