Skrip Si

Embed Size (px)

DESCRIPTION

skripsi

Citation preview

  • PENGUJIAN TINGKAT KEAMANAN RSA DENGAN METODE

    UNIVERSAL EXPONENT FACTORING

    DRAFT SKRIPSI

    FITHRI RIZQI KHAIRANI NASUTION

    091401025

    PROGRAM STUDI S1 ILMU KOMPUTER

    FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

    2013

  • ABSTRAK

    Algoritma RSA(Rivest, Shamir, Adleman) adalah salah satu algoritma kriptografi asimetris yang paling umum digunakan. Kelebihan dari algoritma ini adalah sulitnya menemukan faktor bilangan prima yang digunakan. Untuk menguji keamanan dari algoritma RSA ini digunakan metode Universal Exponent Factoring. Metode ini bekerja dengan memperoleh input bilangan n yang akan difaktorkan. Bilangan prima yang diperoleh akan diuji dengan Fermats Little Theorem. Sistem diuji dengan mengenkripsi pesan, memecahkan kunci serta mendekripsi pesan. Pengujian dimulai dari 3 digit nilai n sampai 10 digit nilai n. Dari pengujian didapat grafik yang menunjukkan panjang nilai n berbanding lurus dengan waktu yang dibutuhkan untuk enkripsi dan pemecahan kunci. Dari pengujian pemecahan kunci untuk nilai n sebanyak 6 digit waktu rata-rata adalah 3.39931717 detik, untuk nilai n sebanyak 7 digit waktu rata-rata adalah 42.7710719 detik, untuk nilai n sebanyak 8 digit waktu rata-rata adalah 8 menit 42. 5008628 detik, untuk nilai n sebanyak 9 digit waktu rata-rata adalah 52 menit 13.528554 detik, untuk nilai n sebanyak 10 digit waktu rata-rata adalah 2 jam 25 menit 35.70644 detik. Sementara untuk kompleksitas dari metode Universal Exponent Factoring diperoleh (|n|4). Dapat disimpulkan dari segi waktu pemecahan kunci, tingkat keamanan akan meningkat bila kunci yang digunakan menggunakan bilangan dengan digit yang besar. Kata Kunci: Kriptografi, RSA, Universal Exponent Factoring, Fermats Little Theorem, Kompleksitas waktu.

  • RSA SECURITY LEVEL TESTING WITH UNIVERSAL EXPONENT FACTORING

    ABSTRACT

    RSA (Rivest, Shamir, Adleman) is one of the asymmetric cryptography algorithm most commonly used. The advantage of this algorithm is the difficulty in determining the prime factors used. To test the security of the RSA algorithm, we use Universal Exponent Factoring method. This method works by obtaining input number n. The primes obtained are tested by Fermat's Little Theorem. The system was tested by encrypting a message, obtaining the key and decrypting the message using the obtained key. Testing began on the 3-digit to 10-digit value of n. Testing resulted in a graph which indicated that the length of the value of n is proportional to the time required for encryption and obtained the key. The average time was took to obtain a key from 6-digit value of n was 3.39931717 seconds, for a 7-digit value of n the average time was 42.7710719 seconds, for a 8-digit value of n the average time was 8 minutes 42. 5008628 seconds, for a 9-digit value of n the average time was 52 minutes 13.528554 seconds, for a 10-digit value of n the average time was 2 hours 25 minutes 35.70644 seconds. And for the complexity of the Universal Exponent Factoring method we have (|n|4). We may conclude that the security level will increase if the key used have more digits. Keyword: Cryptography, RSA, Universal Exponent Factoring, Fermats Little Theorem, time complexity.

  • DAFTAR ISI

    Halaman

    Persetujuan ii Pernyataan iii Penghargaan iv Abstrak vi Abstract vii Daftar Isi viii Daftar Tabel x Daftar Gambar xi Daftar Lampiran xii Bab I Pendahuluan

    1.1 Latar Belakang 1 1.2 Rumusan Masalah 2 1.3 Tujuan Penelitian 2 1.4 Batasan Masalah 2 1.5 Manfaat Penelitian 3 1.6 Metode Penelitian 4 1.7 Sistematika Penulisan 4

    Bab II Landasan Teori

    2.1 Kriptografi 6 2.2 Tujuan Kriptografi 7 2.3 Ancaman Kriptografi 8 2.4 Kriptografi Asimetris 9 2.5 Algoritma RSA 10 2.6 Fermats Little Theorem 14 2.7 Metode Universal Exponent Factoring 14 2.8 Penelitian Terdahulu 15

    Bab III Analisis dan Perancangan

    3.1 Analisis Sistem 18 3.1.1 Analisis Masalah 18 3.1.2 Analisis Kebutuhan 19 3.1.2.1 Analisis Fungsional 19 3.1.2.2 Analisis Nonfungsional 20 3.1.2.3 Pemodelan Persyaratan dengan Use Case 20 3.1.3 Analisis Sistem Proses 24 3.2 Perancangan Sistem 25

    3.2.1 Flowchart 25 3.2.1.1 Flowchart Gambaran Umum 25 3.2.1.2 Flowchart Proses Enkripsi 26 3.2.1.3 Flowchart Pemecahan Kunci 28 3.2.1.4 Flowchart Pengujian Bilangan Prima 29

  • 3.2.1.5 Flowchart Proses Dekripsi 30 3.2.2 Rancangan Antar Muka 31 3.2.2.1 Antar Muka Mainform 31 3.2.2.2 Antar Muka Form Dekripsi 32 3.2.2.3 Antar Muka Pemecahan Kunci dan Dekripsi 33

    3.2.3 Tahapan Sistem 35 3.2.3.1 Tahapan Algoritma RSA untuk Enkripsi 35 3.2.3.2 Pemecahan Kunci Menggunakan Metode Universal Exponent Factoring 38 3.2.3.3 Tahapan Algoritma RSA untuk Dekripsi 39

    Bab IV Implementasi dan Pengujian

    4.1 Implementasi 42 4.1.1 Mainform 42 4.1.2 Form Enkripsi 43 4.1.3 Form Pemecahan Kunci dan Dekripsi 44 4.2 Pengujian 44

    4.2.1 Pengujian Proses Enkripsi 45 4.2.2 Pengujian Pemecahan Kunci dan Dekripsi 46 4.2.3 Pengujian Pemecahan Kunci 47 4.2.4 Grafik Hubungan Panjang Nilai n terhadap Waktu 56

    4.3 Perhitungan Kompleksitas Metode Universal Exponent Factoring 58 Bab V Kesimpulan dan Saran

    5.1 Kesimpulan 61 5.2 Saran 62

    Daftar Pustaka 63

  • DAFTAR TABEL Nomor Tabel Nama Tabel Halaman

    2.1 2.2 2.3 3.1 3.2 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20

    Tabel Encoding Base 64 Tabel Enkripsi Pesan Tabel Dekripsi Pesan Spesifikasi Use Case Enkripsi Spesifikasi Use Case Pemecahan Kunci dan Dekripsi Tabel Enkripsi Pengujian Sistem Pengujian Enkripsi Pesan dengan nilai n sebanyak 3 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 3 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 4 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 4 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 5 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 5 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 6 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 6 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 7 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 7 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 8 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 8 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 9 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 9 digit Pengujian Enkripsi Pesan dengan nilai n sebanyak 10 digit Pengujian Pemecahan Kunci dengan nilai n sebanyak 10 digit Waktu Rata-rata Enkripsi Waktu Rata-rata Pemecahan Kunci Perhitungan Running Time

    13 13 14 21 22 45 48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56 57 59

  • DAFTAR GAMBAR Nomor

    Gambar Nama Gambar Halaman

    2.1 2.2

    2.3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

    Sistem Kriptografi Konvensional Pertukaran Kunci Deffie-Hellman Sistem Kriptografi dengan Kunci Publik RSA Diagram Ishikawa untuk Analisa Masalah Use Case Diagram Sistem Activity Diagram untuk Proses Enkripsi Activity Diagram untuk Proses Pemecahan Kunci dan Dekripsi Sequence Diagram Proses Enkripsi Sequence Diagram Proses Pemecahan Kunci dan Dekripsi Gambaran Umum Sistem Flowchart untuk Proses Enkripsi Flowchart untuk Proses Pemecahan Kunci Flowchart Pengujian Bilangan Prima Flowchart untuk Proses Dekripsi Pesan Rancangan Form Login Rancangan Form Enkripsi Rancangan Form Pemecahan Kunci dan Dekripsi Mainform Form Enkripsi Pesan Dialog Box Bilangan Bukan Prima Form Pemecahan Kunci dan Dekripsi Form Enkripsi Pengujian Pesan Ciphertext Hasil Enkripsi Pengujian Sistem Form Pemecahan Kunci pada Pengujian Grafik Hubungan Panjang Nilai n terhadap Waktu Enkripsi Grafik Hubungan Panjang Nilai n terhadap Waktu Pemecahan Kunci

    6 10 11 19 21 22 23 24 25 26 27 28 29 30 31 32 34 42 43 43 44 46 46 47 57 58

  • DAFTAR LAMPIRAN

    Halaman A. Listing Program A-1 B. Daftar Bilangan Prima B-1 C. Curriculum Vitae C-1

  • ABSTRAK

    Algoritma RSA(Rivest, Shamir, Adleman) adalah salah satu algoritma kriptografi asimetris yang paling umum digunakan. Kelebihan dari algoritma ini adalah sulitnya menemukan faktor bilangan prima yang digunakan. Untuk menguji keamanan dari algoritma RSA ini digunakan metode Universal Exponent Factoring. Metode ini bekerja dengan memperoleh input bilangan n yang akan difaktorkan. Bilangan prima yang diperoleh akan diuji dengan Fermats Little Theorem. Sistem diuji dengan mengenkripsi pesan, memecahkan kunci serta mendekripsi pesan. Pengujian dimulai dari 3 digit nilai n sampai 10 digit nilai n. Dari pengujian didapat grafik yang menunjukkan panjang nilai n berbanding lurus dengan waktu yang dibutuhkan untuk enkripsi dan pemecahan kunci. Dari pengujian pemecahan kunci untuk nilai n sebanyak 6 digit waktu rata-rata adalah 3.39931717 detik, untuk nilai n sebanyak 7 digit waktu rata-rata adalah 42.7710719 detik, untuk nilai n sebanyak 8 digit waktu rata-rata adalah 8 menit 42. 5008628 detik, untuk nilai n sebanyak 9 digit waktu rata-rata adalah 52 menit 13.528554 detik, untuk nilai n sebanyak 10 digit waktu rata-rata adalah 2 jam 25 menit 35.70644 detik. Sementara untuk kompleksitas dari metode Universal Exponent Factoring diperoleh (|n|4). Dapat disimpulkan dari segi waktu pemecahan kunci, tingkat keamanan akan meningkat bila kunci yang digunakan menggunakan bilangan dengan digit yang besar. Kata Kunci: Kriptografi, RSA, Universal Exponent Factoring, Fermats Little Theorem, Kompleksitas waktu.

  • RSA SECURITY LEVEL TESTING WITH UNIVERSAL EXPONENT FACTORING

    ABSTRACT

    RSA (Rivest, Shamir, Adleman) is one of the asymmetric cryptography algorithm most commonly used. The advantage of this algorithm is the difficulty in determining the prime factors used. To test the security of the RSA algorithm, we use Universal Exponent Factoring method. This method works by obtaining input number n. The primes obtained are tested by Fermat's Little Theorem. The system was tested by encrypting a message, obtaining the key and decrypting the message using the obtained key. Testing began on the 3-digit to 10-digit value of n. Testing resulted in a graph which indicated that the length of the value of n is proportional to the time required for encryption and obtained the key. The average time was took to obtain a key from 6-digit value of n was 3.39931717 seconds, for a 7-digit value of n the average time was 42.7710719 seconds, for a 8-digit value of n the average time was 8 minutes 42. 5008628 seconds, for a 9-digit value of n the average time was 52 minutes 13.528554 seconds, for a 10-digit value of n the average time was 2 hours 25 minutes 35.70644 seconds. And for the complexity of the Universal Exponent Factoring method we have (|n|4). We may conclude that the security level will increase if the key used have more digits. Keyword: Cryptography, RSA, Universal Exponent Factoring, Fermats Little Theorem, time complexity.

  • BAB I

    PENDAHULUAN

    1.1 Latar Belakang

    Kriptografi pada awalnya merupakan ilmu yang mempelajari penyembunyian pesan.

    Namun, seiring berkembangnya teknologi, kriptografi ini juga berkembang,

    perkembangan teknologi ini dapat dilihat dengan adanya internet yang

    menghubungkan komputer satu sama lain. Dengan adanya perkembangan ini

    kriptografi sangat dibutuhkan untuk keamanan data yang dikirim kepada komputer

    lain.

    Kriptografi adalah ilmu yang bersandarkan pada teknik matematika untuk

    berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan

    autentikasi entitas [5]. Ada empat tujuan utama dari kriptografi. Kerahasiaan

    (confidentiality) di mana kriptografi digunakan untuk menjaga isi dari informasi dari

    siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka informasi

    yang telah disandi. Kerahasiaan dijaga dengan melakukan enkripsi (penyandian).

    Keutuhan (integrity) yang berhubungan dengan penjagaan dari perubahan data secara

    tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk

    mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak [13].

    Fungsi kriptografi yang lain adalah autentikasi yang berhubungan dengan

    identifikasi atau pengenalan, baik secara kesatuan sistem maupun informasi itu

    sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri.

    Informasi yang dikirimkan melalui jaringan harus diautentikasi keaslian, isi datanya,

    waktu pengiriman, dan lain-lain. Non-repudiation adalah usaha untuk mencegah

    terjadinya penyangkalan terhadap pengiriman dengan kata lain, terciptanya suatu

    informasi oleh yang mengirimkan [13].

  • Kriptografi juga dibagi atas dua: kriptografi klasik dan kriptografi modern.

    Yang masing-masing memiliki algoritma tersendiri. Algoritma RSA merupakan

    algoritma yang dikembangkan pada kriptografi modern. Algoritma ini bersifat

    asimetrik di mana kunci dari masing-masing algoritma ini dibangkitkan dengan

    menggunakan pembangkit bilangan acak dan dalam proses enkripsi dan dekripsinya

    menggunakan kunci yang berbeda.

    Pada penelitian sebelumnya telah dilakukan penelitian untuk keamanan data

    dengan kriptografi RSA dengan metode tambahan lain yaitu modified LSB(Least

    Significant Bit). RSA digunakan untuk mengenkripsi pesan asli (plainteks) menjadi

    pesan terenkrip (cipherteks), selanjutnya cipherteks disembunyikan dalam media citra

    digital agar keberadaan pesan tidak dicurigai oleh pihak lain. Penggabungan dua

    algoritma tersebut dapat menjaga kerahasiaan pesan, dimana pesan hanya dapat

    diakses oleh orang yang berwenang dan memiliki kunci. Penelitian diatas dibuat oleh

    Sisca Anggraini dengan judul Sistem Keamanan Data dengan RSA dan Modified

    LSB [1]. Selain itu pada penelitian yang dibuat oleh Beny dengan judul Analisis dan

    Perancangan Sistem Kriptografi Simetris Triple DES dan Kriptografi Simetris RSA,

    didapatkan bahwa dengan penggabungan Triple DES dan RSA dapat menambah

    tingkat keamanan pesan [3].

    Untuk itu, penulis mengangkat judul ini untuk menguji keamanan dari

    algoritma RSA ini dengan menggunakan metode Universal Exponent Factoring

    dengan menganalisis waktu untuk mendapatkan bilangan prima yang dibangkitkan

    untuk kunci private pada algoritma RSA tersebut.

    1.2 Perumusan Masalah

    Berdasarkan latar belakang diatas maka yang menjadi rumusan masalah adalah

    bagaimana menganalisis waktu yang dibutuhkan untuk memecahkan kunci private

    dengan menggunakan metode Universal Exponent Factoring.

  • 1.3 Batasan Masalah

    Batasan masalah yang diangkat pada pengujian tingkat keamanan RSA ini adalah

    sebagai berikut :

    1. Pengujian dilakukan dengan metode Universal Exponent Factoring yang

    menganalisis waktu yang dibutuhkan untuk memecahkan kunci private.

    2. Dilakukan perhitungan Big O, Big dan Big pada metode Universal Exponent

    Factoring.

    3. Pengujian bilangan prima yang dipakai adalah Fermats Little Theorem.

    4. Nilai n dibatasi hanya sampai 10 digit.

    5. Sistem ini dibangun dengan bahasa pemrograman C#.

    1.4 Tujuan Penelitian

    Tujuan dari penelitian ini adalah sebagai berikut:

    1. Untuk mengetahui bagaimana tingkat keamanan algoritma RSA dengan

    menghitung lama waktu untuk memperoleh kunci private dengan metode

    Universal Exponent Factoring.

    2. Menghitung Big O, Big dan Big dari metode Universal Exponent Factoring.

    1.5 Manfaat Penelitian

    Manfaat dari penelitian ini sebagai berikut:

    1. Manfaat untuk penulis adalah:

    a. Penulis dapat mengetahui tingkat keamanan RSA jika diuji dengan metode

    Universal Exponent Factoring.

    b. Menambah pengetahuan penulis dibidang kriptografi khususnya algoritma

    RSA.

    2. Manfaat untuk bidang ilmu adalah:

    Menjadi referensi untuk penelitian selanjutnya di bidang kriptografi.

    3. Manfaat untuk masyarakat:

    Dengan pengujian tingkat keamanan ini diharapkan penggunaan algoritma RSA

    dalam berbagai bidang dapat diterapkan dengan baik.

  • 1.6 Metode Penelitian

    Tahapan yang dilakukan dalam penelitian ini adalah:

    1. Studi Literatur

    Penelitian ini terlebih dahulu dipelajari literatur yang didapat melalui buku,

    jurnal, artikel, makalah maupun situs internet yang membahas kriptografi

    dengan algoritma RSA dan metode Universal Exponent Factoring.

    2. Analisis dan Perancangan Sistem

    Pada tahap ini akan dilakukan analisis terhadap masalah sesuai dengan batasan

    masalah dan tujuan yang akan dicapai dari pengujian tingkat keamanan RSA ini.

    Setelah itu dilakukan perancangan flowchart, antar muka dan perancangan

    sistem untuk dapat menguji tingkat keamanan algoritma RSA dengan metode

    Universal Exponent Factoring.

    3. Implementasi Sistem

    Pada tahap ini akan dilaksanakan pengkodean (coding) dalam bahasa

    pemrograman c# untuk membuat aplikasi untuk pengujian tingkat keamanan

    RSA dengan metode Universal Exponent Factoring.

    4. Pengujian Sistem

    Dalam tahap ini dilakukan pengujian terhadap sistem yang telah dibangun,

    dengan melihat waktu yang dibutuhkan sistem untuk mendapatkan kunci private

    RSA sesuai nilai yang dimasukkan.

    5. Dokumentasi

    Dalam tahapan ini dilakukan penyusunan laporan dari hasil analisis dan

    perancangan sistem dalam format penulisan penelitian.

    1.7 Sistematika Penulisan

    Sistematika penulisan skripsi ini terdiri atas bagian-bagian berikut:

    BAB I PENDAHULUAN

    Bab ini menjelaskan latar belakang, rumusan masalah, batasan masalah, tujuan

    penelitian, manfaat penelitian, metodologi penelitian dan sistematikan penulisan dari

    skripsi ini.

  • BAB II LANDASAN TEORI

    Bab ini menjelasakan landasan teori dari penelitian yang dilakukan. Teori yang

    diangkat yaitu kriptografi dan keamanannya, algoritma RSA(Rivest, Shamir,

    Adleman) dan metode Universal Exponent Factoring.

    BAB III ANALISIS DAN PERANCANGAN SISTEM

    Pada bab ini akan dijelaskan analisis terhadap metode Universal Exponent Factoring

    yang digunakan untuk menguji RSA dan akan dilakukan analisis terhadap waktu yang

    dibutuhkan untuk mencapai tujuan dari sistem. Pada bab ini juga akan dijelaskan

    perancangan dari sistem yang akan dibuat.

    BAB IV IMPLEMNTASI SISTEM

    Pada bab ini akan menguraikan hasil pengujian tingkat keamanan RSA dengan

    metode Universal Exponent Factoring yang dapat dilihat dari sistem yang dibuat.

    BAB V KESIMPULAN DAN SARAN

    Bab ini berisi kesimpulan yang didapat dari hasil pengujian yang dilakukan serta

    saran-saran yang diberikan untuk penelitian selanjutnya.

  • BAB II

    LANDASAN TEORI

    2.1 Kriptografi

    Kriptografi berasal dari bahasa Yunani. Menurut bahasa tersebut kata kriptografi

    dibagi menjadi dua, yaitu kripto dan graphia. Kripto berarti secret (rahasia) dan

    graphia berarti writing (tulisan). Menurut terminologinya kriptografi adalah ilmu dan

    seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat

    lain. Dalam perkembangannya, kriptografi juga digunakan untuk mengindentifikasi

    pengiriman pesan dengan tanda tangan digital dan keaslian pesan dengan sidik jari

    digital (fingerprint) [2].

    Berikut adalah gambar sistem kriptografi konvensional:

    Gambar 2.1 Sistem Kriptografi Konvensional [10]

    Sistem kriptografi seperti yang ditunjukkan pada gambar di atas terdiri dari 5 bagian

    yaitu [10]:

    1. Plaintext adalah pesan atau data dalam bentuk aslinya yang dapat terbaca.

    Plaintext adalah masukan bagi algoritma enkripsi.

  • 2. Secret key juga merupakan masukan bagi algoritma enkripsi merupakan nilai

    yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.

    3. Ciphertext adalah keluaran algoritma enkripsi. Ciphertext dapat dianggap

    sebagai pesan dalam bentuk tersembunyi. Algoritma yang baik akan

    manghasilkan ciphertext yang terlihat acak.

    4. Algoritma enkripsi memiliki 2 masukan, teks asli dan kunci rahasia. Algoritma

    enkripsi melakukan transformasi terhadap plaintext sehingga menghasilkan

    ciphertext.

    5. Algoritma dekripsi memiliki 2 masukan yaitu ciphertext dan kunci rahasia.

    Algoritma dekripsi memulihkan kembali ciphertext menjadi plaintext bila kunci

    rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai

    algoritma enkripsi.

    Dalam sistem kriptografi klasik selalu mengasumsikan pihak pengirim dan

    pihak penerima memiliki kunci rahasia yang sama. Sistem kriptografi ini disebut

    sistem kriptografi simetris. Kunci rahasia harus dibangkitkan secara rahasia dan

    didistribusikan ke pengirim dan penerima melalui saluran yang diasumsikan aman.

    Kebutuhan saluran untuk mendapatkan kunci rahasia menjadi kelemahan utama

    sistem simetris. Sistem kriptografi kunci publik mengatasi asumsi ini, yaitu tidak

    dibutuhkan saluran aman untuk distribusi kunci [10].

    Sistem kriptografi kunci asimentis memiliki kunci untuk enkripsi dan kunci

    untuk dekripsi yang berbeda. Kunci untuk enkripsi disebut juga sebagai kunci publik

    bersifat tidak rahasia sehingga dapat didistribusikan melalui saluran tidak aman.

    Sedangkan kunci dekripsi disebut kunci private bersifat rahasia dan harus dijaga

    kerahasiaannya oleh pemegang kunci [10].

    2.2 Tujuan Kriptografi

    Berikut ini adalah tujuan adanya kriptografi :

    1. Kerahasiaan Data

  • Dengan adanya kriptografi, kerahasiaan data dapat ditingkatkan. Data penting

    yang dimiliki hanya akan dapat dibuka atau dibaca oleh orang-ornag tertentu

    yang memilki akses untuk membukanya.

    2. Data Integrity

    Data yang benar atau asli tanpa ada rekayasa dari pihak ketiga atau pihak yang

    tidak memiliki akses terhadap data tersebut.

    3. Autentikasi

    Autentikasi dilakukan untuk membuktikan data yang dikirim adalah data asli

    atau data yang benar. Autentikasi mencegah adanya data palsu.

    4. Non-repudiation

    Non-repudiation atau nir-penyangkalan adalah salah satu tujuan kriptografi.

    Dengan ini si pengirim tidak dapat menolak bahwa pesan tersebut benar berasal

    dari si pengirim.

    2.3 Ancaman Keamanan

    Berikut beberapa ancaman yang dapat mempengaruhi kemanan data :

    1. Interruption

    Interruption merupakan ancaman yang dilakukan dengan merusak dan

    menghapus data sehingga data tidak dapat ditemukan lagi.

    2. Interception

    Interception adalah ancaman yang dilakukan pihak ketiga dengan menyadap

    ataupun mengakses data. Data yang seharusnya rahasia dapat diakses oleh pihak

    yang tidak memiliki akses.

    3. Modification

    Modification adalah ancaman yang lebih berbahaya, pihak yang tidak memiliki

    akses tidak hanya dapat mengakses data namun dapat memodifikasi atau

    mengubah data.

    4. Fabrication

  • Fabrication merupakan ancaman yang paling berbahaya, pihak yang tidak

    memiliki akses tidak hanya dapat membaca data, juga dapat mengubah dan

    memalsukan data, sehingga data seolah berasal dari pengirim sebenarnya.

    2.4 Kriptografi Asimetris

    Sistem kriptografi kunci publik atau sering disebut sebagai kunci asimetrik pertama

    kali diusulkan oleh Deffie dan Hellman pada tahun 1976. Ide kriptografi kunci publik

    sebenarnya mirip dengan cara kerja kunci gembok. Dimisalkan terdapat sebuah peti

    yang berisi pesan rahasia, lalu peti dikunci dengan gembok, kemudian dikirim kepada

    penerima. Penerima hanya dapat membuka gembok apabila kunci yang dipegang

    olehnya merupakan pasangan gembok[10].

    Algoritma pertukaran kunci Diffie-Hellman (protokol Diffie-Hellman) berguna

    untuk mempertukarkan kunci rahasia untuk komunikasi menggunakan kriptografi

    simetris. Langkah-langkahnya adalah sebagai berikut [9]:

    1. Misalkan Alice dan Bob adalah pihak-pihak yang berkomunikasi. Mula-mula

    Alice dan Bob menyepakati 2 buah bilangan yang besar (sebaiknya prima) P dan

    Q, sedemikian sehingga P < Q. Nilai P dan Q tidak perlu rahasia, bahkan Alice

    dan Bob dapat membicarakannya melalui saluran yang tidak aman sekalipun.

    2. Alice membangkitkan bilangan bulat acak x yang besar dan mengirim hasil

    perhitungan berikut kepada Bob:

    X = Px mod Q .

    3. Bob membangkitkan bilangan bulat acak y yang besar dan mengirim hasil

    perhitungan berikut kepada Alice :

    Y = Py mod Q .

    4. Alice menghitung K = Yx mod Q .

    5. Bob menghitung K = Xy mod Q .

    Jika berhitungan dilakukan dengan benar maka K = K. Dengan demikian Alice dan

    Bob telah memiliki sebuah kunci yang sama tanpa diketahui pihak lain. Gambar 2.2

    mendeskripsikan diagram protokol pertukaran kunci Diffie-Hellman:

  • ALICE

    P,Q

    BOB

    Bangkitkan Bilangan x Bangkitkan Bilangan y

    Hitung X = Px mod Q Hitung X = Py mod Q

    Hitung Key = Yx mod Q Hitung Key = Xy mod Q

    X Y

    Gambar 2.2 Pertukaran Kunci Deffie Hellman[9]

    Kriptografi asimetris memiliki kunci enkripsi dan kunci dekripsi yang berbeda.

    Salah satu algoritma yang dikembangkan sesuai kriptografi asimetris adalah algoritma

    RSA. Algoritma ini memiliki kelebihan melakukan pemfaktoran bilangan yang besar.

    2.5 Algoritma RSA

    Pada tahun 1977, Rivest, Shamir dan Adleman merumuskan algoritma praktis yang

    mengimplementasikan sistem kriptografi kunci publik disebut dengan sistem

    kriptografi RSA[8]. Algoritma ini adalah sistem yang sangat penting dan banyak

    keamanan yang tergantung pada algoritma ini.[4] Algoritma enkripsi dan dekripsi

    memiliki komponen n = p x q, p, q adalah bilangan prima dan (n) = (p-1)(q-1).

    Pada paper yang dipublikasikan oleh Rivest, Shamir dan Adleman untuk

    mengenalkan algoritma RSA yang mereka bangun, mereka menjelaskan kriptosistem

    kunci publik, termasuk generator kunci dan public-key cipher dan kekuatan keamanan

    yang diasumsikan dengan sulitnya memfaktorkan bilangan integer menjadi bilangan

    prima [7].

  • Gambar 2.3 Sistem Kriptografi dengan Kunci Publik RSA[10]

    Berikut adalah algoritma pembangkit kunci RSA :

    1. Bangkitkan bilangan prima p dan q.

    2. Hitung perkalian bilangan prima, n = p x q.

    3. Hitung banyaknya bilangan bilangan asli dibawah n, atau disimbolkan dengan

    (n) dengan rumus (n) = (p-1)x(q-1)

    4. Hitung nilai kunci publik e berupa bilangan dengan rentang 1< e < (n), dengan

    gcd(e, (n)) = 1

    5. Hitung nilai kunci private d, dengan rumus d e-1 (mod (n))

    6. Kpublik = (e, n) , Kprivat = d

    Kita memilih kunci enkripsi secara random seperti e, dan (p-1) (q-1) yang relatif

    prima, dikatakan relatif prima karena gcd(e, ((p-1)(q-1)) = 1, yang maknanya bagi

    bilangan e, (p-1)(q-1) adalah prima, begitu pula sebaliknya meskipun keduanya bukan

    bilangan prima. Dan d di dapat dengan ed = 1 mod (p-1) (q-1), dapat di tulis dengan d

    = e-1 mod (p-1) (q-1) seperti yang dilakukan pada langkah 5. [9]

    Untuk mengenkripsi pesan maka dilakukan perhitungan berikut:

    C = Pe mod n (1)

    Untuk mendekripsi pesan yang telah dienkripsi maka dilakukan perhitungan berikut:

  • P = Cd mod n (2)

    Dimana:

    P = pesan atau data asli

    C = pesan atau data yang telah dienkripsi

    e = kunci publik yang digunakan untuk mengenkripsi pesan

    n = kunci publik yang digunakan mengenkripsi pesan dan untuk

    mengembalikan pesan kedalam bentuk asal

    d = kunci private yang dimiliki penerima

    Contoh penggunaan algoritma RSA:

    Diambil bilangan prima p = 5 dan q = 11

    Berdasarkan algoritma, n = p x q

    Maka n = 5 x 11 = 55

    (n) = (p-1)x(q-1)

    = (5-1)x(11-1) = 40

    Untuk menentukan e harus memenuhi syarat gcd(e, (n)) = 1, maka didapat e = 7

    dimana gcd(7, 40) = 1.Sedangkan d adalah e-1 mod (n) maka didapat d = 23. Maka

    kunci publik yang didapat adalah 7 dan 55, sedangkan kunci private adalah 23.

    Pengirim ingin mengirimkan kata ILKOM yang nilainya diambil dari tabel encoding

    di bawah ini. Dengan nilai I = 8, L = 11, K = 10, O = 14 dan M = 12. Plaintext yang

    dikirim adalah 811101412

  • Tabel 2.1 Tabel Encoding Base 64

    Value Char Value Char Value Char Value Char 0 A 16 Q 32 G 48 W 1 B 17 R 33 H 49 X 2 C 18 S 34 I 50 Y 3 D 19 T 35 J 51 Z 4 E 20 U 36 K 52 0 5 F 21 V 37 L 53 1 6 G 22 W 38 M 54 2 7 H 23 X 39 N 55 3 8 I 24 Y 40 O 56 4 9 J 25 Z 41 P 57 5

    10 K 26 A 42 Q 58 6 11 L 27 B 43 R 59 7 12 M 28 C 44 S 60 8 13 N 29 D 45 T 61 9 14 O 30 E 46 U 62 15 P 31 F 47 V 63 /

    Maka enkripsi yang dilakukan dengan nilai e = 7, n = 55 dan d = 23 sebagai berikut:

    Tabel 2.2 Tabel Enkripsi Pesan

    P C = Pe mod n 8 2

    11 11 10 10 14 9 12 23

    Si penerima akan menerima teks 21110923, maka dengan kunci private yang dimiliki

    maka akan dilakukan dekripsi terhadap ciphertext yang didapat.

    Maka dekripsi yang dilakukan adalah:

  • Tabel 2.3 Tabel Dekripsi Pesan

    C P = Cd mod n 2 8

    11 11 10 10 9 14

    23 12

    Maka, si penerima akan menemukan teks asli dari pengirim dengan kunci private

    yang ia miliki. Maka di dapat hasil 811101412 yang hasilnya sama dengan plaintext

    yang dimilki pengirim.

    2.6 Fermats Little Theorem

    Teorema : Untuk bilangan prima p dan bilangan bulat a, ap a(mod p) dan jika a

    tidak dapat dibagi oleh p, maka ap-1 1 (mod p) [8].

    Teorema ini dapat digunakan untuk mempermudah kalkulasi perpangkatan

    modulo bilangan prima. Sebagai contoh, kita coba kalkulasi 274 (mod 13). Karena 13

    adalah bilangan prima dan 2 tidak dapat dibagi 13, maka teorema ini dapat digunakan

    untuk mengkalkulasi

    212 213-1 (mod 13) 1 (mod 13).

    Jadi

    274 = (212)6 22 16 22 4 (mod 13).

    Meskipun dapat digunakan untuk mempermudah kalkulasi, dalam kriptogra, peran

    terpenting dari Fermats little theorem adalah sebagai dasar dari berbagai teknik

    enkripsi asimetris [6].

    2.7 Metode Universal Exponent Factoring

    Pada metode Universal Exponent Factoring ini, e adalah salah satu variabel yang

    diketahui nilainya dengan syarat xe 1(mod n) untuk x N dan gcd(x, n) = 1

  • kemudian dihitung e = 2b m dimana b > 0 dan m bernilai bebas. Maka akan dilakukan

    langkah berikut:

    1. Pilih nilai random a dengan 1 < a < n-1, jika gcd(a,n) > 1 dan a adalah faktor

    dari n kita dapat mengakhiri algoritma. Jika tidak, dapat dilanjutkan pada

    langkah berikutnya.

    2. Hitung x0 = am(mod n). Jika x0 1 (mod n), lakukan langkah 1. Jika tidak hitung

    xj12 (mod n) untuk semua j = 1, 2, , b . Jika xj -1 (mod n) lakukan langkah 1. Jika xj 1 (mod n) dan Jika xj-1 1 (mod n) dan gcd(xj-1 - 1, n)

    adalah faktor dari n maka algoritma dapat diakhiri [8].

    Contoh penggunaan Universal Exponent Factoring:

    Kita ambil nilai n = 55 dari contoh algoritma RSA diatas dan kita ambil nilai e = 40,

    dimana e = 23.5. maka dilakukan langkah-langkah sebagai berikut:

    1. x0 = 25(mod 55) = 32 mod 55 = 32

    2. x1 = 322(mod 55) = 34

    3. x2 = 342 (mod 55) = 1

    Maka dari hasil x2 = 1, maka gcd(xj-1 - 1, n) = gcd(33, 55) = 11 dan 11 adalah faktor

    dari 55, maka di simpulkan n = 55, p = 11, dan q = 5.

    Setelah didapat nilai p dan q, maka untuk mendapatkan kunci private, maka dilakukan

    perhitungan sesuai algoritma RSA.

    p = 5 q = 11

    (n) = (p-1)x(q-1)

    = (5-1)x(11-1) = 40

    e didapat dengan syarat gcd(e, (n)) = 1, maka e = 7 dengan gcd(7, 40) = 1.

    Dari nilai e yang telah didapat maka kita dapat menghitung nilai d dengan perhitungan

    d = e-1 mod (n), maka dengan e = 7, (n) = 40 didapat d = 23.

    2.8 Penelitian Terdahulu

    Beberapa penelitian yang telah dilakukan sebelumnya yang berkaitan dengan

    penelitian ini adalah:

  • 1. Penelitian oleh Imani Prasasti dengan judul Analisis keamanan kriptosistem

    kunci publik RSA disimpulkan bahwa inti dari keamanan RSA terletak pada

    faktorisasi bilangan yang besar. Dengan menghindari kemungkinan dari algoritma

    faktorisasi maka didapat algoritma yang cukup tahan dan aman dalam jalur

    komunikasi umum. Pada penelitian ini dilakukan analisis terhadap RSA dan

    algoritma untuk memfaktorkan bilangan komposit untuk keamanan data juga

    menganalisis serangan terhadap kriptosistem. Berdasarkan hasil analisis dengan

    Fermats Little Theorem bilangan prima yang dibangkitkan harus besar,

    sedangkan berdasarkan kurva elliptic kunci p dan q harus memilki panjang digit

    yang hampir sama. Untuk menghindari serangan terhadap kriptosistem kita juga

    harus membangkitkan kunci e dengan nilai yang besar [5].

    2. Penelitian Andy Tandiyono dengan judul Simulasi Pemanfaatan Metode

    Interlock Protocol Untuk Mengatasi Man-In-The-Middle-Attack. Pada penelitian

    ini dibahas mengenai bagaimana memanfaatkan metode interlock protocol untuk

    mengatasi terjadinya man-in-the-middle-attack, dimana bilangan prima pada

    algoritma kriptografi RSA digunakan untuk mengamankan pesan, dan bagaimana

    keamanan dari algoritma RSA untuk melindungi pesan yang dipertukarkan. Pada

    sistem ini disimulasikan terdapat 3 pihak yang terkait dengan sistem. Dimana ada

    pengirim, penerima dan penyadap dengan masing-masing pihak harus

    menginputkan kunci yang dimiliki kedalam sistem. Pada saat pengiriman pesan,

    penyadap mengambil pesan yang dikirim dan mengubah isinya dengan kunci

    yang telah ia temukan, kemudian mengirim pesan palsu kepada penerima. Untuk

    simulasi ini diberikan dua solusi yaitu membagi pesan menjadi dua bagian pesan,

    dimana jika salah satu bagian pesan dibaca tidak mengandung arti, yang kedua

    yaitu mengenkripsi pesan menggunaka fungsi hash SH1, kemudian hasil enkripsi

    dengan fungsi hash dikirim sebagai bagian pertama dan pesan dikirm sebagai

    bagian kedua, jika memilki nilai yang sama maka pesan benar berasal dari

    pengirim yang dimaksud [12].

    3. Penelitian sebelumnya telah dilakukan oleh Sisca Anggraini dengan judul Sistem

    Keamanan Data dengan RSA dan Modified LSB penelitian ini untuk

    meningkatkan keamanan data. Untuk meningkatkan keamanan data digunakan

  • kriptografi RSA dengan metode tambahan lain yaitu modified LSB(Least

    Significant Bit). RSA digunakan untuk mengenkripsi pesan asli (plaintext)

    menjadi pesan terenkrip (ciphertext), selanjutnya cipherteks disembunyikan

    dalam media citra digital agar keberadaan pesan tidak dicurigai oleh pihak lain.

    Penggabungan dua algoritma tersebut dapat menjaga kerahasiaan pesan, dimana

    pesan hanya dapat diakses oleh orang yang berwenang dan memiliki kunci [1].

  • BAB III

    ANALISIS DAN PERANCANGAN

    3.1 Analisis Sistem

    Tahap ini bertujuan memberikan gambaran yang jelas terhadap sistem yang akan

    dibangun. Tahap ini menjabarkan kebutuhan-kebutuhan yang berguna untuk

    perancangan sistem agar sistem yang dibangun sesuai dengan masalah yang akan

    diselesaikan.

    3.1.1 Analisis Masalah

    Masalah utama yang diangkat adalah pembuat sistem kriptografi tidak mengetahui

    seberapa amankah sistem kriptografi yang mereka buat. Sistem kriptografi ini

    menggunakan algoritma RSA. Seperti diketahui, kelebihan RSA adalah bilangan

    prima yang dipakai sulit dipecahkan. Namun, tanpa diketahui seberapa aman

    bilangan prima yang dipakai.

    Analisis masalah digambarkan dengan Diagram Ishikawa (fishbone Diagram)

    berikut ini. Bagian kepala atau segiempat yang berada di sebelah kanan

    merupakan masalah. Sementara di bagian tulang-tulangnya merupakan penyebab.

  • Pengujian Tingkat Keamanan

    User Metode

    Algoritma RSA

    Metode yangmampu memecahkankunci publik

    User butuh keamananuntuk data rahasia

    Kunci Publik dapatDigunakan oleh siapapun

    Gambar 3.1 Diagram Ishikawa Untuk Analisa Masalah

    3.1.2 Analisis Kebutuhan (Requirement Analysis)

    Analisis persyaratan terdiri atas dua bagian yaitu analisis fungsional dan analisis

    nonfungsional. Kedua analisis ini merupakan hal penting untuk menentukan hal-

    hal yang harus dimiliki sistem.

    3.1.2.1 Analisis Fungsional

    Analisis fungsional dibutuhkan untuk mengetahui hal-hal yang bisa dikerjakan

    oleh sistem. Berikut dijabarkan fungsi-fungsi yang dapat dikerjakan oleh sistem.

    1. Sistem melakukan enkripsi pesan awal (plaintext) dengan bilangan prima

    diinputkan oleh user yang nantinya sistem yang akan melakukan perhitungan

    untuk mendapatkan kunci.

    2. Untuk menguji tingkat kemanannya, sistem akan mendekripsi pesan dengan

    menginputkan pesan yang telah dienkripsi (ciphertext).

    3. Sistem akan menghitung berapa lama waktu yang dibutuhkan untuk

    memecahkan kunci pesan.

    4. Sistem akan mengenkripsi ciphertext ke plaintext.

    5. Plaintext dan ciphertext disimpan dalam bentuk dokumen dengan ekstensi .txt .

  • 3.1.2.2 Analisis Nonfungsional

    Analisis nonfungsional berhubungan dengan hal-hal berikut ini:

    1. Performa

    Perangkat lunak yang akan dibangun dapat menunjukkan hasil dari proses

    enkripsi dan dekripsi serta pemecahan yang dilakukan oleh sistem.

    2. Mudah dipelajari dan digunakan

    Perangkat lunak yang akan dibangun memiliki tampilan yang user friendly dan

    responsif.

    3. Hemat biaya

    Perangkat lunak yang dibangun akan menggunakan teknologi yang bebas

    digunakan (free to use).

    4. Dokumentasi

    Perangkat lunak yang akan dibangun dapat menyimpan hasil enkripsi dan dekripsi

    serta memiliki panduan penggunaan.

    5. Manajemen kualitas

    Perangkat lunak yang akan dibangun akan memiliki kualitas yang baik.

    6. Kontrol

    Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input

    yang tidak sesuai.

    3.1.2.3 Pemodelan Persyaratan Sistem dengan Use Case

    Use case adalah salah satu pemodelan yang digunakan untuk memodelkan

    persyaratan sistem. Dengan use case ini digambarkan siapa saja yang berinteraksi

    dengan sistem dan apa saja yang dapat dilakukan dengan sistem.

    Aktor yang berinteraksi dengan sistem ini adalah user yang terdiri atas

    dua jenis encryptor, cryptanalyst dan decryptor. Sesuai dengan analisis fungsional

    sistem dapat melakukan enkripsi, pemecahan kunci dan dekripsi seperti diagram

    pada gambar 3.2.

  • Encyptor

    Sistem

    Enkripsi

    Pemecahan Kunci

    Dekripsi

    Cryptanalyst

    Decryptor

    Gambar 3.2 Use case Diagram yang akan Dikembangkan

    Diagram pada gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh

    user, user melakukan enkripsi dengan menggunakan algoritma RSA. Untuk

    menguji tingkat keamanan dari kunci yang dipakai, user melakukan pemecahan

    kunci dan dekripsi pesan yang menghasilkan waktu untuk memperoleh kunci dan

    pesan yang telah didekripsi kembali.

    Berikut ini merupakan spesifikasi use case untuk enkripsi

    Tabel 3.1 Spesifikasi Use Case Enkripsi Name Enkripsi Actors Encryptor

    Trigger User menginputkan plaintext yang akan dienkripsi dan nilai bilangan

    prima yang akan dihitung dan dijadikan kunci Preconditions User telah menyimpan plaintext yang akan dienkripsi Post Conditions User dapat melihat cipherteks hasil proses enkripsi

    Success Scenario

    1. User telah menginputkan plainteks yang akan dienkripsi dan bilangan primanya.

    2. User mengakses tombol enkripsi.

  • 3. Sistem akan melakukan proses enkripsi terhadap plainteks yang diinputkan dan menampilkan dialog box untuk menyimpan file

    hasil enkripsi (ciphertext).

    4. User dapat melihat ciphertext hasil proses enkripsi. Alternative Flows -

    Berikut ini adalah activity diagram untuk proses enkripsi:

    SistemAktor

    user memasukkan bilangan prima

    user memasukkan plaintext Sistem melakukan enkripsi pesan

    Sistem memberikan dialog box untuk penyimpanan pesanuser memilih tempat penyimpanan pesan

    sistem menyimpan pesan

    Gambar 3.3 Activity Diagram untuk Proses Enkripsi

    Berikut ini adalah spesifikasi untuk use case pemecahan kunci

    Tabel 3.2 Spesifikasi Use Case Pemecahan Kunci Name Pemecahan Kunci dan Dekripsi Actors Cryptanalyst Trigger User menginputkan ciphertext

  • Preconditions Bilangan n tersimpan diakhir ciphertext dan ciphertext telah

    disimpan sebelumnya

    Post Conditions Bilangan n akan menghasilkan kunci yang dapat mendekripsi pesan

    dan akan melekukan dekripsi sehingga menghasilkan pesan yang

    sama dengan plaintext

    Success Scenario

    1. User memasukkan ciphertext. 2. sistem akan menghitung kunci yang digunakan untuk

    mengenkripsi dan mendekripsi pesan

    3. Sistem akan mendekripsi pesan dengan kunci yang dihasilkan Alternative Flows -

    berikut ini adalah activity diagram untuk proses pemecahan kunci

    SistemAktor

    user memasukkan ciphertext

    Sistem mendekripsi pesan

    User mengambil nilai n dan menghitung kunci publik dan privat

    Sistem memberikan dialog box bahwa dekripsi selesaiUser menyimpan pesan hasil dekripsi

    user memilih tempat penyimpanan pesan

    -YES

    -NO

    Sistem menyimpan pesan

    -YES

    -YES

    Gambar 3.4 Activity Diagram untuk Proses Pemecahan Kunci dan Dekripsi

  • 3.1.3 Analisis Sistem Proses

    Pada pengujian tingkat keamanan ini kita menggunakan algoritma RSA sebagai

    algoritma kriptografi yang diuji. Sedangkan untuk mengujinya digunakan metode

    Universal Exponent Factoring. Pada diagram gambar 3.6 dapat dilihat sequence

    diagram untuk proses enkripsi pesan.

    User Sistem

    enkripsi pesan

    browse tempat menyimpan ciphertext

    Simpan ciphertext

    Input bilangan prima

    input plaintext

    Gambar 3.5 Sequence Diagram Proses Enkripsi

    Hasil dari enkripsi akan disimpan di tempat yang diinginkan dan untuk proses

    pemecahan kunci dan dekripsi pesan dapat dilihat pada gambar 3.6.

  • User Sistem

    browse tempat menyimpan hasil dekripsi

    Simpan hasil dekripsi

    input ciphertext

    munculkan kunci publik dan privat serta waktu pemecahan kunci

    Simpan file di tempat dan nama file yang diinginkan

    Gambar 3.6 Sequence Diagram untuk Proses Pemecahan Kunci dan Dekripsi

    Pesan

    Dari sequnce diagram pada gambar 3.6 dapat dilihat bahwa hasil yang didapat

    oleh user adalah text hasil dekripsi dan waktu yang dibutuhkan untuk

    memecahkan kunci dengan hanya memasukkan nilai n.

    3.2 Perancangan Sistem

    3.2.1 Flowchart Sistem

    3.2.1.1 Flowchart Gambar Umum

    Secara umum ada tiga proses yang dilakukan. Proses ini dapat dilihat pada

    flowchart gambaran umum pada gambar 3.7.

  • Start

    Enkripsi pesan

    Pemecahan kunci

    Dekripsi pesan

    End

    Gambar 3.7 Gambaran Umum Sistem

    Keterangan :

    Dari flowchart pada gambar 3.8 dapat dilihat gambaran umum sistem yang akan

    dibuat. Pertama file akan dienkripsi dengan algoritma RSA. Kemudian sistem

    dengan hanya menginput nilai n akan memecahkan kunci yang telah diberikan

    pada file yang dienkripsi. Setelah kunci didapat, maka sistem akan

    mengembalikan file tersebut kedalam bentuk asli.

    3.2.1.2 Flowchart Proses Enkripsi

    Proses enkripsi pada sistem ini menngunakan algoritma RSA. Berikut ini

    flowchart yang menggambarkan langkah-langkah mengenkripsi pesan.

  • start

    Input bilangan prima p, q

    Hitung perkalian bilangan prima

    n = p x q

    Hitung nilai d

    file

    Hitung nilai ciphertext

    Enkripted file

    End

    Hitung nilai

    Hitung nilai e

    Gambar 3.8 Flowchart untuk Proses Enkripsi

    Keterangan :

    Dari flowchart pada gambar 3.8 dapat dilihat proses dari terbentuknya kunci

    publik e dan n, dari input bilangan prima p dan q, serta mendapatkan kunci private

  • d yang akan dipakai untuk membuka file yang telah dienkripsi. Perhitungan yang

    yang dilakukan untuk mengenkripsi pesan sesuai dengan algoritma RSA.

    3.2.1.3 Flowchart Pemecahan Kunci

    Pemecahan kunci yang dilakukan menggunakan metode Universal Exponent

    Factoring. Langkah-langkah pemecahan kunci dapat dilihat pada gambar 3. 9

    berikut ini.

    Gambar 3.9 : Flowchart untuk Proses Pemecahan Kunci

  • Keterangan :

    Dari flowchart pada gambar 3.9 dapat dilihat, nilai n yang dimasukkan adalah

    kunci publik yang diketahui. Dari kunci inilah didapatkan nilai p dan q untuk

    kemudian digunakan untuk menghitung kembali kunci private d yang akan

    digunakan untuk mengembalikan file yang telah dienkripsi kedalam bentuk

    semula.

    3.2.1.4 Flowchart Pengujian Bilangan Prima

    Untuk pengujian bilangan prima digunakan Fermats Little Theorem. Berikut

    langkah-langkah pengujian bilangan prima digambarkan dalam gambar 3.10.

    Start

    Masukkan bilangan p

    For i=0; i

  • Keterangan :

    Flowchart pada gambar 3.10 menggambarkan proses pengujian bilangan prima

    yang digunakan pada sistem. Bilangan akan diuji sebanyak digitnya, jika semua

    nilai ap-1 1 (mod p) bernilai true maka nilai tersebut adalah bilangan prima.

    3.2.1.5 Flowchart Proses Dekripsi

    Proses dekripsi akan dilakukan setelah kunci dipecahkan. Dekripsi pesan juga

    menggunaka algoritma RSA, sama seperti proses enkripsi. Pada gambar 3. 11

    akan digambarkan flowchart proses dekripsi.

    File yang telah dienkripsi

    file

    Start

    End

    Hitung nilai plaintext

    Gambar 3.11 Flowchart untuk Dekripsi Pesan

    Keterangan :

    Flowchart pada gambar 3.11 memperlihatkan alur untuk mendekripsi pesan yang

    kunci telah didapat dari flowchart 3.9. Perhitungan untuk pengembalian pesan

    dilakukan sesuai algoritma RSA.

  • 3.2.2 Rancangan Antar Muka

    Sistem akan dibangun menggunakan bahasa pemrograman C# dengan

    menggunakan software Microsoft Visual Studio. Rancangan antar muka akan

    disesuaikan dengan kebutuhan dan software yang digunakan. Antar muka

    menggunakan tiga form, form utama atau form login untuk masuk sebagai

    encryptor atau cryptanalyst, form enkripsi berfungsi untuk mengenkripsi pesan

    sedangkan form dekripsi digunakan untuk memecahkan kunci dan proses dekripsi

    pesan.

    3.2.2.1 Antar Muka Mainform

    Pada Mainform user harus memilih akan masuk sebagai encryptor atau

    cryptanalyst. Jika user masuk sebagai encryptor, maka user akan masuk ke form

    enkripsi, sedangkan jika masuk sebagai cryptanalyst, user akan masuk ke form

    dekripsi.

    Gambar 3. 12 Rancangan Form Login

    Komponen yang dipakai untuk membangun antar muka Mainform pada gambar

    3.13 adalah sebagai berikut:

    1. Label (Login) : label yang digunakan sebagai judul utama dari form yang

    sedang terbuka yaitu Login.

  • 2. Label (Login As) : label yang digunakan sebagai menunjukkan tempat user

    untuk memilih akan masuk ke sistem sebagai encryptor atau cryptanalyst.

    3. Combobox : combobox yang digunakan untuk memilih encryptor atau

    cryptanalyst.

    4. Tombol (login) : tombol yang akan membawa user masuk ke sistem sesuai

    user yang dipilh.

    3.2.2.2 Antar Muka Form Enkripsi

    Pada form enkripsi user akan menginputkan bilangan prima yang nantinya akan

    dijadikan kunci publik dan privat yang akan dihitung oleh sistem.

    Gambar 3.13 Rancangan Form Enkripsi

    Komponen yang dipakai untuk membangun antar muka form enkripsi pada

    gambar 3.14 adalah sebagai berikut:

    5. Label (Enkripsi) : sebagai judul utama dari form yang sedang terbuka yaitu

    enkripsi, form untuk mengenkripsikan pesan.

    6. Label (Bilangan Prima1 (p)) : label yang menunjukkan tempat user untuk

    memasukkan bilangan prima.

    7. Label (Bilangan Prima2 (q)) : label yang menunjukkan tempat user untuk

    memasukkan bilangan prima.

  • 8. Textbox 1 : texbox yang digunakan sebagai tempat user memasukkan

    bilangan prima1 (p) yang nantinya akan dijadikan kunci setelah nilai kunci

    publik dan privatnya dihitung oleh sistem.

    9. Textbox 2 : textbox yang digunakan tempat user memasukkan bilangan

    prima2 (q) yang nantinya akan dijadikan kunci setelah nilai kunci publik dan

    privatnya dihitung oleh sistem nilai bilangan prima1 dan bilangan prima 2

    harus berbeda.

    10. Tombol 1 (Buka File) : tombol ini berfungsi untuk memilih file text yang

    akan dienkripsi.

    11. Textbox 3 : textbox ini berfungsi menampilkan isi file yang akan dienkripsi.

    12. Tombol 2 (Enkripsi) : tombol ini berfungsi mengenkripsi pesan dengan

    terlebih dahulu menghitung kunci publik dan privat dari bilangan-bilangan

    prima yang telah diinputkan.

    13. Label (nilai n) : label yang menunjukkan nilai n yang merupakan kunci

    publik yang didapat dari perhitungan bilangan prima yang diinputkan.

    14. Label (nilai e) : label yang menunjukkan nilai e yang merupakan kunci

    publik yang didapat dari perhitungan bilangan prima yang diinputkan.

    15. Label (nilai d) : label yang menunjukkan nilai d yang merupakan kunci

    private yang didapat dari perhitungan bilangan prima yang diinputkan.

    16. Textbox 4 : textbox ini menampilkan bilangan nilai n yang dihasilkan.

    17. Textbox 5 : textbox ini menampilkan bilangan nilai e yang dihasilkan.

    18. Textbox 6 : textbox ini menampilkan bilangan nilai d yang dihasilkan.

    19. Grup Box(info file) : berisi informasi mengenai file yang diinputkan meliputi

    nama file, ukuran file, panjang karakter, lokasi file.

    3.2.2.3 Antar Muka Form Pemecahan Kunci dan Dekripsi

    Pemecahan kunci dan dekripsi terdapat pada form yang sama. Pada form ini user

    menginputkan nilai n dan file yang akan didekripsi.

  • gambar 3. 14 : Rancangan Form Pemecahan Kunci dan Dekripsi

    Komponen yang dipakai untuk membangun antar muka form pemecahan kunci

    dan dekripsi pada gambar 3.15 adalah sebagai berikut:

    1. Label (Pemecahan Kunci) : sebagai judul utama dari form yang sedang

    terbuka yaitu pemecahan kunci, form untuk memecahkan kunci dan

    mendekripsi pesan.

    2. Label (Nilai n ) : label yang menunjukkan tempat user memasukkan nilai n.

    3. Texbox 1 : textbox yang berfungsi sebagai tempat menginputkan nilai n.

    4. Tombol 1 (Buka File) : tombol ini berfungsi untuk memilih file text yang

    akan didekripsi.

    5. Grup Box(info file) : berisi informasi mengenai file yang diinputkan meliputi

    nama file, ukuran file, panjang karakter dan lokasi file.

    6. Tombol 2 (Dekripsi) : tombol ini berfungsi mendekripsi pesan dengan

    terlebih dahulu menghitung kunci publik dan privat dari nilai n yang

    diinputkan.

    7. Textbox 2 : textbox ini berfungsi menampilkan isi file hasil dekripsi..

    8. Label (Bilangan Prima1 (p)) : label yang bilangan prima 1 yang dipecahkan

    oleh sistem dengan nilai n yang diinputkan.

    9. Textbox 3 : textbox ini berfungsi menampilkan bilangan prima 1 yang

    dihasilkan.

  • 10. Label (Bilangan Prima2 (q)) : label yang bilangan prima 2 yang dipecahkan

    oleh sistem dengan nilai n yang diinputkan.

    11. Textbox 4 : textbox ini berfungsi menampilkan prima 2 yang dihasilkan.

    12. Label (nilai e) : label yang menunjukkan nilai e yang merupakan kunci

    publik yang didapat dari perhitungan bilangan prima yang diinputkan.

    13. Textbox 5 : textbox ini menampilkan bilangan nilai e yang dihasilkan.

    14. Label (nilai d) : label yang menunjukkan nilai d yang merupakan kunci

    private yang didapat dari perhitungan bilangan prima yang diinputkan.

    15. Textbox 6 : textbox ini menampilkan bilangan nilai d yang dihasilkan.

    16. Label (Waktu pemecahan kunci) : label yang akan memunculkan waktu

    pemecahan kunci.

    3.2.3 Tahapan Sistem

    3.2.3.1 Tahapan Algoritma RSA (Rivest, Shamir, Adleman) untuk Enkripsi Pesan

    Algoritma RSA adalah salah satu algoritma kriptografi yang sering dipakai untuk

    berbagai bidang. Algoritma kriptografi memiliki keunggulan pada susahnya

    memcahkan bilangan untuk mendapatkan kunci privat yang dipakai. Algoritma

    RSA memiliki dua tahapan secara umum, yaitu proses enkripsi dan dekripsi.

    Sebelum proses enkripsi terlebih dahulu kunci dibangkitkan. Berikut ini proses

    untuk membangkitkan kunci publik dan kunci privat:

    1. Bangkitkan bilangan prima p dan q.

    2. n = p x q.

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

    4. e adalah bilangan dengan rentang 1< e < (n), dengan gcd(e, (n)) = 1

    5. d = e-1 mod (n)

    6. Kpublik = (e, n) , Kprivat = d

  • Untuk implementasi dari pembangkit kunci RSA, maka dilakukan langkah

    berikut:

    1. Dipilh bilangan prima p = 79, dan q = 97 dengan catatan nilai p dan q harus

    berbeda.

    2. n = p x q n = 79 x 97 n = 7663.

    3. (n) = (p-1)x(q-1) (n) = (79-1)x(97-1) (n) = 7488

    4. e dipilih antara 1 < e < 7488, dengan gcd(e, 7488) = 1, didapat e = 5.

    5. d = e-1 mod (n) d = 4494

    6. Maka kunci publik yang didapat adalah e = 5 dan n = 7663 dan kunci privat

    d = 4494.

    Proses selanjutnya adalah mengenkripsi pesan. Pesan asli (plaintext) akan

    dienkripsi menggunakan rumus :

    C = Pe mod n (1)

    Plaintext yang akan dienkripsi adalah : ILMU KOMPUTER

    Maka terlebih dahulu huruf-huruf tersebut dikonversikan ke dalam desimal sesuai

    dengan tabel ASCII. Berdasarkan tabel ASCII, nilai dari kalimat plaintext adalah:

    I = 73

    L = 76

    M = 77

    U = 85

    (spasi) = 32

    K = 75

    O = 79

    M = 77

    P = 80

    U = 85

    T = 84

    E = 69

    R = 82

    Maka nilai-nilai diatas akan dienkripsi sesuai rumus, maka didapatkan hasil

  • Untuk karakter I dengan nilai 73:

    C = 735 mod 7663

    = 203

    Untuk karakter L dengan nilai 76:

    C = 765 mod 7663

    = 7262

    Untuk karakter M dengan nilai 77:

    C = 775 mod 7663

    = 5656

    Untuk karakter U dengan nilai 85:

    C = 855 mod 7663

    = 7359

    Untuk karakter (spasi) dengan nilai 32:

    C = 325 mod 7663

    = 5818

    Untuk karakter K dengan nilai 75:

    C = 755 mod 7663

    = 7350

    Untuk karakter O dengan nilai 79:

    C = 795 mod 7663

    = 1738

    Untuk karakter M dengan nilai 77:

    C = 775 mod 7663

    = 5656

    Untuk karakter P dengan nilai 80:

    C = 805 mod 7663

    = 1581

    Untuk karakter U dengan nilai 85:

    C = 855 mod 7663

    = 7539

  • Untuk karakter T dengan nilai 84:

    C = 845 mod 7663

    = 6522

    Untuk karakter E dengan nilai 69:

    C = 695 mod 7663

    = 5386

    Untuk karakter R dengan nilai 82:

    C = 825 mod 7663

    = 717

    Maka didapat ciphertext :

    203 7262 5656 7539 5818 7350 1738 5656 1581 7539 6522 5386 717

    3.2.3.2 Pemecahan Kunci Menggunakan Metode Universal Exponent Factoring

    Metode Universal Exponent Factoring berfungsi untuk memecahkan bilangan

    prima dengan menginputkan nilai n. Pada sistem ini nilai n akan tersimpan secara

    otomatis pada bagian akhir ciphertext yang disimpan oleh user. Langkah-langkah

    dari metode Universal Exponent Factoring telah dijelaskan pada bab sebelumnya.

    Implementasi dari metode ini adalah sebagai berikut :

    Dalam implementasi ini kita ambil nilai n = 7663, dari implementasi enkripsi

    RSA sebelumnya.

    Ambil nilai e dengan syarat 1 < e< n-1, maka didapat e = 7488 dan didapat

    e = 2b*m e = 26 *117

    Dari nilai yang telah didapat akan dilanjutkan perhitungan berikut dengan nilai a

    yang diambil = 2:

    x0 = am(mod n) x0 = 2117(mod 7663) x0 = 7190 karena nilai x0 1 (mod

    7663), maka perhitungan akan dilanjutkan dengan rumus: xj12 (mod n) dengan j = 1, 2, , b.

    x1112 (mod 7663) x1 1502

  • x2212 (mod 7663) x1 3082 x3312 (mod 7663) x1 4267 x4412 (mod 7663) x1 1 karena nilai x4 1, maka gcd(xj-1 - 1, n) gcd(x3 - 1, 7663) 79

    maka p = 79 dan q = 7663/79 = 97

    3.2.3.3 Tahapan Algoritma RSA (Rivest, Shamir, Adleman) untuk Dekripsi Pesan

    Dengan nilai p dan q yang didapat dari proses pemecahan kunci sebelumnya,

    maka untuk mendekripsi ciphertext yang telah disimpan. Proses pembangkitan

    kunci untuk dekripsi sama dengan proses pembangkitan kunci untuk enkripsi.

    1. p = 79, dan q = 97 dari proses pemecahn kunci sebelumnya.

    2. n = 7663 didapat karena merupakan kunci publiki yang dipakai untuk

    memecahkan kunci..

    3. (n) = (p-1)x(q-1) (n) = (79-1)x(97-1) (n) = 7488

    4. e dipilih antara 1 < e < 7488, dengan gcd(e, 7488) = 1, didapat e = 5.

    5. d = e-1 mod (n) d = 4494

    6. Maka didapat kunci privat d = 4494.

    Cipertext akan diedekripsi menggunakan rumus :

    P = Cd mod n (2)

    Untuk nilai 203:

    P = 2034494 mod 7663

    = 73

    P =73 dikonversi ke dalam simbol/karakter dalam ASCII menjadi I

    Untuk nilai 7262:

    P = 72624494 mod 7663

    = 76

  • P = 76 dikonversi ke dalam simbol/karakter dalam ASCII menjadi L

    Untuk nilai 5656:

    P = 56564494 mod 7663

    = 77

    P = 77 dikonversi ke dalam simbol/karakter dalam ASCII menjadi M

    Untuk nilai 7539:

    P = 75394494 mod 7663

    = 85

    P = 85 dikonversi ke dalam simbol/karakter dalam ASCII menjadi U

    Untuk nilai 5818:

    P = 58184494 mod 7663

    = 32

    P = 32 dikonversi ke dalam simbol/karakter dalam ASCII menjadi (spasi)

    Untuk nilai 7350:

    P = 73504494 mod 7663

    = 75

    P = 75 dikonversi ke dalam simbol/karakter dalam ASCII menjadi K

    Untuk nilai 1738:

    P = 17384494 mod 7663

    = 79

    P = 79 dikonversi ke dalam simbol/karakter dalam ASCII menjadi O

    Untuk nilai 5656:

    P = 56564494 mod 7663

    = 77

    P = 77 dikonversi ke dalam simbol/karakter dalam ASCII menjadi M

    Untuk nilai 1581:

  • P = 15814494 mod 7663

    = 80

    P = 80 dikonversi ke dalam simbol/karakter dalam ASCII menjadi P

    Untuk nilai 7539:

    P = 75394494 mod 7663

    = 85

    P = 85 dikonversi ke dalam simbol/karakter dalam ASCII menjadi U

    Untuk nilai 6522:

    P = 65224494 mod 7663

    = 84

    P = 84 dikonversi ke dalam simbol/karakter dalam ASCII menjadi T

    Untuk nilai 5386:

    P = 53864494 mod 7663

    = 69

    P = 69 dikonversi ke dalam simbol/karakter dalam ASCII menjadi E

    Untuk nilai 717:

    P = 7174494 mod 7663

    = 82

    P = 82 dikonversi ke dalam simbol/karakter dalam ASCII menjadi R

    Hasil akhir yang diperoleh yaitu ILMU KOMPUTER sesuai dengan plaintext

    yang yang dienkripsi sebelumnya.

  • BAB IV

    IMPLEMENTASI DAN PENGUJIAN

    4.1 Implementasi

    Implementasi sistem dibangun dengan menggunakan bahasa pemrograman C#,

    dengan memakai Software Microsof Visual Studi 2010. Terdapat 3 form dalam

    sistem ini, form Mainform digunakan untuk memilih user yang akan

    menggunakan sistem, form enkripsi digunakan oleh user yang masuk sebagai

    encryptor untuk mengenkripsi pesan, form pemecahan kunci digunakan oleh user

    yang masuk sebagai cryptanalyst untuk memecahkan kunci dan mendekripsi

    pesan.

    4.1.1 Mainform

    Pada mainform ini user harus memilih akun log in yang terdiri atas encryptor atau

    cryptanalyst. Encryptor hanya dapat melakukan enkripsi pesan, sedangkan

    cryptanalyst dapat mendekripsi pesan dengan terlebih dahulu memecahkan nilai n

    untuk mendapatkan kunci private yang digunakan.

    Gambar 4.1 Mainform

  • 4.1.2 Form Enkripsi

    Form ini hanya dapat diakses oleh encryptor. Encryptor yang akan menenkripsi

    pesan dapat menginputkan 2 bilangan prima yang digunakan untuk kemudian

    dijadikan kunci publik dan kunci privat. Encryptor juga bebas memilih file yang

    akan didekripsi, dengan file berekstensi .txt atau file text.

    Gambar 4.2 Form enkripsi pesan

    Jika encryptor memasukkan bilangan yang bukan prima maka akan muncul dialog

    box

    Gambar 4.3 Dialog Box Bilangan Bukan Prima

  • 4.1.3 Form Pemecahan Kunci dan Dekripsi

    Form ini hanya dapat diakses oleh cryptanalys. Cryptanalyst akan memecahkan

    kunci dengan menginputkan nilai n dari perkalian dua bilangan prima yang

    digunakan sebagi kunci dari proses enkripsi pesan. Cryptanalyst juga dapat

    menginputkan pesan yang akan didekripsi. Output yang dihasilkan yaitu form ini

    menampilkan bilangan prima yang digunakan, dan waktu yang dibutuhkan untuk

    memecahkan kunci. Untuk menyimpan pesan hasil dekripsi, dialog box akan

    muncul setelah kunci dipecahkan dan pesan didekripsi dengan benar, sehingga

    cryptanalyst dapat menyimpan hasil dari dekripsi pesan.

    Gambar 4.4 Form pemecahan kunci dan dekripsi

    4.2 Pengujian

    Pengujian untuk sistem pengujian tingkat kemanan RSA ini dilakukan untuk

    mendapatkan waktu yang dibutuhkan untuk memecahkan kunci dengan

  • menginputkan nilai n. Pengujian ini dilakukan dengan erlebih dahulu

    mengenkripsi pesan. Kriteria pengujian sistem sebagi berikut:

    1. Plaintext berupa file text yang telah terlebih dahulu disimpan didalam

    komputer dan kemudian ciphertext juga akan disimpan dalam bentuk file

    text.

    2. Bilangan prima dipilih oleh user dan dinputkan sesuai pilihan.

    3. Nilai n yang diinputkan telah disimpan pada akhir ciphertext yang disimpan.

    4. Pengujian ini dilakukan dengan dengan perangkat keras yang memilki

    spesifikasi notebook dengan prosesor AMD C-50 Processor (2 CPUs), 1 GHz

    dan RAM 2GB.

    4.2.1 Proses Enkripsi

    Dalam proses enkripsi, pesan yang akan dienkripsi adalah ILMU KOMPUTER.

    Dimisalkan bilangan prima yang dipilih untuk dijadikan kunci adalah 3557 dan

    1777. Setelah dienkripsi ciphertext yang dihasilkan dapat dilihat pada tabel1.

    Tabel 4.1 Tabel Enkripsi Pengujian Sistem

    P P (dalam desimal ASCII) C = Pe mod n I 73 6173590 L 76 888987 M 77 1486465 U 85 6180036

    (spasi) 32 1950487 K 75 2751000 O 79 5152945 M 77 1486465 P 80 2631298 U 85 6180036 T 84 4077895 E 69 2796466 R 82 3416078

  • Kunci privat dan kunci publik yang diperoleh pada pengujian ini dapat dilihat

    pada gambar 4.4.

    Gambar 4.5 Form Enkripsi Pengujian Sistem

    Maka ciphertext yang tersimpan dengan nama ciphertext.txt dapat dilihat pada

    gambar 4.5.

    Gambar 4.6 Ciphertext Hasil Enkripsi Pengujian Sistem

    4.2.2 Proses Pemecahan Kunci dan Dekripsi

  • Untuk memecahkan kunci dan mendekripsi pesan, maka cryptanalyst harus

    menginputkan nilai n serta ciphertext yang akan didekripsi. Nilai n diperoleh dari

    ciphertext yang tersimpan dimana nilai n berada di bagian akhir dari ciphertext

    tersebut.

    Untuk pemecahan kunci, dalam pengujian cryptanalyst mendapat nilai n =

    6320789. Maka dihasilkan pesan hasil dekripsi dan bilangan prima serta kunci

    yang dipakai seperti pada gambar 4.6.

    Gambar 4.7 Form Pemecahan Kunci pada Pengujian

    Dari gambar 4.5 dan gambar 4.7 dapat dilihat pada pengujian ini, bilangan prima,

    kunci publik dan kunci privat yang digunakan sama dan file dapat didekripsi

    dengan baik.

    4.2.3 Pengujian Pemecahan Kunci

  • Untuk enkripsi dan pengujian pemecahan kunci dilakukan 10 kali percobaan

    dalam kelompok digit nilai n. Kelompok digit nilai n dimulai dari 3 digit sampai

    20 digit nilai n. Masing-masing melalui 10 kali percobaan dengan nilai n yang

    berbeda-beda. Berikut hasil pengujian masing-masing kelompok digit nilai n.

    1. Nilai n sebanyak 3 digit

    Hasil pengujian dapat dilihat pada tabel 4.2 dan 4.3.

    Tabel 4.2 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 3 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 413 7 59 00:00:00.0045868 2 667 23 29 00:00:00.0020933 3 989 23 43 00:00:00.0013370 4 427 7 61 00:00:00.0012087 5 341 11 31 00:00:00.0015043 6 371 7 53 00:00:00.0040224 7 781 11 71 00:00:00.0016838 8 611 47 13 00:00:00.0013750 9 583 53 11 00:00:00.0017485 10 527 31 17 00:00:00.0015309

    Waktu rata-rata enkripsi pesan dengan 3 digit nilai n adalah 0.00210907 detik.

    Tabel 4.3 Pengujian pemecahan kunci dengan

    nilai n sebanyak 3 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 413 7 59 00:00:00.0239581 2 667 23 29 00:00:00.0084727 3 989 23 43 00:00:00.0124285 4 427 7 61 00:00:00.0050024 5 341 11 31 00:00:00.0168121 6 371 7 53 00:00:00.0058838 7 781 11 71 00:00:00.0097410

  • 8 611 47 13 00:00:00.0039434 9 649 59 11 00:00:00.0198813 10 527 31 17 00:00:00.0055996

    Waktu rata-rata pemecahan kunci dengan 3 digit nilai n adalah 0.01117229 detik.

    detik.

    2. Nilai n sebanyak 4 digit

    Hasil pengujian dapat dilihat pada tabel 4.4 dan 4.5.

    Tabel 4.4 : Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 4 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 1207 17 71 00:00:00.0018470 2 2881 67 43 00:00:00.0023672 3 3827 43 89 00:00:00.0042984 4 6499 67 97 00:00:00.0065067 5 1111 11 101 00:00:00.0018860 6 8579 23 373 00:00:00.0029983 7 8051 83 97 00:00:00.0044585 8 7063 7 1009 00:00:00.0051101 9 9797 101 97 00:00:00.0041661 10 3937 127 31 00:00:00.0022379

    Waktu rata-rata enkripsi pesan dengan 4 digit nilai n adalah 0.00358762 detik.

    Tabel 4.5 : Pengujian pemecahan kunci dengan

    nilai n sebanyak 4 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 1207 17 71 00:00:00.0209013 2 2881 67 43 00:00:00.0211116 3 3827 43 89 00:00:00.0255220 4 6499 67 97 00:00:00.1089693 5 1111 11 101 00:00:00.0067345

  • 6 8579 23 373 00:00:00.0176166 7 8051 83 97 00:00:00.0547165 8 7063 7 1009 00:00:00.0252613 9 9797 101 97 00:00:00.0532050 10 3937 127 31 00:00:00.0114906

    Waktu rata-rata pemecahan kunci dengan 4 digit nilai n adalah 0.03455287 detik.

    3. Nilai n sebanyak 5 digit

    Hasil pengujian dapat dilihat pada tabel 4.6 dan 4.7.

    Tabel 4.6 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 5 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 10349 131 79 00:00:00.0126913 2 33283 83 401 00:00:00.0290932 3 21731 701 31 00:00:00.0225013 4 26483 373 71 00:00:00.0187507 5 43249 61 709 00:00:00.0333456 6 60499 101 599 00:00:00.0435136 7 35579 757 47 00:00:00.0306314 8 83327 103 809 00:00:00.0707270 9 73793 109 677 00:00:00.0482339 10 98503 719 137 00:00:00.0712124

    Waktu rata-rata enkripsi dengan 5 digit nilai n adalah 0.03807004 detik.

    Tabel 4.7 Pengujian pemecahan kunci dengan

    nilai n sebanyak 5 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 10349 131 79 00:00:00.0728645 2 33283 83 401 00:00:00.2503558 3 21731 701 31 00:00:00.1445171 4 26483 373 71 00:00:00.2884391

  • 5 43249 61 709 00:00:00.4035910 6 60499 101 599 00:00:00.3466574 7 35579 757 47 00:00:00.3724783 8 83327 103 809 00:00:00.4891551 9 73793 109 677 00:00:00.3319364 10 98503 719 137 00:00:00.8762735

    Waktu rata-rata pemecahan kunci dengan 5 digit nilai n adalah 0.35762682 detik.

    4. Nilai n sebanyak 6 digit

    Hasil pengujian dapat dilihat pada tabel 4.8 dan 4.9.

    Tabel 4.8 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 6 digit

    Percobaan ke- Nilai n

    Bilangan prima1

    Bilangan prima2 Waktu

    1 196253 857 229 00:00:00.1273682 2 207913 809 257 00:00:00.1500470 3 252353 617 409 00:00:00.1600591 4 609187 1447 421 00:00:00.0593676 5 681353 1459 467 00:00:00.4312723 6 334163 151 2213 00:00:00.0969830 7 620167 2207 281 00:00:00.4334765 8 774259 3323 233 00:00:00.5454649 9 892453 1013 881 00:00:00.6269336 10 926047 907 1021 00:00:00.8343699

    Waktu rata-rata enkripsi dengan 6 digit nilai n adalah 0.34653421 detik.

    Tabel 4.9 Pengujian pemecahan kunci dengan

    nilai n sebanyak 6 digit

    Percobaan ke- Nilai n

    Bilangan prima1

    Bilangan prima2 Waktu

    1 196253 857 229 00:00:00.8876063 2 207913 809 257 00:00:02.1164726 3 252353 617 409 00:00:03.5231010

  • 4 609187 1447 421 00:00:03.0803184 5 681353 1459 467 00:00:03.9708349 6 334163 151 2213 00:00:00.6051978 7 620167 2207 281 00:00:03.2676525 8 774259 3323 233 00:00:06.8348819 9 892453 1013 881 00:00:03.7178788 10 926047 907 1021 00:00:05.9892275

    Waktu rata-rata pemecahan kunci dengan 6 digit nilai n adalah 3.39931717 detik.

    5. Nilai n sebanyak 7 digit

    Hasil pengujian dapat dilihat pada tabel 4.10 dan 4.11.

    Tabel 4.10 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 7 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 1727053 1091 1583 00:00:01.2170471 2 2131861 2237 953 00:00:01.5026223 3 2469253 971 2543 00:00:01.7309160 4 2391677 1433 1669 00:00:02.0097966 5 4479271 1997 2447 00:00:03.4487804 6 3789091 1667 2273 00:00:02.6576010 7 7079621 3389 2089 00:00:01.4900735 8 6296111 2287 2753 00:00:02.6451867 9 3523127 857 4111 00:00:01.6218973 10 9954523 3559 2797 00:00:06.3271381

    Waktu rata-rata enkripsi pesan dengan 7 digit nilai n adalah 2.4651059 detik.

    Tabel 4.11 Pengujian pemecahan kunci dengan

    nilai n sebanyak 7 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 1727053 1091 1583 00:00:49.3489365 2 2131861 2237 953 00:00:35.8842467

  • 3 2469253 971 2543 00:01:10.0445439 4 2391677 1433 1669 00:00:14.4076525 5 4479271 1997 2443 00:00:38.8025871 6 3902711 1847 2113 00:00:49.1729598 7 7079621 3389 2089 00:00:38.5979204 8 6296111 2287 2753 00:01:10.8592703 9 3523127 857 4111 00:00:18.8410234 10 9954523 3559 2797 00:00:41.7515784

    Waktu rata-rata pemecahan kunci dengan 7 digit nilai n adalah 42.7710719 detik.

    6. Nilai n sebanyak 8 digit

    Hasil pengujian dapat dilihat pada tabel 4.12 dan 4.13.

    Tabel 4.12 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 8 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 23643589 5077 4657 00:00:14.9833301 2 36581747 5791 6317 00:00:12.4709726 3 47361023 6599 7177 00:00:22.4895409 4 58185559 8069 7211 00:00:30.6789661 5 61300979 7919 7741 00:00:27.6696240 6 70153393 8521 8233 00:00:25.2434728 7 82621211 9173 9007 00:00:26.1487474 8 90679829 9311 9739 00:01:05.1897833 9 60231989 991 60779 00:00:27.2077226 10 94303477 9001 10477 00:00:10.6554579

    Waktu rata-rata enkripsi pesan dengan 8 digit nilai n adalah 26.27376177 detik.

    Tabel 4.13 Pengujian pemecahan kunci dengan

    nilai n sebanyak 8 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 23643589 5077 4657 00:00:09.6703621

  • 2 36581747 5791 6317 00:12:23.2982162 3 47361023 6599 7177 00:04:46.2665709 4 58185559 8069 7211 00:04:27.6689450 5 61300979 7919 7741 00:09:25.6087205 6 70153393 8521 8233 00:00:52.1757191 7 82621211 9173 9007 00:15:47.3087578 8 90679829 9311 9739 00:37:15.0135594 9 60231989 991 60779 00:05:10.3687370 10 94303477 9001 10477 00:00:47.6290403

    Waktu rata-rata pemecahan kunci dengan 8 digit nilai n adalah 522.5008628

    detik atau 8 menit 42. 5008628 detik.

    7. Nilai n sebanyak 9 digit

    Hasil pengujian dapat dilihat pada tabel 4.14 dan 4.15.

    Tabel 4.14 Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 9 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 135321611 10499 12889 00:00:20.9060820 2 157241141 11933 13177 00:00:48.5911560 3 260454041 16883 15427 00:01:20.4776120 4 343394039 17959 19121 00:01:53.5076760 5 524140489 25261 20749 00:02:26.9601332 6 523143563 17903 29221 00:00:57.6477591 7 786607313 28211 27883 00:08:52:1949768 8 849277861 30013 28297 00:04:22.4239693 9 855910511 29311 29201 00:03:08.7991474 10 921489139 30703 30013 00:02:22.0706983

    Waktu rata-rata enkripsi pesan dengan 9 digit nilai n adalah 2 menit 41.357921

    detik.

    Tabel 4.15 Pengujian pemecahan kunci dengan

    nilai n sebanyak 9 digit

  • Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 135321611 10499 12889 00:44:41.4175466 2 157241141 11933 13177 00:31:12.6055487 3 260454041 16883 15427 00:43:40.5670703 4 343394039 17959 19121 00:18:18.7203426 5 524140489 25261 20749 00:46:03.5419010 6 523143563 17903 29221 01:34:12.0493673 7 786607313 28211 27883 02:18:41.9239893 8 849277861 30013 28297 00:29:05.0824363 9 855910511 29311 29201 00:13:22.4303047 10 921489139 30703 30013 01:02:56.9470349

    Waktu rata-rata pemecahan kunci dengan 9 digit nilai n adalah 52 menit

    13.528554 detik.

    8. Nilai n sebanyak 10 digit

    Hasil pengujian dapat dilihat pada tabel 4.16 dan 4.17.

    Tabel 4.16 : Pengujian Enkripsi Pesan dengan

    nilai n sebanyak 10 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 2101842647 50311 41777 00:12:33.5275781 2 2781711721 55511 50111 00:29:20.6955150 3 1029694583 33331 30893 00:04:31.4617458 4 1193846939 32971 36209 00:01:31.7528365 5 1471023559 41011 35869 00:03:57.2671199 6 1990292873 44777 44449 00:18:00.7909095 7 1153220441 31849 36209 00:02:57.5372095 8 3119856067 50551 61717 00:31:28.4347366 9 3477286201 55931 62171 00:49:34.5829385 10 4789623589 77813 61553 00:25:23.0558584

    Waktu rata-rata enkripsi pesan dengan 10 digit nilai n adalah 17 menit 55.911745

    detik.

  • Tabel 4.17 : Pengujian pemecahan kunci dengan

    nilai n sebanyak 10 digit

    Percobaan ke- Nilai n Bilangan prima1 Bilangan prima2 Waktu

    1 2101842647 50311 41777 00:54:37.3889099 2 2781711721 55511 50111 05:19:56.2090905 3 1029694583 33331 30893 01:12:15.3897374 4 1193846939 32971 36209 01:29:53.9104712 5 1471023559 41011 35869 00:35:34.6550433 6 1990292873 44777 44449 00:47:06.7223736 7 1153220441 31849 36209 00:20:30.1859350 8 3119856067 50551 61717 00:52:52.6500426 9 3477286201 55931 62171 07:26:23.6124764 10 4789623589 77813 61553 05:16:46.3403173

    Waktu rata-rata pemecahan kunci dengan 10 digit nilai n adalah 2 jam 25 menit

    35.70644 detik.

    4.2.4 Grafik Hubungan Panjang Nilai n terhadap waktu.

    Rata-rata waktu yang dibutuhkan untuk mengenkripsi pesan dapat dilihat pada tabel 4.18.

    Tabel 4.18 Waktu Rata-rata Enkripsi

    Kelompok Bilangan n Waktu Rata-rata 3 digit 0.00168952 detik 4 digit 0.00294254 detik 5 digit 0.02869275 detik 6 digit 0.25422838 detik 7 digit 1.8519333 detik 8 digit 26.27376177 detik 9 digit 12 menit 41.357921 detik 10 digit 17 menit 55.911745 detik

    Hubungan antara panjang nilai n dengan waktu enkripsi dapat dilihat pada grafik 4.1

    berikut.

  • Gambar 4.8 Grafik Hubungan Panjang Digit n terhadap Waktu Enkripsi

    Dari gambar 4.8 dapat dilihat grafik yang menunjukkan hubungan antara panjang digit n

    dengan waktu berbanding lurus. Jika nilai n semakin panjang maka dibutuhkan waktu

    yang lebih lama untuk melakukan enkripsi pesan.

    Sedangkan waktu rata-rata yang dibutuhkan untuk memecahkan kunci dapat

    dilihat pada tabel 4.19.

    Tabel 4.19 Waktu Rata-rata Pemecahan Kunci

    Kelompok Bilangan n Waktu Rata-rata 3 digit 0.00241342 detik 4 digit 0.00719764 detik 5 digit 0.11934791 detik 6 digit 2.79603314 detik 7 digit 38.13522126 detik 8 digit 8 menit 42. 5008628 detik 9 digit 52 menit 13.528554 detik 10 digit 2 jam 25 menit 35.70644 detik

    Hubungan antara panjang nilai n dengan waktu pemecahan kunci dapat dilihat pada

    grafik 4.2 berikut.

  • Gambar 4.9 Grafik Hubungan Panjang Digit n terhadap Waktu Pemecahan Kunci

    Gambar 4.9 memperlihatkan grafik hubungan panjang digit n terhadap waktu yang

    dibutuhkan untuk memecahkan kunci. Hubungan antara panjang digit n terhadap waktu

    dalam pemecahan kunci ini berbanding lurus, dimana jika nilai n semakin besar maka

    waktu yang dibutuhkan untuk memecahkan kunci juga semakin besar.

    4.3 Perhitungan Kompleksitas Metode Universal Exponent Factoring

    Kompleksitas yang dihitung dari metode Universal Exponent Factoring ini adalah best

    case, worst case dan average case.

    4.3.1 Perhitungan Running Time

    Untuk mendapatkan Big (average time), Big (best time), dan Big O(worst time) maka

    terlebih dahulu dilakukan perhitungan running time.

    Tabel 4.20 Perhitungan Running Time

    Step Kode c # c*#

  • 1: 2: 3: 4: 5: 6:

    7: 8:

    9:

    10:

    11:

    12:

    13: 14:

    15: 16: 17:

    18:

    19:

    20: 21: 22:

    23: 24: 25:

    26: 27: 28:

    29: 30: 31:

    private BigInteger[] UniversalExponentiationFact(string nKey) { BigInteger[] Keys = new BigInteger[100]; BigInteger p1, p2 = 0; BigInteger n = BigInteger.Parse(nKey); BigInteger[] xp = new BigInteger[100]; Int64 j; do { BigInteger x = rnd.Next(1,Int32.MaxValue); while(BigInteger.GreatestCommonDivisor (x,n)!= BigInteger.One) { x = rnd.Next(1, (int)n); } BigInteger e = BigInteger.One, m = BigInteger.One; while (BigInteger.ModPow(x, e, n) != BigInteger.One) { e = BigInteger.Add(e, BigInteger.One); } int b = 0; while (e % 2 == 0) { e /= 2; m = e; b += 1; } do { do { BigInteger a = Random(n); p1=BigInteger.GreatestCommonDivisor (a,n); if (p1 > 1) { p2 = BigInteger.Divide(n, p1); Keys[0] = p1; Keys[1] = p2; } else { xp[0] = BigInteger.ModPow(a,m,n); } }while(BigInteger.ModPow (xp[0],1,n)==1); for (j = 1; j

  • 32: 33: 34: 35: 36: 37:

    38:

    39:

    p1 = BigInteger.GreatestCommonDivisor(xp[j- 1]-1,n); p2 = BigInteger.Divide(n, p1); Keys[0] = p1; Keys[1] = p2; nilai_p.Text = Keys[0].ToString(); nilai_q.Text = Keys[1].ToString(); }while (p1

  • BAB V

    KESIMPULAN DAN SARAN

    1.8 Kesimpulan Setelah melakukan analisis, perancangan dan pengujian terhadap tingkat keamanan

    RSA dengan metode Universal Exponent Factoring, maka diperoleh kesimpulan

    sebagai berikut:

    1. Waktu rata-rata yang diperoleh untuk memecahkan kunci menggunakan metode

    Universal Exponent Factoring dengan nilai n sebanyak 3 sampai 10 digit adalah:

    a. Untuk nilai n sebanyak 3 digit waktu rata-rata adalah 0.01117229 detik.

    b. Untuk nilai n sebanyak 4 digit waktu rata-rata adalah 0.03455287 detik.

    c. Untuk nilai n sebanyak 5 digit waktu rata-rata adalah 0.35762682 detik.

    d. Untuk nilai n sebanyak 6 digit waktu rata-rata adalah 3.39931717 detik.

    e. Untuk nilai n sebanyak 7 digit waktu rata-rata adalah 42.7710719 detik.

    f. Untuk nilai n sebanyak 8 digit waktu rata-rata adalah 8 menit 42. 5008628

    detik.

    g. Untuk nilai n sebanyak 9 digit waktu rata-rata adalah 52 menit 13.528554

    detik.

    h. Untuk nilai n sebanyak 10 digit waktu rata-rata adalah 2 jam 25 menit

    35.70644 detik.

    2. Panjang nilai n berbanding lurus dengan waktu pemecahan kuncinya yang artinya

    semakin panjang nilai n maka semakin besar waktu yang dibutuhkan untuk

    memecahkannya.

    3. Salah satu karakteristik dari metode Universal Exponent Factoring adalah proses

    bergantung pada nilai random yang di-generate. Namun, panjang selisih faktor

    tidak berpengaruh.

  • 4. Kompleksitas dari metode Universal Exponent Factoring adalah big = (|n|4).

    1.9 Saran Berikut saran-saran yang dapat dipertimbangkan untuk melakukan penelitian

    selanjutnya:

    1. Pengujian ini dilakukan hanya dengan nilai n terbatas yaitu 3 hingga 10 digit,

    sebaiknya untuk penelitian selanjutnya menguji nilai yang lebih besar untuk

    melihat keakuratan metode Universal Exponent Factoring dalam digit yang lebih

    besar.

    2. Penelitian selanjutnya sebaiknya tidak hanya menggunakan waktu sebagai tolak

    ukur untuk pengujian tingkat keamanan RSA, namun jika dari sisi lain seperti

    keutuhan data.

  • DAFTAR PUSTAKA

    [1] Anggraini, Siska. 2012. Sistem Keamanan Data dengan RSA dan Modified LSB.

    Skripsi. Medan, Indonesia: Universitas Sumatera Utara

    [2] Ariyus, Dony. 2006. Computer Security. Yogyakarta: ANDI.

    [3] Beny. 2012. Analisis dan Perancangan Sistem Kriptografi Simetris Triple DES

    dan Kriptografi Simetris RSA. Skripsi. Medan, Indonesia: Universitas

    Sumatera Utara

    [4] Hershey, John E. 2003. Cryptography Demistified. New York: McGraw Hill

    Companies,Inc.

    [5] Imani, Prasasti. 2002. Analisis Keamanan Kriptosistem Kunci Publik RSA.

    Skripsi. Bogor, Indonesia: Institut Pertanian Bogor.

    [6] Kromodimoeljo, Sentot. 2010. Teori dan Aplikasi Kriptografi: SPK IT

    Consulting

    [7] Mollin, R. A. 2007. An Introduction to Cryptography. 2nd ed. Florida:

    Chapman & Hall/CRC.

    [8] Mollin, Richard A. 2003. RSA and Public Key Cryptography. Florida: CLC

    Press LLC.

    [9] Ramdan Mangunraja, Dadang. Peningkatan Keamanan Pertukaran Kunci

    Deffie-Hellman Dengan pengimbuhan Algoritma Algoritma RSA.

    Bandung, Indonesia: STEI ITB

    [10] Sadikin, Rifki. 2012. Kriptografi untuk Keamanan Jaringan. Yogyakarta:

    ANDI.

  • [11] Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and

    Source Code in C. 2nd ed. New Jersey: John Wiley & Sons,Inc.

    [12] Tandiyono, Andy. 2006. Simulasi Pemanfaatan Metode Interlock Protocol

    Untuk Mengatasi Man-In-The-Middle-Attack. Skripsi. Medan, Indonesia:

    STMIK Mikroskill.

    [13] The Security Divison Of RSA. 2009. RSA BSafe Security Concept. RSA

    Security, Inc.

  • LISTING PROGRAM

    1. Form1.cs (Form Pemecahan Kunci) using System; using System.Diagnostics; using System.IO; using System.Numerics; using System.Windows.Forms; using System.Collections; namespace apps { public partial class Form1 : Form { Random rnd = new Random(); BigInteger p = 1, q = 1, e = 1, hasil = 1; object AsciiplainBig; BigInteger totien_n, ed = 0, e1 = 1, j; int index; BigInteger[] x = new BigInteger[10000000]; string plain = ""; string cipher =""; Stopwatch stopwatch = new Stopwatch(); public Form1() { InitializeComponent(); } private BigInteger[] UniversalExponentiationFact(string nKey) { BigInteger[] Keys = new BigInteger[100]; BigInteger p1, p2 = 0; BigInteger n = BigInteger.Parse(nKey); BigInteger[] xp = new BigInteger[100]; Int64 j; do { BigInteger x = rnd.Next(1, Int32.MaxValue); while (BigInteger.GreatestCommonDivisor(x, n) !=

    BigInteger.One) { x = rnd.Next(1, (int)n); } BigInteger e = BigInteger.One, m = BigInteger.One; while (BigInteger.ModPow(x, e, n) != BigInteger.One) { e = BigInteger.Add(e, BigInteger.One); } int b = 0; while (e % 2 == 0) { e /= 2; m = e; b += 1;

  • } do { do { BigInteger a = Random(n); p1 = BigInteger.GreatestCommonDivisor(a, n); if (p1 > 1) { p2 = BigInteger.Divide(n, p1); Keys[0] = p1; Keys[1] = p2; } else { xp[0] = BigInteger.ModPow(a, m, n); } } while (BigInteger.ModPow(xp[0], 1, n) == 1); for (j = 1; j
  • } nilai_e.Text = e1.ToString(); nilai_d.Text = (j-1).ToString(); } private void button1_Click(object sender, EventArgs e) { timer1.Start(); BigInteger n; stopwatch.Start(); n = Convert.ToUInt64(nilai_n.Text); UniversalExponentiationFact(n.ToString()); Decryption(); stopwatch.Stop(); label6.Text += " "+stopwatch.Elapsed.ToString(); string[] bits = cipher.Split(' '); for (int i = 0; i < bits.Length - 1; i++) { x[i] = BigInteger.Parse(bits[i]); AsciiplainBig = BigInteger.ModPow(x[i], j - 1, n); int Asciiplain = int.Parse(AsciiplainBig.ToString()); plain += char.ConvertFromUtf32(Asciiplain); } txtPlain.Text = plain; MessageBox.Show("Text has been decrypted Succesfully!",

    "Decrypt", MessageBoxButtons.OK, MessageBoxIcon.Information);

    } private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = false; } private void enkripsiToolStripMenuItem_Click(object sender,

    EventArgs e) { Form2 frm2 = new Form2(); frm2.ShowDialog(); this.Close(); } public bool Fermat(BigInteger prime) { BigInteger a = 0; for (int i = 0; i

  • public BigInteger Random(BigInteger prime) { BigInteger bigVal; int limit = rnd.Next(2, prime.ToString().Length); do { string strVal = ""; if (prime.ToString().Length == 1) { for (int i = 0; i < prime.ToString().Length; i++) { int val = rnd.Next(2, 10); strVal += val.ToString(); } bigVal = BigInteger.Parse(strVal); } else { int val; for (int i = 0; i < limit; i++) { if (i == 0) { val = rnd.Next(0, Convert.ToInt32

    (prime.ToString().Substring(0, 1))); strVal += val.ToString(); } else { val = rnd.Next(0, 10); strVal += val.ToString(); } } bigVal = BigInteger.Parse(strVal