Wednesday, October 19, 2016

Security Engineering


Security engineering berkaitan dengan pengembangan dan evolusi sistem yang bisa menolak serangan-serangan jahat, yang bermaksud untuk merusak sistem dan data di dalamnya. Isu keamanan telah menjadi prioritas untuk bisnis maupun individual seiring banyaknya pelaku kriminal mencoba mengeksploitasi sistem untuk tujuan ilegal. Dalam isu keamanan, kita harus mempertimbangkan baik perangkat lunak aplikasi maupun infrastruktur dimana sistem dibangun.

Dalam prakteknya, ada perbedaan utama antara keamanan aplikasi dan keamanan infrastruktur:
  • Keamanan aplikasi adalah masalah pengembangan perangkat lunak dimana pengembang harus memastikan sistem dirancang untuk melawan serangan.
  • Keamanan infrastruktur adalah masalah manajemen dimana manajer sistem mengatur infrastruktur utuk melawan serangan.

Manajemen keamanan sistem meliputi:
  • Manajemen perizinan dan pengguna, termasuk menambah dan menghilangkan pengguna dari sistem, memastikan mekanisme autentikasi pengguna sudah tepat dan mengatur perizinan dalam sistem sehingga pengguna hanya mempunyai akses pada sumber yang mereka perlukan.
  • Pengembangan dan perawatan sistem, termasuk memasang perangkat lunak dan middleware dan mengaturnya dengan baik sehingga keamanan sistem tidak rentan diserang.
  • Pemantauan, deteksi dan pemulihan kembali atas serangan.

Manajemen keamanan sangatlah penting, namun jarang dipertimbangkan sebagai bagian dari penerapan security engineering. Penerapan security engineering berkaitan dengan merancang sebuah sistem seaman mungkin.

Manajemen Resiko Keamanan
Manajemen resiko ini terkait dengan menilai kerugian yang mungkin terjadi akibat serangan pada aset dalam sistem dan menyeimbangkan kerugian tersebut dengan biaya prosedur keamanan yang dapat mengurangi kerugian tersebut. Manajemen resiko cenderung merupakan isu bisnis daripada isu teknis sehingga para pengembang sistem tidak harus memutuskan kontrol apa saja yang harus ada pada sistem. Penilaian resiko dimulai sebelum keputusan untuk membuat sistem dibuat dan harus berlangsung selama proses pengembangan sistem dan setelah sistem digunakan. Tahap-tahap proses penilaian resiko adalah sebagai berikut.
  1. Preliminary risk assessment: Kebutuhan sistem secara mendetail, rancangan sistem atau teknologi implementasi belum diputuskan pada tahap ini. Tujuan tahap ini adalah untuk memutuskan jika level keamanan yang memadai bisa diperoleh dengan harga yang masuk akal.
  2. Life-cycle risk assessment: Dilaksanakan selama siklus hidup pengembangan sistem dan berdasarkan pada rancangan teknis sistem dan keputusan implementasi. Hasilnya dapat mengarah pada perubahan kebutuhan keamanan dan penambahan kebutuhan baru
  3. Operational risk assessment: Kelanjutan penilaian sebelumnya, dimana adanya kebutuhan keamanan baru yang harus diimplementasikan seiring sistem berevolusi.


Rancangan Keamanan
Secara umum sangat sulit untuk menambah fitur keamanan pada sebuah sistem yang telah diimplementasi. Oleh karena itu, kita perlu menyiapkan isu keamanan selama proses perancangan sistem. Langkah-langkah keamanan terkadang mengharuskan pengguna untuk mengingat dan menetapkan informasi tambahan (contoh: multiple password). Namun terkadang pula pengguna melupakan informasi ini sehingga pengamanan tambahan berarti mereka tidak bisa menggunakan sistem. Ada beberapa hal yang harus diperhatikan dalam rancangan sistem yang aman

1. Desain arsitektur
Dalam merancang arsitektur sistem yang mampu memelihara keamanan, kita harus memperhatikan dua hal:
  • Perlindungan - bagaimana seharusnya sistem diatur sehingga aset yang penting bisa dilindungi dari serangan eksternal?
  • Distribusi - bagaimana seharusnya aset sistem disebarkan sehingga efek serangan yang berhasil bisa dikurangi?

Dua isu ini berpotensi menimbulkan masalah. Jika kita meletakkan semua aset dalam satu tempat, maka perlindungan berlapis bisa dibangun disekelilingnya. Karena hanya perlu membangun sistem perlindungan tunggal, kita bisa memperoleh sistem yang kuat dengan beberapa lapis perlindungan, namun jika perlindungan tersebut gagal, maka seluruh aset berada dalam bahaya. Di sisi lain, jika aset disebarkan, biaya untuk melindunginya akan lebih besar sebab sistem perlindungan harus diimplementasikan pada tiap unit aset

2. Good Practice
Ada panduan umum yang mempunyai kemampuan penerapan yang luas ketika merancang keamanan sistem, dua prinsip penggunaannya adalah:
  • Membantu meningkatkan kesadaran akan isu keamanan dalam tim pengembang perangkat lunak
  •  Dapat digunakan sebagai daftar tinjauan untuk proses validasi sistem.

10 hal di dalam panduan tersebut adalah sebagai berikut.
  1. Buatlah keputusan keamanan berdasarkan pada kebijakan keamanan eksplisit
  2. Hindari kegagalan di satu tempat
  3. Gagal dengan aman
  4. Seimbangkan keamanan dan usability
  5. Log user actions
  6. Gunakan redundansi dan keragaman untuk mengurangi resiko
  7. Validasi semua input
  8. Kelompokkan aset
  9. Desain untuk deployment
  10. Desain agar bisa dipulihkan kembali
3. Desain untuk Deployment
Built-in support untuk deployment harus selalu disediakan untuk mengurangi kemungkinan administrator sistem atau pengguna melakukan kesalahan ketika mengkonfigurasi sistem. Sommerville menyarankan empat cara untuk memasukkan deployment support dalam sebuah sistem:
  1. Masukkan support untuk melihat dan menganalisa konfigurasi
  2. Minimalisir default privileges
  3. Tempatkan pengaturan konfigurasi di satu tempat
  4. Fasilitasi cara mudah untuk memperbaiki kerentanan sistem
Ketahanan Sistem
Keamanan sistem tidak hanya bergantung pada keputusan internal, namun juga pada keamanan aplikasi eksternal, web services dan infrastruktur jaringan. Artinya, terlepas dari sebanyak apapun perhatian pada tingkat keamanan, itu tidak menjamin sebuah sistem bisa melawan serangan eksternal. Oleh karena itu, kita harus memikirkan bagaimana membuat sebuah sistem kuat bertahan untuk mengirimkan pelayanan yang esensial kepada pengguna.

Ketahanan sistem merefleksikan kemampuan sebuah sistem untuk tetap mengirimkan pelayanan maupun proses bisnis yang penting kepada pengguna yang berhak ketika sedang diserang atau setelah sebagian dari sistem dirusak. Menjaga ketersediaan pelayanan penting adalah inti dari ketahanan sistem. Menurut Ellison, ada tiga strategi komplementer dalam mencapai ketahanan:
  1. Resistance, yaitu menghindari masalah dengan membangun kekuatan sistem untuk melawan serangan
  2. Recognition, yaitu mendeteksi serangan dan kegagalan serta menaksir akumulasi kerusakan
  3. Recovery, yaitu membangun kekuatan sistem untuk mengirimkan pelayanan penting ketika sedang diserang dan memulihkan kembali fungsionalitas penuh setelah diserang.

Berikut adalah tahap-tahap analisis agar sistem mampu bertahan:
  1. System understanding
  2. Critical service identification
  3. Attack simulation
  4. Survivability analysis


EmoticonEmoticon