Sabtu, 03 Oktober 2009

IMPLEMENTASI KRIPTOSISTEM ALGORITMA ASIMETRI UNTUK PEMBUATAN TANDA TANGAN DIGITAL DALAM

”ALGORITMA RSA”

Ahmad Budi Setiawan[1]

Abstraksi

Asymmetric algorithms cryptosystem for creating a digital signature in the RSA algorithm is an attempt to sharpen the authenticity, confidentiality, accuracy, integrity and security in transformed electronic data. Digital signature is one of public key cryptography algorithms are required in the application of two key types, namely the secret key and public key. Theoretically the digital signature is the reverse process of encryption and decryption. In the process, the secret key used to generate digital signatures and public key used to verify digital signatures. Message authentication process using digital signatures with RSA algorithm can meet the confidentiality issues of authenticity, truth and integrity. Delivery of messages with cryptographic techniques and encryption-decryption digital signature process is to ensure the security and authenticity of electronic data that is sent through the Internet.*

Key word : Digital signature, RSA Algorithm, encryption-decryption, publick-key, privat-key, security

PENDAHULUAN

Latar Belakang Masalah

Perkembangan teknologi telekomunikasi, dimana salah satu wujudnya adalah teknologi internet atau jaringan global dan teknologi penyimpanan data dengan menggunakan komputer, kini menjadi semakin pesat. Perkembangan itu sekarang memungkinkan pengiriman data jarak jauh melalui jaringan internet relatif lebih cepat dan mudah.Selain sebagai sarana komunikasi, internet dapat dimanfaatkan juga untuk mendapatkan informasi langsung dari sumbernya berbagai penjuru dunia. Karena informasi melalui teknologi itu sendiri saat ini dipandang sebagai sumber daya yang sangat bermanfaat. Di lain pihak, pengiriman data jarak jauh melalui jaringan internet memungkinkan pihak lain yang tidak berhak dapat menyadap, mencuri bahkan mengubah data atau pesan yang dikirimkan. Dengan demkian bisa jadi penggunaan fasilitas jaringan komunikasi data melalui internet akan menimbulkan permasalahan baru. Misalnya dalam konteks keamanan data elektronik baik yang bersifat pencegahan terhadap penyadapan dan pencurian data maupun pengubahan isi data yang dikomuni kasikan oleh pihak lain. Untuk itulah keamanan sistem informasi perlu mendapat diperhatikan ekstra, sehingga data dan informasi dapat mencapai sasaran yang diharapkan. Pada sisi yang lain ”Keamanan suatu sistem berbanding terbalik dengan kenyamanan”. Namun demikian dalam teknologi informasi saat ini,sedang dikembangkan sistem keamanan untuk menangkal berbagai bentuk kejahatan teknologi internet tersebut. Salah satu di antara metode pengamanan itu adalah penggunaan sistem kriptografi transformasi data. Dengan menggunakan sistem ini data yang dihasilkan (di transfer bisa terjaga keamanannya) atau tidak bisa di sadap oleh pihak lain.

Walaupun sudah banyak sistem kriptografi (cryptosystem) yang telah dibobol oleh para penyerang (attackers) atau yang lazim kita sebut sebagai “Hacker”. Transformasi ini di asumsikan mampu memberikan solusi pada dua masalah keamanan data, yaitu privasi (privacy) dan keotentikan (authentication). Privasi mengandung arti bahwa data yang dikirimkan hanya dapat dimengerti informasinya oleh pengirim dan penerimanya data. Sedangkan keotentikan berarti mencegah pihak ketiga untuk menyadap, mencuri lalu mengubah data yang dikirimkan atau mengirimkan data yang salah. Secara garis besar kriptografi bertujuan untuk; kerahasiaan (confidentiality), keutuhan pesan (message integrity), tidak dapat disangkal (non-repudiation), dan keotentikan (authentification).

Tujuan Penulisan

Tujuan penulisan karya tulis ilmiah tentang ”Implementasi Kriptosistem Algoritma Asimetri Untuk Pembuatan Tanda Tangan Digital Dalam Algoritma RSA” ini adalah untuk mendiskripsikan proses penggunaan tanda tangan digital dengan algoritma kriptografi RSA. Dimana kriptografi tersebut di dalamnya menggunakan ”kunci publik” dan membandingkannya dengan kriptografi ”kunci privat”.Secara umum sistem ini menjadi penting untuk dipublikasikan sebagai sebuah karya ilmiah untuk pengembangan ilmu pengetahuan.

Kerangka Konsep

Jika kita menulis surat, baik surat resmi maupun surat yang tidak resmi, biasanya kita selalu menandatangani surat yang bersangkutan. Tujuan kita menandatangani surat adalah agar surat tersebut otentik, dan surat tersebut memang benar-benar buatan kita. Tanda tangan digital (digital signature) paling tidak juga mempunyai tujuan yang sama dengan tanda tangan pada surat biasa tersebut. Yaitu dengan menganalogikan proses tanda tangan secara manual yang biasa kita lakukan pada tanda tangan diatas kertas (paper). Dalam konsep proses tanda tangan digital, yang kita lakukan adalah mengganti proses tanda tangan manual tersebut dengan proses tanda tangan yang bersifat elektronik atau digital yang mempunyai fungsi yang sama dengan tanda tangan manual[2].

Sementara tujuan tanda tangan dalam suatu dokumen adalah untuk memastikan otentisitas dari dokumen tersebut. Dalam tanda tangan digital juga tidak hanya mengidentifikasi siapa yang telah mengirim pesan. Tetapi juga memastikan keutuhan dari dokumen tersebut tidak berubah selama proses transmisi aslinya. Karena tanda tangan digital itu sendiri didasari oleh isi (content) dari pesan itu sendiri. Dalam konsep sejarahnya penggunaan tanda tangan digital berawal dari penggunaan teknik kriptografi untuk mengamankan informasi yang hendak ditransmisikan atau disampaikan kepada orang yang lain. Sistem ini bukan hal yang baru karena sudah digunakan orang sejak ratusan tahun yang lalu.

Sistem Keamanan: Internet yang sudah dianggap mejadi jaringan publik secara realitas dapat memberikan berbagai ketidakpastian bagi penggunaanya. Namun demikian ketidak pastian itu dapat di atasi dengan membangun atau menggunakan suatu sitem tertentu. Salah satu diantara system yang menjadi pembahasan dalam artikel ini adalah permasalahan digitalisasi tanda tangan. Yakni bagaimana pesan yang berupa “data elektronik” dapat dijamin keamanan dan keutuhannya melalui sistem tanda tangan digital (digital signature).

Penggunaan tanda tangan digital ini diasumsikan dapat memberikan keamanan, keutuhan dari sebuah pesan yang digunakan secara elektronik. Tanda tangan digital adalah suatu sistem pengamanan yang menggunakan public key cryptography system atau secara umum pengertiannya adalah : “A data value generated by public key algorithm based on the contents of a lock data and a private key, yielding so individualized crypto checksum” [3]. Adapun hal-hal yang harus dijamin keamanannya oleh tanda tangan digital adalah sebagai berikut:

(1). Authenticity (otentisitas), tidak bisa dan sulit ditiru oleh orang lain. Pesan yang sudah dibubuhi tanda tangan digital dapat menjadi bukti. Dengan adanya tanda tangan digital pada pesan elektronik yang dikirimkan, maka akan dapat ditunjukkan darimana sesungguhnya pesan tersebut berasal.

2). Integrity (integritas), berhubungan dengan masalah keutuhan dari suatu data elektronik yang dikirimkan. Seorang penerima pesan atau data elektronik dapat merasa yakin apakah pesan yang diterimanya sama dengan pesan yang dikirimkan.

(3). Non repudiation (tidak dapat disangkal). Pengirim pesan berupa “data elektronik”tertentu tidak dapat menyangkal lagi bahwa jika suatu ketika nanti ia tidak mengakui data elektronik yang telah di kirimnya.

(4). Confidentiality (kerahasiaan). Pesan dalam bentuk data elektronik yang dikirimkan tersebut bersifat rahasia/confidential, sehingga tidak semua orang dapat mengetahui isi data elektronik.

(5). Accountable (dapat dipertanggungjawabkan). Bahwa pesan yang disampaikan melalui media cyber, dengan protokol kunci publik dan kunci rahasia dalam proses “penandatanganan” pada setiap transaksi e-commerce di ruang media maya (cyber space) tetap harus bisa dipertanggungjawabkan oleh para pihak yang saling melakukan transaksi dan pihak-pihak terkait lainnya.

Penggunaan tanda tangan digital biasanya dibutuhkan untuk penguatan keabsahan keotentikan data. Apakah suatu data elektronik yang dikirim melalui internet benar-benar bisa terjaga keamanannya dari para penyerang (attackers) yang sering disebut sebagai hackers.

Metoda Penulisan

Penulisan artikel ilmiah tentang,”Implementasi Kriptosistem Algoritma Asimetri Untuk Pembuatan Tanda Tangan Digital Dalam Algoritma RSA” ini dimulai dari pemahaman pada sistem kriptografi (cryptosystem) dan mempelajari teori-teori kriptografi beserta permasalahan matematisnya.Kemudian di lanjutkan dengan studi literatur perpustakaan,browsing di internet untuk mendapatkan pengkayaan pengetahuan mengenai kriptografi. Dengan berdasarkan pada kerangka konsep dan teori itulah yang di jadikan pedoman untuk mengimple- mentasikan pembuatan tanda tangan digital dengan algoritma RSA dalam kajian ini.

HASIL KAJIAN

Tipe Dan Karakteristik Algoritma Kriptografi

Secara umum, algoritma kriptografi berdasarkan karakteristik kunci yang digunakan pada suatu sistem kriptografi dapat digolongkan sebagai berikut; algoritma kriptografi kunci rahasia (private key algorithm) atau biasa dikenal sebagai algoritma simetris (symetric algorithm) dan juga dikenal sebagai algoritma konvensional dan algoritma kriptografi assimetris (assymetric algorthm) atau dikenal juga dengan algoritma kunci publik (public key algorithm).

Pembagian algoitma pada suatu kriptosistem berdasarkan karakteristik kunci yang digunakan, dijelaskan pada bagan berikut ini;




Gambar 1. Pembagian kriptosistem berdasarkan karakteristik kunci

Algoritma Simetri

Algoritma simetri (symetric algorithm) atau algoritma konvensional menyatakan bahwa algoritma dimana kunci enkripsi digunakan dalam mengenkripsi pesan, dan dengan kunci yang sama untuk dekripsi kembali ke data aslinya. Artinya satu buah kunci digunakan dalam dua proses, yaitu enkripsi dan dekripsi. Oleh karena itulah algoritma kriptografi kunci rahasia ini disebut juga sebagai algoritma simetris.

Gambaran bagaimana sistem kriptografi konvensional ini bekerja adalah sebagai berikut:

Ø Alice dan Bob menyetujui sebuah kriptosistem tertentu.

Ø Alice dan Bob menyetujui sebuah kunci tertentu.

Ø Alice ingin mengirim sebuah pesan berupa teks biasa (plaintext) kepada Bob. Namun terlebih dahulu Alice mengubah teks biasa tersebut menjadi teks terenkripsi dengan menggunakan kunci tersebut

Ø Alice kemudian mengirimkan teks terenkripsi (ciphertext) kepada Bob.

Ø Bob menerima teks terenkripsi tersebut lalu dengan algoritma dan kunci yang sama dengan yang digunakan Alice sebelumnya, Bob membuka teks terenkripsi tersebut menjadi teks biasa kembali agar dapat dibaca.

Jadi, kunci yang digunakan untuk proses enkripsi dan dekripsi pada prinsipnya identik, satu buah kunci dapat dipakai dalam kedua proses tersebut, tetapi satu buah kunci dapat pula diturunkan dari kunci yang lainnya. Kunci-kunci ini harus dirahasiakan. Keamanan dari sistem ini sangat tergantung pada kunci tersebut, artinya bila orang yang tidak berhak mendapatkan kunci dari sistem maka ia dapat dengan bebas membaca dan mengubah isinya.

Kelebihan kriptografi kunci rahasia ini adalah memiliki kecepatan proses enkripsi dan dekripsi yang jauh lebih cepat seribu kali lebih cepat dibandingkan dengan kriptografi lainnya. Namun algoritma ini mempunyai kelemahan, yaitu masalah distribusi kunci (key distribution). Bagaimana caranya agar kunci pembuka (untuk mendekripsi) tersebut bisa dengan aman sampai ke penerima. Padahal kita tahu, jaringan internet benar-benar tidak aman, jika kunci sampai hilang atau dapat ditebak oleh orang lain, maka kriptosistem ini tidak aman lagi.

Beberapa contoh lain penggunaan konsep kriptografi kunci rahasia, antara lain; DES (Data Encryption Standard), IDEA (International Data Encryption Algorithm), FEAL, RC5, Blowfish.

Algoritma Assimetri

Dalam algoritma assimetri (assymetric algorithm) atau yang dikenal juga dengan algoritma kunci publik (public key algorithm), menggunakan dua buah kunci dalam prosesnya, artinya, dalam algoritma ini, kunci yang digunakan dalam proses enkripsi berbeda dengan kunci yang digunakan dalam proses dekripsi.

Pada sistem ini, setiap pelaku memiliki sepasang kunci, yaitu kunci publik dan kunci rahasia. Kunci publik didistribusikan ke publik dan kunci rahasia disimpan sendiri.

Skenario untuk menggambarkan proses kerja kriptografi kunci publik adalah sebagai berikut;

Ø Alice dan Bob menyetujui sebuah kriptosistem tertentu.

Ø Alice ingin mengirimkan sebuah pesan berupa teks biasa (plain text) kepada Bob.

Ø Alice menggunakan kunci publik milik Bob yang telah diketahuinya untuk mengubah pesan biasa tersebut menjadi teks terenkripsi (cipher text).

Ø Alice mengirimkan pesan tersebut kepada Bob, setelah pesan tersebut berhasil dienkripsi dengan kunci publik Bob.

Ø Bob menerima pesan terenkripsi tersebut, kemudian ia mengubah pesan terenkripsi tersebut menggunakan kunci rahasia miliknya menjadi teks biasa kembali.

Keuntungan utama adanya konsep/metode kunci publik ini ialah memberikan jaminan keamanan kepada siapa saja yang melakukan pertukaran informasi meskipun diantara mereka tidak ada pesetujuan mengenai keamanan data terlebih dahulu bahkan tidak saling mengenal satu sama lainnya. Dalam hal ini perlu diingat, bahwa yang disebar hanyalah kunci publik, sedangkan kunci rahasia tidak akan pernah disebarkan secara umum.

Beberapa contoh penggunaan konsep algoritma kriptografi kunci publik antara lain adalah; RSA[4], El-Gamal, Diffie-Hellman, DSA[5] (Digital Signature Algorithm).

Dapat disimpulkan bahwa keamanan dari sebuah algoritma kriptografi disasarkan pada kunci yang diguanakan pada proses enkripsi dan dekripsi, dan tidak berdasarkan pada detail cara kerja algoritmanya. Algoritma ini juga biasa diproduksi secara masal karena setiap pemakai memiliki kunci yang berbeda. Adapun kunci tersebut dapat juga berbentuk sebuah bilangan yang bernilai sangat besar, terutama dalam konsep kriptografi publik. Semakin besar nilai kunci, semakin besar pula tingkat keamanan teks terenkripsi tersebut. Jangkauan nilai yang memungkinkan untuk sebuah kunci disebut sebagai keyspace.

Dalam kriptografi modern, panjang kunci dalam ukuran jumlah bitase yang digunakan merupakan salah satu faktor yang sangat penting[6]. Berikut ini dicantumkan ilustrasi waktu rata-rata untuk memecah kunci dengan teknik brute-force-attack[7] pada teknik kriptografi simetris.

Tabel 1.1.ilustrasi ukuran kunci dan kemungkinan waktu untuk memecahkannya.

Ukuran Kunci

Jumlah Kemungkinan Kunci

1 kunci / mS

106 kunci / mS

40 bit

240 = 1,1 x 1012

239 mS = 152,7 jam

55 mS

56 bit

256 = 7,2 x 1016

255 mS = 1142 tahun

10,01 jam

128 bit

2128 = 3,4 x 1038

2127 mS = 5,4x1024 tahun

5,4 x 1018 tahun

Jadi dengan panjang kunci 40 bit, jumlah kunci yang mungkin ada adalah sebanyak 240 macam kunci. Dan bila setengahnya (1/2 x 240 = 239) dicoba untuk mendapatkan waktu rata-ratanya dengan sebuah komputer yang memiliki kemampuan mencoba 1 juta kunci perdetiknya (1 kunci per mikrodetik), maka akan dibutuhkan waktu 239 mS (mikrodetik) untuk mencoba keseluruhan 239 kunci yang ada. Dan bila digunakan satu komputer yang memiliki kemampuan enkripsi (kemampuan mencoba) 1 juta kunci per mS, maka akan dibutuhkan waktu 55 mS. Waktu ini juga akan dicapai oleh 1000 komputer yang masing-masing mempunyai kemampuan enkripsi 1 milyar/detik.

Demikian pula untuk panjang kunci 128 bit. Bila digunakan 1 juta komputer yang masing-masing memiliki kemampuan enkripsi 1 trilyun perdetik, maka akan diperlukan waktu 5,4 trilyun tahun. Data tersebut diatas adalah ilustrasi berdasarkan ukuran kunci per bit pada teknik kriptografi simetris (kriptografi kunci privat) dan bandingkan dengan ukuran kunci yang biasa digunakan pada kriptografi asimetris (kriptografi kunci publik) pada table berikut;

Tabel 1.2. Perbandinga ukuran kunci pada kriptografi simetris dengan asimetris

Ukuran Kunci Kriptografi Simetris

Ukuran Kunci Kriptografi Asimetris

56 bit

384 bit

64 bit

512 bit

80 bit

768 bit

112 bit

1792 bit

128 bit

2304 bit

Artinya, jika pada kriptografi simetris digunakan ukuran kunci 56 bit, maka ukuran kunci pada kriptografi asimetris digunakan 384 bit, begitupun jika pada kriptografi simetris digunakan 112 bit maka perbandingan ukuran kunci yang digunakan pada kriptograsi asimetris adal 1792 bit. Dengan demikian jelas bahwa kriptografi kunci publik atau kriptografi asimetris lebih susah ditembus jika dibandingkan dengan kriptografi simetris. Hal ini jika digunakan perbandingan ukuran kunci selain itu pula, kerumitan algoritma matematis pada kriptografi kunci publik pun jauh lebih rumit dibandingkan dengan kriptografi simetris.

Tanda Tangan Digital

Apabila kita menulis sebuah surat, baik surat itu resmi ataupun tidak resmi, biasanya kita menandatangani surat agar surat tersebut otentik, surat tersebut memang benar buatan kita. Tanda tangan digital (digital signature) juga bertujuan sama dengan tanda tangan biasa, yaitu dengan menganalogikan proses tanda tangan secara manual yang biasa kita lakukan dengan tangan diatas kertas, namun pada proses tanda tangan digital, yang kita lakukan adalah mengganti proses tanda tangan manual tersebut dengan proses tanda tangan yang bersifat elektronik atau digital yang mempunyai fungsi yang sama dengan tanda tangan manual[8].

Tujuan dari suatu tanda tangan dalam suatu dokumen adalah untuk memastikan otentisitas dari dokumen tersebut. Suatu tanda tangan digital bukanlah suatu tanda tangan seperti yang dikenal selama ini, yang menggunakan cara yang berbeda untuk menandai suatu dokumen atau data sehingga tidak hanya mengidentifikasi siapa yang telah mengirim pesan, namun juga memastikan keutuhan dari dokumen tersebut tidak berubah selama proses transmisi. Suatu tanda tangan digital didasari oleh isi dari pesan itu sendiri.

Cara Kerja Tanda Tangan Digital

Proses algoritma tanda tangan digital biasanya memanfaatkan algoritma ”kunci publik” sebagai sepasang kunci. Yaitu kunci publik dan kunci privat yang dibuat untuk keperluan orang tertentu. Permasalahan pokoknya bagaimana teknik tanda tangan digital sederhana itu dapat diterapkan? Dalam konteks, ini pesan dienkripsi dengan menggunakan kunci rahasia atau kunci privat si-pengirim sehingga menghasilkan signature atau teks terenkripsi yang telah ditanda tangani secara digital. Ketika si-penerima mendapatkan pesan yang tertanda secara digital, maka komputer si-penerima akan memverifikasi dengan mengoperasikan program yang berisi ”algoritma kriptografi” yang sama dengan yang digunakan si-pengirim untuk menciptakan tanda tangan digital dengan menggunakan kunci publik si-pengirim.

Pada proses selanjutnya jika si-penerima dapat mendekripsi tanda tangan dan terbukti keotentikannya pada saat verifikasi, maka si-penerima dapat menyakini bahwa pesan tersebut adalah benar datang dari si-pengirim yang dimaksud. Karena hanya kunci pengirimlah yang dapat mendekripsi ”tanda tangan digital” yang dienkripsi dengan kunci rahasia pengirim. Skenario untuk mengilustrasikan cara kerja tanda tangan digital adalah sebagai berikut:

(a) Alice dan Bob menyetujui sebuah kriptosistem[9] tertentu, misalkan RSA;

(b) Alice ingin mengirimkan pesan kepada Bob, untuk menjaga keotentikan pesan tersebut, Alice ingin membubuhi pesan tersebut dengan sebuah tanda tangan digital. Alice melakukannya dengan cara mengenkripsikan pesan tersebut dengan kunci rahasia / kunci rahasia miliknya. Sehingga pesan tersebut tertandatangani secara digital (signatured).

(c) Kemudian pesan yang sudah ditanda tangani dikirimkan kepada Bob.

(d) Setelah menerima pesan tersebut, Bob mendekripsi pesan tersebut menggunakan kunci publik milik Alice, dengan tujuan untuk memverifikasi pesan yang sudah dibubuhi tanda tangan Alice dan memastikan apakah benar pesan tersebut benar-benar berasal dari Alice

Pada konsep enkripsi-dekripsi dengan kunci publik sebelumnya yang telah kita ketahui, kita terbiasa mengenkripsi pesan dengan menggunakan kunci publik. Tetapi dalam proses tanda tangan digital kunci yang digunakan adalah kunci rahasia, yakni kunci rahasia yang dimiliki si-pengirim.


Tanda Tangan Digital & Enkripsi

Dengan sistem mengkombinasikan ”tanda tangan digital dengan enkripsi kriptografi kunci-publik”, maka dapat dijamin keamanan data dengan enkripsi dan keotentikannya. Jika di ilustrasikan dengan sebuah surat yang kita terima dari seseorang relasi kita, maka tanda tangan berlaku sebagai pembuktian keotentikan surat tersebut. Hal yang sama juga berfungsi pada ”tanda tangan digital”. Jika amlop berfungsi untuk menjaga kerahasiaan isi surat biasa,maka dalam surat digital fungsi amplop diganti dengan ”enkripsi’. Namun demikian dalam konteks ”enkripsi dan tanda tangan digital” hanya berlaku pada sebuah pesan atau data digital. Untuk menjelaskan implementasinya dapat di diilustrasikan sebagai berikut:

Ø Alice membangkitkan tanda tangan digital dengan mengenkripsi sebuah pesan M1 berupa kalimat kunci (passphrase) menggunakan kunci rahasianya.

SkrA(M1)

Ø Alice mengenkrip pesan sebenarnya yang akan dikirim dengan kunci publik milik Bob

EkpB(M2)

Ø Alice menggabungkan tanda tangan digitalnya dengan pesan terenkripsi, lalu mengirimkannya kepada Bob

EkpB(M2) + SkrA(M1)

Ø Bob mendekripsikan pesan sebenarnya (M2) dengan kunci rahasia miliknya, sehingga Bob dapat melihat isi pesan sebenarnya.

DkrB (M2) = M2

Ø Bob memverifikasi pesan tersebut untuk membuktikan keotentikan pesan tersebut dengan mendekripsi tanda tangan digital M1 menggunakan kunci publik Alice.

VkpA (M1) = M1

Kriptosistem RSA

RSA merupakan kriptosistem kunci publik yang reversible (dapat dibalik). Nama RSA sendiri diambil dari akronim nama depan ketiga orang penemunya, yaitu: Ron Rivest, Adi Shamir dan Len Adleman. Mereka semua adalah peneliti dari Massachuetts Institute of Technology (MIT). RSA diciptakan sejak tahun 1977 dan dipublikasikan untuk yang pertama kalinya pada tahun 1978[10]. RSA menggunakan dua buah pasang kunci, yaitu kunci publik (public key) dan kunci rahasia (private key). Kedua kunci itu pada dasarnya digunaan untuk proses enkripsi dan dekripsi. Sebagaimana pada kriptosistem, kunci publik lainnya sebagian besar juga masih menggunakan algoritma asimetris. Untuk mendapatkan pasangan kunci (kunci publik dan kunci privat) digunakan suatu algoritma yang berfungsi untuk membangkitkan kunci (key genarator algorithm) secara random (acak). RSA dapat dikatakan sebagai kriptosistem yang reversible (dapat dibalik), jika penggunaan kuncinya saat proses enkripsi-dekripsi, proses pembuatan tanda tangan digital,dan verifikasi tanda tangan digital (signatured) bekerja secara seimbang. Adapun yang membedakan penggunaan kunci pada proses tersebut diantaranya adalah :

Proses enkripsi-dekripsi:

· Pada saat enkripsi pesan digunakan kunci publik.

· Pada saat dekripsi pesan digunakan kunci rahasia.

Proses pembuatan tanda tangan digital:

· Pada saat pembuatan tanda tangan digital digunakan kunci rahasia.

· Pada saat proses verifikasi (pembuktian) digunakan kunci publik.

Kedua proses tersebut bisa saja digunakan pada saat yang bersamaan. Artinya, pada suatu kriptosistem selain menggunakan proses enkipsi-dekripsi pesan untuk keamanan proses pertukaran data, dapat juga menyediakan fasilitas pembuatan tanda tangan digital untuk menjaga keotentikan data.

Secara umum notasi yang diguanakan dalam kriptosistem RSA ini dapat kita lihat pada tabel.2, berikut ini.

Tabel .2. Notasi yang digunakan pada kriptosistem RSA




Algoritma Pembangkit Kunci

Algoritma pembangkit kunci (key generation algorithm) berguna untuk menghasilkan pasangan kunci publik dan kunci rahasia. Kedua kunci itu bisa di dapatkan dengan memilih secara random (acak) dua buah bilangan prima besar,sebagai kunci. Setiap pelaku yang terlibat dalam kriptosistem ini harus memiliki pasangan kunci tersebut. Dimana kunci rahasia untuk dipegang dan dirahasiakan oleh masing-masing pelaku. Sementara kunci publik untuk disebarluaskan. Dengan demikian masing-masing pelaku yang terlibat di dalamnya mempunyai pasangan kunci yang beragam. Jadi pasangan kunci haruslah unik. Adapun langkah-langkah algoritma pembangkitan kunci adalah sebagai berikut:

  1. Pilih dua bilangan prima besar p dan q secara random untuk dibangkitkan, dimana p dan q harus memiliki ukuran panjang bit yang sama untuk keamanan maksimum.
  2. Hitung n = pq dan f(n) = (p - 1)(q - 1)
  3. Pilih sebuah bilangan bulat (integer) e secara random, dimana 1 < e < f(n), sehingga gcd[11](e, f(n)) = 1
  4. Hitung bilangan bulat unik d, dimana 1 < d < f(n), menggunakan algoritma extended euclidean[12]. Menghasilkan e*d ≡1 mod f(n) à de-1 mod f(n)
  5. Dihasilkan pasangan kunci (n,e) sebagai kunci publik untuk disebarluaskan dan pasangan kunci rahasia (n,d) untuk disimpan dan dirahasiakan.

Nilai p,q dan f(n) yang digunakan dalam proses dapat tetap dirahasiakan atau dimusnahkan agar tidak diketahui orang lain. Sebab orang lain dapat dengan mudah membangkitkan kunci dengan nilai-nilai tersebut dengan algoritma yang sama sehingga bisa mengetahui dengan mudah kunci rahasia yang dirahasiakan. Nilai n yang akan menjadi pasangan (key pair) pada masing-masing kunci publik dan kunci rahasia yang akan menjadi modulus pada proses enkripsi-dekripsi selanjutnya.

Algoritma Enkripsi

Algoritma enkripsi adalah suatu proses untuk mengkodean atau menyandingkan serangkaian pesan berupa teks biasa (plain text) menjadi kode-kode yang sulit untuk dipahami dengan aturan tertentu. Kondisi ini diawali dari penggunaan pasangan kunci publik (n,e) milik pihak yang akan dikirimi pesan atau calon penerima. Setelah itu pesan m dienkripsi dengan memecah-mecahkan (mem-pad) pesan m ke dalam blok–blok bilangan integer yang kurang dan nilai n (modulus). Jadi, andaikan n memiliki ukuran panjang 500 digit, maka setiap blok pada pesan m harus memiliki panjang lebih kecil dari 500 bit. Selanjutnya untuk mendapatkan pesan terenkripsi c (cipher text) dengan menggunakan operasi aritmatika modular:

(3.1)

c = me mod n

Setelah pesan m terenkripsi dan dihasilkan suatu pesan berupa kode yang tidak dapat lagi pahami, pesan berupa teks terenkripsi (cipher text) tersebut dikirimkan ke calon penerima.

Algoritma Dekripsi

(3.2)

Algoritma dekripsi adalah kebalikan dari algoritma enkripsi atau disebut juga sebagai inverse dari enkripsi. Algoritma ini bertujuan untuk megembalikan pesan yang berupa teks terenkripsi (cipher text) ke bentuk semula,yaitu menjadi teks biasa (plain text). Proses dekripsi dilakukan pada komputer penerima setelah pesan diterima dengan baik oleh penerima. Proses ini diawali dengan mengambil pasangan kunci rahasia (n,d) milik penerima. Setelah itu proses dekripsi dilakukan dengan mengambil setiap blok terenkripsi (block cipher) dari pesan terenkripsi tersebut. Proses dekripsi menggunakan operasi aritmatika:

m = cd mod n

Apabila pasangan kunci rahsia yang digunakan pada proses dekripsi sesuai dengan kunci publik yang digunakan saat enkripsi maka pesan akan terdekripsi menjadi pesan berupa teks biasa (plain text) kembali dengan baik. Hal ini akan dibuktikan oleh sistem dengan membandingkan nilai n (modulus) sebagai pasangan kunci rahasia. Nilai n pada pasangan kunci rahasia yang benar tentu akan sama dengan nilai n pada pasangan kunci publik yang digunakan pada saat enkripsi dan disebarluaskan dengan bebas.

Algoritma Tanda Tangan Digital

Algoritma tanda tangan digital berfungsi untuk membuat tanda tangan secara digital pada pesan yang ingin dikiri jika dibutuhkan tanda tangan sebagai pembuktian keotentikannya. Hal ini menunjukkan sebuah pesan yang akan dikirim adalah benar adanya dari si pengirim. Dengan bukti elektronik digital tersebut tidak memberikan ruang atau kesempatan untuk menyangkal (non-repudiation) bahwa data elektronik digital itu tidak ia kirimkan. Bahkan sebagai alat bukti yang otentik bahwa orang lain sebagai pihak ketiga tidak dapat menyangkal kebenaran pesan tersebut adalah milik mereka. Algoritma pembangkit tanda ”tangan digital” semacam ini dapat dilakukan jika sudah diketahui pasangan kunci rahasia (n,d) dan pasangan kunci publik (n,e) yang akan digunakan pada proses ini. Jadi realitasnya kedua pasang kunci yang akan digunakan proses sudah dibangkitkan terlebih dahulu. Pasangan kunci rahasia dipegang dan dirahasiakan oleh pemilik yang akan membubuhi tanda tangan dan pasangan kunci publik disebarluaskan.

Proses yang digunakan algoritma pembangkit tanda tangan digital sama dengan proses yang digunakan pada algoritma enkripsi yaitu menggunakan operasi aritmatika modular. Namun, yang membedakan ialah pada proses ini digunakan pasangan kunci rahasia, berbeda dengan yang digunakan pada proses enkripsi yang menggunakan pasangan kunci publik untuk mengenkripsi pesan. Alasannya ialah jika pesan telah ditandatangani secara digital bisa terbukti valid pada proses verifikasi dengan menggunakan kunci publik yang telah disebarluaskan, ini berarti bahwa pesan tersebut adalah benar-benar dari pengirim.

(3.3)



Seperti halnya pada proses enkripsi, pada proses ini untuk membuat tanda tanga digital (signature) pada pesan m, pesan akan dienkripsi/dibangkitkan menggunakan operasi aritmatika:

s = md mod n

Tampak pada operasi aritmatika diatas kunci yang digunakan untuk pembuatan tanda tangan digital s adalah kunci rahasia d. Adapun pada proses pengiriman, pesan berupa teks biasa (plain text) akan disertakan bersama dengan pesan yang telah ditandatangani (signed text). Adapun proses pembuatan tanda tangan digital dilakukan sebelum proses enkripsi dilakukan

Algoritma Verifikasi Tanda Tangan Digital

Fungsi algoritma verifikasi ialah untuk menguji keabsahan atau keotentikan suatu tanda tangan digital dengan mengidentifikasi keaslian suatu pesan. Sebagaimana halnya algoritma pembangkit tanda tangan digital yang mirip dengan algoritma enkripsi, algoritma verifikasi juga serupa dengan algoritma dekripsi. Meski demikian pasangan kunci yang digunakan adalah pasangan kunci publik (n,e) milik pengirim yang disebarluaskan dan telah diketahui oleh penerima.



Untuk memverifikasi sebuah tanda tangan digital, digunakan operasi aritmatika sebagai berikut:

(3.4)

m = se mod n

Dimana dalam konteks ini komputer penerima sistem akan membandingkan pesan berupa teks asli (plain text) yang dikirim bersama pesan berupa teks yang sudah ditandatangani (signed text) dengan hasil dekripsi pesan berupa signed text tersebut. Jika kedua pesan yang dibandingkan itu sama, berarti pesan tersebut otentik, benar dan pesan tersebut di mungkinkan berasal dari si-pengirim pesan data dimaksud.

Permasalahan Matematis Pada Kriptosistem RSA

Satu hal yang dianggap paling esensial pada kriptosistem, adanya jenis permasalahan matematis yang sulit (intracible). Maksudnya suatu permasalahan matematis yang sulit dipecahkan karena membutuhkan waktu proses cukup lama untuk menghitung solusi permasalahannya pada kriptosistem tersebut. Pada proses enkripsi, dekripsi dan tanda tangan digital, semuanya menggunakan proses matematis yang relatif rumit. Dari kerumitan proses tersebut akan menghasilkan penyelesaian masalah menjadi sangat sulit. Masing-masing metoda kriptografi memiliki persamaan matematis tertentu sesuai dengan metoda yang digunakan. Kondisi tersebut mengakibatkan kekuatan kriptografi biasanya sangat tergantung pada kerumitan persamaan matematis yang digunakan. Pada bagian ini dijelaskan beberapa teorema matematis yang digunakan pada algoritma RSA dan yang melatarbelakangi algoritma RSA tersebut.

Fungsi Satu Arah

Algoritma kriptografi kunci publik bekerja didasari oleh fungsi matematis yang lazim disebut fungsi satu arah (one way function). Fungsi ini memiliki makna bahwa disatu sisi fungsi tersebut mudah dihitung, tetapi pada sisi lain fungsi tersebut menjadi sulit dihitung tanpa informasi yang mendetail. Untuk selanjutnya dapat di ilustrasikan pada contoh berikut ini:

Misalkan, x adalah kunci publik (public key) dan f –1(x) adalah kunci rahasia (private key), untuk x = 27,7 dan f(x) = x3 , dan diketahui bahwa f(x) = y

Maka f(x) = x3 à y = x3

27,73 = 20346,41 à mudah dihitung pada satu arah.

Namun sulit dihitung untuk arah kebalikannya (inverse) , f –1(x)

f –1(x) = (20346,41) 1/3 à x = ???? à sulit dihitung pada arah kebalikannya.

Sebenarnya f -1(x) dapat diketahui hasilnya, tetapi amat sangat sulit proses penghitungannya jika dibandingkan proses penghitungan fungsi x sebagai fungsi pada satu arah. Sangat sulit pada permasalahan ini dapat diartikan juga sebagai fungsi pada satu arah tidak sama dengan fungsi pada arah kebalikannya. Fungsi ini dalam kaidah matematis disebut juga sebagai fungsi asimetris (assymetric).

Faktor Persekutuan Terbesar (FPB)

Faktor persekutuan terbesar (FPB) atau dikenal juga dengan istilah faktor pembagian bersama terbesar (FPB) dalam bahasa Inggris disebut Greatest Common Divisor (GCD). Pada dua buah bilangan a dan b GCD merupakan irisan dari himpunan faktor bilangan prima dari kedua bilangan tersebut atau suatu bilangan terbesar yang dapat membagi kedua bilangan tersebut.

Contoh:

Ø gcd (8, 9) = 1 à gcd((1 ´ 8), (1 ´ 9)) = 1

Ø gcd (8, 10) = 2 à gcd((2 ´ 4), (2 ´ 5)) = 2

Bilangan Prima Dan Relatif Prima (coprime)

Bilangan prima (P) adalah bilangan bulat (integer), positif yang bukan bilangan 1 (satu), serta bukan bilangan majemuk (composite)[13]. Atau dengan perkataan lain dapat dinyatakan bahwa bilangan prima merupakan suatu bilangan asli kecuali 1, yang hanya habis dibagi 1 dan bilangan itu sendiri. Contoh bilangan prima: 2,3,5,7,11,13,…,223,…,337,..7919,…Jika dua pasang bilangan a dan b tidak memiliki faktor pembagi bersama terbesar (gcd) selain 1, maka kedua pasangan bilangan tersebut dinyatakan prima relatif (relatively prime) atau disebut juga sebagai koprima (coprime). Seperti contoh; 8 dan 9 mempunyai faktor pembagi bersama terbesar atau gcd(8,9) adalah 1, artinya bahwa kedua bilangan tersebut relatif prima atau koprima dan bilangan 8 adalah relatif prima terhadap 9. Sedangkan, untuk pasangan bilangan 8 dan 10 bukan relatif prima atau koprima, karena faktor persekutuan terbesarnya atau gcd(8,10) bukan 1 tetapi 2. Dalam kriptografi, khususnya kriptografi kunci publik, sering digunakan bilangan prima besar untuk membangkitkan pasangan kunci.

Aritmatika Modular & Inverse Modulo

(3.5)

Untuk mengenkripsi dan mendekripsi pesan serta untuk membuat sebuah tanda tangan digital dan proses verifikasinya, maka RSA menggunakan aritmatika modular (modular arithmetic)[14]. Aritmatika modular serupa dengan aritmatika konvensional. Tetapi perbedaanya hanyalah pada penggunaan bilangan bulat positif untuk mencari sisa hasil bagi dari proses pembagian pada dua buah bilangan. Jika x adalah bilangan bulat positif dan y antara 0 dan n (modulus) atau yang kurang dari nilai bilangan terpilih n. Maka dapat dikatakan bahwa y merupakan sisa hasil bagi dari x bila dibagi dengan n. Adapun x kongruen (‘≡’) terhadap y modulo n. Notasi yang digunakan pada aritmatika modulo ialah:



x ≡ y (mod n)

Pada dasarnya, x ≡ y (mod n) jika x = y + k*n untuk k dan n bilangan integer (bulat). Persamaan tersebut dapat juga diartikan bilangan bulat n membagi bilangan bulat x – y.

Persamaan berikut ini merupakan prinsip dasar dari aritmatika modular:

(3.6)

(3.7)

y + k*n = y mod n

x = y + k*n

Untuk setiap x dan n bilangan bulat positif dan y antara 0 sampai dengan n, maka y disebut sebagai residu dari a modulo n dan himpunan lengkap sisa hasil baginya ialah bilangan antara 0 sampai dengan n-1. Artinya, untuk setiap bilangan bulat x, sisa hasil bagi dari modulo n adalah beberapa jumlah bilangan dari 0 sampai n-1.

Dalam algoritma kriptosistem RSA, kunci rahasia d didapatkan menggunakan teorema Euclidean yang diperluas, dengan cara mencari sisa hasil bagi dari invers kunci publik e dengan fungsi euler totien f(n) , sesuai dengan persamaan:

(3.8a)

(3.8b)

e* d ≡1 (mod f(n))

de-1 (mod f(n))

(3.9)

Inverse dari e adalah 1/e karena e * 1/e = 1. Dalam aritmatika modular untuk mencari invers dari suatu sisa hasil bagi, didapatkan dengan cara:

x * a ≡ 1 (mod n)

(3.10)

Dimana a adalah invers dari x mod n. Persamaan ini ekivalen dengan mencari x dan k

x * a = n * k + 1

Dimana x dan k adalah bilangan integer. Permasalahan umum dalam mencari nilai x dapat dinyatakan dengan:

(3.11a)

1 = ( x * a ) mod n

(3.11b)

atau dengan cara:

x-1 ≡ a (mod n)

Secara umum, x-1 ≡ a (mod n) memiliki solusi unik jika x dan n adalah prima relatif ( gcd(x,n) = 1). Jika gcd(x,n) ≠ 1 maka x-1 ≡ a (mod n) tidak memiliki solusi. Jika n adalah bilangan prima, maka setiap bilangan antara 1 sampai n-1 adalah prima relatif dan n memiliki satu bilangan invers modulo dalam jangkauan tersebut.

Teorema Fermat Kecil

Teorema Fermat Kecil[15] (Fermat’s Little Theorem) adalah suatu identitas yang merelasikan ekponen kepada modulus[16]. Teorema ini menyatakan bahwa; “jika n ialah bilangan prima dan x bukanlah hasil perkalian dari n”, maka dapat disimpulkan bahwa:

(3.12)

xn-1 = 1 (mod n)

Untuk pembuktiannya, pada suatu himpunan bilangan Z, yang terdiri dari dari bilangan; 1,2,… n-1, dan n adalah bilangan prima; Z = {a | 1 ≤ a ≤ (n-1)}. Bilangan-bilangan tersebut relatif prima (koprima) terhadap n, Z meliputi semua bilangan-bilangan di dalam mod n adalah relatif prima terhadap n.

Sekarang perhatikan suatu himpunan U yang diperoleh dari mengalikan masing-masing elemen Z dengan x (mod n), antara x dengan masing-masing elemen Z ialah relatif prima terhadap n. Sehingga masing-masing anggota himpunan U relatif prima terhadap n.

(3.13)

U = x* Zi

Maka didapat:

(3.14)

xZi = xZj (mod n) dengan i j

Zi = Qj (mod n) karena x 0

Masing-masing elemen U berbeda satu sama lainnya yang telah dibuktikan dengan mempertentangkan (kontradiksi) antara dua elemen x dan masing-masing anggota himpunan Z, yang dimulai dengan mengumpamakan bahwa dua elemen tidak berbeda. Akan tetapi masing-masing anggota himpunan Z berbeda satu sama lainnya. Oleh karena itu hal ini adalah suatu pertentangan (contradiction).

Masing-masing elemen U berbeda. U menggunakan semua bilangan dalam mod n yang relatif prima terhadap n, seperti halnya Z. Maka U adalah suatu permutasi dari Z.

(3.15)

(3.16)

U1*U2*…. Up-1 = Z1*Z2 *… Zn-1 (mod n)

xZ1*xZ2 ... xZn-1 = Z1Z2 *… Zn-1 (mod n)

dan jika kita hapus; Q1*Q2 *Qp-1 ,Maka akan didapat persamaan:

(3.17)

xn-1 = 1 (mod n)

Teorema ini kemudian dikembangkan lagi oleh seorang matematikawan dari Swiss yang bernama Leonhard Euler dengan memberikan versi yang lebih umum dari teorema yang dikemukakan oleh Fermat tersebut, yang kemudian dikenal sebagai bentuk umum Euler atas teorema Fermat (Euler’s generalization of Fermat’s theorem) pada tahun 1760.

Fungsi Totient Euler

Metoda lain untuk menghitung menghitung inverse modulo[17], yaitu dengan mengurangi himpunan sisa hasil bagi, tetapi metoda ini tidak selalu memungkinkan untuk digunakan. Himpunan sisa hasil bagi mod n yang dikurangi ialah himpunan lengkap sisa hasil bagi yang relatif prima terhadap n. Jika n adalah bilangan prima, maka himpunan sisa hasil bagi modulo n yang dikurangi adalah himpunan dari seluruh bilangan dari 1 hingga n – 1. Bilangan 0 bukanlah bagian dari himpunan sisa hasil bagi yang dikurangi untuk semua n yang tidak sama dengan 1.

Fungsi Totien Euler[18] (the Euler Totient Function) yang disebut juga sebagai Euler phi function yang dituliskan dengan notasi f(n), adalah bilangan dari elemen-elemen pada himpunan sisa hasil bagi modulo n. Dalam lain perkataan f(n) adalah bilangan bulat positif kurang dari n yang relatif prima terhadap n untuk setiap n yang lebih besar dari satu, artinya gcd (f(n), n) = 1. jika n ialah bilangan prima, maka f(n) = n – 1, dan jika n = p*q, dimana p dan q bilangan prima, maka f(n) = (p – 1)(q – 1). Perhitungan-perhitungan seperti ini tampak pada beberapa algoritma kunci publik (assimetris). Untuk n bilangan prima yang lebih besar dari 2 ( n ≥ 2), dan gcd(a,n) = 1, maka:



(3.18)


a f (n) = 1 (mod n)

(3.19)

Teorema tersebut adalah versi umum dari teorema Fermat yang dikemukakan oleh Leonhard Euler yang dikenal sebagai Euler’s generalization of Fermat’s Theorem. Sekarang, dengan adanya teorema tersebut, untuk menghitung modulo dari inverse a f (n) dengan modulus n, dapat mudah dihitung dengan cara:

x = a mod n

(3.20)

Adapun dua metode untuk menghitung inverse dapat dilanjutkan untuk memecahkan nilai x pada permasalahan umum :

(a * x) mod n = b

·

(3.21)

Menggunakan bentuk umum Euler (Euler’s generalization), memecahkan

x = ( b * a f (n) - 1) mod n

·

(3.22)

Menggunakan Algoritma Euclidean, untuk memecahkan

x = ( b * ( a - 1 mod n )) mod n

Secara umum untuk penghitungan inverse, algoritma Euclid lebih cepat dari bentuk umum Euler. Hal ini secara khusus untuk bilangan dengan jangkauan 500-bit.

Teorema Sisa Cina

Teorema Sisa Cina atau Chinese Remainder Theorem (CRT)[19] adalah suatu teorema untuk menyelesaikan permasalahan pada seluruh sistem persamaan jika diketahui faktorisasi prima dari n. Versi dasar dari teorema sisa ini telah ditemukan oleh matematikawan cina pada abad pertama, yang bernama Sun Tse.

(3.23)

Secara umum, jika faktorisasi prima dari n adalah p1*p2*... pi, maka sistem persamaannya ialah:

(x mod pi) = ai, dimana i = 1,2,.., t

Sistem persamaan tersebut mempunyai penyelesaian yang unik, yaitu x dimana x lebih kecil daripada n. Dalam persamaan ini beberapa bilangan prima dapat tampil lebih dari sekali. Sebagai contoh, p1 mungkin sama dengan p2. Dalam lain perkataan, sebuah bilangan yang lebih kecil dari perkalian beberapa bilangan prima, diidentifikasikan secara unik dengan sisa hasil baginya mod bilangan-bilangan prima tersebut.

Untuk a <> dan b <>, dimana p dan q adalah bilangan prima, terdapat sebuah bilangan x yang unik yang kurang dari pq, dan gcd(p,q) = 1, maka;



(3.24)


x ≡ a mod p, dan x ≡ b mod q

(3.25a)

Dalam Chinese Reminder Theorem, disediakan suatu cara untuk mengkombinasikan dua persamaan modular yang menggunakan modulus yang berbeda. Misalkan, untuk dua bilangan p dan q, yang relatif prima, jika;

(3.25b)

a = b mod p,

a = b mod q

Dengan p dan q koprima atau relatif prima (gcd (p,q) = 1), maka;

(3.25c)

a = b mod p*q

Hal ini dapat dibuktikan jika a = b mod p, kemudian p dibagi (a - b). Dengan cara yang sama, q membagi (a - b). Tetapi p dan q relatif prima, maka untuk pq membagi (a - b), konsekuensinya, a = b mod p*q. Dalam Chinese Reminder Theorem, disediakan suatu cara untuk mengkombinasikan dua persamaan modular yang menggunakan modulus yang berbeda.

Pembuktian:

a = b mod p à a =b+ k*p

p membagi (a – b),

dan dengan cara yang sama,

q membagi (a – b)

a – b = 1(p*q) à a = b mod p*q

Teorema Matematis di Algoritma RSA

Berdasarkan beberapa teorema permasalahan matematis yang telah dibahas diatas, berikut ini akan dibuktikan penggunanaan teorema matematis yang telah dijabarkan diatas pada algoritma RSA. Pada proses pembangkitan kunci, diambil dua bilangan prima berbeda yang bernilai besar; p dan q. Hitung nilai n = p*q untuk dijadikan sebuah modulus pada operasi aritmatika modular pada proses enkripsi-dekripsi dan pembangkit tanda tangan digital beserta verifikasinya. Ambil bilangan integer (bulat) e secara random dimana e:1 < e < Ø, sehingga e relatif prima terhadap fungsi Euler’s Totient f(n) = (p – 1)(q – 1), dalam lain perkataan gcd(e, Ø) = 1. Kemudian dengan nilai e dihasilkan sebuah bilangan bulat d dengan menggunakan algoritma Euclidean yang diperluas (Extended Euclidean’s Algorithm); e*d ≡1 mod Ø à de-1 mod Ø. Adapun e dan d adalah kunci publik dan kunci rahasia dimana masing-masing kunci tersebut akan dipasangkan dengan n (n,e dan n,d). Kunci publik disebarkan dan kunci privat/rahasia disimpan. Jadi (d, e, n) adalah kunci RSA yang valid, dengan n = p*q.

Setelah itu untuk proses enkripsi, ambil pesan m[20] yang akan dienkripsi, dimana 0 ≤ mn. Enkripsi pesan dengan cara c = me mod n, adapun kunci yang digunakan adalah pasangan kunci publik (n,e) milik penerima yang akan kita kirimkan pesan, lalu pesan dikimkan dan setelah diterima oleh penerima pesan didekripsi menggunakan kunci privat milik penerima dengan cara m = cd mod n. Jika diinginkan suatu tanda tangan digital untuk keotentikan pesan, maka tanda tangan digital dapat dibangkitkan menggunakan cara yang sama dengan proses enkripsi, yaitu menggunakan aritmatika modular s = md mod n, namun kunci yang digunakan adalah kunci rahasia/privat milik penandatangan (signer) adapun untuk verifikasi dilakukan dengan cara yang sama pula, yaitu m = se mod n, dan kunci yang digunakan adalah kunci publik.

Adapun penggunaan aritmatika modular dalam kriptosistem RSA dapat dibuktikan dengan;

(3.26a)

d*e = 1(mod (p – 1)(q – 1)),

(3.26b)

d*e = 1 + k(p – 1)(q – 1)

dimana k ialah bilangan bulat.

(3.27)

Oleh karena itu, untuk membangkitkan bilangan bulat d dan e, dibutukan suatu bilangan bulat d, yang akan digunakan untuk dapat menemukan bilangan bulat e. Maka, dengan menggunakan persamaan (3.26a), dapat ditemukan nilai yang tepat untuk bilangan bulat d , diperoleh dengan cara:

d = e– 1 mod (p – 1)(q – 1)

Setelah nilai d dan e didapat, maka kedua bilangan tersebut dapat digunakan sebagai kunci pada proses enkripsi-dekripsi:



(3.28)


c = mde = m1 + k ( p – 1)( q – 1 ) = m*( m (( p – 1)( q – 1 )) k)

Apabila m relatif prima terhadap p, maka;



(3.29a)


c = mde = m*( m( p – 1 )) k ( q – 1 ) = m (1) k ( q – 1 ) = m (mod p)

Dengan Teorema Fermat tersebut didapatkan m (p – 1) = m mod p yang diikuti dengan perkalian dua sisi dengan m. Jika m tidak relatif prima terhadap p, akan tetapi relatif prima terhadap q maka dengan cara yang sama;



(3.29b)


c = mde = m*( m( k – 1 )) k ( p – 1 ) = m (1) k ( p – 1 ) = m (mod q)

(3.30a)

Jika digunakan Teorema Sisa Cina atau Chinese Remainder Theorem (CRT) untuk mengkombinasikan persamaan (3.29a) dan (3.29b), maka akan didapat hasil sebagai berikut:

c = m mod p*q

(3.30b)

karena p*q = n, maka:

c = m mod n

PENUTUP
Kesimpulan

Dari hasil penyajian diskripsi, pemaparan data,implementasi perumusan dan pembahasan dapat di simpulkan sebagai berikut :

· Tanda tangan digital merupakan salah satu di antara aplikasi kriptografi algoritma kunci publik yang dalam aplikasinya dibutuhkan dua buah tipe kunci, yaitu kunci rahasia dan kunci publik.

· Secara teoritis tanda tangan digital merupakan proses kebalikan (inverse) dari enkripsi dan dekripsi. Dalam proses tersebut, kunci rahasia digunakan untuk membangkitkan tanda tangan digital dan kunci publik digunakan untuk memverifikasi tanda tangan digital.yang bersangkutan.

· Proses otentifikasi pesan menggunakan tanda tangan digital dengan algoritma RSA dapat memenuhi isu autentisitas (authenticity), kerahasian (privacy), tidak dapat disangkal (non repudiation) dan integritas (integrity).Penyampaian pesan dengan teknik kriptografi enkripsi-dekripsi dan proses tanda tangan digital untuk menjamin keamanannya.

· RSA merupakan salah satu kriptosistem kunci publik yang reversible (dapat dibalik).

· Dalam proses pembangkit kunci (key generator), untuk mencari faktor persekutuan terbesar (fpb) atau greatest common divisor (gcd) dari dua buah bilangan digunakan algoritma euclidean dan untuk mencari inverse modulo dapat digunakan algoritma extended euclidean.

Saran

Adapun saran–saran yang dapat diberikan antara lain, sebagai berikut :

· Proses otentifikasi menggunakan tanda tangan digital dapat diterapkan dalam keamanan (security) proses transaksi pada perdagangan elektronik (e-commerce).

· Dalam sebuah kriptosistem yang jumlah penggunanya cukup banyak dan tidak semua pengguna mengenal pengguna yang lainnya, perlu dibuatkan sebuah sertifikat digital yang berisi informasi mengenai kunci publik seorang pengguna dan identitas pemilik. Hal ini disebabkan oleh tidak semua pengguna mengenali pengguna yang lainnya dan sertifikat digital dibutuhkan untuk membuktikan kepemilikan kunci publik bagi seorang pengguna dan menyakinkan pengguna yang lain yang ingin mengirimkan pesan kepadanya bahwa orang tersebut memiliki kunci publik dan kunci publik yang disebarkannya benar-benar sah.

· Untuk pembuatan sertifikat digital, perlu adanya pihak ketiga yang juga terlibat dalam kriptosistem dan dapat dipercaya berfungsi sebagai penjamin kepemilikan kunci publik. Pihak ini disebut sebagai Certification Authority (CA) yang mengeluarkan sertifikat digital kunci publik tiap pengguna. CA menjamin bahwa kunci publik milik seorang pengguna yang tertera dalam sertifikat digital adalah benar milik pengguna tersebut. Adapun tanda tangan digital milik CA tercantum dalam tiap-tiap sertifikat digital milik pengguna yang dijaminnya.

· Pada proses pembuatan tanda tangan digital, untuk membuktikan integritas (keutuhan) sebuah pesan, diperlukan algoritma fungsi hash untuk mendapatkan intisari pesan (message digest) yang berifat unik dan perubahan input string dapat menyebabkan nilai hash berubah drastis, oleh karena dokumen hasil pemetaan fungsi hash bersifat tidak dapat dipetakan kembali menjadi dokumen aslinya dan tidak ada dua atau lebih dokumen asli dipetakan menjadi dokumen hasil pemetaan yang sama. Hal ini menyebabkan integritas suatu pesan dapat terjaga dengan baik. Fungsi hash juga dapat digunakan untuk mengompres (memperkecil) ukuran pesan.

Daftar Pustaka

Andi, et al. (2002) Tim Penelitian dan Pengembangan ANDI Yogyakarta dan Wahana Komputer Semarang, Memahami Model Enkripsi dan Security Data, Penerbit ANDI Yogyakarta dan Penerbit WAHANA Komputer Semarang, 2002.

Halvorson, Michael. (2002) Halvorson, Michael, Step By Step : Microsoft Visual Basic 6.0, Micrososft Press, Jakarta : PT Elex Media Komputindo, 2002.

Kurniawan, Yusuf. (2004) Kurniawan, Yusuf, Kriptografi : keamanan internet dan jaringan komputer, Buku Satu, Bandung : Penerbit Informatika, 2004.

Menezes, A, et al. (1997) A. Menezes, P. Van Oorschot, S. Vanstone, Handbook of Applied Cryptography. CRC Press, 1997.

Munir, Rinaldi. (2000) Munir, Rinaldi, Algoritma dan Pemrograman, Bandung : Penerbit Informatika, 2000.

W. Purbo, Onno. (2001) W. Purbo, Onno, Mengenal e-commerce. Elex Media Komputindo. Penerbit Kelompok Gramedia, Jakarta. 2001.

PGP User Guide. (2001) PGP Freeware for Windows User’s Guide, version 7.0, Network Associated, Inc., 2001.

RSA Laboratories. (2000) RSA Laboratories, PKCS #1 : RSA Cryptography Standard, version 2.1, Juni 2000.

Schneier, Bruce. (1996) Schneier, Bruce, Applied Cryptography, 2nd ed, New York : John Willey & Sons, Inc, 1996.

Smith, Jeffrey D. (1989) Smith, Jeffrey D., Design and Analysis of Algorithm, Boston : PWS-KENT Publishing Company, 1989.



[1] Ahmad Budi Setiawan, Kandidat Peneliti di Puslitbang Aptel & SKDI Badan Penelitian dan

Pengembangan Sumberdaya Manusia Departemen Komunikasi dan Informatika, Jakarta.

[2] Tim Penelitian dan Pengembangan ANDI Yogyakarta dan Wahana Komputer Semarang,

Memahami Model Enkripsi dan Security Data, Penerbit ANDI Yogyakarta dan Penerbit

WAHANA Komputer Semarang, 2002. Hal 121 - 126

[3] Hasil penelitian Group Riset Digital Security dan Electronic yang dipresentasikan di hadapan

Masyarakat Telekomunikasi Indonesia pada bulan juni 1999 di Pusat Ilmu Komputer –

Universitas Indonesia, Depok - Jawa Barat

[4] Merupakan standard de facto kriptografi kunci publik di dunia.

[5] Dikenal juga sebagai DSS (Digital Signature Standard)

[6] Kurniawan, Yusuf, Kriptografi : keamanan internet dan jaringan komputer, Buku Satu, Bandung : Penerbit Informatika, 2004. Hal. 57

[7] Hanya setengah dari seluruh kemungkinan kunci yang ada dan dicoba dan dianggap akan mendapatkan satu buah kunci.

[8] Tim Penelitian dan Pengembangan ANDI Yogyakarta dan Wahana Komputer Semarang, Memahami Model Enkripsi dan Security Data, Penerbit ANDI Yogyakarta dan Penerbit WAHANA Komputer Semarang, 2002. Hal 121 - 126

[9] suatu sistem kriptografi yang terdiri dari sebuah algoritma, seluruh kemungkinan plaintext,

ciphertext, dan kunci-kunci yang digunakan. Secara garis besar kriptosistem terdiri dari: symetric

cryptosystem dan assymetric cryptosystem.

[10] RSA Laboratories, PKCS #1 : RSA Cryptography Standard, version 2.1, Juni 2000

[11] Gcd adalah akronim dari greatest common divisor dalam istilah Indonesia dikenal sebagai

Faktor Persekutuan Terbesar (FPB).

[12] Algoitma untuk menghitung gcd dari dua bilangan bulat (integer) dengan input dua bilangan

bulat non-negatif misal a dan b dengan ab dan menghasilkan d = gcd(a,b) algoritma ini juga

dapat dilanjutkan (extended) sehingga juga menghasilkan bilangan bulat x dan y untuk

memenuhi ax + by = d.

[13] Bilangan majemuk didefinisikan sebagai bilangan bulat positif yang dapat dinyatakan sebagai

hasil kali dua atau lebih bilangan bulat positif ≠ 1. Contoh: 6 = 2*3; 8 = 2*2*2; 15 = 5*3.

[14] Schneier, Bruce, Applied Cryptography, 2nd ed, New York : John Willey & Sons, Inc, 1996.

[15] Teorema Fermat Kecil (Fermat’s Little Theorem) ditemukan oleh seorang matematikawan asal

Prancis yang bernama Pierre de Fermat yang hidup pada tahun 1601 hingga 1665.

[16] Schneier, Bruce, Applied Cryptography, 2nd ed, New York : John Willey & Sons, Inc, 1996.

Hal. 248

[17] Schneier, Bruce, Applied Cryptography, 2nd ed, New York : John Willey & Sons, Inc, 1996.

Hal. 246

[18] Fungsi Totien Euler diperkenalkan oleh Euler pada tahun 1736 untuk mengajukan pembuktian

terhadap teorema Fermat. Versi yang lebih umum dari teorema Fermat dikeluarkan oleh Euler

pada tahun 1960.

[19] Schneier, Bruce, Applied Cryptography, 2nd ed, New York : John Willey & Sons, Inc, 1996. Hal. 249

[20] Jika pesan lebih panjang, pesan tersebut dipisahkan/dipecahkan kedalam rangkaian yang lebih

kecil. Sehingga pesan tersebut terbagi-bagi menjadi beberapa bagian yang lebih kecil dari pada

n, lalu pesan yang terbagi-bagi tersebut dienkripsi secara terpisah setelah semuanya terenkripsi

barulah pesan tersebut digabungkan kembali. Adapun proses pemisahan ini disebut padding