Institut Teknologi Massachusetts. Kursus Kuliah # 6.858. "Keamanan sistem komputer." Nikolai Zeldovich, James Mickens. Tahun 2014
Keamanan Sistem Komputer adalah kursus tentang pengembangan dan implementasi sistem komputer yang aman. Ceramah mencakup model ancaman, serangan yang membahayakan keamanan, dan teknik keamanan berdasarkan pada karya ilmiah baru-baru ini. Topik meliputi keamanan sistem operasi (OS), fitur, manajemen aliran informasi, keamanan bahasa, protokol jaringan, keamanan perangkat keras, dan keamanan aplikasi web.
Kuliah 1: “Pendahuluan: model ancaman”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 2: "Kontrol serangan hacker"
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 3: “Buffer Overflows: Exploits and Protection”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 4: “Pemisahan Hak Istimewa”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 5: "Dari mana sistem keamanan berasal?"
Bagian 1 /
Bagian 2Kuliah 6: “Peluang”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 7: “Kotak Pasir Klien Asli”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 8: “Model Keamanan Jaringan”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 9: "Keamanan Aplikasi Web"
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 10: “Eksekusi simbolik”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 11: “Bahasa Pemrograman Web / Web”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 12: Keamanan Jaringan
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 13: "Protokol Jaringan"
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 14: "SSL dan HTTPS"
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 15: “Perangkat Lunak Medis”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 16: “Serangan Saluran Samping”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 17: “Otentikasi Pengguna”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 18: “Penjelajahan Pribadi di Internet”
Bagian 1 /
Bagian 2 /
Bagian 3 Adakah yang melihat ini sebagai masalah potensial? Masalah pertama adalah bahwa orang selalu mengeluh tentang kinerja ketika datang ke keamanan. Ketika Anda mereset memori dan program Anda dibatasi oleh kemampuan perangkat I / O, ini bukan masalah, Anda hanya menunggu sampai bagian mekanis dari hard disk atau sesuatu yang lain berhasil.

Tetapi bayangkan program Anda terikat pada prosesor dan, mungkin, berinteraksi sangat intensif dengan memori, mengalokasikan dan merilis data. Dalam hal ini, memusatkan memori secara serius dapat mengurangi kinerja sistem dan akan menjadi harga keamanan yang tidak ingin Anda bayar. Ini biasanya bukan masalah dalam praktik. Tapi seperti yang kita semua tahu, orang-orang sangat menghargai kinerja, sehingga pilihan untuk mengatur ulang memori pasti akan menemui keberatan.
Alternatif untuk mem-nolkan memori dapat mengenkripsi data saat tiba untuk penyimpanan permanen. Artinya, data dienkripsi sebelum aplikasi menulisnya ke SSD atau HDD. Kemudian, ketika data atas permintaan program dikembalikan dari penyimpanan stabil, data tersebut didekripsi secara dinamis sebelum memasuki RAM. Dalam metode perlindungan ini, menarik bahwa jika Anda membuang kunci yang Anda gunakan untuk mengenkripsi dan mendekripsi data, penyerang tidak akan dapat memulihkan data ini dari disk. Ini mengasumsikan bahwa Anda benar-benar mempercayai kriptografi.
Jadi ini sangat, sangat bagus, karena memberi kita kesempatan untuk tidak mengingat semua tempat di mana Anda menulis data terenkripsi ini. Anda mungkin bertanya, mengapa membuang kunci, karena kami menganggap semua data terenkripsi sebagai sesuatu yang dapat dipilih kembali?
Sebagai contoh, pertimbangkan sistem operasi Open BSD, yang memiliki opsi enkripsi swap. Dengan begitu, Anda dapat mengaitkan kunci dengan berbagai bagian file halaman, mis. Apa yang saya sebutkan terjadi. Karena itu, setiap kali Anda mem-boot komputer, OS ini menghasilkan banyak kunci baru. Setelah komputer dimatikan atau dihidupkan ulang, itu akan melupakan semua kunci yang digunakannya untuk mengenkripsi ruang swap. Kita dapat mengatakan bahwa swap sekarang tersedia untuk digunakan kembali dan karena kunci-kunci ini dilupakan, kita dapat mengasumsikan bahwa penyerang tidak akan dapat mencapai barang-barang yang disimpan di sana.
Siswa: bagaimana entropi kunci ini ditetapkan dan apakah mungkin untuk menguraikannya?
Profesor: Ini pertanyaan yang bagus. Saya tidak tahu sumber daya entropi apa yang digunakan di sini. BSD terbuka memiliki paranoia tentang keamanan. Karena itu, saya berasumsi bahwa dia, misalnya, mempertimbangkan kumpulan entropi yang dikumpulkan dari input data dari keyboard pengguna, dan hal-hal serupa lainnya. Saya tidak tahu bagaimana OS ini mengelola kunci. Tetapi Anda benar sekali bahwa jika sumber daya entropi yang digunakan dapat diprediksi, maka itu memampatkan ruang entropi kunci itu sendiri, yang membuatnya lebih rentan.
Pada prinsipnya, model ini hanya menawarkan enkripsi swap, yaitu, diasumsikan bahwa halaman RAM untuk kunci tidak pernah diturunkan dari memori. Ini cukup mudah dilakukan di OS, jika Anda hanya menyematkan halaman ini di memori. Ini juga tidak akan membantu Anda melakukan sesuatu dengan seseorang yang memiliki kontak dengan bus memori atau dengan seseorang yang dapat "berjalan" melalui halaman memori kernel atau sejenisnya.
Siswa: dari sudut pandang penjelajahan, ini membantu melindungi terhadap penyusup yang datang setelah penjelajahan pribadi, karena jika Anda harus membuang kunci, maka itu tidak tetap dalam memori.
Profesor: benar sekali. Hal yang baik tentang ini adalah bahwa enkripsi swap, pada kenyataannya, tidak memerlukan perubahan dalam aplikasi.
Siswa: kembali sedikit - jika Anda melihat data sebelum masuk ke dalam RAM, apakah akan ada artefak memori yang tersisa?
Profesor: jika saya memahami pertanyaan Anda dengan benar, itu mengganggu Anda bahwa meskipun data dienkripsi pada disk, itu disimpan dalam teks yang jelas dalam memori. Kembali ke pembahasan enkripsi swap. Transfer data terenkripsi ke disk tidak melindungi terhadap penyerang yang dapat melihat RAM secara real time. Jadi, jika hanya penyerang mengganggu Anda setelah sesi penjelajahan pribadi yang tidak dapat melihat RAM secara real time, ini berfungsi dengan baik. Tapi Anda benar bahwa ini tidak memberikan - karena tidak ada istilah yang lebih baik, katakanlah ini - enkripsi RAM. Ada beberapa sistem penelitian yang mencoba melakukan hal seperti ini. Ini sedikit lebih rumit, karena pada titik tertentu, ketika Anda mengakses perangkat keras Anda, prosesor Anda harus melakukan sesuatu dengan data nyata. Misalnya, jika Anda ingin melakukan sesuatu dengan perintah add dan Anda harus meneruskan operan dengan teks biasa.
Ada juga beberapa sistem penelitian menarik yang mencoba membuat perhitungan berdasarkan data terenkripsi. Itu meledak otak seperti film The Matrix. Tetapi cukuplah untuk mengatakan bahwa perlindungan data dalam RAM biasanya jauh lebih lemah daripada perlindungan data yang berada di drive stabil. Masih ada pertanyaan?
Siswa: kami berbicara tentang seorang penyerang yang bertindak setelah sesi penjelajahan pribadi. Tetapi jika Anda memiliki tab mode Publik dan tab mode Pribadi di browser Anda, dan setelah menutup tab penjelajahan pribadi, tab penjelajahan publik tetap terbuka, dapatkah seorang hacker mencapai artefak memori melaluinya?
Profesor: ini pertanyaan yang menarik, dan di akhir kuliah kita akan berbicara tentang metode serangan yang serupa. Faktanya adalah bahwa sebagian besar model ancaman dalam mode penelusuran pribadi tidak menyiratkan keberadaan penyerang secara real time. Dengan kata lain, mereka menganggap bahwa ketika Anda melakukan penjelajahan pribadi, pada saat yang sama tidak ada orang lain yang memiliki tab penjelajahan publik terbuka atau sesuatu seperti itu. Tapi Anda benar bahwa cara penjelajahan pribadi yang sering diterapkan tidak terlindungi dengan baik.
Misalkan Anda membuka tab untuk penjelajahan pribadi dan setelah beberapa saat menutupnya untuk mendapatkan secangkir kopi. Namun, Firefox, misalnya, menyimpan statistik seperti alokasi memori. Jadi jika memori untuk tab penjelajahan pribadi Anda terletak dengan semua sampah yang dikumpulkan oleh browser, maka saya dapat melihat URL yang Anda kunjungi dan seterusnya di tab Anda. Namun, singkatnya, sebagian besar model penyerang tidak menyiratkan penyerang pada saat yang sama saat Anda sibuk menjelajah Internet secara pribadi.
Jadi, menukar enkripsi adalah hal yang bermanfaat, karena menyediakan Anda dengan beberapa fitur keamanan yang cukup menarik tanpa harus mengubah peramban atau aplikasi apa pun yang berjalan di atasnya. Dalam praktiknya, biaya menggunakan prosesor saat mengenkripsi swap jauh lebih sedikit daripada biaya sebenarnya untuk melakukan operasi I / O secara umum, terutama jika Anda memiliki hard disk, karena Anda membeli kinerjanya dengan disk. Ini adalah biaya komponen mekanis murni, perangkat keras, sehingga enkripsi swap tidak terlalu berpengaruh pada kinerja.
Jadi, tipe penyerang berikutnya yang akan kita lihat adalah penyerang web, yang saya sebutkan di awal ceramah. Di sini, diasumsikan bahwa penyerang mengontrol situs web yang akan dikunjungi pengguna dalam mode penjelajahan pribadi, tetapi penyerang ini tidak mengontrol komputer lokal pengguna. Dengan demikian, kami memiliki dua tujuan keamanan untuk melindungi diri dari serangan web.
Pertama-tama, kami tidak ingin penyerang dapat mengidentifikasi pengguna. Identifikasi berarti penyerang dapat membedakan satu pengguna dari pengguna lain yang mengunjungi situsnya.
Kedua, kami tidak ingin penyerang dapat mengetahui apakah pengguna menggunakan mode penelusuran pribadi atau tidak. Sebagai artikel kuliah menulis, melindungi terhadap penyerang web sebenarnya adalah tugas yang cukup cerdik.
Jadi apa artinya mengidentifikasi pengguna yang berbeda? Seperti yang saya katakan, secara global, Anda dapat membayangkan bahwa satu pengguna persis sama dengan semua pengguna lain yang mengunjungi situs ini. Misalkan seorang penyerang web mungkin ingin melakukan salah satu dari dua hal spesifik. Yang pertama terlihat seperti ini: "Saya melihat bahwa beberapa orang mengunjungi situs saya dalam mode penjelajahan pribadi, dan Anda adalah pengunjung kelima, ketujuh dan kedelapan." Dengan kata lain, ini berarti identifikasi pengguna dalam konteks beberapa sesi penelusuran pribadi.

Hal kedua yang mungkin diinginkan penyerang adalah mencoba membuat koneksi antara pengguna dan sesi penjelajahan dalam mode publik dan pribadi. Misalkan saya pergi ke amazon.com di tampilan publik, dan kedua kalinya di tampilan pribadi. Bisakah penyerang benar-benar mengetahui bahwa pengguna yang sama melakukan kedua kunjungan ke situs?
Siswa: tetapi apakah ini semua terkait dengan alamat IP?
Profesor: ya, benar. Ini adalah asumsi yang sangat baik, jadi saya berani berasumsi bahwa dalam kasus kami pengguna tidak menggunakan Tor, atau sesuatu seperti itu. Jadi ya, kita bisa membangun alamat IP pengguna. Mudah untuk mengidentifikasi berdasarkan alamat IP. Dan jika sebuah situs dikunjungi dua kali selama periode waktu yang singkat dari alamat IP yang sama, sangat mungkin bahwa pengguna yang sama melakukannya.
Bahkan, ini berfungsi sebagai motivasi untuk menggunakan hal-hal seperti Tor, kita akan membahas topik ini di kuliah berikutnya. Jika Anda belum pernah mendengar tentang Tor, saya akan mengatakan bahwa itu pada dasarnya adalah alat yang mencoba menyembunyikan hal-hal seperti alamat IP Anda. Anda dapat membayangkan browser sebagai kumpulan lapisan, yang didasarkan pada Tor, dan di atasnya Anda memiliki mode penjelajahan pribadi. Ini dapat memberi Anda keuntungan sedemikian rupa sehingga mode pribadi tidak dapat menyediakan sama sekali. Dengan demikian, Tor memberikan rasa anonimitas tertentu dari alamat IP, tetapi tidak benar-benar dapat memberikan privasi data, waktu tertentu dalam hidup mereka, atau hal serupa. Anda dapat menganggap "Tor" sebagai persyaratan, tetapi bukan kondisi yang memadai untuk penerapan penuh rezim penjelajahan pribadi di Internet.
Menariknya, bahkan jika Anda menggunakan Tor, masih ada cara server web dapat mengidentifikasi pengguna dengan melihat karakteristik unik dari browser ini.

Sekarang saya akan menunjukkan kepada Anda demo terbaru untuk hari ini. Mari kita lihat bagaimana saya menggunakan situs yang disebut Panopticlick. Beberapa dari Anda pernah mendengar tentang situs ini. Ini adalah proyek online yang diluncurkan oleh EFF - Electronic Frontier Foundation, the Electronic Frontier Foundation. Gagasan utama proyek ini adalah mencoba mengidentifikasi Anda sebagai pengguna dengan menganalisis berbagai karakteristik peramban web Anda. Saya akan menunjukkan dengan tepat apa yang saya maksud. Kami pergi ke situs ini, Anda melihat tombol "Uji saya", dan saya mengkliknya.

Sebagian besar kode JavaScript berfungsi di sini, mungkin beberapa applet dan beberapa Java.
Situs ini mencoba mengambil sidik jari dari browser saya dan mencari tahu seberapa banyak informasi unik yang dimilikinya.
Biarkan saya menambah font - Anda lihat bahwa salah satu hal yang ingin dia ketahui adalah detail dari plugin browser yang saya gunakan. Jadi pada dasarnya tes ini akan menjalankan kode yang terlihat apakah saya telah menginstal Flash, versi Flash ini, apakah Java diinstal dan versi apa yang dimilikinya.

Anda melihat bahwa semua plugin ini bahkan tidak muat di layar yang sama secara bersamaan. Ini semua berbagai plugin dan format file yang didukung browser saya. Dalam arti global, ini akan mengganggu Anda jika Anda adalah "orang keamanan." Jika saya benar-benar aktif menggunakan semua hal ini pada waktu tertentu, maka ini hanya mimpi buruk!

Pada akhirnya, server web, atau penyerang web, dapat mencari kode yang ditampilkan di sini dan dapat mengetahui plug-in apa yang digunakan browser Anda. Sekarang, jika Anda melihat dua kolom ini di sebelah kiri, apakah itu?

Kolom pertama adalah bit dari informasi yang diidentifikasi. Kolom berikutnya lebih menarik - itu menunjukkan bahwa hanya satu dari jumlah browser yang diberikan memiliki set plug-in yang sama, dalam hal ini adalah 1 dari 27679 browser. Jadi ini adalah cara yang cukup spesifik untuk mengambil sidik jari saya. Angka ini menunjukkan bahwa ada sangat, sangat sedikit orang yang browsernya memiliki set plugin dan konfigurasi file yang persis sama.
Jadi, ternyata, mereka benar, saya orang yang benar-benar unik, tetapi dalam jangka panjang ini menciptakan masalah keamanan besar. Lihatlah sisa hasil tes.

Ini adalah resolusi layar dan kedalaman warna laptop saya, satu untuk 1,5 juta komputer. Ini adalah penemuan yang agak mengejutkan, karena itu berarti bahwa hanya satu orang dalam sampel satu setengah juta pengguna yang memiliki karakteristik layar seperti itu.
Jadi hal-hal ini bersifat aditif. Semakin banyak sidik jari, semakin mudah bagi penyerang untuk mengetahui bahwa Andalah yang mengunjungi situsnya. Dan perhatikan, ini dilakukan secara eksklusif oleh server. Saya baru saja pergi ke halaman ini dan hanya mengklik tombol, dan itulah yang mereka dapatkan. Tunggu sebentar, saya ingin menunjukkan satu hal lagi. Situs web Panopticlick login secara pribadi. Sekarang saya akan menyalin alamat dari bilah alamat dan membuka Firefox versi publik yang umum. Setelah itu saya akan menjalankan tes ini lagi.
Saya perhatikan lagi - sekarang saya dalam mode browser publik, dan sebelum itu saya dalam mode privat. Anda melihat bahwa jika Anda melihat plug-in browser, indeks keunikan sidik jari browser tetap hampir sama - 27679.82 melawan 27679.68. Perbedaan ini dibuat oleh beberapa plugin, yang mungkin atau mungkin tidak memuat tergantung pada bagaimana mode privasi diimplementasikan. Tapi lihat - sidik jari masih mudah. Lihatlah ukuran layar dan kedalaman warna - indikator ini tidak berbeda dalam mode tampilan publik dan pribadi.
Jadi kemampuan untuk meninggalkan sidik jari di kedua mode hampir sama. Ini adalah salah satu alasan mengapa sangat sulit untuk melindungi diri Anda dari serangan web seperti itu, karena browser itu sendiri dalam konfigurasi mereka membawa banyak informasi untuk identifikasi Anda oleh penyerang.
Mahasiswa: Saya ingin tahu tentang ukuran layar dan opsi kedalaman warna. Bagaimana ini bisa terjadi? Mengapa mereka begitu unik? Berapa banyak ukuran layar dan kedalaman warna yang umumnya ada?
Profesor: Saya pikir dia sebenarnya menyembunyikan sebagian sihir yang digunakan Panopticlick untuk mencari tahu apa itu. Secara global, berapa banyak dari tes ini bekerja? Ada beberapa bagian browser Anda yang hanya dapat dilihat menggunakan kode JavaScript. Dengan demikian, Anda dapat membayangkan bahwa kode JavaScript melihat melalui properti objek jendela, yang merupakan gambar tiga dimensi dari JavaScript dan memperhatikan bagaimana kode di dalam jendela menunjukkan widget aneh ini, widget tetangga, bagian teks, plugin, dan sebagainya. Halaman seperti itu juga umumnya menggunakan fakta bahwa applet Java dan objek Flash dapat mencari hal-hal yang lebih menarik, seperti font yang tersedia di komputer Anda, dan sejenisnya. Oleh karena itu, saya pribadi berpikir bahwa ketika menentukan keunikan ukuran layar dan kedalaman warna, hal berikut terjadi: tes meluncurkan applet yang akan mencoba meminta kartu grafis atau antarmuka grafis di Jawa, dan secara bergantian memeriksa berbagai aspek pekerjaan mereka dalam proses menampilkan halaman browser.
, , , .
. , , , JavaScript. , , . , .
? . , Tor, Tor – , IP- , — . !
. , , -. , , , , Firefox v10.7. , Firefox, . .
: Tor? ?
: , . , , , , , -. - , - .
: , , - Tor, Firefox .
: , - Tor. , «» Tor. , — IP, — , , , -.
, -, , , Firefox, - . - , . , - Firefox 10.7. , Firefox 10.7. HTML , . .
: , , . Tor , Firefox.
: , . , , , , . , Tor , Tor, , Firefox Java, .
– Tor , «» . , . – , , .
, ? – . , , ? , - . . , , ?

, . , . , , , iframe URL-, , iframe . . , iframe, , , , .
, , , , , . , , , , . . , . JavaScript JavaScript, . .
: , , ?
: , . , , , . , , -. , - , .

, , . , Amazon.com , . , , cookie , -, .
: , IP-.
: , .
: , , , IP- . , , .
: , . , , -, . JavaScript, iframe foo.com, iframe . , , , .
. , iframe, , .
, . , .
IP-, , , Tor IP-.
54:00
MIT « ». 18: « », 3.
Terima kasih telah tinggal bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikannya kepada teman-teman Anda,
diskon 30% untuk pengguna Habr pada analog unik dari server entry-level yang kami temukan untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps dari $ 20 atau bagaimana membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps hingga Desember secara gratis ketika membayar untuk jangka waktu enam bulan, Anda dapat memesan di
sini .
Dell R730xd 2 kali lebih murah? Hanya kami yang memiliki
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV dari $ 249 di Belanda dan Amerika Serikat! Baca tentang
Cara Membangun Infrastruktur Bldg. kelas menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?