Saturday, 25 January 2014

Pengamanan (Security) pada Komunikasi Data

Tujuan dari tulisan ini, lebih kurang akan memberikan gambaran yang cukup sederhana mengenai aspek pengamanan, jika kita ingin membangun sebuah solusi yang menuntut adanya komunikasi data antar sistem atau institusi. Tulisan ini tidak menyajikan aspek teknis yang cukup detail, tetapi mencoba mengkaji beberapa hal yang akan menciptakan keamanan yang optimal bagi data atau informasi yang kita memiliki terutama pada saat data atau informasi tersebut harus kita kirimkan ke institusi yang lain.

Kita sering menjumpai suatu kondisi dimana proyek perangkat lunak, lebih banyak berdiskusi tentang functional design dari aplikasi yang sedang dikembangkan. Sementara itu, diskusi mengenai aspek pengamanan terkadang luput dari item yang seharusnya menjadi kunci jika aplikasi yang sedang kita kembangkan berkaitan dengan komunikasi data dengan pihak luar, baik interaksi dengan menggunakan internet atau komunikasi yang dedicated host-to-host.

Terdapat beberapa item pengamanan yang harus kita perhatikan atau kita pertanyakan dalam setiap proyek yang melibatkan komunikasi dengan pihak luar. Tujuan utama dari tulisan ini adalah, kita mencoba melihat topik atau item apa saja yang harus kita perhatikan dalam pengamanan data kita dan pilihan pengamanan yang ada dalam rekayasa perangkat lunak.

Tujuan Pengamanan Data

Dalam pengaman, kita akan berhubungan dengan koncep yang sering kita sebut Cryptography. Cryptography adalah sebuah study atau kajian praktis dalam menggunakan teknik matematika atau lebih dikenal sebagai algoritma untuk mengamankan data atau informasi yang kita miliki.

Dalam cryptography, ada beberapa mekanisme atau tujuan yang ingin kita capai dalam pengamanan data/informasi. Secara sederhana, makna atau tujuan dari sebuah pengamanan data memiliki 4 hal, yaitu data integrity, confidentiality, authentication dan non-repudiation.

Data Integrity Data integrity dalam cryptography adalah sebuah mekanisme untuk menjamin bahwa data yang kita transfer atau kirimkan dari satu titik ke titik lainnya tidak akan mengalami perubahan selama proses transmisi. Jika kita mengirimkan sebuah berita untuk "kiriman uang sejumlah satu juta rupiah", kita tentu berharap data tersebut tidak mengalami perubahan selama proses transmisi. Sangat tidak diharapkan, jika kemudian berita tersebut berubah selama proses transmisi menjadi "kiriman uang sejumlah lima juta rupiah". 
Ilmu cryptography mencoba menciptakan mekanisme untuk menjamin sang penerima berita bahwa data yang telah dia terima tidak mengalami perubahan selama perjalanannya.

Confidentiality
Kita tidak dapat mencegah orang lain untuk "mencuri" data yang kita miliki, baik tercuri pada saat transmisi maupun dari tempat penyimpanan data. Cryptography mengkaji bagaimana agar data yang kita miliki hanya dapat dimengerti oleh pihak-pihak yang berkepentingan. Layaknya sebuah sandi atau kode rahasia dalam surat yang kita kirimkan kepada pihak luar. Dengan menuliskan informasi yang kita miliki dengan menggunakan sandi atau kode rahasia, maka kita berharap jika seandainya data kita tercuri, pihak yang mencoba melakukan niat jahat ini tetap tidak akan berhasil untuk mengerti isi dari berita yang kita kirimkan.

Authentication
Pada saat kita menerima surat, dokumen atau berita dari pihak lain, pernahkah kita bertanya bahwa pengirim berita tersebut sebenarnya telah dikirimkan oleh orang lain dengan menggunakan nama yang kita kenal. Dalam keseharian, kita sering menggunakan tanda tangan secara cara untuk melihat apakah sebuah surat benar-benar dari pihak yang kita harapkan. Tetapi kita akan tetap memiliki kesulitan untuk benar-benar menjamin apakah tanda tangan tersebut adalah otentik atau palsu. Cryptography mencoba memberikan beberapa alternatif solusi untuk melakukan identifikasi apakah sang pengirim adalah otentik atau pengirim palsu.

Non-Repudiation
Pada saat kita menerima sebuah dokumen atau berita, kita terkadang langsung meng-eksekusi berita tersebut. Tetapi kemudian, pihak pengirim mengatakan bahwa dia tidak pernah merasa mengirim berita yang kita maksudkan. Dalam Cryptography, terdapat kajian untuk meminimalkan situasi seperti ini, dengan mengenalkan konsep non-repudiation.


Metode/Teknik Pengaman Informasi

Setelah kita mengetahui secara garis besar tujuan dari Cryptography, mari kita melihat secara sederhana mengenai teknik pengaman atau dikenal dengan Cryptography Primitive. Cryptography Primitive adalah algorima matematika atau kumpulan instruksi yang dapat kita gunakan untuk mengamankan data atau informasi yang kita miliki.

Encryption
adalah sebuah proses untuk melakukan transformasi dari sebuah "plaintext" (text atau data yang dapat dibaca dan dimengerti) menjadi sesuatu yang tidak bisa dimengerti kecuali pihak yang kita inginkan. Umumnya akan menggunakan kunci-kunci (key) tertentu untuk melakukan ini.

Gambar di bawah ini contoh yang cukup sederhana dari implementasi "encryption". Jika saya ingin mengirimkan data "Kusuma", saya mencoba untuk meng-encrypt data saya dengan cara menggeser urutan abjad. Dalam hal ini, saya menggunakan kunci(key) yang bernilai "2". Huruf "K", jika saya geser 2 langkah dari abjad, akan menjadi huruf "M". 


Tentu saya, ilmu Cryptography memiliki algoritma yang jauh lebih komplek dan rumit. Yang saya coba tampilkan disini adalah sebuah contoh sederhana mengenail enkripsi data. Teknik ini, dapat kita gunakan untuk mewujudkan salah satu tujuan dari funsi cryptography yang telah kita lihat sebelumnya, yaitu "confidentiality". Jika akhirnya data ini tercuri oleh pihak lain, mereka tetap akan kesulitan untuk mengerti makna dari berita tersebut.

Hash Function
Sebuah fungsi matematika yang melakukan konversi dari sekumpulan data/text yang panjang menjadi sebuah kode tertentu. Teknik ini menggunakan formula matematika yang cukup komplek. Seluruh isi berita yang kita miliki akan digunakan sebagai input pada saat formula ini dijalankan. Formula ini kemudian akan menghasilkan kode tertentu (dalam contoh gambar di bawah ini, menghasilkan kode dalam 6 digit). Kode 6 digit ini kemudian yang kita kenal sebagai Hash Number.


Dalam implementasi komunikasi data, kita dapat menyertakan kode Hash Number ini sebagai attachment atau sebagai trailer/header dari berita yang kita kirimkan. Dalam komunikasi data kita mengenal istilah "envelope" dalam komunikasi data untuk membedakan antara berita yang kita kirimkan dengan informasi tambahan mengenai surat kita. Dalam keseharian, kita sering membungkus surat kita dengan amplop, dimana amplop digunakan untuk memberikan informasi mengenai penerima, alamatnya dan informasi lainnya (misal apakah ini kiriman kilat, rahasia dan lain-lain).

Kode HASH ini, dapat kita gunakan dalam rangka implementasi "Data Integrity" yang menjadi salah satu tujuan dalam cryptography. Pada saat kita menerima berita di aplikasi kita, kode hash ini akan kita coba hitung ulang untuk memastikan bahwa data tidak berubah selama proses transmisi.

Terkadang juga kita pernah mendengar istilah 'CHECKSUM' yang memiliki kesamaan dengan konsep HASH ini. Pada saat kita akan men-download sebuah file dari internet, penyedia file terkadang mencantumkan kode checksum, sehingga kita dapat mengidentifikasi atau yakin bahwa hasil download file kita adalah valid.

Message Authentication Code (MAC)
Metode ini hampir sama dengan metode HASH, tetapi akan menggunakan kunci atau key tertentu dalam proses perhitungannya. Untuk memberikan pengamanan yang lebih kuat, kita dapat menambah kunci (key) sebagai input tambahan dari formula atau algoritma Hash. Key ini akan tersimpan pada setiap pihak yang punya kepentingan terhadap data tersebut. Key ini, juga bisa bersifat bilateral yang hanya berlaku antara dua pihak.

Dengan adanya tambahan key atau kunci ini, kita juga bisa menjamin proses "Authentication" yang menjadi salah satu tujuan cryptography. Hal ini karena, kita meyakini bahwa kunci ini hanya berlaku dalam kalangan terbatas.


Pada saat, kita menerima berita dengan tambahan MAC, kita dapat menjamin bahwa data tidak mengalami perubahan selama transmisi dan kita juga yakin bahwa data tersebut dari orang yang kita kenali karena memiliki kunci yang telah disepakati.

Digital Signature
Adalah mekanisme atau algoritma untuk menunjukan otentikasi terhadap sebuah data atau dokumen digital. Beberapa algoritma yang kita kenal seperti RSA, DSA, ECDSA, ElGamal.

Dalam teknik ini, kita akan mengenail adanya "Private Key" dan "Public Key". Konsep yang sederhana adalah, pada saat sebuah data terbungkus oleh apmplop yang dikunci dengan "Private Key", maka hanya orang yang memiliki "pasangan Public Key" yang dapat membukanya. Sebelum implementasi ini, semua pihak akan membuat pasangan kunci "Private" dan "Public". "Private Key" akan disimpan dalam kondisi yang paling aman oleh pemiliknya. Sedangkan "Public Key" akan diberika kepada pihak-pihak dalam kalangan terbatas.


Sesuai dengan namanya, teknik ini digunakan untuk menjamin bahwa berita yang kita terima berasal dari orang yang otentik. Karena berita ini tadinya terkunci oleh sebuah private key yang dimiliki oleh satu pihak tertentu dan kita menggunakan sebuah public key yang kita terima dari pihak tertentu. Dengan metode algoritma tertentu, data tersebut dapat terbuka dengan menggunakan public key yang kita miliki.

Mekanisme ini, juga dapat digunakan untuk "non-repudiation", karena kita menjamin bahwa hanya satu orang yang memiliki private key dan private key adalah sesuatu yang unik dan tersimpan dengan baik oleh pemiliknya.


--------
Link:
Topik tentang mengenai kehidupan di Singapura: Kehidupan di Singapura 
Topik tentang mengenali teknologi informasi: Mengenali Teknologi Informasi


Semoga Bermanfaat
Singapore, Januari 2014
"Di publish dari dalam Tampines Library, sambil menunggu anak saya yang sedang mengikuti kegiatan tidak jauh dari perpustakaan ini."



1 comment:

  1. tertarik ni gan, ijin copas buat bikin tugas kuliah ya, semoga besok ada lagi artikel soal keamanan lagi ya :) terimakasih..

    ReplyDelete

Catatan Pendidikan Menengah (SMP) atau Secondary School di Singapura

Perjalanan pendidikan atau education journey yang akan dilalui oleh lulusan SD atau Primary School akan berlanjut ke jenjang berikutnya yang...