Algoritma Enkripsi Rivest Code 5

download Algoritma Enkripsi Rivest Code 5

of 14

description

makalah pengertian Algoritma Enkripsi Rivest Code 5

Transcript of Algoritma Enkripsi Rivest Code 5

Algoritma Enkripsi Rivest Code 5(RC-5)Posted on Oktober 3, 2008 by Sandromedo Algoritma Enkripsi Rivest Code 5 (RC-5)Abstrak :RC-5 (Rivest Code-5) merupakan enkripsi stream simetrik yang dibuat oleh RSA Data Security, Inc (RSADSI). Metode enkripsi ini pada awalnya dirancang untuk enkripsi yang menggunakan mikroprosesor (perangkat keras), tetapi pada tahap pengembangannya algoritma ini cocok diterapkan dengan menggunakan perangkat keras maupun perangkat lunak. Secara ringkas algoritma ini bekerja dengan penambahan modulus 2w,melakukan EX-OR dan melakukan rotasi x kekiri dengan jumlah y bit. RC-5 memiliki kelebihan dalam menentukan jumlah kata kunci yang digunakan, hal ini berarti akan memilih tingkat keamanan yang digunakan sesuai dengan aplikasinya. Tulisan ini membahas tentang algoritma enkripsi RC-5 yang dikemukakan oleh Ronald L.Rivest dari MIT Laboratory for Computer Science. Metode penulisan dilakukan dengan studi literartur terhadap buku dan bahasan-bahasan di internet yang berhubungan dengan algoritma enkripsi terutama algoritma RC-5.1. PendahuluanSaat ini sistem komputer yang terpasang makin mudah diakses. Sistem time sharing dan akses jarak jauh menyebabkan masalah keamanan menjadi salah satu kelemahan komuniksi data seperti internet. Disamping itu kecendrungan lain saat ini adalah memberikan tanggung-jawab sepenuhnya ke komputer untuk mengelola aktifitas pridadi dan bisnis seperti sistem transfer dana elekronis yang melewatkan uang sebagai aliran bit dan lain sebagainya. Untuk itu diperlukan sistem computer yang memiliki tingkat keamanan yang dapat terjamin, walaupun pada akhirnya akan terjadi trade off antara tingkat keamanan dan kemudahan akses.Keamanan komputer adalah menjamin data atau informasi tidak dibaca, tidak dimodifikasi oleh orang lain yang tidak diberi otorisasi. Keamanan sistem dibagi menjadi tiga bagian [4] :1.Keamanan eksternalKeamanan eksternal berkaitan dengan fasilitas komputer dari penyusup dan bencana seperti kebakaran atau bencana alam.2.Keamanan interface pamakaiKeamanan interface pemakai yang berkaitan dengan identifikasi pemakai sebelum pemakai diizinkan mengakses data atau program.3.Keamanan internalKeamanan internal berkaitan dengan beragam kendali yang dibangun pada perangkat keras dan perangkat lunak yang menjamin operasi yang handal dan tidak terganngu untuk menjaga integritas data.Sementara itu kebutuhan keamanan sistem komputer dapat dikategorikan menjadi aspek-aspek sebagai berikut [3] :1. Privacy / ConfidentialityInti utama aspek privacy atau confidentiality adalah usaha untuk menjaga informasi dari orang yang tidak berhak mengakses. Privacy lebih kearah data-data yang sifatnya privat sedangkan confidentiality biasanya berhubungan dengan data yang diberikan ke pihak lain untuk keperluantertentu (misalnya sebagai bagian dari pendaftaran sebuah servis) dan hanya diperbolehkan untuk keperluan tertentu tersebut.2. IntegrityAspek ini menekankan bahwa informasi tidak boleh diubah tanpa seijin pemilik informasi. Adanya virus, trojan horse, atau pemakai lain yang mengubah informasi tanpa ijin merupakan contoh masalah yang harus dihadapi. Sebuah e-mail dapat saja ditangkap (intercept) di tengah jalan, diubah isinya (altered, tampered, modified), kemudian diteruskan ke alamat yang dituju. Dengan kata lain, integritas dari informasi sudah tidak terjaga. Penggunaan encryption dan digital signature, misalnya, dapat mengatasi masalah ini.3.AuthenticationAspek ini berhubungan dengan metoda untuk menyatakan bahwa informasi betul-betul asli, orang yang mengakses atau memberikan informasi adalah betul-betul orang yang dimaksud, atau server yang kita hubungi adalah betul-betul server yang asli.4. AvailabilityAspek availability atau ketersediaan berhubungan dengan ketersediaan informasi ketika dibutuhkan. Sistem informasi yang diserang atau dijebol dapat menghambat atau meniadakan akses ke informasi.Enkripsi merupakan salah satu cara yang dilakukan untuk mengamankan sistem atau informasi dari hal yang akan menyebabkan aspek-aspek diatas tidak terpenuhi, seperti untuk menjaga integritas data atau informasi. Ada beberapa algoritma enkripsi yang sudah terbuka untuk dipelajari, seperti Data Encryption Standard (DES), RC-4, Two Fish, RC-5 dan lain-lain. Tulisan ini membahas algoritma RC-5 yang dikemukakan oleh Ronald L.Rivest dari MIT Laboratory for Computer Science. Metode penulisan dilakukan dengan studi literatur terhadap buku dan bahasan-bahasan di internet yang berhubungan dengan algoritma enkripsi terutama algoritma RC-5.2. Tinjauan PustakaBagian ini membahas tinjaun pustaka yang erkaiatan dengan masalah enkripsi. Diharapakan dengan adanya tinjauan pustaka ini akan memudahkan kita dalam memahami masalha enkripsi terutama enkripsi RC-5.Salah satu mekanisme untuk meningkatkan keamanan adalah dengan menggunakan teknologi enkripsi. Data-data yang kirimkan diubah sedemikian rupa sehingga tidak mudah disadap. Jadi enkripsi adalah proses yang dilakukan untuk mengamankan sebuah pesan (yang disebut plaintext) menjadi pesan yang tersembunyi (disebut ciphertext) adalah enkripsi (encryption). Ciphertext adalah pesan yang sudah tidak dapat dibaca dengan mudah. Menurut ISO 7498-2, terminologi yang lebih tepat digunakan adalah encipher. Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut dekripsi (decryption). Menurut ISO 7498-2, terminologi yang lebih tepat untuk proses ini adalah decipher [3].Berdasarkan cara memproses teks (plaintext), cipher dapat dikategorikan menjadi dua jenis: block cipher and stream cipher[3]. Block cipher bekerja dengan memproses data secara blok, dimana beberapa karakter / data digabungkan menjadi satu blok. Setiap proses satu blok menghasilkan keluaran satu blok juga. Sementara itu stream cipher bekerja memproses masukan (karakter atau data) secara terus menerus dan menghasilkan data pada saat yang bersamaan.Banyak servis di Internet yang masih menggunakan plain text untuk authentication, seperti penggunaan pasangan userid dan password. Informasi ini dapat dilihat dengan mudah oleh program penyadap atau pengendus (sniffer) [3].Contoh servis yang menggunakan plaintext antara lain [3]: akses jarak jauh dengan menggunakan telnet dan rlogin transfer file dengan menggunakan FTP akses email melalui POP3 dan IMAP4 pengiriman email melalui SMTP akses web melalui HTTPKelompok enkripsiKelompok enkripsi itu sendiri dibagi menjadi 3 kelompok yaitu :1.Symmetric encryptionMenggunakan kunci (key) yang sama untuk proses enkripsi dan dekripsi, masalah yang muncul adalah kesulitan dalam manajemen key. Misalnya dilakukan pengirim data yang telah di enkripsi ke seorang penerima melalui email, orang yang diberi data ini hanya dapat merubah data kedalam bentuk aslinya dengan menggunakan key yang sama. Jadi sipengirim harus memberitahukan ke sipenerima data key key yang digunakan, disini masalahnya bagaimana mengirim key ke penerima tersebut. Bentuk blok diagram metode simetrik diperlihatkan pada gambar 1.Gambar 1. Enkripsi simetrikAlgoritma enkripsi yang menggunakan metode ini adalah :Data Encryption Standard (DES)AES, CAST, IDE, RC-4, RC-52.Asymmetric encryptionMenggunakan kunci (key) yang berbeda untuk proses enkripsi dan dekripsi. Pada sistem asimetrik dikenal adanya private key dan public key. Jika melakukan pengiriman data yang di enkripsi ke penerima, sipengrim melakukan enkripsi dengan menggunakan public key dari sipenerima dan data hanya dapat dirobah kembali dalam bentuk plaintext dengan menggunakan private key yang dimiliki sipenerima. Bentuk blok diagram metode asimetrik diperlihatkan pada gambar 2.Gambar 2. Enkripsi asimetrikAlgoritma enkripsi yang menggunakan metode ini adalah :RSADife-Hillman3.Hybrid encryptionMetode ini menggabungkan konsep simetri dan asimetrik, dengan menggunakan key random data dienkripsi dengan metode simetrik. Tahap berikutnya key random yang dipakai untuk proses enkripsi data juga dienkripsi, tetapi menggunakan metode asimetrik dengan menggunakan public key dari sipenerima. Ciphertext yang dihasilkan masing-masing metode digabungkan dan dikirimkan ke penerima. Sipenerima akan membuka Ciphertext untuk key word dengan menggunakan private key yang dimilikinya. Bentuk blok diagram metode ini diperlihatkan pada gambar 3.Gambar 3.a Proses enkripsiGambar 3.b Proses enkripsiFungsi Hash Satu ArahFungsi hash satu arah (one-way hash function) digunakan untuk membuktikan keaslian dari suatu dokumen atau pesan. Pesan (yang besarnya dapat bervariasi) yang akan di-hash disebut pre-image, sedangkan outputnya yang memiliki ukuran tetap, disebut hash-value (nilai hash). Untuk mengetahui keaslian pesan ada tiga cara yang dapat dilakukan yaitu dengan menggunkan enkripsi dan dekripsi simetrik enkripasi, enkripasi dengan anti simetrik enkripsi dan dengan menggunakan sistem tanda tangan digital. Contoh algoritma fungsi hash satu arah adalah MD-5 dan SHA. Message Authentication Code (MAC) adalah salah satu variasi dari fungsi hash satu arah, hanya saja selain pre-image, sebuah kunci rahasia juga menjadi input bagi fungsi MAC.Tanda Tangan DigitalSelama ini, masalah tanda tangan digital (digital signature) masih sering di permasalahkan keabsahannya, hal ini terjadi karena pengertian dan konsep dasarnya belum dipahami. Penandatanganan digital terhadap suatu dokumen adalah sidik jari dari dokumen tersebut beserta timestamp-nya di enkripsi dengan menggunakan kunci privat pihak yang menandatangani. Tanda tangan digital memanfaatkan fungsi hash satu arah untuk menjamin bahwa tanda tangan itu hanya berlaku untuk dokumen yang bersangkutan saja. Keabsahan tanda tangan digital itu dapat diperiksa oleh pihak yang menerima pesan.Sertifikat DigitalSertifikat digital adalah kunci publik dan informasi penting mengenai jati diri pemilik kunci publik, seperti misalnya nama, alamat, pekerjaan, jabatan, perusahaan dan bahkan hash dari suatu informasi rahasia yang ditandatangani oleh suatu pihak terpercaya. Sertifikat digital tersebut ditandatangani oleh sebuah pihak yang dipercaya yaitu Certificate Authority (CA).Secure Socket Layer (SSL)SSL dapat menjaga kerahasiaan (confidentiality) dari informasi yang dikirim karena menggunakan teknologi enkripsi yang maju dan dapat di-update jika ada teknologi baru yang lebih bagus. Dengan penggunaan sertifikat digital, SSL menyediakan otentikasi yang transparan antara client dengan server. SSL menggunakan algoritma RSA untuk membuat tanda tangan digital (digital signature) dan amplop digital (digital envelope). Selain itu, untuk melakukan enkripsi dan dekripsi data setelah koneksi dilakukan, SSL menggunakan RC-4 sebagai algoritma standar untuk enkripsi kunci simetri. Saat aplikasi menggunakan SSL, sebenarnya terjadi dua kondisi, yakni handshake dan pertukaran informasi.Konsep Dasar RC-5Seperti dijelaskan diatas, algoritma RC-5 merupakan metode enkripsi menggunakan metode simetrik dan pengolahan dalam bentuk blok chiper, jadi kata kunci yang sama digunakan untuk proses enkripsi dan dekripsi. Parameter-parameter yang digunakan dalam RC-5 adalah sebagai berikut :Jumlah putaran ini disimbolkan dengan r yang merupakan parameter untuk rotasi dengan nilai 0, 1, 2, 255.Jumlah word dalam bit disimbolkan dengan w. Nilai bit yang di support adalah 16 bit, 32 bit, dan 64 bit.Kata kunci (key word) Variable ini disimbolkan dengan b dengan range 0, 1, 2, . 255. Key word ini dikembangkan menjadi array S yang digunakan sebagai key pada proses untuk enkripsi dan dekripsi.Untuk memahami cara kerja RC-5, dapat dimulai dengan melihat konsep dasar bagaimana RC-5 ini bekerja. Hal ini dilakukan untuk memahami cara kerja algoritma ini lebih lanjut. RC-5 Menggunakan operasi dasar untuk proses enkripsi sebagai berikut :1.Data yang akan dienkripsi dikembangkan menjadi 2 bagian bagian kiri dan bagian kanan dan dilakukan penjumlahan dengan key word yang yang telah diekspansi sebelumnya. Pemjulahan ditunjukan dengan tanda +, dan disimpan di dua register A dan register B..2.Kemudian dilakukan operasi EX-OR, yang ditandai dengan tanda 3.Melakukan rotasi kekiri (shift left) sepanjang y terhadap x word yang ditandai dengan x B) B;B= B- S[1];A= A S[0];Data-data dari ciphertext dikembangkan menjadi dua bagian A dan B selanjutnya di lakukan pengurangan dengan hasil key ekspansi dan dirotasi sebanyak r sambil dilakukan operasi EX-OR terhadap data tersebut. Tahap akhir untuk mendapatkan plaintext adalah dengan melakukan kembali proses pengurangan ke masing-masing bagian dengan hasil key ekspansi. Data-data ini kemudian digabungkan kembali membentuk plaintext sesuai dengan yang dikirimkan pengirim atau data awal sebelum proses enkripsi.Key ExpansionRutin key expansion memperluas kunci rahasia user K untuk mengisi array key yang diperluas S, sehingga S menyerupai suatu array t = 2(r + 1) word biner random yang ditentukan oleh K. Algoritma key expansion menggunakan dua magic constants, dan terdiri dari tiga bagian algoritmik sederhana.Definisi dari Magic Constants. Algoritma key-expansion menggunakan dua konstanta biner berukuran word Pw dan Qw. Konstanta biner tersebut didefinisikan untuk sembarang w sebagai berikut :Dimana : Nilai logaritma dasare = 2.718281828459 golden ratio = 1.6180333988749 Dimana Odd(x) (bilangan ganjil (x))adalah integer ganjil (odd) terdekat terhadap x (dibulatkan keatas jika x adalah integer genap, meskipun hal ini tidak terjadi disini). Untuk w = 16, 32, dan 64, konstanta ini diberikan berikut ini dalam biner dan dalam heksadesimal.P16= 1011011111100001 = b7e1.Q16= 1001111000110111= 9e37.P32= 10110111111000010101000101100011 = b7e15163.Q32=10011110001101110111100110111001 = 9e3779b9.P62= 1011011111100001010100010110001010001010111011010010101001101011= b7e151628aed2a6b.Q64= 1001111000110111011110011011100101111111010010100111110000010101= 9e3779b97f4a7c15.Merubah Kunci Dari Bit Ke WordLangkah algoritmik pertama dari key expansion adalah untuk meng-copy kunci rahasia K[0b 1] ke array L[0e 1] dari word c = [b/u], dimana u = w/8 adalah jumlah byte/word. Operasi ini dilakukan dalam cara yang alami, menggunakan kunci byte konsekutif (berulang) u dari K untuk memenuhi setiap word dalam L, byte low order sampai byte high order. Posisi byte yang tidak terisi dari L dibuat 0. pada kasus ini b = c = 0 kita me-reset c ke 1 dan me-set L[0] menjadi 0.Pada mesin little-endian seperti pada Intel 486, task diatas dapat diselesaikan hanya dengan membuat array L menjadi 0, dan kemudian meng-copy string K secara langsung ke posisi memori yang merepresentasikan L. Pseudocode berikut ini mencapai efek yang sama, diasumsikan semua byte adalah unsigned dan semula array L dibuat 0.C=[max(b,1)/u]for i=b-1 downto 0 doL[i/u]=(L[i/u]