Kursus MIT "Keamanan Sistem Komputer". Kuliah 19: "Jaringan Anonim," bagian 3 (kuliah dari pencipta jaringan Tor)

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 3
Kuliah 2: "Kontrol serangan hacker" Bagian 1 / Bagian 2 / Bagian 3
Kuliah 3: “Buffer Overflows: Exploits and Protection” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 4: “Pemisahan Hak Istimewa” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 5: "Dari mana sistem keamanan berasal?" Bagian 1 / Bagian 2
Kuliah 6: “Peluang” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 7: “Kotak Pasir Klien Asli” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 8: “Model Keamanan Jaringan” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 9: "Keamanan Aplikasi Web" Bagian 1 / Bagian 2 / Bagian 3
Kuliah 10: “Eksekusi simbolik” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 11: “Bahasa Pemrograman Web / Web” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 12: Keamanan Jaringan Bagian 1 / Bagian 2 / Bagian 3
Kuliah 13: "Protokol Jaringan" Bagian 1 / Bagian 2 / Bagian 3
Kuliah 14: "SSL dan HTTPS" Bagian 1 / Bagian 2 / Bagian 3
Kuliah 15: “Perangkat Lunak Medis” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 16: “Serangan Saluran Samping” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 17: “Otentikasi Pengguna” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 18: “Penjelajahan Pribadi di Internet” Bagian 1 / Bagian 2 / Bagian 3
Kuliah 19: “Jaringan Anonim” Bagian 1 / Bagian 2 / Bagian 3

Misalkan Anda menggunakan probabilitas Bayesian, dengan argumen seperti ini: “apakah pengadilan akan mengatur bukti bahwa orang ini ditangkap karena OPSEC yang buruk? Ya, benar. Artinya, saya perlu laporan yang mengatakan bahwa dia ditangkap karena tidak mematuhi keamanan informasi operasi Internet. " Jadi, untuk "desain ganda" saya perlu laporan bahwa orang itu terjebak dalam OPSEC yang buruk, karena bukti semacam ini cukup dapat diakses dalam penyelidikan polisi reguler, tanpa menyebutkan informasi yang diperoleh dari intelijen.

Kami tidak dapat menarik kesimpulan tentang kasus ini dari laporan publik mana pun, namun, tampaknya orang ini ditahan justru karena tidak mematuhi aturan OPSEC, yaitu, apa yang Anda cari, berusaha menangkap seseorang yang terlibat dalam hal-hal ilegal. Jadi, seperti yang saya katakan sebelumnya, jangan gunakan jaringan saya untuk melanggar hukum apa pun. Juga, jika hidup atau kebebasan Anda bergantung pada penggunaan Tor atau produk keamanan lainnya, jangan gunakan produk ini secara terpisah.



Pertimbangkan untuk membuat beberapa garis pertahanan jika hidup atau kebebasan Anda dipertaruhkan, atau jika keruntuhan sistem sama sekali tidak dapat Anda terima. Ini berlaku untuk Tor, TLS, dan PGP. Perangkat lunak sedang dalam proses.
Itu semua yang ingin saya katakan tentang pelanggaran di Internet. Saya memiliki 25 menit tersisa untuk layanan tersembunyi.

Anonimitas responden adalah masalah yang jauh lebih kompleks daripada anonimitas pemrakarsa. Anonimitas inisiator adalah apa yang Anda dapatkan ketika Alice ingin membeli kaus kaki, tetapi pada saat yang sama tetap anonim dengan penjual kaus kaki.

Anonimitas responden adalah ketika Alice ingin mempublikasikan puisinya di Internet dan memulai server web dengan puisinya, tetapi tidak ingin siapa pun mengetahui di mana server web ini berada, karena puisinya sangat canggung. Jadi ya, sebenarnya, ada layanan tersembunyi dengan puisi buruk saya. Tidak, saya tidak berpikir bahwa seseorang telah menerbitkannya. Tidak, saya tidak akan memberi tahu siapa pun di mana dia berada. Saya hanya menunggu untuk dipublikasikan.

Misalkan Alice ingin menerbitkan puisinya. Saya akan menempatkannya di sebelah kanan karena dia adalah responden. Alice dapat membuka jalan - garis spiral ini menunjukkan beberapa repeater - ke jaringan Tor, di sini ke R ini, dan menoleh padanya dengan permintaan: "terimalah koneksi ini!" Jadi sekarang siapa pun yang terhubung ke repeater ini dapat mengatakan bahwa ia ingin berbicara dengan Alice. Ada proyek yang bekerja seperti itu.



Namun, ada beberapa masalah. Salah satu masalah adalah repeater ini adalah seorang pria di tengah, yang memotong semua lalu lintas jika tidak ada kunci TLS yang terkenal di sini. Masalah kedua mungkin bahwa repeater ini dimiliki oleh orang yang juga malu dengan puisinya dan tidak ingin menjadi distributor puisi publik, karena itu sangat mengerikan!

Ini juga dapat dipengaruhi oleh orang lain yang memiliki R relay, yang sangat membenci puisi sehingga mereka ingin menyensor kompleks ini. Akhirnya, relai R ini hanya bisa menjadi target serangan.

Oleh karena itu, Anda ingin Alice beralih di antara relai yang berbeda setiap saat, dan tidak satu pun dari mereka yang dapat memengaruhi lalu lintas yang tidak dienkripsi. Ini cukup bisa dilakukan.
Tetapi jika kita memiliki banyak repeater yang berbeda, apa yang dikatakan Alice kepada orang-orang? Seharusnya ada sesuatu seperti kunci publik, karena jika itu hanya mengakses jaringan: "relay X, relay Y, relay Z", ini tidak akan berfungsi, karena jaringan berubah setiap 5 menit, dan mendapatkan yang tepat, relay kerja cukup sulit .

Misalkan dia memberi tahu kunci publik kepada semua peserta dalam jaringan, dan ketika dia datang ke sini untuk R, dia berkata: "ini Alice, saya akan membuktikannya dengan kunci publik saya." Dengan demikian, R tahu bahwa kunci publik PKz meluncurkan layanan tersembunyi khusus - puisi Alice. Oleh karena itu, jika orang lain berkata, "Hei, hubungkan saya dengan kunci publik Z", Anda dapat bersalaman dengan Alice menggunakan kunci bersama. Dan ini adalah jabat tangan yang sama yang digunakan dalam rantai Tor.

Sekarang Bob akan dapat membaca puisi Alice dengan meletakkan koneksi lain melalui jaringan Tor. Mengetahui kunci PKz, Bob akan dapat memberi tahu pengulang: "Hei, hubungkan aku ke Alice dengan PKz ini." Setelah repeater membuat jabat tangan bersama, Bob dan Alice akan memiliki kunci bersama, yang dapat mereka gunakan untuk mengenkripsi seluruh sambungan.



Ada sesuatu yang saya lewatkan, yaitu, bagaimana Bob tahu bagaimana menuju ke sini? Bagaimana repeater ini mengenali kunci publik PKz? Kita dapat menambahkan sistem direktori ke sistem di mana Alice secara anonim mengunduh pernyataan yang ditandatangani yang menyatakan bahwa PKz berada di relay X melalui Tor. Dalam kasus ini, Bob meminta sistem direktori untuk memberikan kepadanya pernyataan yang ditandatangani tentang PKz ini, sehingga Bob mengetahui di mana ia perlu. untuk pergi. Kita bisa melakukan yang lebih baik - biarkan Alice memberikan kunci publik lain, sebut saja PKw, dan aplikasi yang dia unggah ke direktori dan yang mengatakan bahwa jika Anda ingin berbicara dengan layanan kunci publik Z, maka Anda harus pergi ke relai Rx menggunakan kunci publik W.



Dalam hal ini, kunci publik Z tidak dipublikasikan pada relai Rx. Anda dapat melanjutkan dan mengenkripsi ekspresi (Rx, PKw) dengan semacam rahasia umum yang diketahui oleh Alice dan Bob. Jika Anda melakukan ini, layanan direktori dan orang-orang yang dapat menghubungi layanan direktori tidak akan dapat belajar cara terhubung ke Alice menggunakan kunci PKz ini.

Siswa: jika ini tidak dienkripsi, maka repeater Rx dapat mengetahui bahwa ia memulai layanan untuk Alice, kan?

Nick Mathewson: tidak, tidak untuk Alice. Dia hanya bisa mengetahui bahwa dia menggunakan kunci PKz jika ungkapan ini tidak dienkripsi. Kami memiliki keputusan tentang cara membuat sistem seperti itu, itu belum dibangun, tetapi itu akan keren.

Misalkan Anda tidak ingin menggunakan direktori terpusat untuk ini. Dalam hal ini, kami benar-benar menggunakan DHT, yang tidak ideal dan tunduk pada sensor, tetapi kami mencoba untuk membuat kemungkinan menggunakan sensor semakin sedikit. Saya bisa bercerita lebih banyak tentang ini, tetapi saya khawatir tidak punya waktu untuk membahas topik yang tersisa.

Ada masalah lain: jika Anda menggunakan salah satu direktori layanan ini dan Anda memiliki daftar kunci yang lengkap, maka Anda dapat terhubung ke semua orang yang belum mengenkripsi koneksi mereka untuk mengetahui apa yang mereka miliki di sana. Ini disebut serangan enumerasi, atau "serangan enumerasi." Kami tidak menyebutkan ini di koran kami, bukan karena itu tidak mengganggu kami, tetapi karena kami belum siap untuk menahan serangan seperti itu.

Saya berharap bahwa pada tahun 2014 kita akan menemukan solusi di mana Alice dan Bob berbagi kunci PKz, tetapi ungkapan ini (Rx, PKw) tidak ditandatangani dengan kunci PKz. Itu ditandatangani oleh PKz 1 , yang berasal dari PKz, dan, katakanlah, tanggal:

PKz 1 - > PKz, Tanggal

Jika Anda mengetahui PKz dan tanggalnya, Anda bisa mendapatkan PKz 1 . Jika, seperti Alice, Anda tahu rahasia SKz, Anda dapat membuat pesan yang ditandatangani oleh PKz 1 .



Tetapi jika Anda hanya melihat PK 1 , maka bahkan mengetahui tanggal, Anda tidak dapat menerima kembali PK 1. Kami memiliki bukti tentang kemungkinan solusi ini, dan jika Anda ingin tahu cara kerjanya, menulis kepada saya dan saya akan mengirimkannya kepada Anda. Ini trik yang keren. Kami bukan yang pertama datang dengan ide ini. Tapi ini adalah cara kita akan menyelesaikan masalah serangan enumerasi tahun ini, jika saya benar-benar menemukan waktu untuk implementasi praktis dari solusi ini. Itu semua untuk layanan tersembunyi.

Pertimbangkan masalah serangan dan pertahanan. Sejauh ini, kategori serangan terbesar yang kami lihat adalah serangan tingkat aplikasi. Jika Anda menjalankan aplikasi melalui Tor, dan itu mengirimkan lalu lintas tidak terenkripsi, seperti koneksi HTTP normal, maka node titik keluar yang bermusuhan, seperti node lain yang memungkinkan koneksi HTTP, dapat memantau dan memodifikasi lalu lintas ini. Ini adalah serangan nomor 1 di sistem kami. Itu dapat ditolak menggunakan lalu lintas terenkripsi.

Untungnya, selama beberapa tahun terakhir, enkripsi telah meningkat, dan lebih banyak lalu lintas sedang dienkripsi oleh otoritas sertifikat gratis yang luar biasa yang dilaporkan EFF, Mozilla, dan Cisco sehari atau dua hari yang lalu. Saya berharap bahwa pada 2015 akan ada lalu lintas yang lebih tidak terenkripsi daripada tahun ini. Jadi pendekatan ini menyelesaikan masalah ini.

Serangan yang lebih menarik mencakup hal-hal seperti penandaan lalu lintas, atau penandaan lalu lintas. Kami membuat kesalahan dalam implementasi pemeriksaan integritas kami sebelumnya. Implementasi awal kami untuk pemeriksaan integritas berakhir dengan pemeriksaan integritas di bagian antara program Alice dan simpul titik keluar, tetapi ternyata ini tidak cukup. Karena jika relai pertama R1 “membingungkan” lalu lintas sedemikian rupa sehingga menciptakan pola yang dapat mendeteksi titik titik keluar, maka untuk relai pertama dan terakhir itu akan berfungsi sebagai cara untuk mengetahui bahwa mereka berada di jalur yang sama, dalam rantai yang sama, dan mengidentifikasi Alice.

Tentu saja, jika relay pertama dan terakhir entah bagaimana bekerja sama, maka dalam hal apa pun mereka dapat menentukan Alice dengan membandingkan lalu lintas, tetapi kami berharap bahwa itu tidak akan mudah bagi mereka, dan seiring waktu proses menghubungkan lalu lintas akan menjadi lebih rumit daripada yang kita pikirkan.
Bahkan, alangkah baiknya untuk mengakhiri jenis serangan ini sekali dan untuk semua. Untuk ini, kami memiliki dua solusi. Salah satu hasil yang diharapkan dari serangan tersebut adalah kegagalan rantai secara berkala, karena penyerang di hub pertama melakukan kesalahan terkait kontrol atas hub terakhir.

Oleh karena itu, setiap pelanggan Tor memeriksa tingkat pentalan aneh. Solusi jangka panjang yang efektif untuk masalah ini adalah untuk memastikan bahwa "keributan" dengan templat pada hub pertama tidak membuat lebih dari 1 bit informasi pada hub terakhir. Anda tidak dapat menghindari pengiriman 1 bit informasi, karena hub pertama selalu dapat dengan mudah memutuskan koneksi, tetapi Anda dapat membatasi informasi ini hingga 1 bit. Atau lebih baik hingga 2 bit, karena dengan begitu mereka akan memiliki pilihan untuk merusak data atau memutuskan koneksi. Saya punya ide cara terbaik untuk melakukan ini, jadi saya akan memikirkan masalah ini.

Penolakan layanan, atau DOS, juga penting. Tahun lalu, ada sebuah artikel tentang apa yang penulis sebut sebagai "serangan sniper." Anda melihat lalu lintas yang berasal dari simpul Tor yang tidak Anda kontrol, dan karenanya ingin mengusir semua orang dari simpul ini. Untuk melakukan ini, Anda terhubung ke node ini, meluap semua buffer memorinya, dan itu "crash". Setelah itu, Anda mengarahkan lalu lintas yang Anda minati ke simpul yang Anda kendalikan, dan jika jatuh pada simpul yang tidak terkontrol, maka ulangi teknik ini beberapa kali hingga hasil yang diinginkan tercapai.

Solusi terbaik kami ditujukan untuk menghilangkan kemungkinan serangan DOS pada memori, dan tambalan kami telah menghilangkan kemungkinan ini. Pilihan lain untuk menyelesaikan masalah seperti ini adalah memastikan bahwa repeater memiliki kapasitas memori yang besar. Oleh karena itu, jangan gunakan repeater kapasitas kecil di jaringan. Kami juga melakukan ini - jika Anda mencoba memulai situs Tor di ponsel Anda, itu tidak akan menerima otorisasi dan tidak akan dimasukkan dalam daftar situs tepercaya.

Kami juga mencoba mengembangkan algoritma perencanaan rantai, meskipun sangat sulit untuk mencoba mengembangkan diagram jaringan node yang tidak Anda kontrol, jadi untuk saat ini ini merupakan masalah yang belum terselesaikan.

Sekarang katakan padaku mana yang lebih baik - ceritakan tentang serangan menarik atau serangan penting?

Mahasiswa: tentang yang menarik!

Nick Mathewson: bagus. Lalu biarkan mereka yang ingin menulis sebuah program yang menggunakan kriptografi mengangkat tangan? Nah, itu yang harus Anda pelajari! Namun jangan pernah mempercayai implementasi kriptografi Anda. Bahkan jika ini benar, itu tetap salah. Dulu sekali, kami memiliki salah satu kesalahan keamanan terburuk. Kami berpikir bahwa setiap relai dapat menjadi "man in the middle" di rantai simpul mana pun, karena kami mengasumsikan bahwa implementasi yang benar dari algoritma Diffie-Hellman akan memeriksa apakah 0 lulus sebagai salah satu input.



Para penulis implementasi Diffie-Hellman kami menyarankan bahwa aplikasi yang tepat tidak akan pernah melewati implementasi Diffie-Hellman nol.

Bagaimana cara kerja algoritma Diffie-Hellman yang benar? Misalkan saya punya g x dan Anda punya g y . Saya tahu X, Anda tahu Y, dan kita berdua bisa menghitung g xy . Tetapi jika sebaliknya "man in the middle" menggantikan nilai g saya dengan nol, maka saya menghitung 0 x , Anda menghitung 0 y , kami akan memiliki kunci yang sama, dan kami dapat dengan mudah berkomunikasi satu sama lain, tetapi ini akan menjadi kunci yang diketahui penyerang, karena apa itu 0

Unit berfungsi, P juga berfungsi, P + 1 juga berfungsi. Jadi, Anda hanya perlu memastikan bahwa nilai g x dan g y Anda berada dalam kisaran 2 hingga P-1 jika Anda menerapkan algoritma Diffie-Hellman dalam bentuk z sub p.

Saya ingin berbicara lebih banyak tentang sensor. Sebenarnya, ini adalah salah satu bidang di mana kita dapat melakukan yang terbaik dari yang baik. Pada awalnya, kami berpikir untuk membuat Tor terlihat seperti klien web yang berbicara ke server web melalui HTTPS, dan membuatnya sulit untuk diblokir. Ternyata itu sangat sulit dan mungkin tidak sepadan.
Sekarang kami menggunakan pendekatan menggunakan berbagai plugin yang memungkinkan penggunaan repeater yang tidak dilaporkan sebagai jembatan, dan pengguna dapat menggunakan skema ini untuk berbagai konversi lalu lintas. Kami berhasil memastikan bahwa repeater baru ditambahkan ke jaringan lebih cepat daripada sensor menyadari pemblokiran mereka.



Bahkan, ini adalah kasus ketika tidak ada solusi yang bisa dikerjakan secara kategoris. Saya kira saya tidak merumuskan pemikiran saya dengan cara itu. Akan lebih benar untuk mengatakan bahwa tidak ada plug-in ini pada dasarnya non-blocking oleh teknologi modern, tetapi mereka cukup baik untuk menjaga lalu lintas tidak terkunci selama 1-2 tahun di sebagian besar negara atau 6-7 bulan di Cina.

China saat ini memiliki sensor paling kompeten di dunia, sebagian besar karena tidak menggunakan outsourcing. Sebagian besar negara lain dengan fungsi sensor sensor transfer Internet yang agresif ke perusahaan-perusahaan Eropa, Amerika dan Asia, yang kepentingannya bukan untuk benar-benar menjual perangkat lunak sensor internet yang efektif, tetapi untuk memaksa pelanggan mereka untuk terus berpartisipasi dalam perlombaan pembaruan.

Misalnya, Anda dapat membeli perangkat lunak yang disensor di Amerika Serikat. Secara teknis, perusahaan-perusahaan AS tidak diizinkan membuat program sensor untuk negara ketiga, tetapi di AS mereka telah mengembangkan firewall korporat yang mencapai 10 juta pengguna. Saya pikir ini tidak etis, tetapi sekali lagi, saya bukan anggota organisasi politik dan bukan filsuf.

Paul Cyverson, salah satu penulis Tor, memiliki gelar dalam bidang filsafat, tetapi bahkan ia tidak dapat menjawab pertanyaan-pertanyaan ini. Tetapi dia menghabiskan banyak waktu untuk tidak menjawabnya.
Jadi, di mana saya berhenti? 90 menit adalah waktu yang lama. Disensor! Jadi, Tor telah berulang kali menghindari sensor dari berbagai pengembang. Mereka mencoba untuk memblokir versi terbaru dari Tor, tetapi pada saat yang sama mereka melakukan blok yang cukup lemah. Oleh karena itu, jika kita mengubah 1 bit di suatu tempat di pengidentifikasi simpul yang sama, maka kita dapat dengan mudah melewati kunci tersebut.

Kami tidak dapat membuktikan bahwa mereka secara khusus membuat Tor memotong kunci, yaitu, mereka menjual program pemblokiran yang tidak berfungsi, dan kemudian menjualnya satu per satu pembaruan demi satu. Tetapi bagi kita tampaknya seperti itu adanya. – , , .

, , , . , , . , «» – , , .

, – . Tor — , . , , . freehaven.net/anonbib/ , .

I2P, Gnunet, Freedom — «», , , Mixmaster, Mixminion, Sphynx Y, Sphinx I – - , DC-net, DC-net . , . , Tor — , , .
— . , — , , , , — , , . . , . , , , , , . , : « , ». , 10 , .



, Tor. , :

PKz 1 → PKz, Date

, , . , , .

. 2003 RSA-1024, . RSA-1024 Ed25519. , , .

path selection, . 5-6 , . .

, - . , , , , - . , - - , 2015 . - – , !

, . , . . 10 20 . , , , 100 , - .

, , , . — , .
, , 100 – - . , , , - .



- , . , , , , .
, , .

- , , - , . : «, , !». , 2 , 6. , , , - .

, , , . «», , - , . , , , - .

, . ? Tidak , . , . , 12:25, . . , , !


.

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?

Source: https://habr.com/ru/post/id431266/


All Articles