Sejarah Kriptografi.

Metode Kuno

Kriptografi memiliki sejarah yang sangat panjang. Sejak jaman Romawi, Julius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan militernya. Metode yang digunakan oleh Julius Caesar ini sering dianggap awal dari kriptografi. Informasi lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang tidak standard pada piramid) hingga penggunaan kriptografi pada abad ke-20. Sampai pada akhir perang dunia I, kriptografi merupakan disiplin ilmu matematika yang hanya dipelajari oleh orang-orang tertentu saja. Penelitian bidang ini tidak pernah sampai kepada umum. Kriptografi juga digunakan di kalangan militer. Pada perang dunia ke 2, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan Enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma cipher berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia ke 2. Perkembangan komputer dan sistem komunikasi pada tahun 60an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 70an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Whitfield Diffie dan Martin Hellman mempublikasikan New Directions in Cryptography. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru dan jenius untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret. Walaupun penulis tesis tersebut tidak mempunyai praktek yang nyata akan bentuk skema enkripsi kunci publik pada saat itu, tetapi ide tersebut memicu minat dan aktivitas yang besar dalam komunitas kriptografi. Pada tahun 1978, Rivest, Shamir, dan Adleman menemukan enkripsi kunci publik yang pertama dan sekarang ini dikenal dengan nama RSA (Rivest, Shamir, and Adleman). Skema RSA didasarkan pada permasalahan matematika sulit yang terdiri dari pemfaktoran terhadap bilangan besar. Skema kunci publik lainnya yang kuat dan praktis ditemukan oleh El Gamal. Skema ini juga didasarkan masalah logaritma diskrit.

Kriptografi Klasik

Kriptografi klasik merupakan kriptografi yang digunakan pada zaman dahulu sebelum komputer ditemukan atau sudah ditemukan namun belum secanggih sekarang. Kriptografi ini melakukan pengacakan huruf pada kata terang / plaintext. Kriptografi ini hanya melakukan pengacakan pada huruf A – Z, dan sangatlah tidak disarankan untuk mengamankan informasi-informasi penting karena dapat dipecahkan dalam waktu singkat. Biarpun telah ditinggalkan, kriptografi klasik tetap dapat ditemui disetiap pelajaran kriptografi sebagai pengantar kriptografi modern. Sejarah kriptografi klasik diketahui bermula pada sekitar abad ke-7 sebelum masehi di yunani, dimana para tentara sparta menggunakan alat  yang disebut Scytale untuk menyembunyikan pesan. Scytale terdiri dari sebuah batang silinder dengan diameter tertentu yang digulung dengan pita kain/kertas.

1

Gambar 1. pipa silinder (a) dan pita panjang(b)

 

Setelah pita dililitkan pada batang silinder, pesan dituliskan diatas gulungan pita. Misalkan pesan yang ditulis adalah SERGAP XERXES DI THERMOPYLE BESOL.

2

Gambar 2. Pipa silinder dan pita  yang dituliskan pesan

 

Setelah itu, gulungan pita dibuka dari pipa maka akan menghasilkan pesan tidak bermakna yaitu: S SHYSEX ELOREDREKGRIM AX OB PETPE, Sehingga jika pesan ternyata jatuh ke tangan musuh sekalipun, tidak akan dimengerti. Untuk mengembalikan pesan seperti semula tinggal menggulungkan kembali pita dengan pipa yang diameternya sama, sehingga hanya orang yang benar-benar berhak saja yang dapat memiliki pipa dengan diameter sama. Kriptografi klasik kemudian berkembang pesat pada abad ke-18 Masehi hingga Perang Dunia ke-2. Seperti penggunaan metode polyalphabetic hingga penggunaan mesin untuk mengenkripsi dan mendekripsi pesan, salah satu contoh yang terkenal adalah enigma yang dipatenkan oleh Arthur Scerbius dan digunakan tentara Nazi Jerman untuk mengenkripsi pesan pada saat pertempuran.

4

Gambar 3. Mesin rotor elektromagnetik Enigma

Namun dapat dipecahkan untuk pertama kali pada tahun 1932 oleh kriptografer Polandia dari Biuro Szyfrów (Kantor Sandi), Marian Rejewski, Jerzy Różycki dan Henryk Zygalski. Namun pada 1939 Jerman mendisain ulang Enigma sehingga metode tersebut tidak dapat digunakan lagi. Berkat informasi dari Polandia, akhirnya Britania dan Perancis berhasil membuat mesin pemecah Enigma baru ini, yang diberi nama bombe. Menurut para ahli berkat mesin ini perang dunia ke-2 ini lebih cepat berakhir 2 tahun berkat pemecahan kode enigma. Selain Jerman, Jepang juga membuat mesin enkripsi yang diberi nama purple, Inggris dengan mesin TypeX, dan Amerika dengan mesinSIGABA. Semenjak ditemukannya komputer digital, metode kriptografi klasik yang bekerja dengan mengacak huruf semakin kehilangan posisinya dan digantikan dengan metode yang lebih baru, dimana yang diacak adalah bit dari huruf bersangkutan. Era kriptografi modern pun dimulai. Berdasarkan teknik pengenkripsian, kriptografi klasik terbagi menjadi 2 yaitu:

  1. Metode substitusi, yang dibagi lagi menjadi 2 yaitu:
  • monoalphabetic , setiap huruf pesan disubstitusi oleh satu huruf kunci
  • polyalphabetic , setiap huruf pesan disubstitusi oleh beberapa huruf kunci dengan pola tertentu.

Metode substitusi adalah metode enkripsi dengan mengganti tiap-tiap huruf pesan dengan kunci tertentu menjadi huruf lain. Contohnya adalah Caesar Cipher (monoalphabetic) dan Viginere Cipher(polyalphabetic). Caesar Cipher atau sandi caesar merupakan salah satu kriptografi klasik substitusi monoalphabetic, dimana cara pengenkripsiannya sangat mudah yaitu menggantikan tiap-tiap huruf pesan dengan huruf yang ada didepannya. Contoh jika menggunakan pergeseran 3, maka huruf “A” pada pesan diganti menjadi huruf “D” pada ciphertext, jika dijumpai huruf “Z” maka akan kembali lagi ke huruf awal sehingga menghasilkan huruf “C”, dst.

3

Gambar 4. Contoh pergeseran huruf pada Caesar Cipher

Misalkan pesan yang akan disandikan adalah “SAYA SUKA MAKAN SOTO” digunakan pergeseran 3 huruf, maka ciphertext-nya adalah “VDBD VXND PDNDQ VRWR”. Sedangkan untuk mendekripsikan ciphertext menjadi plaintext mundurkan huruf 3 kali kebelakang. Dibawah ini diberikan source code untuk  memodelkan caesar cipher menggunakan bahasa C.

caesar-cipher.c


#include
 #include
 int main(){
 char kata[10];
 int x,kar,kunci;
 printf("Masukan kata = ");gets(kata);
 printf("Masukan kunci = ");scanf("%d",&kunci);
 x=strlen(kata);
 for(kar=0;kar<strlen(kata);kar++){
 kata[kar]=(kata[kar]-96+kunci)%26+96;
 }
 printf("%s\n",kata);
 getch();
 return 0;
 }

Untuk memecahkan caesar cipher dapat dilakukan dengan beberapa cara antara lain:

  • analisis frekuensi , yaitu menganalisa frekuensi huruf-huruf yang paling sering muncul
  • brute-force , yaitu mencoba 26 geseran yang digunakan

 

  1. Metode Transposisi

Metode transposisi adalah metode enkripsi dengan memindahkan posisi tiap-tiap huruf pesan dengan pola tertentu. Contohnya adalah  Blocking Cipher dan Permutation.

 

Fungsi Utama Kripografi

kriptografi di Indonesia disebut persandian yaitu secara singkat dapat berarti seni melindungi data dan informasi dari pihak-pihak yang tidak dikehendaki baik saat ditransmisikan maupun saat disimpan. Di Indonesia instansi pemerintah yang secara resmi menangani kriptografi nasional adalah Lembaga Sandi Negara.

Sedangkan ilmu persandiannya disebut kriptologi yaitu ilmu yang mempelajari tentang bagaimana tehnik melindungi data dan informasi tersebut beserta seluruh ikutannya. Ilmu ini di Indonesia dapat dipelajari di Sekolah Tinggi Sandi Negara (STSN) yang merupakan satu-satunya perguruan tinggi kriptografi di Indonesia.

1.   Kriptografi

Kriptografi berasal dari bahasa Yunani yaitu kata ’kryptos’ yang artinya tersembunyi dan ’grafia’ yang artinya sesuatu yang tertulis, sehingga kriptografi dapat juga disebut sebagai sesuatu yang tertulis secara rahasia atau tersembunyi.

Kriptografi merupakan suatu bidang ilmu yang mempelajari tentang bagaimana merahasiakan suatu informasi penting ke dalam suatu bentuk yang tidak dapat dibaca oleh siapapun serta mengembalikannya kembali menjadi informasi semula dengan menggunakan berbagai macam teknik yang telah ada sehingga informasi tersebut tidak dapat diketahui oleh pihak manapun yang bukan pemilik atau yang tidak berkepentingan. Sisi lain dari kriptografi ialah kriptanalisis yang merupakan studi tentang bagaimana memecahkan mekanisme kriptografi.

Kriptografi mempelajari mengenai teknik-teknik matematika yang berhubungan dengan aspek-aspek pada keamanan informasi misalnya kerahasiaan, integritas data, otentikasi pengirim / penerima data, dan otentikasi data. Dengan pengembangan bidang kriptografi, pembagian antara apa yang termasuk kriptografi dan apa yang tidak telah menjadi kabur. Dewasa ini, kriptografi dapat dianggap sebagai perpaduan antara studi teknik dan aplikasi yang tergantung kepada keberadaan masalah – masalah sulit.

Bagi kebanyakan orang, kriptografi lebih diutamakan dalam menjaga komunikasi agar tetap rahasia. Seperti yang telah diketahui dan disetujui bahwa perlindungan (proteksi) terhadap komunikasi yang sensitif telah menjadi penekanan kriptografi selama ini. Akan tetapi hal tersebut hanyalah sebagian dari penerapan kriptografi dewasa ini.

2.Tujuan Kriptografi

Kriptografi sesungguhnya merupakan studi terhadap teknik matematis yang terkait dengan 4 aspek keamanan dari suatu informasi yakni kerahasiaan (confidentiality), integritas data (data integrity), otentikasi (authentication), dan ketiadaan penyangkalan (non-repudiation). Keempat aspek tersebut merupakan tujuan utama dari suatu sistem kriptografi yang dapat dijelaskan sebagai berikut :

  • Kerahasiaan (confidentiality)

Kerahasiaan  bertujuan untuk melindungi suatu informasi dari semua pihak yang tidak berhak atas informasi tersebut. Terdapat beberapa cara yang dapat digunakan untuk menjaga kerahasiaan suatu informasi, mulai dari penjagaan secara fisik misalnya menyimpan data pada suatu tempat khusus sampai dengan penggunaan algoritma matematika untuk mengubah bentuk informasi menjadi tidak terbaca.

  • Integritas data (data integrity)

Integritas data bertujuan untuk mencegah terjadinya pengubahan informasi oleh pihak-pihak yang tidak berhak atas informasi tersebut. Untuk menjamin integritas data ini kita harus mempunyai kemampuan untuk mendeteksi terjadinya manipulasi data oleh pihak-pihak yang tidak berkepentingan. Manipulasi data yang dimaksud di sini meliputi penyisipan, penghapusan, maupun penggantian data.

  • Otentikasi (authentication)

Otentikasi merupakan identifikasi yang dilakukan oleh  masing – masing pihak yang saling berkomunikasi, maksudnya beberapa pihak yang berkomunikasi harus mengidentifikasi satu sama lainnya. Informasi yang didapat oleh suatu pihak dari pihak lain harus diidentifikasi untuk memastikan keaslian dari informasi yang diterima. Identifikasi terhadap suatu informasi dapat berupa tanggal pembuatan informasi, isi informasi, waktu kirim dan hal-hal lainnya yang berhubungan dengan informasi tersebut.

  • Non-repudiation

Non-repudiation berfungsi untuk mencegah terjadinya penyangkalan terhadap suatu aksi yang telah dilakukan oleh pelaku aksi itu sendiri. Jika terjadi penyangkalan maka diperlukan suatu prosedur yang melibatkan pihak ketiga untuk menyelesaikan masalah tersebut.

 3.  Sistem Kriptografi

Berdasarkan pemakaian kunci maka sistem kriptografi (cryptosystem) dapat digolongkan atas 2 jenis sistem yaitu sistem kriptografi kunci publik (public key cryptography) dan sistem kriptografi kunci rahasia (secret key cryptography). Dalam sistem kriptografi kunci rahasia yang dikenal juga dengan symmetric cryptosystem, pihak pengirim dan penerima bersama-sama menyepakati sebuah kunci rahasia yang akan digunakan dalam proses enkripsi dan dekripsi tanpa diketahui oleh pihak lain. Sedangkan dalam sistem kriptografi kunci publik atau dikenal dengan assymmetric cryptosystem, pihak pengirim maupun pihak penerima mendapatkan sepasang kunci yakni kunci publik (public key) dan kunci rahasia (private key) dimana kunci publik dipublikasikan dan kunci rahasia tetap dirahasiakan. Enkripsi dilakukan dengan menggunakan kunci publik sedangkan dekripsi dilakukan dengan menggunakan kunci rahasia.

4. Kriptografi Kunci Rahasia (Secret Key Cryptography)

Kriptografi kunci rahasia merupakan bentuk kriptografi yang lebih tradisional, dimana kunci tunggal dapat digunakan untuk enkripsi dan dekripsi suatu pesan. Kriptografi kunci rahasia tidak hanya digunakan untuk enkripsi, tetapi juga untuk otentikasi. Salah satu teknik untuk pekerjaan ini disebut message authentication codes (MAC).

Masalah utama dengan kriptografi kunci rahasia membuat pengirim dan penerima pesan setuju atas kunci rahasia yang digunakan tanpa orang lain mampu mendapatkan dan mengetahuinya. Atau dengan kata lain bagaimana memilih kunci rahasia yang benar-benar aman. Hal ini membutuhkan suatu metode dimana kedua pihak dapat berkomunikasi tanpa kekhawatiran akan tercecernya kunci tersebut. Akan tetapi, keuntungan dari kriptografi kunci rahasia adalah biasanya lebih cepat dibandingkan dengan kriptografi kunci publik. Metode yang paling umum untuk kriptografi kunci rahasia adalah block ciphersstream ciphers, dan message authentication codes (MAC).

11

 

5. Block Cipher

Block cipher adalah bentuk algoritma enkripsi kunci simetri yang mentransformasikan satu blok data tertentu dari plaintext ke dalam satu blok data ciphertext dengan panjang blok yang sama. Transformasi ini berlangsung melalui penggunaan kunci rahasia yang disediakan oleh pemakai (user). Dekripsi dilakukan dengan menggunakan transformasi kebalikan terhadap blok ciphertextmenjadi satu blok plaintext dengan kunci dan panjang blok yang sama. Panjang blok tertentu disebut ukuran blok (block size) dimana ukuran blok tersebut bervariasi misalnya 16 bit, 32 bit, 64 bit, 128 bit atau 256 bit tergantung dari teknik yang digunakan dan perkembangan kemampuan mikroprosesor selanjutnya.

Karena blok plaintext yang berbeda dipetakan ke blok ciphertext yang berbeda (untuk memungkinkan dekripsi yang unik), suatu block cipher secara efektif menyediakan satu permutasi (korespondensi satu ke banyak) dari set pesan yang mungkin. Permutasi berpengaruh pada saat enkripsi tertentu yang sudah pasti rahasia, karena permutasi tersebut adalah fungsi dari kunci rahasia. Jika kita menggunakan satu block cipher untuk mengenkrip satu pesan dengan panjang sembarang, kita menggunakan teknik yang dikenal sebagai modus operasi untukblock cipher tersebut. Agar dapat berguna, satu modus operasi setidak-tidaknya seefisien dan seaman cipher fundamental. Teknik enkripsi mungkin memiliki sifat-sifat tambahan terhadap sifat-sifat dasar yang dimiliki teknik biasa.

6. Stream Cipher

            Stream cipher adalah jenis algoritma enkripsi simetri yang mentransformasikan data secara karakter per karakter. Stream ciphers dapat dibuat sangat cepat sekali, jauh lebih cepat dibandingkan dengan algoritma block cipher yang manapun. Sementara algoritma block cipher secara umum digunakan untuk unit plaintext yang berukuran besar sedangkan stream cipher digunakan untuk blok data yang lebih kecil, biasanya ukuran bit. Proses enkripsi terhadapplaintext tertentu dengan algoritma block cipher akan menghasilkan ciphertextyang sama jika kunci yang sama digunakan. Dengan stream cipher, transformasi dari unit plaintext yang lebih kecil ini berbeda antara satu dengan lainnya, tergantung pada kapan unit tersebut ditemukan selama proses enkripsi.

Suatu stream cipher akan menghasilkan apa yang disebut suatu keystream yaitu suatu barisan bit yang digunakan sebagai kunci. Proses enkripsi dicapai dengan menggabungkan keystream dengan plaintext biasanya dengan operasi bitwise XOR. Pembentukan keystream dapat dibuat independen terhadap plaintext danciphertext, menghasilkan apa disebut dengan synchronous stream cipher, atau dapat dibuat tergantung pada data dan enkripsinya, dalam hal mana stream cipherdisebut sebagai self-synchronizing. Kebanyakan bentuk stream cipher adalahsynchronous stream ciphers.

Konsentrasi dalam stream ciphers pada umumnya berkaitan dengan sifat-sifat teoritis yang menarik dari one-time pad. Suatu one-time pad, kadang-kadang disebut Vernam cipher, menggunakan sebuah string dari bit yang dihasilkan murni secara acak. Keystream memiliki panjang sama dengan pesan plaintext; string acak digabungkan dengan menggunakan bitwise XOR dengan plaintext untuk menghasilkan ciphertext. Karena keystream seluruhnya adalah acak, walaupun dengan sumber daya komputasi tak terbatas seseorang hanya dapat mendugaplaintext jika dia melihat ciphertext. Metode cipher seperti ini disebut memberikan kerahasiaan yang sempurna (perfect secrecy), dan analisis terhadap one-time paddipandang sebagai salah satu landasan kriptografi modern. Sementara one-time pad yang digunakan semasa perang melalui saluran diplomatik membutuhkan tingkat keamanan yang sangat tinggi, fakta bahwa kunci rahasia (yang hanya dapat digunakan satu kali) dianggap rahasia sepanjang pesan memperkenalkan masalah manajemen kunci yang strict. Sedangkan keamanan sempurna, one-time pad secara umum adalah tidak praktis.

Stream cipher dikembangkan sebagai satu aproksimasi terhadap tindakan darione-time pad. Sementara stream cipher modern tidak mampu menyediakan tingkat keamanan one-time pad yang memadai secara teori, tetapi setidaknya praktis. Sampai saat ini belum ada stream cipher sebagai standard secara de facto. Metode stream cipher yang umum digunakan adalah RC4. Satu hal yang menarik bahwa mode operasi tertentu dari suatu block cipher dapat mentransformasikan secara efektif hasil operasi tersebut ke dalam satu keystream generator dan dalam hal ini, block cipher apa saja dapat digunakan sebagai suatu stream cipher; seperti dalam DES, CFB atau OFB. Akan tetapi, stream cipher dengan desain khusus biasanya jauh lebih cepat.

 7.Kriptografi Kunci Publik (Public Key Cryptography)

Kriptografi kunci publik diperkenalkan oleh Whitfield Diffie dan Martin Hellman pada tahun 1976. Kriptografi kunci publik memiliki dua penggunaan utama, yakni enkripsi dan tanda tangan digital (encryption and digital signatures). Dalam sistem kriptografi kunci publik, masing-masing pihak mendapat sepasang kunci, satu disebut kunci publik (public key) dan satu lagi disebut kunci rahasia (private key). Kunci publik dipublikasikan, sementara kunci rahasia tetap dirahasiakan. Keharusan penggunaan kunci secara bersama antara pengirim dan penerima pesan rahasia dihilangkan, semua komunikasi hanya melibatkan kunci publik, dan tidak ada kunci rahasia yang ditransmisikan atau digunakan bersama. Dalam sistem ini, tidak ada lagi kecurigaan terhadap keamanan dari sistem komunikasi. Satu-satunya kebutuhan bahwa kunci publik dikaitkan dengan penggunanya dalam lingkup yang saling mempercayai (contoh dalam suatu trusted directory). Seseorang dapat mengirimkan pesan rahasia dengan hanya menggunakan informasi yang umum (kunci publik), tetapi pesan tersebut hanya mungkin didekrip dengan menggunakan kunci rahasia, dimana satu-satunya yang memiliki kunci rahasia tersebut hanyalah orang yang diharapkan menerima pesan tersebut. Kriptografi kunci publik tidak hanya digunakan untuk merahasiakan pesan, tetapi juga untuk otentikasi (tanda tangan digital) dan teknik lainnya.

Dalam kriptografi kunci publik, kunci rahasia selalu berhubungan secara matematis terhadap kunci publik. Oleh karena itu, selalu dimungkinkan untuk menembus (menyerang) sistem kunci publik dengan menurunkan kunci rahasia dari kunci publik. Biasanya, cara untuk menangkal kemungkinan tersebut adalah membuat sesulit mungkin untuk menghasilkan kunci privat dari kunci publik. Sebagai contoh, beberapa kriptosistem kunci publik dibuat sedemikian hingga penurunan kunci rahasia (privat) dari kunci publik mengharuskan penyerang melakukan faktorisasi terhadap bilangan yang sangat besar, dalam hal ini sangat sulit untuk melakukan penurunan. Inilah ide di belakang RSA public-key cryptosystem.

22

 

8.Aplikasi Kriptografi

Kriptografi telah banyak digunakan di dalam aplikasi-aplikasi khususnya aplikasi pengamanan data pada saat sekarang ini. Aplikasi khas dari kriptografi adalah sistem yang dikembangkan dengan teknik dasar. Sistem seperti ini, dapat memiliki tingkat kompleksitas yang beraneka ragam. Beberapa aplikasi yang lebih sederhana antara lain , komunikasi yang aman, identifikasi, otentikasi, dan secret sharing. Aplikasi yang lebih rumit seperti sistem untuk electronic commerce (e-commerce), sertifikasi, electronic mail yang aman, penemuan kunci dan akses komputer yang aman. Secara umum, makin sederhana aplikasi makin cepat menjadi realita.

9. Komunikasi Aman (Secure Communication)

Komunikasi aman merupakan penggunaan kriptografi yang paling sederhana. Dua pihak dapat berkomunikasi secara aman dengan cara mengenkripsi pesan-pesan yang mereka kirimkan di antara mereka. Hal ini dapat dicapai sedemikian rupa sehingga pihak ketiga yang mendapat bocoran (menyadap) pembicaraan antar kedua pihak tadi mungkin tidak pernah mengembalikan pesan dalam bentuk acak ke dalam bentuk yang berarti.

10. Identifikasi dan Otentikasi (Identification and Authentication)

Identifikasi dan otentikasi merupakan dua aplikasi kriptografi yang sangat banyak digunakan saat ini. Identifikasi adalah proses verifikasi identitas seseorang atau sesuatu. Sebagai contoh, ketika menarik uang dari bank dengan menggunakan kartu Automatic Teller Machine (ATM) dilengkapi dengan satu Personal Identification Number (PIN) yang rahasia yang memadukan pemilik kartu dengan kartu tersebut demikian juga dengan rekening yang bersangkutan. Ketika kartu dimasukkan ke dalam mesin ATM, mesin tersebut akan meminta pengguna kartu untuk memasukkan PIN. Jika PIN yang dimasukkan benar, mesin akan mengidentifikasikan orang tersebut benar sebagai pemilik kartu sehingga kepada orang tersebut akan diberikan akses. Aplikasi penting lainnya dari kriptografi adalah otentikasi. Otentikasi mirip dengan indetifikasi, dimana keduanya memberikan kesempatan untuk akses ke dalam sumber daya tertentu misalnyaInternet Account, tetapi otentikasi memiliki cakupan lebih luas karena tidak perlu mengidentifikasikan orang atau entity.

11. Secret Sharing

Secret Sharing merupakan salah satu aplikasi dari kriptografi yang memungkinkan pendistribusian satu rahasia di antara sekumpulan orang yang saling percaya. Sebagai contoh, dalam (k; n)-threshold scheme, informasi tentang rahasia adalah didistribusikan sedemikian rupa sehingga sembarang k dari n orang  (k £ n) memiliki informasi yang cukup untuk menentukan (mengetahui) rahasia tersebut, tetapi sembarang set  k – 1 orang tidak dapat melakukannya. Dalam sembarangsecret sharing scheme, terdapat kumpulan orang yang terpilih yang informasi kumulatif mereka cukup untuk memecahkan rahasia. Dalam beberapa implementasi secret sharing schemes, setiap partisipan menerima rahasia setelah rahasia dimaksud dihasilkan.. Dalam implementasi lain, rahasia sebenarnya tidak pernah dibuat kelihatan kepada partisipan, walaupun akses diberikan untuk mendapatkan rahasia tersebut diberikan (misalnya akses ke dalam ruangan atau izin untuk melakukan proses).

12.Sertifikasi (Certification)

Sertifikasi merupakan salah satu aplikasi lainnya dari kriptografi. Sertifikasi adalah sebuah skema dimana pihak yang dipercayai seperti penguasa atau pihak yang berwenang mengeluarkan sertifikat untuk pihak lain. Pihak yang dipercayai mengeluarkan kupon (vouchers) yang disebut sertifikat yang memiliki sejumlah arti yang mendalam, misalnya nomor ijazah. Teknologi sertifikasi dikembangkan untuk identifikasi dan otentikasi dimungkinkan dalam skala besar.

13. Penemuan Kunci (Key Recovery)

Penemuan kunci adalah suatu teknologi yang memungkinkan sebuah kunci ditemukan dalam kondisi tertentu tanpa pemilik memberitahukan. Ini perlu untuk dua alasan, pertama, jika pemilik kunci menghilangkan atau secara tidak sengaja menghapus kuncinya, penemuan kunci dapat menghindarkan malapetaka. Kedua, jika aparat penegakan hukum ingin mengetahui suatu tindak kriminal tanpa sepengetahuan tersangka, aparat tersebut harus mampu mendapatkan kunci yang diinginkan. Teknik penemuan kunci sudah banyak digunakan saat ini, akan tetapi, penggunaan teknik ini dalam hal penegakan hukum telah menimbulkan kontroversi.

 

14. Cryptanalysis

 1.Definisi Cryptanalysis

Cryptanalysis adalah sisi lain dari kriptografi, yang merupakan ilmu untuk memecahkan kode, mendecode rahasia, mematahkan skema otentikasi, dan secara umum menembus dan memecahkan protokol kriptografi. Agar diperoleh algoritma enkripsi atau protokol kriptografi yang handal (robust), kita harus menggunakan cryptanalysis untuk mencari dan memperbaiki kelemahan yang dimiliki. Inilah alasan sebenarnya mengapa algoritma enkripsi yang paling dipercaya adalah algoritma yang telah dibuat publik. Sebagai contoh, DES  telah diberikan ke publik selama bertahun-tahun, dan oleh karena itu telah dipercaya sepenuhnya (well-trusted), sementara Skipjack merupakan proyek rahasia untuk waktu yang lama dan dengan demikian kurang dipercaya (less-trusted).

Adalah merupakan prinsip dasar dari cryptology dimana keamanan dari suatu algoritma seharusnya tidak tergantung pada kerahasiaannya. Satu hal yang tidak dapat dihindarkan bahwa algoritma tersebut akan ditemukan dan kelemahannya (jika ada) akan dipaparkan ke khayalak ramai. Berbagai teknik dalam cryptanalysismencoba melakukan kompromi terhadap cryptosystem yang dianggap sebagai penyerangan (attack). Sebagian ancaman (serangan) adalah bersifat umum, sementara yang lainnya hanya berlaku pada jenis cryptosystem tertentu.

 

  2. Bentuk dasar dari cryptanalytic attack

Cryptanalytic attacks umumnya diklasifikasikan ke dalam enam kategori yang membedakan informasi yang dibutuhkan oleh cryptanalyst untuk dapat melakukan serangan.

  1. Ciphertext-only attack

adalah serangan dimana cryptanalyst mendapatkan contoh dari ciphertext, tanpaplaintext yang berhubungan dengan ciphertext yang dimilikinya. Data ini relatif mudah untuk diperoleh dalam beberapa skenario, tetapi suatu seranganciphertext-only yang berhasil umumnya sulit, dan membutuhkan contoh ciphertext yang sangat besar.

1.Known-plaintext attack

adalah serangan dimana cryptanalyst medapatkan sampel dari ciphertext  danplaintext terkait.

2. Chosen-plaintext attack

adalah serangan dimana cryptanalyst dapat memilih sebagian plaintext dan kemudian mendapatkan ciphertext terenkripsi terkait

3. Adaptive-chosen-plaintext attack

adalah kasus khusus dari chosen-plaintext attack dimana cryptanalyst dapat memilih sampel plaintext secara dinamis, dan mengubah pilihannya berdasarkan hasil dari enkripsi sebelumnya.

4.Chosen-ciphertext attack

adalah serangan dimana cryptanalyst boleh memilih potongan ciphertext dan mencoba untuk mendapatkan plaintext yang didekripsi. Jenis serangan ini umumnya paling dapat digunakan untuk public-key cryptosystems.

5.Adaptive-chosen-ciphertext

adalah versi adaptif dari chosen-ciphertext attack . Seorang cryptanalyst dapat melancarkan serangan jenis ini dalam suatu skenario dimana dia memiliki  penggunaan bebas terhadap hardware untuk dekripsi, tetapi tidak dapat mengekstraksikan kunci dekripsi dari hardware tersebut.

Tujuan dari cryptanalyst dalam semua kasus adalah untuk melakukan dekripsi potongan baru dari ciphertext tanpa informasi tambahan. Kondisi ideal bagi seorang cryptanalyst adalah mendapatkan kunci rahasia. Cryptanalytic attacksdapat dilancarkan bukan hanya terhadap algoritma enkripsi, tetapi juga terhadap algoritma tanda tangan digital, Algoritma MACing  dan pseudo-random number generators.

15. Exhaustive key search

Exhaustive key search, atau brute-force search, adalah teknik dasar dari mencoba setiap kemungkinan kunci secara berturut-turut hingga kunci yang benar ditemukan. Untuk mengidentifikasikan kunci yang benar mungkin perlu untuk memiliki plaintext dan ciphertext terkait atau jika plaintext mengandung beberapa karakter yang dikenal, ciphertext sendiri mungkin cukup. Exhaustive key searchdapat dilakukan pada sembarang cipher dan kadangkala kelemahan dalam penjadwalan kunci dari cipher dapat membantu untuk meningkatkan efisiensi dariexhaustive key search attackExhaustive key search dapat juga dilakukan dalam program yang dijalankan dengan workstation standard atau dalam PC.

Kemajuan dalam teknologi dan performansi komputasi akan selalu membuatexhaustive key search menjadi ancaman serius terhadap kunci panjang tertentu. Ketika DES dirancang, algoritma ini dianggap aman terhadap exhaustive key search tanpa investasi besar dalam hardware. Akan tetapi, setelah beberapa tahun berlalu jenis serangan terhadapnya menjadi hal yang menarik terhadap musuh potensial. Exhaustive search untuk DES dengan kunci 56-bit  akan membutuhkan puluhan atau ratusan tahun dengan general purpose computer paling cepat yang ada saat ini, perkembangan internet telah memungkinkan untuk menggunakan ribuan mesin dalam mode terdistribusi dengan melakukan partisi kunci dan mendistribusikan bagian kecil kunci ke masing-masing komputer dalam jumlah besar. Dengan cara ini dan dengan menggunakan supercomputer yang dirancang khusus, suatu kunci untuk DES memang dapat dipecahkan dalam waktu 22 jam pada bulan Januari 1999. Tingkat kecepatan dalam peningkatan kemampuan komputasi sedemikian hingga kunci dengan panjang 80-bit harus memberikan level keamanan yang dapat diterima untuk selama 10 atau 15 tahun kedepan.Tidak adanya terobosan berarti dalam komputasi kuantum, adalah suatu hal yang mustahil untuk memecahkan dengan cara exhaustive search kunci 128-bit, seperti yang digunakan dalam IDEA dan AES.

 

Beberapa abad yang silam, di jaman kebesaran Romawi, seorang Kaisar pernah mengirimkan perintah kepada sang Jendral yang sedang berada dimedan pertempuran dengan menggunakan sebuah pesan acak. Pesan/dokumen tersebut merupakan perintah langsung dari sang Kaisar yang isinya hanya dapat dibaca oleh sang kaisar dan sang Jendral yang bersangkutan, sehingga baik kurir yang ditugasi untuk menyampaikan pesan tersebut ataupun orang lain yang berhasil mencuri dokumen rahasia tersebut tidak ada yang dapat membaca isi pesan Kaisar kepada sang Jendral. Teknik yang digunakan oleh Kaisar ini dinamakan teknik Kriptografi, dan sang Kaisar jenius itu sendiri bernama Julius Caesar.

Julius Caesar memang tercatat dalam sejarah sebagai seorang yang pertama kali menggunakan teknik kriptografi untuk mengirimkan pesan. Meskipun demikian, penggunaan kriptografi sendiri dipercaya telah hadir sekitar 4000 tahun yang lalu dan digunakan oleh bangsa Mesir pada ukiran makam seorang bangsawan besar yang bernama KHNUMHOTEP II. Ide dari kriptografi yang digunakan oleh Julius Caesar telah sebelumnya ditulis oleh seorang pujangga Yunani yang bernama Polyibus.

Hingga saat ini, teknik kriptografi masih digunakan dengan tujuan yang tidak berbeda dari yang ingin dicapai oleh sang Kaisar, yaitu: Sebuah pesan yang hanya dapat dibaca oleh orang yang dikehendaki. Teknik dan algoritma kriptografi ini terus berkembang hingga sekarang dan tentu saja semakin canggih dari yang digunakan oleh kaisar besar Romawi tersebut.

Dalam artikel ini akan dibahas ide dasar dari teknik kriptografi.

Definisi dan Konsep

Kaufman et. al. (2002) menjelaskan bahwa kata Kriptografi berasal dari bahasa Yunani dan memiliki makna seni dalam menulis pesan rahasia (The art of secret writing), dimana kriptografi terdiri dari 2 kata yaitu κρυπτό yang berarti rahasia atau tersembunyi dan γραφή yang berarti tulisan.

Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu:

  1. Plaintext, yaitu pesan yang dapat dibaca
  2. Ciphertext, yaitu pesan acak yang tidka dapat dibaca
  3. Key, yaitu kunci untuk melakukan teknik kriptografi
  4. Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi

Kemudian, proses yang akan dibahas dalam artikel ini meliputi 2 proses dasar pada Kriptografi yaitu:

  1. Enkripsi (Encryption)
  2. Dekripsi (Decryption)

dengan key yang digunakan sama untuk kedua proses diatas. Penggunakan key yang sama untuk kedua proses enkripsi dan dekripsi ini disebut juga dengan Secret KeyShared Keyatau Symetric Key Cryptosystems.

Berikut adalah ilustrasi 4 komponen dan 2 proses yang digunakan dalam teknik kriptografi.

33

 

Enkripsi

Enkripsi (Encryption) adalah sebuah proses menjadikan pesan yang dapat dibaca (plaintext) menjadi pesan acak yang tidak dapat dibaca (ciphertext). Berikut adalah contoh enkripsi yang digunakan oleh Julius Caesar, yaitu dengan mengganti masing-masing huruf dengan 3 huruf selanjutnya (disebut juga Additive/Substitution Cipher):

Plaintext Ciphertext
hello khoos
bye ebh
freelynx iuhhobqa
dst…

dalam melakukan proses untuk meng-enkripsi diperlukan sebuah algoritma dan key. Pada contoh diatas, algoritma yang digunakan adalah:

  1. Konversikan huruf menjadi angka
  2. Masing-masing angka yang diperoleh jumlahkan dengan $n
  3. konversikan angka yang diperoleh kembali menjadi huruf

dengan:

  • $n adalah Key yang dapat ditentukan sendiri.

Jika key yang kita gunakan adalah 1, algortima tersebut akan mengubah huruf:

  • A menjadi B
  • B menjadi C
  • D menjadi E
  • s menjadi t
  • dlsb

Dekripsi

Dekripsi merupakan proses kebalikan dari enkripsi dimana proses ini akan mengubah ciphertext menjadi plaintext dengan menggunakan algortima ‘pembalik’ dan key yang sama. Contoh:

Ciphertext Plaintext
khoos hello
ebh bye
iuhhobqa freelynx
dst…

Untuk melakukan dekripsi ini, algoritma yang digunakan tentu saja berbeda dengan algortima enkripsi, namun pada dasarnya adalah “membalik” algoritma enkripsi. Perhatikan contoh algortima dekripsi berikut yang diambil dari algoritma enkripsi diatas:

  1. Konversikan huruf menjadi angka
  2. Masing-masing angka yang diperoleh kurangkan dengan $n
  3. Konversikan angka yang diperoleh kembali menjadi huruf

dengan

  • $n adalah key yang sama dengan yang digunakan dalam proses enkripsi.

Jika diperhatikan, baik algoritma enkripsi maupun dekripsi tidak jauh berbeda, yang berbeda hanyalah ketika memasukkan unsur key kedalam algoritma tersebut, dimana enkripsi menggunakan proses penjumlahan sedangkan dekripsi menggunakan pengurangan.

Masih menggunakan contoh yang sama dengan enkripsi, apabila kita gunakan key sama dengan 1, algoritma dekripsi diatas akan mengubah huruf:

  • B menjadi A
  • C menjadi B
  • Z menjadi Y
  • A menjadi Z
  • dst

Sintaks Pemrograman

Berbicara mengenai algoritma dan key memang tampaknya sangat abstrak sekali. Namun akan lebih jelas beda kedua komponen ini jika dituliskan dalam sintaks pemrograman dimana, secara sederhana, algoritma adalah semua yang berada didalam blok functiondan key adalah parameter dari fungsi tersebut.

function encrypt($key) {
/* algoritma ditulis disini */
}
function decrypt($key) {
/* algoritma 'pembalik' ditulis disini */
}

Security Consideration

“There are no such things as perfect systems”. Hal ini berlaku pula dengan algoritma kriptografi. Dalam prakteknya, tidak sembarang algoritma bisa dipercaya 100% aman dalam melakukan proses enkripsi. Salah satu pertimbangannya adalah algoritma enkripsi tidak boleh digunakan untuk proses dekripsi. Jika algoritma enkripsi dapat juga digunakan untuk mendekripsi ciphertext maka algortima tersebut sebaiknya tidak digunakan sebelum diperbaiki vulnerability yang ter-ekspose tersebut.

Kalau kita lihat contoh yang digunakan diatas, ciphertext ebh jika di enkripsi dengan menggunakan key 23 akan menghasilkan text ‘bye’. Serupa dengan jika kita dekrip cipertext tersebut dengan menggunakan key 3. Itulah sebabnya cara yang dilakukan oleh Julius Caesar ini tidak lagi digunakan dalam praktek kriptografi saat ini. Selain karena terlalu simple, teknik ini banyak kelemahan didalamnya.

Inilah yang menyebabkan tidak sembarang orang dapat membuat pasangan algortima enkripsi dan dekripsi yang tangguh dan aman. Beberapa algoritma yang dikenal luas dan masih digunakan hingga sekarang antara lain:

  • CBC (Cipher Block Chaining)
  • DES (Data Encryption Standard)
  • AES (Advanced Encryption Standard)
  • Diffie-Hellman
  • RSA (Rivest, Shamir, Adleman)
  • dll.

Detail mengenai algoritma diatas akan dipaparkan dalam artikel yang terpisah.

Lets Play

Anda dapat mencoba sendiri bagaimana proses enkripsi dan dekripsi ini bekerja dengan menggunakan form dibawah ini. Disini telah disiapkan sebuah algortima sederhana yaitu yang digunakan oleh Sang Kaisar dan algortima tingkat tinggi yang dibuat dan dikeluarkan oleh Pemerintah Amerika pada tahun 2001, yaitu AES. Untuk algoritma yang digunakan oleh Julius Caesar, kita dapat menentukan sendiri key yang ingin digunakan.

44

Jika kita memilih AES sebagai algoritma yang akan digunakan, maka input key akan berubah menjadi single form yang bisa diketikkan dengan sembarang karakter. Karena AES merupakan salah satu algoritma kriptografi yang sangat advanced dan kompleks, keyyang digunakan tidak terbatas hanya pada tipe integer saja.

Selain itu pula, akan terlihat adanya tambahan input yaitu Encoding. Kriptografi tingkat tinggi seperti ini memang proses enkripsi dan dekripsi “dibelakang layar” nya adalah proses yang menggunakan bahasa mesin, sehingga sulit bagi kita untuk membacanya. Encoding ini adalah proses korversi dari bahasa mesin menjadi bahasa yang kita mengerti. Dalam demo ini, encoder yang dapat dipilih adalah Codegroup (Alphabet), hexadecimal (angka 0-9 dan a-f), dan Base64 (aplhanumeric ditambah +,/ dan = ) atau none. Kita akan dapat melihat interpretasi yang sebenarnya dari bahasa mesin hasil enkripsi jika memilih encoding “none”.