Kamis, 02 Maret 2017

algoritma kriptografi


algoritma kriptografi
A. Sejarah kriptografi
Kriptografi adalah kata serapan dari bahasa asing, dalam hal ini bahasa inggris, yaitu cryptography. Cryptography atau cryptology berasal dari bahasa Yunani, yaitu κρυπτός, kryptos, "hidden, secret" atau “tersembunyi, rahasia”, dan γράφω, gráphō, "I write" atau “aku menulis”, dan  -λογία, -logia atau “ilmu”. Kriptografi adalah ilmu atau seni untuk menyembunyikan informasi. Proses menyembunyikan informasi ini dilakukan dengan teknik penyandian, atau mengubah pesan atau informasi menjadi sandi-sandi yang tidak dimengerti oleh orang lain, selain pembuat dan penerimanya.
Pada kriptografi dikenal istilah-istilah seperti plain text, cipher text, enkripsi, dan dekripsi. Plain text adalah pesan asli yang ingin dikirimkan. Cipher text adalah pesan yang telah disandikan dengan metode enkripsi tertentu. Enkripsi adalah proses mengubah sebuah plain text menjadi cipher text, dan dekripsi adalah proses mengubah sebuah cipher text menjadi plain text.
Transaksi data banyak dilakukan dalam kehidupan sehari-hari. Beberapa informasi yang dikirimkan tersebut adalah informasi-informasi yang bersifat rahasia dan pribadi. Karena itu data-data yang dikirimkan perlu dirahasiakan sehingga pihak lain yang mencoba mendapatkan informasi tersebut tanpa izin tidak akan dapat mengetahuinya.
Pada masa lalu, informasi yang dianggap rahasia adalah seperti pada masa peperangan. Informasi mengenai operasi militer, kekuatan militer, dan sebagainya adalah informasi yang tidak boleh sampai ketahuan oleh pihak musuh. Karena itu informasi-informasi ini perlu disandikan ketika ingin dikirimkan ke tempat lain, sehingga jika informasi yang dikirim jatuh ke tangan pihak musuh, mereka tetap tidak mengerti. Sementara pada era modern ini, kita sering melakukan transaksi secara elektronik. Transaksitransaksi ini juga perlu dilindungi karena mengandung informasi yang bersifat pribadi, misalnya nomor kartu kredit. Karena itu kriptografi menjadi sebuah cabang ilmu yang terus diteliti dan dikembangkan untuk melindungi kerahasiaan data.

B.Terminologi


Sebelum era modern ini, manusia telah menggunakan teknik penyandian dalam pertukaran atau pengiriman informasi yang dianggap sangat rahasia. Pesan-pesan yang dikirim diubah menjadi 4 sandi-sandi sehingga orang yang menyadap tidak dapat mengetahui isi pesan tanpa pengetahuan mengenai cara penyandian.
Scytale yang dimiliki masyarakat Yunani kuno mungkin merupakan salah satu alat pertama yang digunakan untuk menyandikan sebuah pesan. Cara kerja scytale ini adalah pesan yang ingin dikirim dituliskan di secarik kulit yang dililitkan di sebatang kayu berbentuk silinder sehingga jika dilepaskan, maka tulisan tersebut menjadi teracak. Orang yang dapat menyandikan kembali pesan itu ke pesan yang sebenarnya perlu memiliki kayu yang berukuran sama (atau kayu yang sama). Scytale ini termasuk dalam transposition cipher yaitu metode enkripsi yang melakukan perubahan posisi terhadap karakter-karakter di pesan asli. Misalnya pesan “saya disini” dapat disandikan menjadi “ini sidayas” dengan menggunakan transposition cipher ini.
Dikenal juga substitution cipher, atau metode enkripsi yang melakukan substitusi terhadap karakter-karakter pada pesan asli. Salah satu substitution cipher yang terkenal adalah Caesar Cipher yang mengubah setiap huruf dari pesan asli dengan huruf ke sekian di depannya. metode ini diberi nama menurut nama Julius Caesar yang dipercaya menggunakan metode ini untuk berkomunikasi dengan jendral-jendralnya selama peperangan.
Pada perang dunia II, banyak negara yang juga mengembangkan dan menggunakan mesin-mesin tertentu untuk menyandikan pesan mereka. Contohnya seperti Mesin Lorenz dan Enigma yang digunakan oleh militer Jerman.
Perkembangan teknologi dan ditemukannya komputer membuat penggunaan algoritma kriptografi yang lebih kompleks lagi menjadi terbuka kemungkinannya. Banyak penelitian mengenai algoritma kriptografi telah dilakukan sehingga muncul metode baru dalam sistem penyandian pesan. Metode-metode enkripsi yang selama ini dikenal adalah dengan menggunakan sebuah kunci atau kode khusus yang digunakan untuk menyandikan dan membaca pesan.
Misalnya dalam Caesar Cipher digunakan 3 huruf setelah huruf yang digunakan untuk menyandikan pesan. Dan hal itu berarti untuk membaca pesan, kita cukup menggeser setiap huruf yang muncul dengan 3 huruf sebelumnya. Metode ini dikenal dengan symmetric-key cryptography, dimana untuk membaca dan menyandikan sebuah pesan digunakan sebuah key atau kunci yang sama.
Di tahun 1976, sebuah sistem kriptografi yang asymmetric-key dipublikasikan oleh Whitfield Diffie dan Martin Hellman yang dipengaruhi oleh metode distribusi kunci publik (public-key) yang dikembangkan oleh Ralph Merkle. Sistem pertukaran kunci ini dikenal dengan nama Diffie- Hellman key exchage (pada tahun 2002, Hellman menyarankan agar nama ini diubah menjadi Diffie-Hellman-Merkle key exchage atas jasa Merkle dalam penemuan metode public-key). Sistem 5 ini juga disebut public-key cryptography.
Dalam public-key cryptography, kedua pihak yang ingin mengirimkan dan menerima pesan akan saling bertukar kunci yang digunakan untuk mengenkripsi data, sedangkan kunci untuk melakukan dekripsi tetap dirahasiakan. Salah satu public-key cryptography adalah kriptografi RSA.



Hingga zaman modern kriptografi mengacu hampir secara ekslusif pada enkripsi, yang merupakan proses mengkonversikan informasi biasa menjadi teks yang tak dapat dipahami (disebut teks sandi).
Deskripsi merupakan kebalikan, dengan kata lain, memindahkan teks sandi yang tidak dapat dibaca menjadi teks yang dapat dibaca. sandi atau (cypher) merupakan sepasang algoritma yang menciptakan enkripsi dan membalikan dekripsi. Operasi yang lebih mendalam dari sandi diatur baik oleh algoritma dan pada setiap permintaan dekripsi dengan kunci. Kucin ini bersifat rahasia (yang biasanya diketahui hanya oleh orang yang berkomunikasi), dan biasanya terdiri dengan karakter string singkat, yang dibutuhkan untuk mendekripsi teks sandi. Sebelumnya dinamakan "kriptosistem" yang merupakan daftar teratur dari elemen-elemen teks terbatas, teks sandi terbatas, kunci terbatas, dan algoritma dekripsi dan enkripsi yang berkoresponden pada setiap kunci. Kunci sangat penting baik pada penggunaan secara teoretis maupun sebenarnya, di mana sandi tanpa kunci variabel dapat dengan mudah rusak dengan hanya pengetahuan yang digunakan dari sandi dan dengan kemungkinan tidak berguna (atau malam tidak produktif) untuk banyak tujuan. Secara historis, sandi sering digunakan secara langsung untuk enkripsi atau deskripsi tanpa prosedur tambahan seperti autentikasi atau pengecekan integritas.
Dalam penggunaan bahasa sehari-hari, istilah "sandi" sering digunakan untuk menunjukkan setiap metode enkripsi atau penyembunyian arti. Bagaimanapun, dalam kriptografi, sandi telah memiliki arti yang lebih spesifik. Itu berarti pemindahan unit teks (contoh kata atau frase yang berarti) dengan sebuah kata sandi (sebagai contoh, "wallaby" berarti "menyerang saat fajar"). Sandi tidak lagi digunakan pada kriptografi serius-kecuali sesekali untuk beberapa hal yang menyangkut istilah tertentu-sejak sandi yang dipilih secara tepat lebih praktis dan lebih aman daripada sandi terbaik dan juga dapat diadaptasikan pada komputer.
Kriptanalisis merupakan istilah yang digunakan untuk mempelajari metode untuk memperoleh arti dari informasi enkripsi tanpa mengakses sandi secara normal yang dibutuhkan untuk melakukannya; sebagai contoh ilmu yang mempelajari cara untuk memecahkan algoritma enkripsi atau implementasinya.
Beberapa kegunaan dari istilah kriptografi dan kriptologi selalu berubah di Bahasa Inggris, sedang lainnya menggunakan kriptografi untuk merujuk secara spesifik pada penggunakan dan pengaplikasikan dari teknik kriptografi dan kriptologi untuk merujuk pada ilmu kombinasi dari kriptografi dan kriptanalisis. Bahasa Inggris lebih fleksibel dari istilah umum yang digunakan pada beberapa bahasa lain yang dimana kriptologi (dilakukan oleh kriptolog) selalu digunakan pada arti kedua di atas.
Ilmu karateristik dari bahasa yang memiliki aplikasi pada kriptografi (atau kriptologi) (seperti data frekuensi, kombinasi surat, pola universal, dll.) disebuh kriptolinguistik.
C.Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan pada aspek-aspek keamanan antara lain:
1.kerahasiaan (confidentiality), yaitu menjaga supaya pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak,
2.integritas data (data integrity), yaitu memberikan jaminan bahwa untuk tiap bagian pesan tidak akan mengalami perubahan dari saat data 10 dibuat/dikirim oleh pengirim sampai dengan saat data tersebut dibuka oleh penerima data,
3.otentikasi (authentication), yaitu berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan,
4. nirpenyangkalan (non repudiation), yaitu memberikan cara untuk  membuktikan bahwa suatu dokumen datang dari seseorang tertentu sehingga apabila ada seseorang yang mencoba mengakui memiliki dokumen tersebut, dapat dibuktikan kebenarannya dari pengakuan orang tersebut.

D. Algoritma kriptografi terdiri dari tiga fungsi dasar, yaitu :

1. Enkripsi, merupakan pengamanan data yang dikirimkan agar terjaga kerahasiaanya. Pesan asli disebut plaintext, yang diubah menjadi kode – kode yang tidak dimengerti.
2 Dekripsi, merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi dikembalikan ke bentuk asalnya disebut dekripsi pesan. Algoritma yang digunakan untuk dekripsi tentu berbeda dengan algoritma yang digunakan untuk enkripsi.
3. Kunci, yang dimaksud disini adalah kunci yang dipakai untuk melakukan enkripsi dan dekripsi. Kunci terbagi menjadi 2 bagian yaitu : kunci rahasia (private key) dan kunci umum(public key). (Ariyus, 2008)



Macam-macam Algoritma kriptografi modern
Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptogarfi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer. Algoritma kriptografi modern terdiri dari tiga bagian:
1. Algoritma Simetris
Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Algoritma kriprografi simetris sering disebut algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu. Kelebihan dari algoritma kriprografi simetris adalah waktu proses untuk enkripsi dan dekripsi relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada pembangkit kunci. Karena prosesnya relative cepat maka algoritma ini tepat untuk digunakan pada sistem komunikasi digital secara real timeseperti GSM.
Contoh Alice ingin mengirim pesan x dengan aman menggunakan saluran umum kepada Bob. Alice menggunakan kunci xƠ yang sebelumnya telah disepakati antara Alice dan Bob. Untuk mengirim pesan e xƠ (x) kepada Bob, dia akan deskripsi teks kode yang diterima dengan kunci yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang diterima. Begitu juga sebaliknya.
Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma di bawah ini:
  1. Data Encryption Standard (DES)
  2. Advance Encryption Standard (AES)
  3. International Data Encryption Algoritma (IDEA)
  4. A5
  5. RC4
  1. 1. A
2. Algoritma Asimetris
Algoritma Asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan satu lagi lagi deskripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia itu, yang dalam hal ini kunci rahasia, untuk melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan dari nama penemunya, yakni Rivest, Shamir dan Adleman).
3. Algoritma Hibrida Algoritma hibrida adalah algoritma yang memanfaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) – yang disebut juga session key (kunci sesi) – untuk enkripsidata dan pasangan kunci rahasia – kunci publik untuk pemberian tanda tangan digital serta melindungi kunci simetri.
Gambar 3. Algoritma Hibrida
Algoritma kriptografi yang beroperasi dalam mode bit dapat dikelompokkan menjadi dua kategori:
  1. 1. Cipher aliran (stream cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit. Stream chiper atau stream encryption merupakan suatu teknik enkripsi data dengan cara melakukan transformasi dari tiap bit secara terpisah berdasarkan posisi tiap bit dalam aliran data yang biasanya dikendalikan menggunakan operasi XOR. Enkripsi aliran data merupakan hasil dari operasi XOR antara setiap bit plaintext dengan setiap bit kuncinya. Padastream chiper bila terjadi kesalahan selama transmisi maka kesalahan pada teks enkripsi penerima akan terjadi tepat di tempat kesalahan tersebut terjadi. Dalam praktek pertimbangan kesalahan yang mungkin terjadi sangatlah penting untuk penentuan teknik enkripsi yang akan digunakan.
  1. 2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (1 karakter = 8 bit dalam pengkodean ASCII).

Rangkaian bit

Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam sejumlah cara bergantung pada panjang blok.
Contoh: Plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu 9 13 6
Bila plainteks dibagi menjadi blok-blok yang berukuran 3 bit, maka rangkaian bit di atas menjadi:
100 111 010 110
Setiap blok menyatakan bilangan bulat dari 0 sampai 7, yaitu 4 7 2 6
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu yang disebut padding bits.
Misalnya rangkaian bit di atas dibagi menjadi blok 5-bit menjadi
10011 10101 00010
Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal (dicetak tebal) agar ukurannya menjadi 5 bit. Padding bits dapat mengakibatkan ukuran plainteks hasil dekripsi lebih besar daripada ukuran plainteks semula.
Cara lain untuk menyatakan rangkaian bit adalah dengan notasi heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang berukuran 4 bit dengan representasi dalam HEX adalah: 0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0011 = 6 0111 = 7
1000 = 8 1011 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1101 = E 1111 = F
Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi
1001 1101 0110
yang dalam notasi HEX adalah 9 D 6
Operator XOR
Operator biner yang sering digunakan dalam cipher yang yang beroperasi dalam mode bit adalah XOR atau exclusive-or.
Notasi matematis untuk opeartor XOR adalah ⊕ (dalam Bahas C, operator XOR dilambangkan dengan ^).
Operator XOR diperasikan pada dua bit dengan aturan sebagai berikut:
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
Operator XOR identik dengan penjumlahan modulo 2.
Misalkan ab, dan adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
(i) ⊕ a=0
(ii) ⊕ ⊕ (Hukum komutatif)
(iii) ⊕ (⊕ c) = (⊕ b) ⊕ (Hukum asosiatif)
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua ramngkaian bit tersebut.
Contoh: 10011 ⊕ 11001 = 01010
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
1 0 0 1 1
1 1 0 0 1 ⊕
1 ⊕ 1 0 ⊕ 1 0 ⊕ 0 1⊕ 0 1 ⊕ 1
0 1 0 1 0
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks:
⊕ (6.1)
Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan:
⊕ (6.2)
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101 ⊕ (karakter ‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101 ⊕ (karakter ‘5’)
plainteks 01100101 (karakter ‘e’)
Program komersil yang berbasis DOS atau Macintosh menggunakan algoritma XOR sederhana ini. Sayangnya, algoritma XOR sederhana tidak aman karena cipherteksnya mudah dipecahkan.
Cara memecahkannya adalah sebagai berikut (asumsi: panjang kunci adalah sejumlah kecil byte):
  • Cari panjang kunci dengan prosedur counting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
  • Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.Cari panjang kunci dengan prosedurcounting coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6% dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase ini disebut index of coincidence. Pergeseran terkecil mengindikasikan panjang kunci yang dicari.
  • Geser cipherteks sejauh panjang kunci dan XOR-kan dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan plainteks yang digeser sejauh panjang kunci tersebut.

Tidak ada komentar:

Posting Komentar