Tugas Network Programing

8
 TUGAS KELOMPOK NETWORK PROGRAMING Program kriptografi algoritma rsa NAMA ANGGOTA KELOMPOK : 1. GUSTI BAGUS SATRIYAGUNA 100010463 2. MARLIN ROSMELIA MATHIUS 090010483 3. KADEK PREMASTUTI KARANG 090010643 SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN TEKNIK KOMPUTER (STIMIK) STIKOM BALI

Transcript of Tugas Network Programing

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 1/8

 

 TUGAS KELOMPOK NETWORK PROGRAMINGProgram kriptografi algoritma rsa

NAMA ANGGOTA KELOMPOK :

1. GUSTI BAGUS SATRIYAGUNA 100010463

2. MARLIN ROSMELIA MATHIUS 090010483

3. KADEK PREMASTUTI KARANG 090010643

SEKOLAH TINGGI MANAJEMENINFORMATIKA DAN TEKNIK KOMPUTER

(STIMIK) STIKOM BALI

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 2/8

 

2011

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 3/8

 

ALGORITMA KRIPTOGRAFI RSA

RSA adalah salah satu contoh kriptografi yang menerapkan konsep  public key. Algoritmaini pertama kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman

dari Massachusetts Institute of Technology (MIT). Nama RSA sendiri adalah singkatan dari nama

 belakang mereka bertiga. Clifford Cocks, seorang matematikawan Inggris sebenarnya juga telah

mengembangkan algoritma yang hampir sama dengan RSA ini pada tahun 1973. Namun algoritma

 buatannya tidak begitu dikenal oleh publik, dan baru dipublikasi pada tahun 1997 karena

merupakan proyek rahasia. Walau begitu algoritma yang dikembangkan Rivest, Shamir, dan

Adleman tidak berhubungan dengan pekerjaan Cocks.

Pada algoritma RSA terdapat 3 langkah utama yaitu key generation (pembangkitan kunci),

enkripsi, dan dekripsi. Kunci pada RSA mencakup dua buah kunci, yaitu  public key dan private

key. Public key digunakan untuk melakukan enkripsi, dan dapat diketahui oleh orang lain.

Sedangkan private key tetap dirahasiakan dan digunakan untuk melakukan dekripsi.

Pembangkitan kunci atau key generation dari RSA adalah sebagai berikut :

1. Pilih dua buah bilangan prima sembarang a dan b. Jaga kerahasiaan a dan b ini.

2. Hitung n = a * b. Besaran n ini tidak perlu dirahasiakan.

3. Hitung m = (a-1) * (b-1). Sekali m telah dihitung, a dan b dapat dihapus untuk mencegah

diketahuinya oleh pihak lain.

4. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima

terhadap m (relatif prima berarti GCD(e, m) = 1) dengan syarat e ≠ (p-1), e ≠ (q-1), dan e < n

5. Hitung kunci dekripsi, d , dengan kekongruenan ed ≡1 (mod m).

Proses enkripsi dapat dilakukan dengan :

Ci = Pie mod n

Sedangkan proses dekripsi dilakukan dengan :

Pi = Cid mod n

Blok-blok plainteks dinyatakan dengan  p1, p2, p3, ... (harus dipenuhi persyaratan bahwa

nilai pi harus terletak dalam himpunan nilai 0, 1, 2, ..., n-1 untuk menjamin hasil perhitungan tidak 

 berada di luar himpunan). Pada langkah kelima pembangkitan kunci atau key generation,

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 4/8

 

kekongruenan ed ≡ 1 (mod m) sama dengan ed mod m = 1. Sehingga dapat pula dikatakan bahwa

ed ≡1 (mod m) ekivalen dengan ed = 1 + km.

Maka d dapat dihitung dengan cara yang sederhana dengan persamaan d =1km e

Dengan mencoba nilai k = 1, 2, 3, ..., diperoleh nilai d yang bulat. Nilai itu yang akan dipakai

sebagai kunci pribadi untuk dekripsi pesan. Dalam implementasi sebenarnya, nilai a dan b

diharapkan sangat besar sekali (misalnya 100 digit) agar pekerjaan memfaktorkan n menjadi faktor 

 primanya menjadi sangat sukar, sehingga lebih susah untuk ditembus.

Contoh penerapan algoritma RSA.

1. Menentukan bilangan acak a dan b

a = 13

b = 5

2. Hitung n dan m

n = 13 * 5 = 65

m = 12 * 4 = 48

3. Cari nilai e

GCD(e, 48) = 1

Misalnya,

e = 2 maka GCD(2, 48) = 2

e = 3 maka GCD(3, 48) = 3e = 4 maka GCD(4, 48) = 4

e = 5 maka GCD(5, 48) = 1 , jadi digunakan e = 5

4. Lalu cari nilai d 

d =1km

e

 Misalnya

k = 1 maka d = 9,8

k = 2 maka d = 19,4

k = 3 maka d = 29 , jadi digunakan d = 29

Kita coba mengenkripsi pesan menggunakan angka-angka yang telah didapatkan. Misalkan

 pesan yang dikirim adalah angka 48.

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 5/8

 

E = 48 ^ 5 mod 65

= 254803968 mod 65

= 3

Setelah dilakukan enkripsi, didapat nilai sekarang adalah 3. Kemudian akan kita coba lakukan

dekripsi pada nilai tersebut.

D = 3 ^ 29 mod 65 = 68630377364883 mod 65 = 48

Perhatikan bahwa nilai yang didapat sama dengan nilai awal, yaitu 48. Kekuatan algoritma RSA

terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor primanya, dalam hal

ini memfaktorkan n menjadi a dan b. Karena sekali n berhasil difaktorkan, maka menghitung nilai

m adalah perkara mudah. Selanjutnya, walau nilai e diumumkan, perhitungan kunci d  tidaklah

mudah pula karena nilai m yang tidak diketahui.

Program yang kami buat :

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System;using System.Security.Cryptography;

namespace RSA{ 

public partial class Form1 : System.Windows.Forms.Form bisamemanggil/mengakses semua kelas

{  private RSA.Form1.clsCryptography clsRSA = new 

RSA.Form1.clsCryptography();  private byte[] Decrypted; hanya bisa mengakses /dipanggil pada class dekripsi

private byte[] Encrypted; hanya bisa mengakses /dipanggal pada classenkripsi

public Form1()

InitializeComponent();}

 

public class clsCryptography{

 private RSACryptoServiceProvider RSA;

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 6/8

 

  public string PublicKey;  public string PrivateKey;  public byte[] Encrypt(byte[] data, string PublicKeyIn) mengembalikan

data keenkripsi

{RSA.FromXmlString(PublicKeyIn);

  return RSA.Encrypt(data, false); 

public byte[] Decrypt(byte[] data, string PrivateKeyIn){

RSA.FromXmlString(PrivateKeyIn); mengembalikan data ke deskripsi  return RSA.Decrypt(data, false);

}

  //KONSTRUKTOR  public clsCryptography()

{  CspParameters cspParams = new CspParameters();

cspParams.Flags = CspProviderFlags.UseMachineKeyStore;RSA = new RSACryptoServiceProvider(cspParams);PublicKey = RSA.ToXmlString(false);PrivateKey = RSA.ToXmlString(true);

}

}

  private void Form1_Load(object sender, EventArgs e){

tbStatus.Text += "Private key is:\r\n" + clsRSA.PrivateKey + "\r\n";tbStatus.Text += "Public key is:\r\n" + clsRSA.PublicKey + "\r\n";

}Keterangan : untuk menampilkan status public key dan private key

 

private void btnEncrypt_Click(object sender, System.EventArgs e){

  byte[] PlainText = System.Text.Encoding.ASCII.GetBytes(tbWorking.Text);Encrypted = clsRSA.Encrypt(PlainText, clsRSA.PublicKey);tbWorking.Text = System.Text.Encoding.ASCII.GetString(Encrypted);

}Keterangan : untuk mengubah/konversi (enkripsi) data(teks)

private void btnDecrypt_Click(object sender, System.EventArgs e){

Decrypted = clsRSA.Decrypt(Encrypted, clsRSA.PrivateKey);

tbWorking.Text = System.Text.Encoding.ASCII.GetString(Decrypted);keterangan : untuk mengubah/konversi (deskripsi) data(teks)

}

 }

 }

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 7/8

 

Plaintext

Tampilan :

Chiper Text

Hasil Enskripsi

5/17/2018 Tugas Network Programing - slidepdf.com

http://slidepdf.com/reader/full/tugas-network-programing 8/8

 

KESIMPULAN

Ilmu atau seni menyandikan pesan atau kriptologi (kriptografi) telah digunakan manusia

sejak berabad-abad yang lampau. Dari menggunakan peralatan sederhana seperti Scytale, dan

kemudian berkembang menjadi Caesar Cipher , menggunakan mesin seperti pada Enigma, dan

akhirnya dengan menggunakan number theory. Berbagai konsep seperti  public-key cryptography

 juga dikembangkan.

RSA adalah salah satu algoritma kriptografi yang menggunakan konsep public-key

cryptography. RSA membutuhkan tiga langkah dalam prosesnya, yaitu pembangkitan kunci

dengan bilangan acak, enkripsi, dan dekripsi. Jika bilangan acak yang dibangkitkan kuat, makaakan lebih sulit untuk melakukan cracking  terhadap pesan. Parameter kuat tidaknya suatu kunci

terdapat pada besarnya bilangan acak yang digunakan.