วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎีเกี่ยวข้องกับความปลอดภัยอย่างไร


11

เมื่อฉันนึกถึงซอฟต์แวร์ที่ไม่ปลอดภัยฉันคิดว่ามัน "มีประโยชน์มาก" และผู้โจมตีสามารถใช้งานในทางที่ผิดได้ ดังนั้นในแง่การรักษาความปลอดภัยซอฟต์แวร์คือกระบวนการทำให้ซอฟต์แวร์มีประโยชน์น้อยลง ในวิทยาการคอมพิวเตอร์เชิงทฤษฎีคุณไม่ได้ทำงานกับโลกแห่งความจริง มีข้อกังวลเรื่องความปลอดภัยเมื่อทำงานกับทฤษฎีที่บริสุทธิ์หรือไม่ หรืออีกด้านหนึ่งของเหรียญศาสตร์คอมพิวเตอร์ทางทฤษฎีมีผลกระทบต่อโลกแห่งความจริงของผู้ที่ถูกแฮ็กหรือไม่? ถ้าเป็นเช่นนั้นหัวข้อความปลอดภัยใดบ้างที่ถูกพิจารณาในเชิงทฤษฎี?


9
มุมมองของ CS Theory ที่นำเสนอนั้นเป็นแบบอัตนัยและมีเหตุผลและไม่จำเป็นต้องตั้งคำถาม คำถามดูเหมือนจะเน้นเฉพาะในการแฮ็คซึ่งเป็นหัวข้อกว้าง ๆ ในตัวมันเอง (ตั้งแต่ไปจนถึงเทคนิคทางวิศวกรรมสังคม) และไม่เข้าใกล้กับสิ่งที่ "ปลอดภัย" ด้วยเหตุผลเหล่านี้ฉันได้ลงคะแนน อย่างไรก็ตามฉันรู้สึกว่าคำถามมาจากสถานที่ที่ดีและมีแง่มุมที่น่าสนใจเกี่ยวกับเรื่องนี้ดังนั้นฉันจึงตอบคำถามด้านล่าง
Ross Snider

คำตอบ:


20

สัญชาตญาณของคุณว่า "ความไม่มั่นคง" เกิดจากซอฟต์แวร์ที่ "มีประโยชน์มากเกินไป" ถูกต้องในแง่หนึ่ง มีวรรณคดีเชิงทฤษฎีที่มีขนาดใหญ่และกำลังเติบโตใน "ความเป็นส่วนตัวที่แตกต่าง" ที่ทำให้สัญชาตญาณของคุณเป็นทางการ ดูตัวอย่างได้ที่นี่: research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

ที่นี่เราคิดว่าการป้อนข้อมูลไปยังอัลกอริทึมว่าเป็น "ฐานข้อมูล" และอัลกอริทึมคือ "ไม่ปลอดภัย" ถ้ามันแสดงข้อมูลมากเกินไปเกี่ยวกับข้อมูลของบุคคลใดคนหนึ่งในฐานข้อมูล อัลกอริทึมเป็นส่วนตัว -differentially ถ้าเอาท์พุทอัลกอริทึมที่ไม่ได้ขึ้นอยู่มากในการป้อนข้อมูลใด: โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงรายการเดียวในฐานข้อมูลการป้อนข้อมูลที่ควรเปลี่ยนน่าจะเป็นของการส่งออกของขั้นตอนวิธีการใด ๆ โดยที่มากที่สุดอีεปัจจัยεอีε

แน่นอนว่าการทำให้อัลกอริทึมเป็นส่วนตัวทำให้มีประโยชน์น้อยลง: อัลกอริทึมส่วนตัวที่แตกต่างกันจะสร้างเอาต์พุตที่ไม่ได้มีฟังก์ชั่นของอินพุตเลย! แต่กลับกลายเป็นว่าคุณสามารถลองและปรับสมดุลการแลกเปลี่ยนระหว่างความเป็นส่วนตัวและยูทิลิตี้อย่างระมัดระวังและอาจได้รับอัลกอริธึมส่วนตัวที่มีประโยชน์มาก0


14

ในหลายวิธี:


ฉันไม่เชื่อว่าคุณเคยพบช่องโหว่ติดตั้งโค้ดชิ้นเดียวหรือเคยเห็นการทำงานด้านในของช่องโหว่ในโลกแห่งความเป็นจริง
โกง

8
ใช้ OllyDbg ฉันแก้ไข gdi dll ของฉันเพื่อแก้ไขช่องโหว่เคอร์เซอร์ (ที่สอง) (เห็นได้ชัดว่าไม่มีซอร์สโค้ด) ก่อนแพทช์ของ Microsoft ในวันอังคาร อีกครั้งโดยใช้ OllyDbg ฉันแก้ไขตัวจำลองแหล่งข้อมูลปิดเพื่อให้โกงการพิสูจน์สำหรับการแข่งขันโปเกมอน (ที่น่าอับอาย) ฉันพบ 0day ในโครงการเว็บแคมและได้คะแนนสูงพอสมควรจากเกมจำนวนมาก (รวมถึง Blacksun ซึ่งเปิดใช้งาน ASLR และ PaX) ฉันจะไม่พูดถึงบางสิ่งที่เลวร้ายยิ่งกว่าที่ฉันเคยทำ .... ยักไหล่; ทำไมมันจะสำคัญถ้าฉันมีหรือไม่มี? กรุณาอย่าเปลวไฟ
Ross Snider

13
@ The Rook: หากคุณเชื่อว่ารายชื่อของ Ross นั้นมีการเชื่อมต่อกับการรักษาความปลอดภัยซอฟต์แวร์ที่แท้จริงแล้วให้พูดอย่างนั้น บางทีการยกตัวอย่างบางอย่างอาจเป็นประโยชน์หรือเพิ่มคำตอบในรายละเอียดของคุณเองว่าการวิจัยด้านความปลอดภัยของ TCS นั้นห่างไกลจากการปฏิบัติด้านความปลอดภัยที่แท้จริงมากแค่ไหน แต่ไม่จำเป็นต้องดูถูก Ross
Joshua Grochow

13

พิจารณาตัวอย่างWired Equivalent Privacyซึ่งไม่ใช่เรื่องจริงในความเป็นจริง: เนื่องจากการกำกับดูแลทางทฤษฎีขั้นพื้นฐานที่น่าอับอาย (pdf) WEP สามารถแตกได้ภายในไม่กี่นาที

ใน“ ทำไมคอมพิวเตอร์ไม่ปลอดภัย” Bruce Schneier เหน็บแนม

วิศวกรรมความปลอดภัยเกี่ยวข้องกับการเขียนโปรแกรมคอมพิวเตอร์ของซาตาน

และคอมพิวเตอร์ของซาตานนั้นยากต่อการทดสอบ


10

มีแรงจูงใจในโลกแห่งความจริงมากมายสำหรับการศึกษาอัลกอริธึมการสตรีมที่มาจากการตรวจจับการบุกรุกเครือข่าย กระดาษด้านล่างใช้อัลกอริทึมการสตรีมสำหรับเอนโทรปีเชิงประจักษ์เพื่อตรวจจับความผิดปกติในการรับส่งข้อมูลเครือข่ายของคุณ

Yu Gu, Andrew McCallum และ Don Towsley การตรวจจับความผิดปกติในการรับส่งข้อมูลเครือข่ายโดยใช้การประมาณค่าเอนโทรปีสูงสุด ใน IMC '05: รายงานการประชุม ACM SIGCOMM ครั้งที่ 5 เรื่องการวัดทางอินเทอร์เน็ตหน้า 1–6, 2005


8

ต่างจากคำตอบอื่น ๆ นี่คือสิ่งที่เพิ่มเติมตาม "สิ่งที่เราควรกังวลเมื่อพูดอะไรบางอย่างที่มีความปลอดภัย" พิสูจน์ได้ "เมื่อเทียบกับสถานที่ที่ TCS ใช้ในการรักษาความปลอดภัย ดังนั้นจึงตอบคำถามแรกเกี่ยวกับความปลอดภัยเมื่อทำงานกับทฤษฎี

ดังที่แฮ็คเกอร์กล่าวว่าผลลัพธ์ทางทฤษฎีมักจะเป็นเรื่องเกี่ยวกับความปลอดภัยในโลกแห่งความเป็นจริง การโต้เถียงแบบนี้ได้ถูกสร้างขึ้นทางทฤษฎีวิทยาศาสตร์และแม่นยำมากขึ้นโดย Alfred Menezes และ Neal Koblitz ในเอกสารชุด ' Another Look ' ของพวกเขา (คำเตือน: ไซต์ดูเหมือนจะเผชิญหน้ากับฉันเพียงเล็กน้อย แต่ฉันคิดว่าแนวคิดพื้นฐานของการตั้งสมมติฐาน สำคัญมาก). พวกเขาชี้ให้เห็นจุดอ่อนในสมมติฐานมาตรฐานในการเข้ารหัสแม้ในเอกสารน้ำเชื้อ

ตัวอย่างบางส่วน (การอ้างถึง / การถอดความบางจุดจากไซต์ของพวกเขา):

  1. ทฤษฎีความปลอดภัยเป็นเงื่อนไข - มันจะอนุมานว่าปัญหาทางคณิตศาสตร์บางอย่างเกิดขึ้นได้ยาก

  2. บ่อยครั้งที่ข้อสันนิษฐานนั้นถูกสร้างขึ้นเพื่อปัญหาที่ซับซ้อนและยากที่จะคาดเดาได้: ในบางกรณีปัญหานั้นมีความสำคัญเทียบเท่ากับปัญหาการเข้ารหัสสำหรับโปรโตคอลซึ่งความปลอดภัยกำลังถูก "พิสูจน์"

  3. บางครั้งการพิสูจน์มีช่องว่างความหนาแน่นขนาดใหญ่ แต่ขนาดพารามิเตอร์ยังคงแนะนำราวกับว่าการพิสูจน์ได้แน่น ในกรณีเช่นนี้การพิสูจน์มักจะให้ขอบเขตที่ต่ำกว่าไร้ประโยชน์ในเวลาทำงานของการโจมตีที่ประสบความสำเร็จ นอกจากนี้ผลลัพธ์ของซีมโทติคไม่จำเป็นต้องรับประกันความปลอดภัยสำหรับพารามิเตอร์ในช่วงที่ใช้ในทางปฏิบัติ

  4. ทฤษฎีความปลอดภัยใช้รูปแบบความปลอดภัยที่แน่นอน การโจมตีบางอย่าง - โดยเฉพาะการโจมตีช่องทางด้านข้างนั้นยากที่จะทำโมเดลและโมเดลที่ได้รับการเสนอนั้นไม่เพียงพออย่างเลวร้าย


6

บทพิสูจน์ทฤษฎีบทได้ถูกนำมาใช้ในระดับหนึ่งสำหรับการพิสูจน์ความถูกต้องของซอฟต์แวร์ฮาร์ดแวร์และโปรโตคอล ดูตัวอย่างเช่นที่นี่หรือที่นี่

ปัญหาของการไหลของข้อมูลในรูปแบบที่ไม่พึงประสงค์ผ่านทางโปรแกรม (ซึ่งก่อให้เกิดการรั่วไหลที่อาจเกิดขึ้น) ได้ถูกสร้างแบบจำลองทางทฤษฎีโดยใช้แนวคิดของการรบกวน (ไม่ใช่ -); รับตัวชี้นี่


3

Decidability เป็นปัญหาสำคัญในการวิจัยภาษาโปรแกรม นั่นคือความพยายามอย่างมากคือการลงทุนในการสร้างภาษาการเขียนโปรแกรมซึ่งยอมรับเฉพาะรหัสที่ตอบสนองคุณสมบัติบางอย่างเท่านั้น ภาษาสแตติกทั่วไปให้การรับประกันที่อ่อนแอเท่านั้นเช่นการปฏิเสธโปรแกรมหากวิธีการบางอย่างไม่มีอยู่จริง แต่ลองจินตนาการว่าถ้าภาษานั้นสามารถใช้งานโปรแกรมที่ยกตัวอย่างเช่นการใช้ mutexes อย่างไม่เหมาะสมหรือพยายามอ่านเกินขอบเขตหน่วยความจำ เป็นที่ชัดเจนว่าปัญหา decidability เกิดขึ้นอย่างรวดเร็ว (สถานการณ์ที่ง่ายที่สุด: ระบุว่าคอมไพเลอร์ของคุณควรยอมรับโปรแกรมที่ยกเลิกเท่านั้น) และแน่นอนว่ามีข้อกังวลเรื่องประสิทธิภาพ (ตัวพิมพ์ตัวตรวจสอบ ML มีกรณีทวีคูณทวีคูณ)

ไม่ว่าในกรณีใดชุมชนการวิจัย PL มีความสนใจในเรื่องความปลอดภัยเป็นอย่างมาก (คุณเชื่อมั่นในเบราว์เซอร์ของคุณเพื่อเรียกใช้โค้ดต่างประเทศโดยพลการหรือไม่?) และคำถามของพวกเขาจะนำไปสู่คำถามเชิงทฤษฎี CS คลาสสิก


ภาษาระดับสูงที่เหมาะสม (อ่าน: นอกเหนือจาก C [++]) ไม่ได้ให้โปรแกรมเมอร์ควบคุมการเข้าถึงหน่วยความจำดังนั้นฉันจะพิจารณาปัญหานี้แก้ไข
Raphael

@ ราฟาเอล: เนื่องจากซอฟต์แวร์จำนวนมากยังคงเขียนใน C และ C ++ ปัญหานี้จึงไม่สามารถนำมาพิจารณาแก้ไขได้ นอกจากนี้เทคนิคในการจัดการกับการจู่โจมการฉีดโค้ดบน Javascript นั้นยังอยู่ในช่วงเริ่มต้น มีหลายสิ่งที่ต้องทำ
Dave Clarke

1
ความจริงที่ว่าสภาพแวดล้อมบางอย่างไม่สนใจโซลูชันที่มีอยู่ (บางครั้งด้วยเหตุผลที่ดี) ไม่ได้ทำให้เกิดปัญหา (ที่นี่: การเข้าถึงที่อยู่หน่วยความจำต้องห้าม) แก้ไขน้อยกว่า บางสิ่งที่ยากต่อการตรวจสอบสามารถหลีกเลี่ยงได้โดยผู้รุกรานที่เหมาะสม ตัวอย่างเช่นคุณสามารถขอหลักฐานการเลิกจ้างอย่างเป็นทางการจากโปรแกรมเมอร์ของคุณ (cf Isabelle / HOL)
Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.