Berikut adalah beberapa usulan untuk mengintegrasikan kebutuhan keamanan dengan proses pengembangan perangkat lunak.
1. Menyatukan aspek keamanan dengan rekayasa sistem
Pada saat sistem analis menganalisis dan mendesain sistem, analis keamanan harus mengembangkan desain keamanan. Untuk selanjutnya sumber daya yang ada dibangun dengan kombinasi desain sistem dengan desain keamanan.
2. Menyatukan aspek keamanan dengan system requirement
Ketika kebutuhan keamanan dipertimbangkan selama daur hidup pengembangan sistem, maka hal menjadi cenderung pada penentuan daftar keamanan sistem seperti manajemen password, firewall, pendeteksian virus dsb. Padahal hal ini bukan merupakan kebutuhan keamanan tapi merupakan mekanisme implementasi yang digunakan untuk memenuhi kebutuhan keamanan secara implisit, misalnya untuk pembatasan akses. Hasilnya adalah, kebutuhan keamanan yang khusus untuk sistem dan perlindungan terhadap suatu layanan dan sumber daya seringkali dilupakan. Sebagai tambahan, perspektif penyerang tidak dipertimbangkan. Untuk itu diperlukan pendekatan sistematik dalam manajemen kebutuhan keamanan akan mencegah permasalahan daftar keamanan sistem dan mengubahnya pada perspektif penyerang.
Program CERT pada Software Engineering Institute's telah mengembangkan sebuah metodologi untuk membangun keamanan sejak awal pada daur hidup pengembangan sistem yang disebut Security Quality Requirements Engineering (SQUARE).
Hasil analisis kebutuhan melalui metodologi SQUARE dengan menganalisis komponen fungsionalitas keamanan yang dideskripsikan pada CC part 2 digunakan sebagai dasar untuk membuat SFR ( Security Functional Requirement ) sebagai pelengkap SRS( Software Requirement Specification ). SFR yang merupakan bagian dari Protection Profile merupakan Security target yang menggambarkan kebutuhan pengguna dalam aspek keamanan.
3. Menyatukan aspek keamanan dengan model sistem
Pengembang perangkat lunak menggunakan model sejak proses awal siklus pengembangan software untuk meningkatkan kualitas artifact dokumen requirement. Kecenderungan yang ada adalah menggunakan model berorientasi obyek ( UML ). Salah satu riset yang dilakukan oleh komunitas software dan keamanan adalah mengadopsi dan mengembangkan standar, misalnya : UML untuk memodelkan fitur keamanan seperti privacy, integrity, access control dsb. Keuntungan yang bisa didapatkan adalah : 1 ) Menyatukan desain sistem dan kebijakan keamanan, 2) Modularitas ( melalui encapsulation) dan reuse ( melalui pewarisan ) dalam representasi kebijakan, 3) Mengembangkan tool standar saat ini untuk aktivits analisis dan desain( forward engineering ) sebagaimana analisis legacy systems( reverse engineering ).
Tantangan utama adalah mengembangkan sintaks dan semantik standar seperti UML untuk menangani permasalah keamanan. Riset untuk mengembangkan tools dan proses untuk menyatukan desain sistem dan kebijakan keamanan dipercayai mampu menghasilkan sistem yang lebih efektif memenuhi kebutuhan pengguna dan aman.
4. Menyatukan aspek keamanan dengan desain sistem
Desain system dilakukan dengan dua pendekatan, yakni : 1) Penggunaan Security Design Pattern, 2) Penggunaan Aspect Oriented Programming( AOP ).
• Penggunaan Security Design Pattern
Design pattern merupakan suatu cara untuk mengidentifikasi dan memberikan solusi terhadap permasalahan desain yang berulang-ulang terjadi pada pemrograman berorientasi obyek. Joseph Yoder and Jeffrey Barcalow adalah yang pertama kali mengadaptasi pendekatan design pattern pada pemgembangan perangkat lunak. Format yang digunakan adalah template design pattern yang dibuat oleh Gang of Four. Berikut adalah security design pattern : 1) Single Access Point : menyediakan sebuah modul keamanan dan satu cara untuk log in ke dalam sistem, 2) Check Point : manajemen pemeriksaan keamanan, 3) Roles : manajemen penggunan dengan security privileges, 4) Session : lokalisasi informasi global pada lingkungan banyak pengguna, 5) Full View with Errors: penyediaan sebuah view penuh kepada pengguna dan menampilkan exceptions ketika diperlukan, 6) Limited View : hanya memperbolehkan pengguna untuk melihat apa yang diperbolehkan untuk mereka, 7) Secure Access Layer: mengintegrasikan keamanan aplikasi dengan keamanan level yang lebih rendah( missal : jaringan ).
Sangat dimungkinkan di kemudian hari untuk menambah katalog security design pattern seiring dengan berkembangnya kesadaran akan integrasi aspek keamanan pada desain perangkat lunak.
• Penggunaan Aspect Oriented Programming( AOP )
Penggunaan aspect-oriented programming dapat digunakan untuk memisahkan permasalahan keamanan dalam sistem yang kompleks. Ide aspect-oriented programming adalah beberapa aspek dari kode secara alami adalah modular, seperti penyimpanan data yang dapat ditempatkan dalam basis data.
Sementara yang lain( biasanya non fungsionalitas ) seperti performansi tersebar( scattered ) pada kode. Dengan memisahkan kode yang tersebar dengan cara mengkodingkan dan mengisolasi terpusat dalam aspect-aspect maka memudahkan dalam manajemen kode ( aspect ) dan pengembangan sistem.
5. Menyatukan aspek keamanan dengan pengujian sistem
Pengujian aspek keamanan menggunakan EAL sesuai dengan tingkat EAL yang diterapkan dalam pembangunan perangkat lunak. Secara teknis, dapat digunakan pendekatan pengujian unit secara otomatis dengan menggunakan framework N-unit testing.
Catatan :
CC : Common Criteria, merupakan salah satu standar aspek keamanan dalam produk TI
Tuesday, June 10, 2008
Subscribe to:
Posts (Atom)