Hari Hari mu adalah Umur mu..

العلماء هم ضالتي في كل بلدة وهم بغيتي ووجدت صلاح قلبي في مجالسة العلماء // Orang-orang yang berilmu agama adalah orang yang kucari di setiap tempat. Mereka adalah tujuan yang selalu kucari. Dan aku menemukan keshalihan hatiku di dalam bergaul dengan mereka. (حلية الأولياء وطبقات الأصفياء , IV/85 )

Enkripsi

Kuliah December 23rd, 2009

Posted by Joko Nurjadi

Suatu hari, Si Joko yang sedang kasmaran ingin mengemukakan perasaannya terhadap seorang gadis melalui SMS. Karena kurang percaya diri, Si Joko membuat rumus tertentu dan mengirimkan pesan: “J Mpwf Zpv” kepada pujaan hati. Tak disangka-sangka, hanya selang beberapa detik, sang gadis pujaan membalas dengan pesan singkat: “Lfmbvu Bkf”.

Dalam pesan diatas, baik Si Joko maupun si gadis pujaan telah mengaburkan informasi dengan sebuah teknik agar pesan menjadi tidak terbaca, sehingga diperlukan cara khusus untuk membacanya.

Hal inilah yang disebut dengan enkripsi, yang digunakan untuk memproteksi data atau informasi. Banyak sekali kemungkinan teknik enkripsi, contoh enkripsi sederhana telah diterapkan Si Joko dengan pola menggeser satu huruf ke depan, sehingga untuk menuliskan “A” maka enkripsinya adalah “B”. Karena itulah, Si Joko menuliskan “I Love You” menjadi “J Mpwf Zpv”.

Kabar membanggakan untuk Si Joko adalah, teknik enkripsi seperti itu juga digunakan oleh Julius Caesar! Walau setelah dipikir lagi, bukan hal yang terlalu dapat dibanggakan karena Julius Caesar telah menggunakannya lebih dari 2000 tahun yang lalu.

Karena proses enkripsi (encryption) adalah menyamarkan data, maka perlu proses untuk mengembalikan data tersebut agar dapat terbaca, hal ini disebut dengan dekripsi (decryption). Pada contoh diatas, enkripsi adalah menggeser satu huruf ke depan, maka untuk melakukan dekripsi adalah dengan menggeser satu huruf ke belakang.

Disadari atau tidak, kehidupan di sekitar Anda penuh dengan enkripsi. Saat Anda login pada komputer untuk mulai bekerja, password yang Anda masukkan tentu telah dienkripsi didalam sistem komputer, demikian pula saat Anda berbelanja dengan kartu kredit, data yang dikirimkan merupakan data yang terenkripsi, juga pada saat Anda melakukan transaksi online pada situs e-commerce.

Kriptografi dan Chiper

Jika Anda penggemar (atau pembenci) novel “Da Vinci Code”, tentu Anda mengenal kriptografi (cryptography) yang digunakan untuk menyamarkan pesan. Kriptografi merupakan suatu bidang yang mempelajari bagaimana menyembunyikan arti sebuah pesan.

Chiper merupakan sebuah algoritma yang dikembangkan dalam kriptografi, untuk melakukan enkripsi dan dekripsi. Chiper membentuk rangkaian langkah yang telah didefinisikan. Pada kalangan umum, kata chiper dapat diartikan sebagai kode (code) walaupun sebenarnya secara teknikal, chiper dan code merupakan dua konsep yang berbeda.

Jika Anda memiliki sebuah text berisi sebuah informasi, informasi asli atau original tersebut sering disebut dengan plaintext. Sedangkan setelah dienkripsi, maka umumnya disebut chipertext.

Pengoperasian chiper umumnya tergantung dari sebuah informasi yang maha penting, yaitu kunci (key). Hasil enkripsi tergantung dari key yang telah ditentukan, begitu pula untuk melakukan dekripsi menjadi informasi asli.

Jika enkripsi dan dekripsi menggunakan key yang sama, maka dikatakan sebagai symmetric key algorithms, sedangkan jika digunakan key yang berbeda, dinamakan dengan asymmetric key algorithms.

Metode Enkripsi

Mari kita melihat perkembangan metode-metode untuk melakukan enkripsi yang dapat Anda terapkan pada aplikasi Anda. Jika menggeser huruf dirasakan masih sederhana (walaupun itu sudah dapat dinamakan chiper), maka Anda dapat mencoba membuat sebuah pola substitusi berdasarkan sebuah table.

Table dibawah ini menunjukkan sebuah pola substitusi:

Cara penggunaannya adalah dengan mencari koordinat huruf, sebagai contoh huruf “H” berada pada koordinat baris 2 dan kolom 3, maka dikatakan “H” jika dienkripsi akan menjadi “23”.

Dengan demikian, kata “LOVE” jika dienkripsi akan menjadi “31345115”. Maka pesan Anda sudah semakin membingungkan dan tidak mudah dimengerti, bukan? Pola diatas dapat Anda modifikasi sendiri sehingga menghasilkan pola yang lebih rumit dan tidak mudah ditebak.

Pada tahun 1976, diperkenalkan Data Encryption Standard (DES), yang dipilih sebagai standard resmi proses informasi (Federal Information Processing Standards atau FIPS) di Amerika Serikat. Tentunya enkripsi dan dekripsi DES sudah bukan level bermain-main dengan pergeseran huruf dan pola substitusi lagi!

DES menggunakan 56-bit key untuk melakukan enkripsi dan dekripsi. Apa lagi sih yang dimaksud dengan 56-bit key? 56-bit key menunjukkan jumlah kemungkinan key yang digunakan dalam sebuah chiper.

Ungkapan sederhananya adalah, jika dikatakan 56-bit key maka kemungkinan key yang dapat dihasilkan adalah sebanyak 256 (2 pangkat 56), dan itu adalah jumlah yang luar biasa banyaknya!

Kriptografi memiliki musuh yang memiliki nama seram, yaitu Brute Force Attack, sebuah metode untuk membongkar enkripsi dengan mencoba satu-persatu key yang dimungkinkan, sampai akhirnya didapatkan key yang benar untuk melakukan dekripsi.

Pada tahun 1998, DES dapat dipecahkan dengan Brute Force Attack dalam hitungan hari, hal ini tidak mengherankan karena Brute Force Attack dapat mencoba jutaan key dalam 1 detik. Bahkan dimungkinkan beberapa komputer bekerja secara paralel bersama-sama melakukan Brute Force Attack yang semakin mempercepat proses pencarian.

Contoh Brute Force Attack adalah seperti pada gambar berikut:


Jelaslah bahwa ungkapan “Size Doesn’t Matter” tidak berlaku di dunia enkripsi! Dengan hanya berbekal “size” sebesar 56-bit key, DES saat ini tidak lagi dianggap aman. Penerusnya adalah Advanced Encryption Standard (AES), atau dikenal juga dengan Rijndael. AES merupakan salah satu algoritma paling populer yang menggunakan symmetric key.

Ukuran AES tentu tidak lagi sekecil DES, AES menggunakan 128-bit, 192-bit, atau 256-bit key, sehingga dipercaya akan memerlukan waktu jutaan tahun untuk membongkar AES dengan menggunakan mesin tercepat pada saat ini. Walaupun demikian, AES berhasil diserang pada tahun 2006 dengan menggunakan Side Channel Attack.

Side Channel Attack sendiri merupakan serangan berbasis informasi yang dikumpulkan dari implementasi sistem, dan bukan menemukan kelemahan algoritma yang diserang. Informasi yang dapat menjadi titik lemah target adalah perpindahan keluar masuk data pada CPU atau memory, waktu yang dibutuhkan untuk memroses sebuah perhitungan, hingga konsumsi tenaga listrik yang digunakan hardware selama perhitungan.

Metode seperti DES dan AES menggunakan algoritma symmetric key, dimana terdapat satu key untuk melakukan enkripsi dan dekripsi. Dengan menggunakan algoritma asymmetric key, terdapat pasangan key atau dua key yang berbeda, yang disebut public key dan private key.

Public key dapat didistribusikan pada pihak yang ingin melakukan enkripsi, sementara private key khusus dipegang oleh penerima untuk melakukan dekripsi. Contoh enkripsi yang menggunakan asymmetric key adalah RSA.

Selain symmetric key dan asymmetric key, juga terdapat metode one-way hash, yaitu hanya melakukan satu kali proses enkripsi tanpa pernah ada proses kebalikannya. Contoh penerapannya adalah pada function MD2, MD4, MD5, atau SHA. Function-function tersebut dapat Anda terapkan untuk membangun aplikasi dan database dengan tingkat keamanan yang tinggi.

Waspada Terhadap Serangan

Sesuatu yang rahasia, sudah pasti mengundang kehadiran pihak-pihak yang ingin membongkarnya dengan berbagai motif. Bisa karena penasaran dan tertantang, hobi, patah hati (semoga tidak terjadi pada cerita Si Joko diatas), bahkan bisa jadi karena memang pekerjaannya adalah untuk membongkar enkripsi!

Beberapa jenis serangan telah disebutkan diatas, seperti Brute Force Attack dan Side Channel Attack. Beberapa serangan lain yang umum dikenal antara lain adalah:

1. Dictionary Attack.
Jika Brute Force Attack mencoba semua kemungkinan key untuk membongkar enkripsi, maka serangan jenis Dictionary Attack berusaha mempersempit pencarian dengan menyediakan sebuah “kamus” key yang sering digunakan.

Itulah sebabnya Anda sering mendapatkan saran bahwa key atau password sebaiknya tidak menggunakan kata-kata umum, sebaiknya diatas 6 karakter atau lebih, merupakan gabungan huruf, angka, dan spesial karakter, bukan merupakan tanggal, sebaiknya diganti setiap 3 bulan, dan seterusnya.

Jika semua hal diatas Anda ikuti, maka memperkecil kemungkinan orang untuk membongkarnya, sekaligus memperbesar kemungkinan Anda lupa mengingatnya! Tapi memang seperti itulah konsekuensinya, tinggal bagaimana cara Anda agar tidak lupa, apakah mengucapkannya tiap pagi, atau menggunakan mantra Harry Potter.

Kembali pada cara kerja Dictionary Attack, serangan tersebut dapat memilih pencarian pada frase atau kata didalam kamus yang sesuai dengan potongan chipertext yang didapatkan, sehingga tidak perlu mencari keseluruhan isi kamus.

2. Denial of Service Attack.
Sering disingkat dengan DoS Attack, umumnya serangan ini mencoba untuk menghabiskan resource komputer dengan cara memberikan paket-paket secara terus-menerus sehingga mengganggu traffic jaringan, sampai akhirnya komputer korban lumpuh.

Serangan dapat diarahkan pada peralatan jaringan seperti router, web server, e-mail, atau server DNS. Salah satu korbannya adalah situs search engine terkenal, yahoo.com yang diserang pada tahun 2000 selama 3 jam dengan paket sebesar 1 gigabyte/detik.

3. Man-in-the-middle Attack.
Merupakan serangan dimana data yang melewati media komunikasi dapat dibaca dan dimodifikasi. Contoh penyerangan Man-in-the-middle Attack adalah pada saat dua orang berkomunikasi dan saling menukar public dan private key (ingat asymmetric key).

Bayangkan Anda dan atasan Anda (sebutlah Mr. John) ingin berkomunikasi secara rahasia, Mr. John meminta Anda untuk memberikan public key yang Anda pegang. Saat Anda mengirimkan public key Anda, pihak ketiga (penyerang) melakukan intercept (menangkap) data tersebut, dan melakukan modifikasi dengan mengirimkan public key-nya (bukan public key Anda!) kepada Mr. John!

Mr. John yang mengira public key tersebut milik Anda, akan melakukan enkripsi dengan public key dan mengirimkan pesan yang terenkripsi tersebut pada Anda. Sekali lagi, penyerang akan menangkap pesan tersebut, mendekripsi pesan dengan private key miliknya sehingga mendapatkan pesan asli.

Tidak hanya itu, pesan asli kemudian didekripsi lagi menggunakan public key Anda, dan dikirimkan kembali pada Anda. Kira-kira demikianlah Man-in-the-middle Attack bekerja.

Masih banyak lagi jenis-jenis serangan lain yang menambah suka duka (mungkin lebih banyak dukanya) dunia computer security. Beberapa pencegahan yang dapat dilakukan adalah enkripsi berlapis, atau mempelajari sifat serangan dan membuat antinya (contohnya Anda dapat mempelajari aplikasi/jaringan yang diserang bertubi-tubi atau keadaan yang tidak wajar melalui log).

Secure Sockets Layer

Enkripsi mutlak diperlukan pada komunikasi data, apalagi pada dunia Internet, tidak dapat dibayangkan apa jadinya kegiatan browsing, e-mail, atau instant message tanpa enkripsi, mungkin tidak ada satupun orang yang berani melakukan transaksi ataupun percakapan rahasia.

Secure Sockets Layer (SSL) merupakan protokol yang bertanggung jawab untuk keamanan komunikasi melalui Internet. Dikembangkan oleh Netscape, pada tahun 1996 dikeluarkan SSL versi 3.0. SSL mutlak diperlukan pada e-commerce dan institusi-institusi keuangan.

Proses pada SSL dapat dituliskan sebagai berikut:

1. Browser terhubung pada server dengan SSL dan meminta server untuk mengirimkan identifikasi. Anda akan melihat bahwa URL Anda beralamatkan pada https (dan bukan http) yang menandakan bahwa situs tersebut secure, dilengkapi dengan logo gembok pada bagian bawah browser.

2. Server mengirimkan identifikasi berupa form digital certificate berisi nama server, CA (Certified Authority), dan public key. Browser memberikan daftar algoritma enkripsi dan function hashing. Dari daftar algoritma yang dihasilkan oleh browser tersebut, server mengambil enkripsi yang terbaik.

3. Browser menggunakan public key dari server untuk melakukan enkripsi yang menghasilkan data acak dan mengirimkannya ke server. Browser atau client dapat melakukan enkripsi, dan hanya server yang dapat melakukan dekripsi data tersebut dengan menggunakan private key.

4. Server mengembalikan lebih banyak data acak, baik server maupun browser menggunakan algoritma/function pada data acak tersebut untuk menghasilkan session key. Dengan demikian tercipta hubungan komunikasi yang secure berdasarkan session key sebagai pengenal.

Pretty Good Privacy

Nama Pretty Good Privacy Encryption atau PGP Encryption pada awalnya sering terdengar untuk melakukan enkripsi pada e-mail dan attachment pada desktop client. PGP sendiri merupakan sebuah program yang menyediakan metode kriptografi dan otentifikasi.

Sejalan dengan pengembangannya, saat ini PGP tidak digunakan sebatas e-mail, tetapi sudah digunakan untuk enkripsi instant message, file dan folder, dan lain sebagainya. PGP menggunakan baik symmetric key maupun asymmetric key, dengan menyisipkan digital signature.

PGP Encryption memiliki tingkat keamanan yang baik, PGP selalu menggunakan bit key minimal 128-bit key. Salah satu produk ternama yang menggunakan PGP adalah McAfee.

Contoh data yang telah dienkripsi dengan PGP Encryption adalah sebagai berikut:


Pengamanan Aplikasi

Jika Anda telah membaca sampai disini, apa yang akan Anda lakukan berkaitan dengan enkripsi? Mungkin Anda sesegera mungkin memberikan pengamanan pada aplikasi, atau justru menyembunyikan artikel ini agar tidak terbaca oleh pimpinan Anda (yang akan memberikan pekerjaan tambahan), apapun itu, jika aplikasi Anda bertanggung jawab atas data-data penting, sudah tentu kewajiban Anda memberikan pengamanan yang baik.

Keamanan yang tinggi tidak hanya diperlukan untuk aplikasi web-based e-commerce, tetapi juga aplikasi yang berjalan pada jaringan atau bahkan aplikasi stand-alone, semuanya tergantung pada kerahasiaan data Anda.

Seberapa pentingnya sebuah data? Jika sebuah pesan cinta saja dapat memerlukan enkripsi, Anda dapat membayangkan sekumpulan data kartu kredit, pin, transaksi, dan lain sebagainya. Tentunya bukan hal yang menyenangkan jika seseorang yang tidak dikenal dapat menggunakan kartu kredit Anda untuk berbelanja di Internet.

Anda dapat menggunakan metode enkripsi yang telah dijelaskan diatas pada aplikasi yang sedang Anda develop, pada umumnya Anda akan mendapatkannya dalam bentuk component dimana Anda dapat memanggil function-function yang terdapat pada komponen tersebut untuk melakukan enkripsi/dekripsi, dan mendefinisikan parameter-parameter yang diperlukan.

Pada Visual Basic .NET, bahkan telah disediakan namespace Security.Cryptography yang memungkinkan Anda menggunakan metode-metode kriptografi untuk melakukan enkripsi data.

Enkripsi dari sisi aplikasi hanyalah satu bentuk pengamanan, masih diperlukan pengamanan lain dari sisi database, konfigurasi user pada sistem operasi, web server untuk aplikasi web, hardware dan lain sebagainya yang membentuk suatu sistem keamanan yang tinggi.

Sebagai penutup, mungkin Anda sering mengirimkan makian dan kutukan saat data Anda berhasil disadap oleh orang yang tidak bertanggung jawab. Tetapi Anda tentu setuju, bahwa Anda hanya memerlukan waktu 1 menit untuk menyembunyikan suatu benda, tetapi orang lain bisa jadi menghabiskan waktu 10 menit untuk mencari benda yang Anda sembunyikan.

Dengan kata lain, sebenarnya tugas Anda untuk mengamankan data relatif lebih mudah daripada orang yang ingin mencurinya. Tetapi sering kali kita baru bertindak setelah terjadi pencurian data, sementara pencuri data tidak lelah-lelahnya setiap saat mencoba mendapatkan data Anda.

Karena itu, meluangkan waktu untuk menjaga data-data rahasia Anda dan terus mempelajari perkembangan keamanan data, tentunya akan sangat bermanfaat. Semoga!






6 Comments to “Enkripsi”

  1.   venty | March 13th, 2010 at 10:47 am     

    enkrispsi dalam sebuah data sangatlah dibutuhkan…
    thx artikelnya kawand…

  2.   nieza | April 26th, 2010 at 10:29 am     

    artikel yang menarik

  3.   Berkece | December 2nd, 2015 at 2:03 am     

    Mantab baner kawan artikelnya..

  4.   Elbaihaki | December 2nd, 2015 at 2:04 am     

    Nice artikel. sangat bermanfaat..

Leave a Comment