Bagaimana Ilmu Komputer Teoritis berhubungan dengan keamanan?

11

Ketika saya memikirkan perangkat lunak yang tidak aman saya pikir itu "terlalu berguna" dan dapat disalahgunakan oleh penyerang. Jadi dalam arti mengamankan perangkat lunak adalah proses membuat perangkat lunak kurang bermanfaat. Dalam Ilmu Komputer Teoritis Anda tidak bekerja dengan dunia nyata. Jadi, apakah ada masalah keamanan ketika bekerja dengan teori murni? Atau sisi lain dari koin, apakah Ilmu Komputer Teoretis memengaruhi dunia nyata orang yang diretas? Jika demikian, topik keamanan apa yang dianggap Teoritis?

Benteng
sumber
9
Perspektif Teori CS yang disajikan bersifat subyektif dan sangat dapat diperdebatkan dan juga tidak diharuskan untuk mengajukan pertanyaan. Pertanyaannya tampaknya berfokus secara khusus pada peretasan, yang merupakan subjek yang luas di dalamnya dan tentang itu sendiri (mulai dari teknik rekayasa sosial) dan tidak mendekati apa yang dimaksud dengan "aman". Untuk alasan ini saya telah menurunkan suara. Namun, saya merasa pertanyaan itu datang dari tempat yang bagus dan memiliki beberapa aspek menarik sehingga saya jawab di bawah.
Ross Snider

Jawaban:

20

Intuisi Anda bahwa "rasa tidak aman" disebabkan oleh perangkat lunak yang "terlalu berguna" adalah benar, dalam arti tertentu. Ada literatur teoritis yang besar dan terus berkembang tentang "privasi diferensial" yang memformalkan intuisi Anda. Lihat misalnya, di sini: research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

Di sini, kami menganggap input ke suatu algoritma sebagai "basis data", dan algoritme itu "tidak aman" jika ia mengungkapkan terlalu banyak informasi tentang data seseorang dalam database. Algoritma adalah -differensial privat jika output algoritme tidak banyak bergantung pada satu input: khusus, mengubah entri tunggal dalam database input hanya akan mengubah probabilitas setiap output algoritma dengan paling banyak faktor e ϵ .ϵeϵ

Tentu saja, menjadikan suatu algoritma pribadi membuatnya kurang bermanfaat: suatu algoritma privat -berbeda menghasilkan keluaran yang bahkan bukan fungsi dari input sama sekali! Tapi ternyata Anda bisa mencoba dan dengan hati-hati menyeimbangkan pertukaran antara privasi dan utilitas, dan bisa mendapatkan algoritma yang sangat pribadi yang bagaimanapun sangat berguna.0

Aaron Roth
sumber
14

Dalam beberapa cara:

Ross Snider
sumber
Jujur saya tidak percaya Anda pernah menemukan kerentanan, menambal sepotong kode atau bahkan telah melihat cara kerja kerentanan dunia nyata.
The Rook
8
Menggunakan OllyDbg saya menambal dll gdi saya untuk memperbaiki kerentanan kursor (kedua) (jelas tanpa kode sumber) sebelum patch Microsoft Selasa. Sekali lagi menggunakan OllyDbg saya menambal emulator sumber tertutup untuk membuatnya curang bukti (memalukan) kompetisi Pokemon. Saya menemukan 0day dalam proyek webcam dan mendapat skor cukup tinggi pada sejumlah besar wargame (termasuk Blacksun, yang memiliki ASLR dan PaX diaktifkan). Saya tidak akan menyebutkan beberapa hal jahat yang telah saya lakukan .... Mengangkat bahu; Mengapa itu penting jika saya punya atau tidak? Tolong jangan nyala.
Ross Snider
13
@The Rook: Jika Anda yakin daftar Ross memiliki sedikit koneksi ke praktik keamanan perangkat lunak yang sebenarnya, maka katakan begitu. Mungkin bahkan memberikan beberapa contoh akan sangat membantu, atau menambahkan jawaban tentang perincian Anda sendiri seberapa jauh penelitian keamanan TCS dari praktik keamanan yang sebenarnya (yang menurut saya akan sangat menarik untuk dibaca). Tapi tidak perlu merendahkan Ross.
Joshua Grochow
10

Ada banyak motivasi dunia nyata untuk mempelajari algoritma streaming yang berasal dari deteksi intrusi jaringan. Makalah di bawah ini menggunakan algoritma streaming untuk entropi empiris untuk mendeteksi anomali dalam lalu lintas jaringan Anda.

Yu Gu, Andrew McCallum, dan Don Towsley. Mendeteksi anomali dalam lalu lintas jaringan menggunakan estimasi entropi maksimum. Dalam IMC '05: Prosiding konferensi ACM SIGCOMM ke-5 tentang pengukuran Internet, halaman 1-6, 2005

Joshua Brody
sumber
8

Tidak seperti jawaban lainnya, ini lebih sesuai dengan "hal-hal yang harus kita khawatirkan ketika mengatakan sesuatu 'terbukti aman'" sebagai lawan dari tempat-tempat di mana TCS telah digunakan dalam keamanan. Dengan demikian, ini membahas pertanyaan pertama tentang masalah keamanan ketika bekerja dengan teori.

Seperti yang dikatakan peretas, hasil teoretis seringkali bersinggungan dengan keamanan dunia nyata. Argumen semacam ini telah dibuat lebih teoretis, ilmiah, dan tepat oleh Alfred Menezes dan Neal Koblitz dalam seri makalah mereka ' Another Look ' (peringatan: situs ini tampaknya sedikit konfrontatif bagi saya, tapi saya pikir ide dasar mempertanyakan asumsi sangat penting). Mereka menunjukkan kelemahan dalam asumsi standar dalam kriptografi, bahkan dalam makalah mani.

Beberapa contoh (mengutip / memparafrasekan beberapa poin dari situs mereka):

  1. Teorema keamanan adalah bersyarat - ia mengasumsikan kepraktisan beberapa masalah matematika.

  2. Seringkali asumsi keras kepala dibuat untuk masalah yang rumit dan dibuat-buat: dalam beberapa kasus masalahnya sepele dengan masalah cryptanalysis untuk protokol yang keamanannya sedang "terbukti".

  3. Terkadang bukti memiliki celah ketat yang besar, tetapi ukuran parameter tetap disarankan seolah-olah buktinya ketat. Dalam kasus seperti itu buktinya biasanya memberi batas bawah yang tidak berguna pada waktu berjalannya serangan yang berhasil. Lebih lanjut, hasil asimptotik tidak selalu memberikan jaminan keamanan untuk parameter dalam rentang yang digunakan dalam praktik.

  4. Teorema keamanan menggunakan model keamanan tertentu. Serangan tertentu - terutama serangan saluran samping - sangat sulit untuk dimodelkan, dan model yang telah diusulkan sangat tidak memadai.

Artem Kaznatcheev
sumber
6

Provers teorema telah digunakan sampai batas tertentu untuk membuktikan kebenaran perangkat lunak, perangkat keras dan protokol. Lihat, misalnya, di sini atau di sini .

Masalah data yang mengalir dengan cara yang tidak diinginkan melalui program (yang dengan demikian menyebabkan potensi kebocoran) telah dimodelkan secara teoritis menggunakan gagasan gangguan (non-); dapatkan petunjuk di sini .

Raphael
sumber
3

Decidability adalah perhatian utama dalam penelitian bahasa pemrograman. Artinya, banyak upaya yang diinvestasikan dalam membangun bahasa pemrograman yang hanya menerima kode yang memenuhi properti tertentu. Bahasa statis yang khas hanya memberikan jaminan yang lemah, seperti menolak program jika metode tertentu tidak ada, tetapi bayangkan jika bahasa tersebut juga dapat membuang program yang, misalnya, tidak benar menggunakan mutex, atau mencoba membaca di luar wilayah memori. Jelas bahwa masalah decidability datang dengan cepat (skenario paling sederhana: tentukan bahwa kompiler Anda hanya boleh menerima program terminasi), dan tentu saja, ada masalah efisiensi (pemeriksa tipe ML memiliki kasus eksponensial ganda).

Bagaimanapun, komunitas riset PL sangat tertarik pada keamanan (apakah Anda percaya browser Anda menjalankan kode asing sewenang-wenang ?!), dan pertanyaan mereka mengarah ke banyak pertanyaan teori CS klasik.

matus
sumber
Bahasa tingkat tinggi apa pun yang tepat (baca: selain C [++]) tidak memberikan kontrol programmer atas akses memori, jadi saya akan menganggap masalah ini terpecahkan.
Raphael
@ Raphael: Mengingat bahwa sejumlah besar perangkat lunak masih ditulis dalam C dan C ++, masalah ini tidak dapat dianggap diselesaikan. Selanjutnya, teknik untuk mengatasi serangan injeksi kode pada Javascript, misalnya, masih dalam masa pertumbuhan. Banyak yang harus dilakukan.
Dave Clarke
1
Fakta bahwa lingkungan tertentu mengabaikan solusi yang ada (kadang-kadang karena alasan yang baik) tidak membuat masalah (di sini: mengakses alamat memori terlarang) kurang terpecahkan. Beberapa hal yang sulit untuk diperiksa dapat dengan mudah dielakkan oleh invarian yang sesuai. Anda dapat, misalnya, meminta bukti resmi penghentian dari programmer Anda (cf Isabelle / HOL).
Raphael