- Jangan pernah menerapkan kriptografi Anda sendiri.
- Selalu gunakan TLS.
- Keamanan berdasarkan ketidakjelasan itu buruk.
Dll Kebanyakan dari mereka umumnya benar. Namun, menurut saya orang-orang secara membabi buta mengikuti aksioma-aksioma ini sebagai kultus kargo. Dan banyak yang tidak benar-benar memikirkan pengecualian terhadap aturan tersebut. Dalam artikel ini, saya akan menyampaikan keberatan saya terhadap gagasan bahwa keamanan melalui ketidakjelasan itu buruk.
Risiko, Pertahanan Berlapis dan Keju Swiss
Salah satu tugas utama keamanan informasi adalah pengurangan risiko. Menurut metodologi OWASP, risiko suatu masalah dihitung menggunakan rumus:
Risiko = Kemungkinan * Dampak
Dengan rumus ini, masalah eksekusi kode jarak jauh (RCE) menimbulkan risiko yang lebih besar daripada masalah skrip lintas situs, karena RCE memiliki dampak yang lebih besar. Semuanya sederhana di sini. Tapi bagaimana dengan metrik probabilitas? Menurut OWASP, probabilitas didefinisikan sebagai berikut:
Pada tingkat tertinggi, ini adalah perkiraan kasar tentang kemungkinan kerentanan tertentu akan diungkapkan dan dieksploitasi oleh penyerang.
Jadi, jika kita mengurangi kemungkinannya, maka kita mengurangi resiko secara keseluruhan. Ini baik. Sebenarnya, ini sangat mirip dengan konsep terkenal "pertahanan mendalam". Ini juga disebut "model keju Swiss".
Menurut model ini, Anda perlu membangun mekanisme pertahanan dalam model berlapis sedemikian rupa sehingga bahkan jika penyerang melewati level pertama, dia akan dihentikan pada orang lain.
Keamanan melalui ketidakjelasan
Jadi mari kita bicara tentang keamanan melalui ketidakjelasan. Merupakan ide yang buruk untuk menggunakannya sebagai satu-satunya lapisan perlindungan Anda. Jika penyerang melewatinya, maka tidak ada lagi yang akan melindungi Anda. Tapi nyatanya, itu lumayan sebagai level "tambahan". Karena memiliki biaya implementasi yang rendah dan biasanya berfungsi dengan baik.
Mari pertimbangkan beberapa skenario:
- Di server saya, SSH berjalan pada port default 22, dan kredensial
root:123456. Apa kemungkinan kompromi?
Kemungkinannya hampir 100%, karena peretas di seluruh Internet adalah layanan brute-force dengan kredensial standar.
- SSH berjalan pada port 22 dan kredensial
utku:123456. Apa kemungkinan kompromi?
Nah, kami telah menghilangkan bahaya kekerasan dengan kredensial standar. Kemungkinan dan risiko berkurang. Namun, kami masih menghadapi banyak serangan yang ditargetkan. Seseorang mungkin menebak nama pengguna utku karena itu adalah nama asli saya.
- SSH berjalan pada port 64323 dan kredensial
utku:123456. Apa kemungkinan kompromi?
Kami telah mengubah nomor port default. Akankah itu membantu? Pertama, kami telah menghilangkan bahaya brute-force standar sekali lagi, karena hanya memindai port umum. Bagaimana dengan sisanya? Saya melakukan polling kecil di twitter saya untuk mengetahui perilaku orang saat memindai port.
Seperti yang Anda lihat, banyak yang cenderung hanya memindai port standar dan paling populer. Jadi, jika Anda mengubah port dari 22 menjadi 64323, maka Anda menghilangkan beberapa potensi serangan. Anda akan mengurangi kemungkinan dan risiko.
Hal yang sama juga berlaku untuk kerentanan perangkat lunak. Jika kerentanan ditemukan di Microsoft Remote Desktop Protocol, seluruh Internet akan mulai memindai port 3389. Anda dapat mengurangi risiko hanya dengan mengubah port default.
Aplikasi lain
Tentu saja, selain mengubah nilai default, Anda dapat menggunakan metodologi yang sama di area lain. Dalam beberapa kasus (tidak selalu) ide-ide berikut dapat diterapkan.
- Penyamaran kode : Tentu saja, ini sudah menjadi rahasia umum. Hacker juga manusia. Jika Anda mengaburkan kode dengan baik, mereka harus menghabiskan lebih banyak waktu untuk mencari masalah. Akhirnya mereka mungkin menyerah.
- Nama variabel acak untuk aplikasi web : Anda dapat menggunakan karakter acak sebagai ganti nama variabel yang bersahabat. Ini dapat membantu dengan cara yang sama seperti obfuscation kode.
- :
encryption_algorithm(data, key). , —decryption_algorithm(data, key). , , , . - - , (, SQL-), .
Keamanan melalui ketidakjelasan banyak digunakan dalam keamanan fisik / dunia nyata. Misalnya, presiden mengemudi dari titik A ke titik B dengan iring-iringan 30 mobil. Tapi dia tidak duduk di mobil kepresidenannya, jangan sampai dia menjadi sasaran empuk. Itu bisa ada di mesin mana pun di tupel, dan ini mengurangi risiko serangan.
Hewan juga mengeksploitasi keamanan melalui ketidakjelasan - ini kamuflase. Stealth mengurangi kemungkinan terbunuh. Oleh karena itu, dalam proses evolusi, mereka memperoleh kemampuan ini.
Keluaran
Keamanan melalui ketidakjelasan saja tidak cukup. Praktik terbaik harus selalu diterapkan. Tetapi jika Anda dapat mengurangi risiko Anda dengan biaya nol, maka Anda harus melakukannya. Ketidakjelasan adalah lapisan yang baik dalam sistem keamanan secara keseluruhan.