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 3Kuliah 19: “Jaringan Anonim”
Bagian 1 /
Bagian 2 /
Bagian 3 Mari kita lihat lebih dekat bagaimana protokol bekerja. Karena akan memalukan membaca artikel kuliah dan tidak membicarakan hal-hal yang menarik perhatiannya. Saya ingin meminta maaf lagi untuk teknik menggambar saya di papan tulis, setelah semua, sebagian besar waktu saya habiskan di meja, mengetik di komputer.
Ini adalah teknologi alien. Jadi di sini adalah repeater. Dan ini Alice. Ini repeater lain dan ini Bob. Alice sekarang ingin berbicara dengan Bob, jadi hal pertama yang dia lakukan adalah membuat rantai melalui pengulang ini ke Bob. Katakanlah dia memilih dua repeater ini, R1 dan R2. Alice pertama-tama membuat tautan TLS ke R1, katakanlah dia sudah memiliki tautan TLS ke R2. Kemudian, pertama-tama, Alice melakukan otentikasi satu arah, pencocokan satu arah dari kunci anonim.

Protokol Tor lama disebut TAP - Tor Authentication Protocol, yang baru disebut NTor. Keduanya memiliki bukti keamanan. Ini adalah bukti yang benar, meskipun kesalahan telah dibuat dalam deskripsi mereka.
Setelah otentikasi, Alice memilih ID sirkuit ID saluran, katakanlah 3, menginstruksikan pengulang untuk membuat saluran "3" - membuat "3", dan ia mengatakan kepadanya bahwa saluran dibuat - dibuat. Alice dan relay sekarang berbagi kunci simetris rahasia S1. Dan mereka berdua menyimpannya dengan indeks "3", yang merupakan tautan ke saluran ini.

Alice sekarang dapat menggunakan tombol ini untuk mengirim pesan R1. Dia mengatakan bahwa pada "troika", ini adalah pengidentifikasi saluran, yang dibahas dalam artikel kuliah, sel yang diperluas dengan konten dikirim ke relay.

Sel yang diperluas pada dasarnya berisi paruh pertama jabat tangan. Tapi kali ini tidak dienkripsi dengan kunci publik R1, tetapi dienkripsi dengan kunci publik R2. Ini menunjukkan bahwa pesan sedang dikirim ke R2. Dengan demikian, R1 tahu bahwa perlu untuk membuka saluran baru ke R2, dan melaporkan ini ke relai R2 dengan pesan create (....), di mana setengah jabat tangan yang sama yang datang dari Alice ditempatkan dalam tanda kurung. Dengan demikian, R1 membuat ID sirkuit sendiri, karena pengidentifikasi saluran menentukan saluran lain dalam koneksi TLS kedua ini. Selain itu, Alice tidak tahu pengidentifikasi saluran mana yang masih digunakan di sini, karena ini adalah "masalah pribadi" R1 dan R2.

Jadi pengulang dapat memilih, misalnya, ID 95. Bahkan, ini tidak mungkin, karena nomor saluran dipilih secara acak dari 4 byte ruang, tapi saya tidak ingin menuliskan semua angka 32-bit hari ini.
Setelah itu, R2 menjawab relai "dibuat" pertama, dan R1 kembali ke Alice sel yang diperluas, dienkripsi dengan kunci S1. Sekarang Alice dan R2 berbagi relay S2 dan Alice dapat mengirim pesan, pertama dienkripsi dengan S2, dan kemudian dengan S1. Dia mengirim pesan seperti itu, R1 menghapus enkripsi S1 dan meneruskannya lebih lanjut.

Relai pertama tahu bahwa pesan saluran 3 harus dikirim ke relai kedua di saluran 95. Setelah menerima pesan ini, relai kedua melihat bahwa kunci S2 terkait dengan saluran 95, dan dengan bantuannya mendekripsi pesan ini: "oh, katanya buka koneksi dengan Bob"! Setelah membaca ini, relai R2 membuka koneksi TCP dengan Bob dan melaporkan ini kepada Alice menggunakan proses passing pesan balik yang sama.
Setelah semua ini, Alice berkata: "Hebat, lalu beri tahu Bob sesuatu seperti http: 1.0get /index.html", dan kemudian kehidupan berlanjut.
Mari kita lihat apa yang saya lewatkan dalam artikel kuliah ... jadi ... ini, ini, dan ini. Oke, jadi apa yang sebenarnya kita sampaikan? Beberapa solusi dalam bidang ini mengklaim bahwa perlu untuk mengirim paket IP bolak-balik, yaitu, skema ini seharusnya hanya menjadi cara untuk mengirimkan paket IP. Salah satu masalah adalah bahwa kami ingin mendukung sebanyak mungkin pengguna, yang berarti bahwa kami harus bekerja pada semua jenis sistem operasi.
Tetapi tumpukan TCP dari sistem operasi yang berbeda bertindak secara berbeda. Jika Anda pernah menggunakan Nmap atau semacam alat analisis lalu lintas jaringan, Anda dapat dengan mudah membedakan Windows TCP dari FreeBSD TCP atau TCP Linux. Anda bahkan dapat membedakan antara versi yang berbeda. Selain itu, jika Anda dapat mengirim paket IP mentah ke host yang dipilih, Anda dapat memancing respons berdasarkan sebagian apa yang dilakukan host.

Jadi jika Anda meneruskan paket IP bolak-balik, Anda perlu normalisasi IP. Karena apa pun yang lebih kecil dari tumpukan IP penuh tidak akan dapat berfungsi dalam normalisasi, Anda tidak perlu melakukannya.
Sebagai gantinya, kami memilih cara termudah - kami hanya menerima semua konten dari aliran TCP, dengan anggapan bahwa itu dapat diandalkan dan semuanya sesuai dengannya. Program ini menganalisis semua data yang dikirimkan oleh Alice, setuju untuk menerima koneksi TCP yang berasal dari aplikasi-nya, dan hanya menyampaikan isinya tanpa melakukan sesuatu yang rumit di tingkat jaringan.
Anda dapat mencoba meningkatkan produktivitas dengan menggunakan cara lain yang dijelaskan dalam materi kuliah. Tapi saya menggambarkan skema yang benar-benar dapat diimplementasikan, karena ketika membuat Tor, kami lebih memperhatikan kelas keamanan dan kompiler daripada kelas jaringan. Sekarang kami memiliki spesialis jaringan, tetapi pada tahun 2003-2004 kami mengalami kekurangan.
Protokol TCP tampaknya sangat tepat, level yang benar. Protokol tingkat tinggi yang dibahas dalam beberapa proyek asli menggunakan proxy terpisah di sisi Alice untuk HTTP, FTP dan sepertinya ide yang buruk. Ini karena setiap protokol harus memiliki enkripsi dari awal hingga akhir sepanjang koneksi Alice-Bob, dan jika kita beruntung, Alice akan dapat membuat koneksi TLS antara R2 dan Bob, yang memiliki fitur integritas dan keamanan.
Tetapi jika ini masalahnya, maka transformasi anonimitas apa pun yang ingin Anda terapkan ke data terenkripsi harus terjadi dalam aplikasi yang digunakan Alice sebelum koneksi TLS dibuat sepenuhnya. Tapi ini tidak mungkin menggunakan server proxy, jadi TCP lebih cocok untuk kita.
Seseorang bertanya kepada saya, di mana bukti keamanan kita? Kami memiliki bukti keamanan untuk banyak metode enkripsi yang kami gunakan, ini adalah versi standar dokumen. Secara umum, untuk protokol ada bukti keamanan aspek-aspek tertentu dari routing bawang. Tetapi model-model yang harus mereka gunakan untuk membuktikan bahwa ini memberikan anonimitas harus didasarkan pada sifat-sifat aneh alam semesta, sifat-sifat jaringan atau kemampuan penyerang sehingga mereka dapat memuaskan hanya komisi pemrograman yang duduk di beberapa konferensi teoritis.
Singkatnya, properti anonimitas ini harus membuktikan bahwa penyerang yang dapat melihat volume dan timing data di bagian Alice-R1 tidak akan dapat mengidentifikasi mereka, hanya mengamati byte keluaran di bagian R2-Bob. Tapi ini bukan hasil yang memuaskan. Katakan saja - jaminan keamanan apa yang Anda inginkan dari sistem yang tidak Anda ketahui cara membuatnya? Yah, saya harus berhati-hati dengan pernyataan seperti itu ... Ingatlah bahwa ada sistem dengan jaminan anonimitas yang kuat, dan Anda tahu cara membuat sistem seperti itu, tetapi Anda tidak akan pernah ingin menggunakannya. Seperti, misalnya, jaringan DC-Net klasik, yang memberikan jaminan anonimitas, kecuali bahwa setiap peserta dapat menutup seluruh jaringan hanya dengan berhenti berpartisipasi di dalamnya. Selain itu, sistem ini tidak berskala.
Tetapi untuk hal-hal yang dibuat pada zaman kita, sifat anonimitas lebih probabilistik, dan tidak dijamin secara pasti. Jadi alih-alih bertanya apakah sistem ini menjamin keamanan Alice, ada baiknya tanyakan berapa banyak lalu lintas yang dapat dikirimkan Alice dengan aman jika ia ingin memiliki 99% peluang bahwa aktivitas jaringan ini tidak dapat dikaitkan dengan aktivitasnya?
Pertanyaan pertama yang kami tanyakan pada diri sendiri ketika kami mulai membuat Tor adalah, siapa yang akan mengelola semua hal ini? Kami tidak tahu apakah sistem kami akan benar-benar "berhasil", jadi satu-satunya pilihan adalah mencoba dan melihat apa yang terjadi.

Kami memiliki cukup sukarelawan. Sejumlah besar organisasi nirlaba hanya ingin memberikan sumbangan dan menggunakannya untuk membeli bandwidth dan meluncurkan situs Tor. Beberapa universitas dan beberapa perusahaan swasta mengambil bagian dalam proyek ini, yang dinas keamanannya memutuskan bahwa akan menyenangkan untuk meluncurkan server Tor sendiri.
Dalam hal ini, masalah hukum muncul, tetapi sekali lagi, saya bukan pengacara dan tidak bisa memberikan penilaian hukum terhadap hal-hal ini. Namun, lima orang berbeda bertanya kepada saya tentang legalitas sistem kami. Sejauh yang saya tahu, setidaknya di AS, tidak ada hambatan hukum untuk memulai server Tor. Dan bagi saya tampaknya situasi serupa terjadi di sebagian besar negara Eropa. Di negara-negara dengan kebebasan internet lebih sedikit, Tor lebih ketat.
Masalahnya bukan seberapa legal atau ilegal penggunaan sistem Tor, tetapi seseorang dapat melakukan sesuatu yang ilegal atau tidak diinginkan dengan server Tor saya. Misalnya, apakah penyedia saya memutuskan sambungan saya dari jaringan jika saya menyediakan komputer saya sebagai simpul Tor, akankah lembaga penegak hukum percaya bahwa saya hanya menggunakan server Tor, atau mereka akan datang dan mengambil komputer saya untuk memastikan hal ini.
Untuk kasus seperti itu, saya akan menyarankan Anda untuk tidak memulai server Tor dari kamar asrama Anda, atau lebih tepatnya, tidak menggunakan komputer Anda untuk menyiarkan sejumlah besar lalu lintas keluaran, dengan asumsi bahwa ini memungkinkan kebijakan jaringan. Jujur, saya tidak tahu apa kebijakan ini sekarang karena sudah banyak berubah sejak masa mahasiswa saya. Tapi bagaimanapun, lalu lintas keluar yang besar dari komputer Anda di asrama dapat menyebabkan masalah. Namun, memulai repeater tanpa mengeluarkan lalu lintas ke Internet akan kurang bermasalah. Tetapi jika penyedia Anda memungkinkan Anda untuk bertindak dengan cara ini, maka ini adalah hal yang cukup masuk akal.
Seseorang bertanya kepada saya bagaimana jika pengguna tidak mempercayai situs tertentu? Ini membawa kita ke topik selanjutnya. Klien jaringan menggunakan perangkat lunak atas kebijakan mereka, dan Anda tidak dapat melarang mereka untuk menggunakan beberapa program dan mewajibkan mereka untuk menggunakan yang lain. Tapi ingat bahwa anonimitas suka ditemani. Jika saya menggunakan tiga node, Anda menggunakan tiga node lain, dan Anda adalah tiga node lainnya, lalu lintas kami tidak akan bercampur sama sekali.

Selama kita memisahkan bagian-bagian jaringan yang kita gunakan, kita mudah dibedakan satu sama lain. Sekarang, jika saya cukup mengecualikan satu atau dua node, dan Anda cukup mengecualikan satu atau dua node, ini tidak akan menjadi pemisahan besar jaringan menjadi beberapa bagian dan akan mempersulit identifikasi kami. Tetapi akan optimal bagi semua orang untuk menggunakan simpul yang sama sebanyak mungkin. Bagaimana kita mencapai ini?
Jadi, dalam versi pertama Tor, kami baru saja menyerahkan daftar semua node ke pengguna, ada sekitar 6 dari mereka, tiga di antaranya bekerja pada satu komputer di lab sains komputer Tech Square. Tapi ini bukan ide yang baik, karena jumlah node bertambah dan berkurang, node itu sendiri berubah, dan Anda tidak ingin merilis versi baru dari perangkat lunak setiap kali seseorang bergabung dengan jaringan.
Tetapi Anda dapat memastikan bahwa setiap node berisi daftar semua node lain yang terhubung dengannya, dan mereka semua akan "beriklan" satu sama lain. Kemudian, ketika klien terhubung ke jaringan, ia hanya perlu tahu satu simpul, lalu mengatakan: "Hei, siapa yang ada di jaringan"?
Bahkan, banyak orang membangun proyek berdasarkan prinsip ini. Banyak proyek anonimitas teman sebaya awal bekerja dengan cara ini. Tapi ini ide yang buruk. Karena jika Anda terhubung ke satu simpul dan bertanya siapa yang sedang online dan Anda mempercayai orang yang menjawab, maka saya dapat menjawab Anda: "Saya sedang online, dan teman saya ada di sini online, dan teman saya juga online, dan banyak lagi tidak ada yang online! " Artinya, saya dapat memberi tahu Anda sejumlah node palsu yang saya kelola dan yang mencegat semua lalu lintas Anda. Inilah yang disebut serangan penangkapan rw, atau serangan intersepsi pada node sumber.
Jadi, mungkin saja jika kita hanya memiliki satu direktori yang dikelola oleh pihak tepercaya, ini tidak begitu baik, jadi mari kita asumsikan bahwa kita memiliki beberapa pihak tepercaya. Klien pergi ke pihak-pihak tepercaya ini, menerima dari masing-masing daftar semua node dan menggabungkannya ke dalam satu daftar umum node jaringan.
Ini tidak baik karena kita dibagi lagi menjadi kelompok jaringan yang dapat diidentifikasi. Jika saya memilih tiga node ini, dan Anda memilih tiga node lainnya, maka kita akan menggunakan set node yang berbeda, yang tidak baik. Selain itu, jika saya menggunakan daftar node yang dikirimkan kepada saya, salah satu pihak tepercaya dapat mencegah saya menggunakan simpul yang tidak disukainya, hanya tidak menentukannya dalam daftar. Jika saya menggunakan daftar gabungan, maka seseorang dapat membanjiri saya dengan 20 ribu server palsu, menunjukkan mereka dalam daftar. Saya dapat memilih untuk pengecualian mereka dan entah bagaimana menyelesaikan dua masalah terakhir, tetapi saya masih akan terpisah dari semua orang yang menggunakan pihak tepercaya yang berbeda.

Kita bisa membuat DHT ajaib, atau tabel hash terdistribusi, semacam struktur terdistribusi magis yang melewati semua node. Saya mengatakan "sihir" karena, meskipun ada proyek di daerah ini, dan beberapa lebih baik daripada yang lain, tidak ada dari mereka yang saat ini memiliki bukti keamanan yang kuat. Sangat keras sehingga saya bisa mengatakan dengan keyakinan bahwa itu benar-benar aman.
Jadi, inilah solusi yang kami dapatkan. Jaringan kami memiliki beberapa otoritas tepercaya, yang dikelola oleh pihak-pihak tepercaya, yang mengumpulkan daftar node yang memberikan suara setiap jam di mana node dapat bekerja di jaringan dan dapat memilih untuk mengecualikan node yang mencurigakan. Mereka semua bekerja pada yang sama / 16, yang melakukan hal-hal aneh dengan lalu lintas, dan membentuk konsensus yang didasarkan pada perhitungan hasil pemungutan suara.
Dan klien tidak menggunakan simpul jika tidak ditandatangani oleh "suara" dalam jumlah yang cukup dari pihak yang dipercaya.
Ini bukan versi final dari proyek ini, tetapi ini adalah yang terbaik yang dapat kami buat sejauh ini. Ngomong-ngomong, semua yang Anda butuhkan untuk didistribusikan di antara klien adalah daftar semua kunci publik resmi dan daftar beberapa tempat untuk menerima direktori. Anda ingin semua node melakukan cache direktori ini, karena jika tidak, beban jaringan akan menjadi berbahaya dan bandwidth jaringan akan turun secara dramatis.
Saya bermaksud untuk melewatkan pertanyaan berikutnya dan langsung menuju ke bagaimana pelanggan harus memilih jalur mana yang harus mereka rute melalui jaringan. Saya ingin berbicara tentang masalah menggunakan dan membuat aplikasi yang tidak akan mengkhianati diri mereka sendiri. Saya ingin berbicara tentang pelanggaran jaringan, tentang layanan tersembunyi dan bagaimana mereka bekerja, untuk berbicara tentang perlawanan terhadap sensor, dan saya juga ingin berbicara tentang serangan dan perlindungan. Tapi kami hanya punya 35 menit lagi, jadi saya tidak bisa bicara tentang semua yang saya inginkan. Saya meminta Anda untuk memilih topik yang Anda anggap paling penting untuk diskusi.
Jika Anda berpikir bahwa salah satu topik paling penting adalah pilihan jalur dan simpul, silakan angkat tangan. Jika salah satu topik paling penting adalah masalah aplikasi dan cara memastikan aplikasi tidak melanggar anonimitas Anda, silakan angkat tangan. Jika pelecehan adalah salah satu masalah terpenting dan bagaimana mencegahnya, silakan angkat tangan. Jadi, saya melihat bahwa topik ini populer, dan menandainya.
Jika penting bagi Anda cara kerja layanan tersembunyi dan bagaimana layanan itu dibuat agar bekerja lebih baik, silakan angkat tangan. , , . , . , ? , . ?

, . , , . , , — .
, . , IP-, , . , Whole stack, -, , Tor.
«» -, , , , , , , , .
, : , , , . , -, . , . , . . , .
, . , , – , -, . , BitTorrent, Gnutella . , , , .
, , , 80 443. , 80. IRC- - IRC. -, , , , .
, , - 80 443, , , . , Tor. - , . , , .
, - IRC- IP-.
, My Little Pony, IRC-, , , , – . , IP-, , IP- . Tor .

IP- ? , IP ? Tidak. , IP, . , IP-, .
IP- , , , , , , Tor -.
. - «» ? , IP, , IP IP-. , , IP-.
, , , , . – « ». , , , , , IRC – , , , .
, . , . , , , - IP, .
- . , 2013 , « 2» , Silk Road. « 2» , Tor, , , .
, - , OPSEC – . , , . Tor , .
, , , , , « ». : «, , . , , . , , — ». , , .
54:00
Kursus MIT "Keamanan Sistem Komputer". 19: « », 3 ( Tor).
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 buat 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 Januari 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?