Kriptografi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Lompat ke: navigasi, cari
Alat kriptografi Lorenz yang dipakai di Jerman saat perang dunia II

Kriptografi (atau kriptologi; dari bahasa Yunani κρυπτός kryptós, "tersembunyi, rahasia"; dan γράφειν graphein, "menulis", atau -λογία logi, "ilmu")[1] merupakan keahlian dan ilmu dari cara-cara untuk komunikasi aman pada kehadirannya di pihak ketiga.[2] Secara umum, kriptografi ialah mengenai mengkonstruksi dan menganalisis protokol komunikasi yang dapat memblokir lawan;[3] berbagai aspek dalam keamanan informasi seperti data rahasia, integritas data, autentikasi, dan non-repudansi[4] merupakan pusat dari kriptografi modern. Kriptografi modern terjadi karena terdapat titik temu antara disiplin ilmu matematika, ilmu komputer, dan teknik elektro. Aplikasi dari kriptografi termasuk ATM, password komputer, dan E-commerce.

Kriptografi sebelum pada termodernisasi merupakan sinonim dari enkripisi, konversi dari kalimat-kalimat yang dapat dibaca menjadi kelihatan tidak masuk akal. Pembuat dari pesan enkripsi membagi teknik pemecahan sandi yang dibutuhkan untuk mengembalikan informasi asli jika hanya dengan penerima yang diinginkan, sehingga dapat mencegah orang yang tidak diinginkan melakukan hal yang sama. Sejak Perang Dunia I dan kedatangan komputer, metode yang digunakan untuk mengelola kriptologi telah meningkat secara komplek dan pengaplikasiannya telah tersebar luar.

Kriptografi modern sangat didasari pada teori matematis dan aplikasi komputer; algoritma kriptografi didesain pada asumsi ketahanan komputasional, membuat algoritma ini sangat sulit dipecahkan oleh musuh. Secara teoritis, sangat sulit memecahkan sistem kriptografi, namun tidak layak melakukannya dengan cara-cara praktis. Skema ini oleh karena itu disebut sangat aman secara komputasional; kemajuan teoritis dapat meningkatkan algoritma faktorisasi integer, dan meningkatkan teknologi komputasi yang membutuhkan solusi ini untuk diadaptasi terus-meneus. Terdapat skema keamanan informasi yang benar-benar tidak boleh dapat ditembuh bahkan dengan komputasi yang tak terbatas namun skema ini sangat sulit diimplementasikan.

Teknologi yang berhubungan dengan kriptologi memiliki banyak masalah legal. Di Inggris, penambahan Regulasi Penyelidikan Aksi Wewenang membutuhkan kriminal yang tertuduh harus menyerahkan kunci dekripsinya jika diminta oleh penegah hukum. Jika tidak pengguna akan menghadapi hukum pidana.[5] Electronic Frontier Foundation (EFF) terlibat dalam sebuah kasus di Amerika Serikat yang mempertanyakan jika seorang tersangka harus untuk menyerahkan kunci dekripsi mereka kepada pengak hukum merupakan inkonstitusionil. EFF memperdebatkan bahwa regulasi ini merupakan pelanggaran hak untuk tidak dipaksa mencurigai dirinya sendiri, seperti dalam Amandemen Kelima Konsitusi Amerika.[6]

Terminologi[sunting | sunting sumber]

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).[7] 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 teoritis 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.

Kriptoanalsis 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 kriptoanalisis.[8][9] 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[10] (atau kriptologi) (seperti data frekuensi, kombinasi surat, pola universal, dll.) disebuh kriptolinguistik.

Sejarah kriptografi dan kriptanalisis[sunting | sunting sumber]

Sebelum zaman modern, kriptografi dilihat hanya semata-mata berhubungan dengan pesan rahasia (seperti enkripsi)-konversi pesan dari bentuk dapat dipahami menjadi bentuk yang tak dapat dipahami dan kembali lagi satu dengan yang lain, menjadikannya tak dapat dibaca oleh pencegat atau penyadap tanpa ilmu khusus (di mana sandi dibutuhkan untuk dekripsi pesan itu). Enkripsi digunakan untuk menyakinkan kerahasiaan di komunikasi, termasuk teknik untuk pemeriksaan integritas pesan, autentikasi identitas pengirim/penerima, tanda-tangan digital, bukti interaktif dan komputasi keamanan, serta banyak lagi yang lain.

Kriptografi klasik[sunting | sunting sumber]

scytale Yunani yang direkonstruksi kembali, alat sandi pertama kali

Bentuk awal dari penulisan rahasia membutuhkan lebih sedikit dari implementasi penulisan sejak banyak orang tidak dapat membaca. lawan yang lebih terpelajar, membutuhkan kriptografi yang nyata. Tipe sandi klasik utama ialah sandi transposisi, di mana mengatur aturan huruf pada pesan (contoh 'hello world' menajdi 'ehlol owrdl' pada skema pengubahan sederhana ini), dan sandi subtitusi, di mana secara sistematis mengganti huruf atau grup kata dengan kata lainnya dari grup kata (contoh 'fly at once' menjadi 'gmz bu podf' dengan mengganti setiap huruf dengan yang lain di alfabet Latin. Substitusi sandi pada awalnya disebut sandi Caesar, di mana setiap kata pada teks diganti degan huruf dari jumlah tetap pada posisi di alfabet. Laporan Suetonius menyebutkan Julius Caesar mengunakannya untuk berkomunikasi dengan jendral-jendralnya. Atbash merupakan contoh dari sandi Ibrani pada mulanya. Penggunaan awal kriptografi yang diketahui merupakan teks sandi yang diukir pada batu di Mesir (1900 sebelum Masehi), namun teks sandi ini digunakan hanya sebagai hiburan untuk pengamat terpelajar dari pada cara untuk menyimpan informasi.

Yunani kuno menyebutkan telah mengetahui sandi (contoh sandi transposisi scytale yang diklaim telah digunakan oleh militer Sparta.[11] Steganografi (menyembunyikan kehadiran pesan sehingga pesan tersebut menjadi rahasia) juga pertama kali diperkenalkan pada masa kuno. Contoh awal seperti, dari Herodotus, menyembunyikan pesan - sebuah tato pada kepala budaknya - di bawah rambut yang kembali tumbuh.[7] COntoh yang lebih modern dari steganografi termasuk penggunaan tinta tak tampak, mikrodot, dan tanda air digital untuk menyembunyikan informasi.

Di India, Kamasutra dari Vātsyāyana yang berumur 2000 tahun berbicara dengan dua jenis sandi yang berbeda yang disebut Kautiliyam dan Mulavediya. Di Kautiliyam, substitusi kata sandi berdasarkan relasi fonetik, seperti vokal menjadi konsonan. Di Mulavediya, alfabet sandi terdiri dari kata-kata yang berpasangan dan bertimbal-balik.[7]

Lembar pertama dari buku Al-Kindi yang menjelaskan bagaimana mengenkripsikan pesan

Teks sandi yang dihasilkan dengan sandi klasik (dan beberapa sandi modern) selalu mengungkapkan informasi statistik tentang teks awal, yang sering dapat digunakan untuk memecahkannya. Setelah ditemukannya analisis frekuensi oleh matematikawan Arab dan polymath Al-Kindi (juga dikenal sebagai Alkindus) pada abad ke-9,[12] hampir semua jenis sandi menjadi lebih sulit dipecahkan oleh penyerang yang memiliki informasi tersebut. Seperti sandi klasik yang masih populer hingga saat ini, meskipun lebih banyak dalam bentuk puzzle. Al-Kindi menuliskan buku kriptografi yang berjudul Risalah fi Istikhraj al-Mu'amma (Risalah untuk Mnejermahkan Pesan Kriptografi), yang menjelaskan teknik analisis frekuensi kriptanalisis yang pertama kalinya.[12][13]

Mesin sandi berbentuk buku pada abad ke-16 milik Perancis, ditangan Henri II dari Perancis
Surat terenkripsi dari Gabriel de Luetz d'Amaron, Duta Besar Perancis untuk Kerajaan Ottoman, setelah 1546, dengan penguraian parsial

Pada dasarnya semua sandi tetap rentan kepada kriptanalisis menggunakan teknik analisis frekuensi hingga pengembangan dari sandi polyalphabetic, yang dijelaskan oleh Leon Battista Alberti sekitar tahun 1467, meskipun terdapat beberapa indikasi bahwa hal ini telah terlebih dahulu diketahui oleh Al-Kindi.[13] Penemuan Alberti menggunakan sandi yang berbeda (seperti subtitusi alfabet) untuk beberapa bagian pesan (mungkin untuk setiap teks surat berturut-turut hingga akhir). Dia juga menemukan apa yang mungkin menjadi alat sandi ototmatis untuk pertama kalinya, roda yang menerapkan pelaksanaan dari penemuannya. Pada sandi Vigenère polyalphabetic, enkripsi menggunakan kata kunci, yang mengatur substitusi surat berdasarkan surat mana dari kata kunci yang digunakan. Pada pertengahan abad ke-19 Charles Babbage menunjukkan bahwa sandi Vigenère sangat rentan terhadap pemeriksaan Kasiski, namun hal ini diterbitkan pertama sekali kira-kira sepuluh tahun kemudian oleh Friedrich Kasiski.[14]

Walaupun analisis frekuensi dapat sangat kuat dan menjadi teknik umum melawan banyak sandi, enskripsi masih sangat efektif dalam penerapannya, sebagaimana banyak kriptanalisis masih khawatir akan penerapannya. Memecahkan pesan tanpa menggunakan analisis frekuensi pada dasarnya membutuhkan pengetahuan sandi dan mungkin kunci yang digunakan, sehingga membuat spionase, penyuapan, pencurian, dll. Hal ini secara tegas mengakui kerahasiaan algoritma sandi pada abad 19 sangat tidak peka dan tidak menerapkan praktek keamanan pesan; faktanya, hal ini lebih lanjut disadari bahwa setiap skema kriptografi yang memadai (termasuk sandi) harus tetap aman walaupun musuh benar-benar paham tentang algoritma sandi itu sendiri. Keamanan kunci yang digunakan harus dapat menjamin keamanan pemegang kunci agar tetap rahasia bahkan ketika diserang sekalipun. Prinsip fundamental ini pertama kali dijelaskan pada tahun 1883 oleh Auguste Kerckhoffs dan secara umum dikenal dengan Prinsip Kerckhoff; secara alternatif dan blak-blakan, hal ini dijelaskan kembali oleh Claude Shannon, penemu teori informasi dan fundamental dari teori kriptografi, seperti pribahasa Shanon - 'musuh mengetahui sistemnya'.

Alat-alat bantu yang berbeda telah banyak digunakan untuk membantu sandi. Salah satu alat paling tua yang dikenali merupakan scytale dari Yunani, tangkai yang digunakan oleh Spartan sebagai alat bantuk untuk memindahkan sandi (lihat gambar di atas). Pada zaman pertengahan, alat bantu lainnya ditemukan seperti jerejak sandi, yang juga dikenal sebagai jenis steganografi. Dengan penemuan polialfabetik, sandi menjadi lebih mutakhir dengan bantuan disk sandi milik Alberti, skema tabula recta Johanner Trithemius, dan silinder multi Thomas Jefferson (tidak banyak diketahui, dan ditemukan kembali oleh Bazeries sekitar tahun 1900. Banyak alat mekanik enkripsi/dekripsi ditemukan pada awal abad ke-20, dan beberapa telah dipatenkan, di antaranya mesin rotor yang dikenal dengan nama mesin Enigma digunakan oleh pemerintah dan militer Jerman dari akhir tahun 1920-an dan selama Perang Dunia II.[15] The ciphers implemented by better quality examples of these machine designs brought about a substantial increase in cryptanalytic difficulty after WWI.[16]

Era komputer[sunting | sunting sumber]

Kriptanalisis dari alat mekanis baru terbukti lebih sulit dan melelahkan. Di Inggris, usaha kriptanalisis di Bletchley Park selama Perang Dunia II memacu perkembangan alat yang lebih efisien untuk membawa tugas yang berulang-ulang. Hal ini berujung pada pengembangan Colossus, komputer digital pertama sekali yang bekerja penuh secara elektronik, yang membantu penyandi untuk mendekripsikan mesin Lorenz SZ40/42 milik tentara Jerman.

Algoritma Sandi[sunting | sunting sumber]

algoritma sandi adalah algoritma yang berfungsi untuk melakukan tujuan kriptografis. Algoritma tersebut harus memiliki kekuatan untuk melakukan (dikemukakan oleh Shannon):

  • konfusi/pembingungan (confusion), dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya
  • difusi/peleburan (difusion), dari teks terang sehingga karakteristik dari teks terang tersebut hilang.

sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritmas sandi harus memperhatikan kualitas layanan/Quality of Service atau QoS dari keseluruhan sistem dimana dia diimplementasikan. Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode untuk menguji kehandalan algoritma sandi adalah kriptanalisa.

Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang / plaintext dan yang berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D.

Enkripsi : E(P) = C

Dekripsi : D(C) = P atau D(E(P)) = P

Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi :

  • kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik
  • kunci-asimetris/asymetric-key

Berdasarkan arah implementasi dan pembabakan jamannya dibedakan menjadi :

Berdasarkan kerahasiaan kuncinya dibedakan menjadi :

Pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Sedangkan pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci publik(public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Bila elemen teks terang dienkripsi dengan menggunakan kunci pribadi maka elemen teks sandi yang dihasilkannya hanya bisa didekripsikan dengan menggunakan pasangan kunci pribadinya. Begitu juga sebaliknya, jika kunci pribadi digunakan untuk proses enkripsi maka proses dekripsi harus menggunakan kunci publik pasangannya.

algoritma sandi kunci-simetris[sunting | sunting sumber]

Skema algoritma sandi akan disebut kunci-simetris apabila untuk setiap proses enkripsi maupun dekripsi data secara keseluruhan digunakan kunci yang sama. Skema ini berdasarkan jumlah data per proses dan alur pengolahan data didalamnya dibedakan menjadi dua kelas, yaitu block-cipher dan stream-cipher.

Block-Cipher[sunting | sunting sumber]

Block-cipher adalah skema algoritma sandi yang akan membagi-bagi teks terang yang akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama. Pada umumnya, block-cipher memproses teks terang dengan blok yang relatif panjang lebih dari 64 bit, untuk mempersulit penggunaan pola-pola serangan yang ada untuk membongkar kunci. Untuk menambah kehandalan model algoritma sandi ini, dikembangkan pula beberapa tipe proses enkripsi, yaitu :

Stream-Cipher[sunting | sunting sumber]

Stream-cipher adalah algoritma sandi yang mengenkripsi data persatuan data, seperti bit, byte, nible atau per lima bit(saat data yang di enkripsi berupa data Boudout). Setiap mengenkripsi satu satuan data digunakan kunci yang merupakan hasil pembangkitan dari kunci sebelum.

Algoritma-algoritma sandi kunci-simetris[sunting | sunting sumber]

Beberapa contoh algoritma yang menggunakan kunci-simetris:

Algoritma Sandi Kunci-Asimetris[sunting | sunting sumber]

Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private-key. Dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Keuntungan algoritma model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para korensponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Fungsi Enkripsi dan Dekripsi Algoritma Sandi Kunci-Asimetris[sunting | sunting sumber]

Apabila Ahmad dan Bejo hendak bertukar berkomunikasi, maka:

  1. Ahmad dan Bejo masing-masing membuat 2 buah kunci
    1. Ahmad membuat dua buah kunci, kunci-publik \!K_{publik[Ahmad]} dan kunci-privat \!K_{privat[Ahmad]}
    2. Bejo membuat dua buah kunci, kunci-publik \!K_{publik[Bejo]} dan kunci-privat \!K_{privat[Bejo]}
  2. Mereka berkomunikasi dengan cara:
    1. Ahmad dan Bejo saling bertukar kunci-publik. Bejo mendapatkan \!K_{publik[Ahmad]} dari Ahmad, dan Ahmad mendapatkan \!K_{publik[Bejo]} dari Bejo.
    2. Ahmad mengenkripsi teks-terang \!P ke Bejo dengan fungsi \!C = E(P,K_{publik[Bejo]})
    3. Ahmad mengirim teks-sandi \!C ke Bejo
    4. Bejo menerima \!C dari Ahmad dan membuka teks-terang dengan fungsi \!P = D(C,K_{privat[Bejo]})

Hal yang sama terjadi apabila Bejo hendak mengirimkan pesan ke Ahmad

  1. Bejo mengenkripsi teks-terang \!P ke Ahmad dengan fungsi \!C = E(P,K_{publik[Ahmad]})
  2. Ahmad menerima \!C dari Bejo dan membuka teks-terang dengan fungsi \!P = D(C,K_{privat[Ahmad]})

Algoritma -Algoritma Sandi Kunci-Asimetris[sunting | sunting sumber]

Fungsi Hash Kriptografis[sunting | sunting sumber]

Fungsi hash Kriptografis adalah fungsi hash yang memiliki beberapa sifat keamanan tambahan sehingga dapat dipakai untuk tujuan keamanan data. Umumnya digunakan untuk keperluan autentikasi dan integritas data. Fungsi hash adalah fungsi yang secara efisien mengubah string input dengan panjang berhingga menjadi string output dengan panjang tetap yang disebut nilai hash.

Sifat-Sifat Fungsi Hash Kriptografi[sunting | sunting sumber]

  • Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit (secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).
  • Tahan preimej kedua (Second preimage resistant): bila diketahui input m1 maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan hash(m1) = hash(m2).
  • Tahan tumbukan (Collision-resistant): sulit mencari dua input berbeda m1 dan m2 yang menyebabkan hash(m1) = hash(m2)

Algoritma-Algoritma Fungsi Hash Kriptografi[sunting | sunting sumber]

Beberapa contoh algoritma fungsi hash Kriptografi: