Arsitektur keamanan Java

Kolom "Di Balik Terpal" bulan ini adalah yang pertama dari seri empat bagian tentang model keamanan Java. Keempat artikel tersebut akan berfokus pada infrastruktur keamanan yang dibangun ke dalam mesin virtual Java (JVM) dan pustaka java.lang. Artikel pertama ini memberikan gambaran umum tentang model keamanan dan menjelaskan fitur keamanan JVM.

Mengapa keamanan?

Model keamanan Java adalah salah satu fitur arsitektur utama bahasa yang menjadikannya teknologi yang sesuai untuk lingkungan jaringan. Keamanan penting karena jaringan memberikan jalan potensial serangan ke komputer mana pun yang terhubung dengannya. Perhatian ini menjadi sangat kuat dalam lingkungan di mana perangkat lunak diunduh melalui jaringan dan dijalankan secara lokal, seperti yang dilakukan dengan applet Java, misalnya. Karena file kelas untuk applet secara otomatis diunduh ketika pengguna membuka halaman Web yang memuatnya di browser, kemungkinan besar pengguna akan menemukan applet dari sumber yang tidak tepercaya. Tanpa keamanan apa pun, ini akan menjadi cara mudah untuk menyebarkan virus. Dengan demikian, mekanisme keamanan Java membantu membuat Java cocok untuk jaringan karena mekanisme tersebut membangun kepercayaan yang diperlukan dalam keamanan kode jaringan seluler.

Model keamanan Java difokuskan untuk melindungi pengguna dari program bermusuhan yang diunduh dari sumber tidak tepercaya di seluruh jaringan. Untuk mencapai tujuan ini, Java menyediakan "kotak pasir" yang dapat disesuaikan tempat program Java dijalankan. Program Java harus diputar hanya di dalam kotak pasirnya. Ia dapat melakukan apa saja di dalam batas kotak pasirnya, tetapi tidak dapat melakukan tindakan apa pun di luar batas tersebut. Sandbox untuk applet Java yang tidak tepercaya, misalnya, melarang banyak aktivitas, termasuk:

  • Membaca atau menulis ke disk lokal
  • Membuat koneksi jaringan ke sembarang host, kecuali host dari mana applet itu berasal
  • Membuat proses baru
  • Memuat pustaka dinamis baru dan langsung memanggil metode bawaan

Dengan membuat kode yang didownload tidak mungkin untuk melakukan tindakan tertentu, model keamanan Java melindungi pengguna dari ancaman kode yang tidak bersahabat.

Kotak pasir ditentukan

Biasanya, Anda harus mempercayai perangkat lunak sebelum menjalankannya. Anda mencapai keamanan dengan berhati-hati hanya menggunakan perangkat lunak dari sumber tepercaya, dan dengan memindai virus secara teratur hanya untuk memastikan semuanya aman. Setelah beberapa perangkat lunak mendapat akses ke sistem Anda, itu memiliki kendali penuh. Jika itu berbahaya, itu dapat menyebabkan kerusakan besar pada sistem Anda karena tidak ada batasan yang ditempatkan pada perangkat lunak oleh lingkungan runtime komputer Anda. Jadi, dalam skema keamanan tradisional, Anda mencoba mencegah kode berbahaya mendapatkan akses ke komputer Anda sejak awal.

Model keamanan kotak pasir mempermudah bekerja dengan perangkat lunak yang berasal dari sumber yang tidak sepenuhnya Anda percayai. Alih-alih keamanan dibuat dengan meminta Anda untuk mencegah kode apa pun yang tidak Anda percayai masuk ke komputer Anda, model kotak pasir memungkinkan Anda menerima kode dari sumber mana pun. Namun saat berjalan, kotak pasir membatasi kode dari sumber yang tidak tepercaya untuk mengambil tindakan apa pun yang mungkin dapat merusak sistem Anda. Keuntungannya adalah Anda tidak perlu mencari tahu kode apa yang bisa dan tidak bisa Anda percayai, dan Anda tidak perlu memindai virus. Kotak pasir itu sendiri mencegah virus atau kode berbahaya lainnya yang mungkin Anda undang ke komputer Anda untuk melakukan kerusakan.

Kotak pasir tersebar luas

Jika Anda memiliki pemikiran yang sangat skeptis, Anda harus yakin bahwa kotak pasir tidak bocor sebelum Anda mempercayainya untuk melindungi Anda. Untuk memastikan sandbox tidak bocor, model keamanan Java melibatkan setiap aspek arsitekturnya. Jika ada area dalam arsitektur Java yang keamanannya lemah, programmer jahat ("cracker") berpotensi dapat mengeksploitasi area tersebut untuk "berkeliling" ke kotak pasir. Oleh karena itu, untuk memahami sandbox, Anda harus melihat beberapa bagian berbeda dari arsitektur Java dan memahami cara kerjanya.

Komponen dasar yang bertanggung jawab atas kotak pasir Java adalah:

  • Fitur keamanan dibangun ke dalam mesin virtual Java (dan bahasa)
  • Arsitektur pemuat kelas
  • Pemverifikasi file kelas
  • Manajer keamanan dan Java API