การจัดเส้นทางแบบหัวหอม

จากวิกิพีเดีย สารานุกรมเสรี
เมื่อส่งข้อมูลไปยังปลายทาง ระบบผู้ใช้/พร็อกซีหัวหอม (onion proxy, OP) จะเข้ารหัสลับข้อมูลเป็นชั้น ๆ โดยใช้กุญแจเข้ารหัสแบบสมมาตรที่ได้แลกเปลี่ยนกับสถานีรีเลย์แต่ละสถานีในวงจรการสื่อสารเสมือนที่ได้สร้างขึ้นก่อนส่งข้อมูล เป็นกุญแจที่สัมพันธ์กับสถานีต่าง ๆ เริ่มตั้งแต่สถานีขาออก (สถานีสุดท้าย) ย้อนลำดับกลับมาจนถึงสถานีขาเข้า เมื่อข้อมูลส่งไปถึงแต่ละสถานี ๆ สถานีก็จะสามารถถอดรหัสชั้นที่เข้ากุญแจซึ่งตนได้แลกเปลี่ยน แล้วทำการที่สมควรเช่นส่งข้อมูลนั้นต่อไปได้ โดยที่ไม่สามารถรู้ข้อมูลที่ส่งต่อเพราะเข้ารหัสด้วยกุญแจที่ตนไม่มี สถานีขาออกจะเป็นผู้ถอดรหัสชั้นสุดท้ายแล้วส่งข้อมูลดั้งเดิมไปยังระบบปลายทางต่อไป[1][2] ในตัวอย่างนี้ ระบบผู้ใช้จะส่งข้อมูลผ่านสถานี A ไปยัง B ไปสุดที่ C แล้ว C ก็จะส่งต่อข้อมูลเดิมไปยังระบบปลายทาง ดังนั้น ระบบผู้ใช้จึงเข้ารหัสข้อมูลที่ส่งโดยใช้กุญแจที่สัมพันธ์กับ C แล้วเข้ารหัสด้วยกุญแจที่สัมพันธ์กับ B และในที่สุดเข้ารหัสด้วยกุญแจที่สัมพันธ์กับ A ดังนั้น เมื่อ A ได้รับข้อมูล ก็จะสามารถถอดรหัสชั้นแรกโดยใช้กุญแจที่ได้แลกเปลี่ยนกันเมื่อสร้างวงจร และสถานีต่อ ๆ ไปคือ B และ C ก็เช่นกัน นอกจากจะอุปมาเหมือนกับหัวหอมที่เป็นชั้น ๆ การส่งข้อมูลแบบนี้ยังเหมือนกับขุดอุโมงค์ภายในอุโมงค์ (tunneling) เพื่อส่งข้อมูล[1][2] ซึ่งมีส่วนคล้ายกับการใช้อุโมงค์ของเครือข่ายส่วนตัวเสมือน (VPN) เพื่อส่งข้อมูลไปยังระบบอื่น ๆ แต่ต่างโดยหลักเพราะเป็นอุโมงค์หลายชั้น

การจัดเส้นทางแบบหัวหอม[3] (อังกฤษ: onion routing) เป็นเทคนิคการสื่อสารแบบนิรนามผ่านเครือข่ายคอมพิวเตอร์ ในเครือข่ายหัวหอม ข้อความจะเข้ารหัสลับเป็นชั้น ๆ จึงอุปมาเหมือนกับชั้นหัวหอม ข้อมูลที่เข้ารหัสจะส่งผ่านโหนด/สถานีรีเลย์ในเครือข่ายที่เรียกว่า เราเตอร์หัวหอม (onion router) โดยแต่ละสถานีจะ "ปอก" ชั้นหนึ่งออกเพื่อเปิดเอาข้อมูลที่จะส่งต่อไป เมื่อชั้นสุดท้ายได้ถอดรหัสแล้ว ข้อความเดิมก็จะส่งไปยังระบบเป้าหมายจริง ๆ ผู้ส่งได้สภาวะนิรนามก็เพราะสถานีในระหว่าง ๆ จะรู้ที่อยู่/ตำแหน่งของโหนดก่อนหน้าและโหนดที่ส่งต่อไปเท่านั้น[4] โดยไม่มีสถานีไหน ๆ ที่รู้ที่อยู่ของทั้งระบบต้นสายและระบบปลายทางทั้งสอง แม้ระบบปลายทางเองก็รู้เพียงแต่ที่อยู่ของสถานีสุดท้ายในเครือข่ายเท่านั้น แต่ก็มีวิธีที่สามารถทำลายสภาวะนิรนามของเทคนิคเช่นนี้ได้ เช่น การวิเคราะห์เวลา ถ้าสามารถดักฟังข้อมูลทั้งขาเข้าขาออกจากเครือข่ายได้[5]

พัฒนาการและการทำให้เกิดผล[แก้]

การจัดเส้นทางแบบหัวหอมได้พัฒนาขึ้นในกลางคริสต์ทศวรรษ 1990 ณ แล็บวิจัยกองทัพเรือสหรัฐโดยเจ้าหน้าที่คือ Paul Syverson, Michael G. Reed, และ David Goldschlag[6][7] เพื่อป้องกันการสื่อสารราชการลับของสหรัฐออนไลน์[8] แล้วต่อมาจึงพัฒนายิ่งขึ้นโดยสำนักงานโปรเจ็กต์งานวิจัยก้าวหน้ากระทรวงกลาโหม (DARPA) แล้วจดสิทธิบัตรโดยกองทัพเรือในปี 1998[7][9][10]

ต่อมาในปี 2002 นักวิทยาการคอมพิวเตอร์ รอเจอร์ ดิงเกิลไดน์ (Roger Dingledine) และนิก แม็ทธิวสัน (Nick Mathewson) จึงร่วมมือกับ Syverson เพื่อพัฒนาซอฟต์แวร์การจัดเส้นทางแบบหัวหอมในรูปแบบที่รู้จักกันดีที่สุด คือ ทอร์ (Tor) ซึ่งในเวลานั้นเรียกว่า The Onion Routing project หรือ TOR project (โปรเจ็กต์ทอร์) แล้วต่อมาในปี 2004 จึงได้ตีพิมพ์เอกสารการออกแบบของทอร์รุ่นสองในงานประชุม USENIX Security ครั้งที่ 13[2] ซึ่งกลายเป็นมูลฐานของการทำให้เกิดผลต่อมา

หลังจากที่แล็บวิจัยกองทัพเรือสหรัฐได้อนุญาตให้ใช้รหัสคำสั่งของทอร์ตามสัญญาเสรี[8][11][12] ดิงเกิลไดน์ แม็ทธิวสัน และบุคลากรอื่น ๆ อีก 5 ท่านก็ได้จัดตั้งโปรเจ็กต์ทอร์เป็นองค์การไม่แสวงหาผลกำไรในปี 2006 โดยได้รับการสนับสนุนทางการเงินจากมูลนิธิชายแดนอิเล็กทรอนิก (EFF) และองค์กรอื่น ๆ[13][14]

การดำเนินงาน[แก้]

ให้สังเกตว่า การจัดเส้นทางแบบหัวหอมเป็นโพรโทคอลที่ดำเนินการและพัฒนาการขึ้นเรื่อย ๆ โดยโปรเจ็กต์ทอร์เป็นหลัก เนื่องจากไม่มีเอกสารที่รวมสรุปการทำให้เกิดผลดังที่ใช้ในปัจจุบันแบบง่าย ๆ นอกเหนือจากเอกสารกำหนดคุณลักษณะทางเทคนิกต่าง ๆ ข้อมูลในบทความนี้จึงมาจากบทความต่าง ๆ เริ่มตั้งแต่เอกสารแสดงแบบของโพรโทรคอลรุ่นสองของทอร์ในปี 2004[2] เนื้อความในบทความอาจจะจับใจความสำคัญต่าง ๆ ได้ แต่รายละเอียดบางอย่างอาจเคลื่อนคลาดจากดังที่ทำให้เกิดผลในปัจจุบัน

ศัพท์ที่ใช้ในบทความ
ศัพท์ อังกฤษ หมายเหตุ
พร็อกซีหัวหอม, ระบบผู้ใช้, ระบบต้นทาง, ระบบต้นสาย onion proxy (OP) ตัวต่อประสานโปรแกรมแบบ SOCKS ของผู้ใช้กับเครือข่าย ปฏิบัติการเพื่อให้โปรแกรมผู้ใช้สามารถสื่อสารอย่างนิรนามผ่านเครือข่ายได้[15]
โหนด, สถานี node สถานีคือระบบบริการในเครือข่ายเพื่อให้สื่อสารได้อย่างนิรนาม เช่น สถานีส่งต่อเป็นต้น
สถานีรีเลย์, รีเลย์, สถานีส่งต่อ, เราเตอร์, เราเตอร์หัวหอม relay, onion router (OR) สถานีส่งต่อในระหว่าง ๆ ในเครือข่ายเพื่อส่งข้อมูลไปยังระบบปลายทาง[16]
สถานีขาเข้า, สถานีแรก, สถานีหนึ่ง entry node สถานีส่งต่อที่ระบบผู้ใช้ติดต่อเป็นอันดับแรกในเครือข่าย เพื่อตั้งวงจรการสื่อสารและเพื่อสื่อสารผ่านเครือข่าย เป็นสถานีเดียวที่รู้ที่อยู่ไอพีของระบบผู้ใช้
สถานีกลาง, สถานีสอง middle node สถานีส่งต่อที่ระบบผู้ใช้เลือกเพื่อส่งต่อข้อมูลระหว่างสถานีขาเข้าและสถานีขาออก ปกติมีสถานีเดียว สถานีรู้ที่อยู่ไอพีของสถานีที่เชื่อมกันโดยตรงคือที่อยู่ก่อนและหลังตนเองในวงจรเท่านั้น
สถานีขาออก, สถานีสาม exit node สถานีส่งต่อสุดท้ายภายในเครือข่าย ที่ทำหน้าที่ถอดรหัสลับชั้นสุดท้ายแล้วส่งข้อความเดิมไปยังระบบปลายทาง เป็นสถานีเดียวที่รู้ที่อยู่ของระบบปลายทางและสามารถเข้าถึงข้อมูลดั้งเดิมที่ส่งระหว่างระบบผู้ใช้กับระบบปลายทาง
สถานียาม entry guard เซตย่อยของสถานีขาเข้าของเครือข่ายที่ระบบผู้ใช้เลือกโดยสุ่มแล้วใช้เป็นชั่วระยะเวลาหนึ่ง โดยปกติจะเปลี่ยนชุดทุก ๆ 30-60 วัน[17]
สถานีสะพาน bridge relay, bridge สถานีส่งต่อที่ไม่แสดงในสารบบ ปกติใช้ในการเชื่อมต่อกับเครือข่ายเมื่อสถานีส่งต่อที่ระบุในสารบบถูกบล็อกเนื่องกับการตรวจพิจารณาทางอินเทอร์เน็ต[18] และสามารถใช้เพื่ออำพรางการใช้เครือข่าย[19]
โหนดสารบบ, ระบบบริการสารบบ directory node/server โหนดที่ได้ความเชื่อถือเพิ่มขึ้นและให้บริการทางสารบบคือแสดงรายการสถานีส่งต่อต่าง ๆ ภายในเครือข่ายพร้อมทั้งสถานะปัจจุบันของสถานีในรายการ[16] โดยปี 2012 เครือข่ายมีโหนดสารบบ 8 สถานี[20] ระบบผู้ใช้จะแจกจ่ายพร้อมกับรายการโหนดสารบบและกุญแจระบุตัว[21]
ระบบปลายทาง ระบบบริการที่ผู้ใช้ต้องการสื่อสารด้วย เช่น ระบบบริการเว็บ เสิร์ชเอนจิน เป็นต้น
บริการซ่อน hidden service/server (HS) ระบบบริการภายในเครือข่ายที่ให้บริการแก่ผู้ใช้โดยไม่ต้องเปิดเผยที่อยู่ไอพีของตน[22]

สำหรับระบบบริการนี้ ระบบผู้ใช้ไม่ต้องสร้างวงจรการสื่อสารที่มีสถานีขาออกเพราะระบบอยู่ในเครือข่าย

วงจร, วงจรการสื่อสาร, วงจรเสมือน circuit วงจรการสื่อสารคือลำดับโหนดในการส่งต่อข้อมูลระหว่างระบบผู้ใช้กับระบบปลายทาง ปกติจะมีสถานีส่งต่อในระหว่าง 3 สถานี วงจรการสื่อสารเป็นแบบสื่อได้สองทาง คือเมื่อตั้งขึ้นแล้ว สถานีแต่ละสถานีจะรู้ว่า ข้อมูลที่มาจากด้านหนึ่งต้องส่งไปยังอีกด้านหนึ่งโดยอาจต้องเข้าหรือถอดรหัสลับ และในนัยกลับกันก็เช่นกัน วงจรหนึ่ง ๆ อาจมีกระแสข้อมูลทีซีพีหลายกระแส ที่อาจต่อกับระบบบริการเดียวกันหรือหลายระบบ โดยเป็นกระแสข้อมูลของโปรแกรมอันเดียวกันหรือต่าง ๆ กัน ระบบผู้ใช้จะสร้างวงจรใหม่เพื่อกระแสทีซีพีใหม่ทุก ๆ 10 นาที
เซลล์ cell หน่วยข้อมูลพื้นฐานที่ส่งภายในวงจร[16] แต่ละหน่วยมีขนาดเท่ากันคือ 512 ไบต์ เซลล์ทั้งหมดจะเข้ารหัสลับด้วยกุญแจทีแอลเอสเมื่อสื่อสารผ่านการเชื่อมต่อแบบทีแอลเอสระหว่างระบบต่าง ๆ เริ่มตั้งแต่ระบบต้นทางจนถึงสถานีสุดท้ายในเครือข่าย[23]
เซลล์ควบคุม control cell, link cell เซลล์ที่ใช้สื่อสารกับสถานีที่อยู่ต่อกันเพื่อสร้างวงจรและยุติวงจรเป็นต้น[23][24]
เซลล์ส่งต่อ, เซลล์รีเลย์ relay cell เซลล์ที่ใช้เพื่อส่งข้อมูลการสื่อสารจากต้นจนถึงปลาย ส่วนข้อมูลของเซลล์จะเข้ารหัสด้วยกุญแจอายุสั้นเป็นชั้น ๆ[23]
ส่วนหัวของเซลล์ cell header ข้อมูลระบุวงจรและคำสั่งควบคุมเซลล์[23]
ส่วนหัวรีเลย์ relay header ส่วนหัวที่มีเพิ่มขึ้นสำหรับเซลล์รีเลย์ (นอกเหนือจากส่วนหัวของเซลล์) ซึ่งแสดงสายข้อมูล ค่าแฮชเพื่อตรวจสอบบูรณภาพของข้อมูล ขนาดข้อมูล และคำสั่งรีเลย์ อยู่ต่อจากส่วนหัวของเซลล์[23]
ข้อมูลรีเลย์ relay data ส่วนข้อมูลของเซลล์รีเลย์ อยู่ต่อจากส่วนหัวรีเลย์
ส่วนรีเลย์, ส่วนข้อมูล (ของเซลล์) cell data ข้อมูลที่ต่อจากส่วนหัวของเซลล์ซึ่งประกอบด้วยส่วนหัวรีเลย์และข้อมูลรีเลย์ เป็นส่วนที่เข้ารหัสเป็นชั้น ๆ คล้ายหัวหอม[23]
กุญแจทีแอลเอส session key, TLS session key[25], connection key[26] กุญแจแบบสมมาตรที่ตั้งขึ้นเมื่อสร้างการเชื่อมต่อแบบทีแอลเอสระหว่างระบบต่าง ๆ เริ่มตั้งแต่ระบบผู้ใช้จนถึงสถานีขาออก เป็นกุญแจที่รู้กันในระหว่างระบบที่เชื่อมต่อกันโดยตรงภายในวงจร โดยระบบทั้งสองจะทิ้งกุญแจเมื่อการเชื่อมต่อสิ้นสุดลง การเข้ารหัสโดยใช้กุญแจนี้จะป้องกันการตรวจดูหรือเปลี่ยนข้อมูล ป้องกันการปลอมตัวของระบบอื่น ๆ ว่าเป็นระบบภายในวงจร และป้องกันไม่ให้ถอดรหัสข้อมูลในวงจรที่ดักเก็บไว้เพื่อถอดรหัสในอนาคต (เพราะกุญแจทิ้งไปแล้ว)[20][23]
กุญแจช่วงเวลา, กุญแจอายุสั้น ephemeral key, session key[16], circuit session key[25] กุญแจแบบสมมาตรที่ตั้งขึ้นเมื่อสร้างวงจรเสมือนระหว่างระบบผู้ใช้กับสถานีส่งต่อในระหว่าง ๆ แต่ละสถานี โดยระบบทั้งสองจะทิ้งกุญแจเมื่อยุติการเชื่อมต่อในวงจร เป็นกุญแจที่ใช้เข้ารหัสส่วนข้อมูลของเซลล์เป็นชั้น ๆ เหมือนหัวหอม กุญแจนี้จะป้องกันไม่ให้ถอดรหัสข้อมูลในวงจรที่ดักเก็บไว้เพื่อถอดรหัสในอนาคต (เพราะกุญแจทิ้งไปแล้ว) ป้องกันไม่ให้สถานีส่งต่อยกเว้นสถานีท้ายสุด รู้ข้อมูลที่ส่งระหว่างต้นสายหรือปลายทางได้[20]
กุญแจหัวหอม onion key กุญแจแบบอสมมาตรที่สถานีส่งต่อจะเปลี่ยนทุก ๆ อาทิตย์ เป็นกุญแจที่ใช้ถอดรหัสคำขอตั้งวงจรจากระบบผู้ใช้และเพื่อต่อรองสร้างกุญแจอายุสั้น[16][20]
กุญแจระบุตัว, กุญแจระบุสถานี, กุญแจระบุตัวระยะกลาง identity key กุญแจแบบอสมมาตรที่ใช้ระบุสถานีต่าง ๆ ในเครือข่ายรวมทั้งสถานีรีเลย์และโหนดสารบบ เป็นกุญแจที่ใช้ในระยะยาว สำหรับรีเลย์ นี่ใช้ระบุตัวและต่อรองสร้างกุญแจทีแอลเอส เมื่อระบบสองระบบเริ่มเชื่อมต่อกัน และใช้เซ็นข้อมูลเกี่ยวกับสถานีนั้น ๆ ในสารบบ[15][20] สำหรับโหนดสารบบ นี่เป็นกุญแจที่เก็บออฟไลน์ (authority key) ที่ใช้เพื่อเซ็นกุญแจระบุตัวระยะกลาง (directory signing key[20]) ซึ่งจะเปลี่ยนเป็นระยะ ๆ[27]
ปฏิปักษ์, ผู้โจมตี, ศัตรู adversary, attacker ผู้ทำการเพื่อเปิดเผยระบบต้นสายและปลายทางของวงจร หรือเปิดเผยข้อมูลในวงจรของเครือข่าย

คำอธิบายคร่าว ๆ[แก้]

การสื่อสารอย่างนิรนามผ่านเครือข่ายหัวหอม[2] คำแปล (Origen=โปรแกรมผู้ใช้, OP=พร็อกซีหัวหอม/ระบบผู้ใช้, Destino=ระบบปลายทาง, ที่เหลือ=ดูศัพท์) เส้นทางการสื่อสาร (น้ำเงิน=สายข้อมูลทีซีพีผ่านตัวต่อประสาน SOCKS, แดงทึบ=การส่งเซลล์แบบสองทางผ่านทีแอลเอสซึ่งเข้ารหัสลับโดยเครือข่าย, ดำ=การสื่อสารผ่านทีซีพีซึ่งไม่ได้เข้ารหัสลับโดยเครือข่าย)

การจัดเส้นทางแบบหัวหอม (onion routing) ทำให้เกิดผลโดยการเข้ารหัสลับในชั้นโปรแกรมประยุกต์ของโพรโทคอลสแตกทีซีพีที่ใช้ในการสื่อสาร โดยทำเป็นชั้น ๆ เหมือนกับของหัวหอม คือระบบผู้ใช้จะสร้างวงจรการสื่อสารเสมือนผ่านสถานี/โหนดส่งต่อต่าง ๆ 3 สถานีซึ่งเลือกโดยสุ่มเป็นลำดับ ๆ การสร้างจะเพิ่มสถานีทีละสถานี ๆ เข้าในวงจรด้วยการสื่อสารที่เข้ารหัสลับ โดยสถานีส่งต่อแต่ละสถานี จะรู้แต่เลขที่อยู่ไอพีขาเข้าและขาออกของตน ๆ เท่านั้น และไม่มีสถานีไหนในระหว่าง ที่รู้ทั้งที่อยู่ของต้นสายและของปลายทางทั้งสอง แม้ในมุมมองของระบบปลายทาง ก็จะดูเหมือนว่าการสื่อสารเริ่มมาจากสถานีขาออกของเครือข่าย เมื่อกำลังสร้างวงจร ระบบผู้ใช้จะแลกเปลี่ยนกุญแจเข้ารหัสลับแบบสมมาตรโดยเฉพาะ ๆ กับโหนดส่งต่อแต่ละสถานี เพื่อเมื่อส่งข้อมูลไปยังปลายทาง ระบบผู้ใช้ก็จะเข้ารหัสข้อมูลเป็นชั้น ๆ ด้วยกุญแจที่แลกเปลี่ยนเริ่มตั้งแต่สถานีขาออก (สถานีสุดท้าย) ย้อนลำดับกลับมาจะถึงสถานีขาเข้า เมื่อข้อมูลส่งไปถึงแต่ละสถานี ๆ สถานีก็จะสามารถถอดรหัสชั้นที่เข้ากุญแจซึ่งตนได้แลกเปลี่ยน แล้วทำการที่สมควรเช่นส่งข้อมูลนั้นต่อไปได้ โดยที่ไม่สามารถรู้ข้อมูลที่ส่งต่อเพราะเข้ารหัสด้วยกุญแจที่ตนไม่มี สถานีขาออกจะเป็นผู้ถอดรหัสชั้นสุดท้ายแล้วส่งข้อมูลดั้งเดิมไปยังระบบปลายทางต่อไป[1][2]

เมื่อระบบปลายทางส่งข้อมูลกลับไปยังระบบผู้ใช้ ข้อมูลก็จะวิ่งผ่านวงจรการสื่อสารเดียวกันโดยกลับลำดับคือจากสถานีขาออกจนไปถึงสถานีขาเข้า โดยสถานีส่งต่อแต่ละสถานี ๆ จะเข้ารหัสลับข้อมูลด้วยกุญแจที่ตนใช้ร่วมกับระบบผู้ใช้ ดังนั้น เมื่อสถานีขาเข้าส่งข้อมูลกลับไปถึงระบบต้นทาง ข้อมูลเซลล์จะเข้ารหัสไว้เป็นสามชั้น ซึ่งระบบผู้ใช้จะถอดรหัสด้วยกุญแจที่ตนใช้ร่วมกันสถานีส่งต่อต่าง ๆ[28]

"(บน) เซลล์ควบคุมที่อาจใช้ตั้งวงจรหรือยุติวงจรเป็นต้น (ล่าง) เซลล์รีเลย์ที่อาจใช้ส่งข้อมูลจากระบบผู้ใช้ไปยังระบบปลายทางเป็นต้น

เซลล์[แก้]

เราเตอร์หัวหอมสื่อสารกับกันและกัน และกับระบบผู้ใช้ ผ่านการเชื่อมต่อกันด้วยทีแอลเอสและการเข้ารหัสด้วยกุญแจอายุสั้น ทีแอลเอสช่วยปกปิดข้อมูลในสายเชื่อมต่อให้เป็นความลับที่แม้เมื่อดักเก็บข้อมูลไว้ได้ ก็จะไม่สามารถถอดรหัสข้อมูลได้ในอนาคต (perfect forward secrecy) และป้องกันผู้โจมตีไม่ให้เปลี่ยนข้อมูลในสาย หรือปลอมตัวว่าเป็นเราเตอร์หัวหอม[23]

ข้อมูลส่งผ่านเครือข่ายโดยมีหน่วยเป็นเซลล์ ซึ่งมีขนาดตายตัวคือ 512 ไบต์ และเมื่อเซลล์แต่ละเซลล์วิ่งผ่านวงจรเริ่มตั้งแต่ระบบผู้ใช้ เซลล์จะเข้ารหัสลับด้วยกุญแจทีแอลเอสของการเชื่อมต่อแบบทีแอลเอสในระหว่างระบบที่อยู่ต่อกันโดยตรง ส่วนหัวของแต่ละเซลล์มีข้อมูลคือ[23]

  • cirID บอกว่าเซลล์นี้สำหรับวงจรการสื่อสารไหน เพราะระบบสามารถมีวงจรวิ่งผ่านการเชื่อมต่อแบบทีแอลเอสเดียวกันหลายวงจร
  • CMD เป็นคำสั่งว่าสถานีส่งต่อควรทำอะไรต่อเซลล์ เพราะเซลล์แบ่งเป็นสามอย่างคือ เซลล์ควบคุม (control cell) หรือเซลล์ส่งต่อ/เซลล์รีเลย์ (relay cell) หรือเซลล์ส่งต่อเบื้องต้น (early relay cell) เซลล์ควบคุมอาจใช้เพื่อขอให้สถานีต่อกันตั้งวงจรหรือยุติวงจรเป็นต้น เซลล์ส่งต่อจะใช้สำหรับส่งข้อมูลการสื่อสารผ่านวงจรโดยมีข้อมูลต่อจากส่วนหัวของเซลล์ และเซลล์ส่งต่อเบื้องต้น ซึ่งเพิ่มขึ้นในปี 2008 ใช้ป้องกันไม่ให้ระบบผู้ใช้สร้างวงจรยาวเกินเพราะสร้างปัญหาการติดขัดในเครือข่ายและสามารถช่วยทำลายสภาพนิรนามได้[24]

เซลล์ควบคุมสามารถมีคำสั่งรวมทั้ง

  • padding[23]
  • create หรือ created ที่ใช้ในการสร้างวงจร[23]
  • relay เพื่อกำหนดว่าเป็นเซลล์ส่งต่อ[29]
  • destroy เพื่อรื้อวงจร[23]
  • create fast หรือ created fast[29]
  • netinfo[29]
  • relay early[29] เพื่อกำหนดเป็นเซลล์ส่งต่อที่อาจร่วมใช้กับ relay extend เพื่อป้องกันไม่ให้ระบบผู้ใช้สร้างวงจรยาวเกิน รีเลย์รุ่นหลังจาก 0.2.3.11-alpha จะปฏิเสธเซลล์ส่งต่อแบบ relay extend ที่ไม่มีคำสั่งเซลล์เป็น relay early ระบบผู้ใช้อาจส่งเซลล์ relay early ที่ไม่ใช่เซลล์ส่งต่อแบบ relay extend ในการส่งข้อมูลภายในเซลล์ต้น ๆ ของวงจรเพื่ออำพรางความยาวของวงจร[30]
  • create2 หรือ created2[29]
  • padding negotiate[29]

สำหรับเซลล์ส่งต่อ ส่วนที่เป็นข้อมูลภายในเซลล์จะเข้ารหัสลับด้วยกุญแจอายุสั้นที่ร่วมใช้ระหว่างระบบผู้ใช้กับสถานีแต่ละสถานี ส่วนนี้ยังมีส่วนหัวรีเลย์ (relay header) ซึ่งอยู่ในลำดับต่อไปจากส่วนหัวของเซลล์ รวมทั้ง[23]

  • StreamID - วงจรหนึ่งอาจมีกระแสข้อมูลหลายสาย ซึ่งอาจเป็นกระแสข้อมูลทีซีพีจากโปรแกรมผู้ใช้เดียวกันหรือจากหลายโปรแกรม
  • Digest เป็นผลรวมตรวจสอบ (checksum) ของข้อมูล ปกติใช้เช็คว่ามีการเปลี่ยนข้อมูลระหว่างระบบผู้รับและสถานีสุดท้ายในเครือข่ายหรือไม่
  • Len ขนาดของส่วน DATA
  • CMD เป็นคำสั่งรีเลย์สำหรับสถานีที่เป็นเป้าหมาย เช่น ให้ส่งส่วนที่เป็น DATA ต่อไปเป็นต้น
  • DATA เป็นส่วนข้อมูล เช่น ที่ส่งต่อไปยังระบบเป้าหมายเป็นต้น

เซลล์ส่งต่อสามารถมีคำสั่งดังต่อไปนี้คือ[23]

  • relay data - ให้ส่งข้อมูล
  • relay begin - ให้เปิดสายข้อมูล (stream)
  • relay end - ให้ปิดสายข้อมูลโดยเรียบร้อย
  • relay teardown - ให้ปิดสายข้อมูลที่เสีย
  • relay connected - เพื่อแจ้งระบบผู้ใช้ว่า คำสั่ง relay begin ได้ทำสำเร็จแล้ว
  • relay extend และ relay extended - ให้ต่อวงจรไปอีกหนึ่งสถานี และเพื่อแจ้งว่าต่อสำเร็จแล้ว
  • relay truncate และ relay truncated - ให้รื้อส่วนหนึ่งของวงจร และเพื่อแจ้งว่ารื้อสำเร็จแล้ว
  • relay sendme - ใช้ในการควบคุมสายข้อมูลที่ติดขัด (congestion)
  • relay drop
ระบบผู้ใช้ (Alice) ติดต่อกับโหนดสารบบ (Dave) ผ่านการเชื่อมต่อที่เข้ารหัสลับ[31] เพื่อรับรายการสถานีส่งต่อของทอร์ (Tor node) โดยมุ่งหมายสื่อสารกับระบบปลายทางคือ Jane และ Bob
(เหนือเส้นประ) ผังแสดงการสื่อสารระหว่างระบบผู้ใช้ (Alice) กับสถานีหนึ่ง (OR1) และสถานีสอง (OR2) เพื่อตั้งวงจรการสื่อสารผ่าน 2 สถานีส่งต่อไปยังปลายทาง (ใต้เส้นประ) ผังแสดงการสื่อสารระหว่างระบบผู้ใช้กับระบบปลายทางผ่านสถานีส่งต่อ 2 สถานี (คำอธิบายสัญลักษณ์) E(x)=การเข้ารหัสลับด้วย RSA, {x}=การเข้ารหัสลับด้วย AES, H(x)=ค่าแฮชด้วย SHA1[32] ให้สังเกตว่า เซลล์แบบ Relay บางส่วนปัจจุบันอาจทำให้เกิดผลโดยเป็นเซลล์ Relay early (ดูข้อมูลเกี่ยวกับเซลล์ควบคุมดังที่กล่าวแล้ว)

การสร้างวงจรเสมือน[แก้]

เพื่อสร้างวงจรเสมือนหนึ่ง ๆ ระบบผู้ใช้จะขอรายการสถานีส่งต่อจากโหนดสารบบ รายการที่ได้จะเซ็นชื่อโดยกุญแจระบุตัวระยะกลางของโหนดสารบบ[27] และข้อมูลเกี่ยวกับสถานีจะเซ็นชื่อโดยกุญแจระบุตัวของสถานีที่สัมพันธ์กัน[20][21] ระบบผู้ใช้ปกติจะเลือกสถานี 3 สถานีจากรายการเพื่อสร้างวงจร[1] โดยมีการเลือกโหนดขาเข้าจากรายการสุ่มที่เลือกใช้นานเป็นพิเศษที่เรียกว่า สถานียาม (entry guards)[17][33]

โหนดที่เลือกจะจับเรียงลำดับเป็น "โซ่" หรือ "วงจร" ที่จะส่งผ่านข้อมูล เพื่อรักษาสภาพนิรนามของผู้ส่ง ไม่มีโหนดไหนในวงจรที่รู้ทั้งที่อยู่ของต้นสายและของปลายทางทั้งสอง แม้ในมุมมองของระบบปลายทาง ก็จะดูเหมือนว่าการสื่อสารเริ่มมาจากสถานีขาออกของเครือข่าย เช่นกัน ไม่มีโหนดไหนในวงจรที่สามารถบอกว่ามีโหนดจำนวนเท่าไรในวงจรหรือรู้เส้นทางการส่งข้อมูลทั้งหมดภายในวงจร และโหนดสุดท้ายเท่านั้น ซึ่งเรียกว่าโหนดขาออก (exit node) จะสามารถกำหนดตำแหน่งตัวเองภายในลูกโซ่[2]

เมื่อสร้างวงจร ระบบผู้ใช้จะต่อสถานีรีเลย์เข้ากับวงจรทีละสถานี ๆ ต่อ ๆ กัน โดยที่การสื่อสารระหว่างระบบต่าง ๆ จะทำผ่านทีแอลเอสอาศัยกุญแจระบุสถานีระยะยาวที่พบในสารบบ การต่อสถานีมีรายละเอียดคือคือ (ดูประกอบรูป)[34]

  1. สำหรับสถานีแรก (OR1) ระบบผู้ใช้ขอให้สถานีสร้างวงจร (Create c1) โดยส่งข้อมูล (g^x1) ที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีแรก ซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจสมมาตรคือกุญแจอายุสั้น (ให้สังเกตว่า สถานีแรกรู้ที่อยู่ไอพีของระบบผู้ใช้[35] และสถานีแรกจะตอบสนองต่อคำขอได้ก็ต่อเมื่อรู้กุญแจหัวหอมส่วนตัวของตน[15][20])
  2. สถานีแรกส่งคำตอบยอมรับการสร้างวงจร (Created c1) พร้อมข้อมูลที่กำหนดกุญแจอายุสั้น (g^y1 เป็นต้น) ที่จะใช้เพื่อเข้ารหัสข้อมูลเซลล์ระหว่างระบบผู้ใช้กับสถานีแรก
  3. สำหรับสถานีสอง (OR2) ระบบผู้ใช้จะส่งคำขอให้ต่อวงจรเชื่อมกับสถานีที่สองไปยังสถานีแรก โดยรวมข้อมูลที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีที่สอง (g^x2) ซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจอายุสั้น พร้อมกับคำขอการต่อวงจร (Extend) ซึ่งระบุสถานีที่สองโดยเฉพาะ เข้าเป็นส่วนข้อมูลของเซลล์ แล้วเข้ารหัสลับส่วนข้อมูลด้วยกุญแจอายุสั้นที่ใช้ร่วมกับสถานีแรก (g^x1y1) ต่อจากนั้นจึงส่งคำขอให้ส่ง (Relay/Relay early) ไปยังสถานีแรก (ให้สังเกตว่า ถ้ามีใครสามารถถอดรหัสลับการสื่อสารโดยใช้ทีแอลเอสได้ แต่ไม่มีกุญแจอายุสั้นของสถานีแรก ก็จะไม่สามารถกำหนดได้ว่า เซลล์มีข้อมูลที่จะส่งต่อ หรือเป็นคำขอ/คำตอบรับ คือไม่สามารถรู้ว่าใครกำลังเดินเนินงานกิจกรรมอะไรจริง ๆ)
  4. สถานีแรกถอดรหัสส่วนข้อมูลของเซลล์ด้วยรหัสอายุสั้นที่ใช้ร่วมกับระบบผู้ใช้ (g^x1y1) แล้วพบคำขอให้ต่อวงจร (Extend) จึงขอให้สถานีสองสร้างวงจร (Create c2) โดยส่งคำขอพร้อมกับข้อมูลเข้ารหัสลับ (g^x2) ที่มาจากระบบผู้ใช้ ให้สังเกตว่า สถานีแรกรู้ที่อยู่ไอพีของสถานีสอง แต่ไม่รู้ส่วนข้อมูลที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีสองจากระบบผู้ใช้ ข้อมูลซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจสมมาตรคือกุญแจอายุสั้น สถานีสองจะตอบสนองต่อคำขอได้ก็ต่อเมื่อรู้กุญแจหัวหอมส่วนตัวของตน และจากมุมมองของสถานีสอง คำขอการสร้างวงจรเหมือนกับมาจากสถานีแรก จึงไม่สามารถบอกได้ว่า เป็นการเพิ่มต่อวงจรจากระบบผู้ใช้
  5. สถานีสองส่งคำตอบยอมรับการสร้างวงจร (Created c2) พร้อมข้อมูลที่กำหนดกุญแจอายุสั้น (g^y2 เป็นต้น) ที่จะใช้เพื่อเข้ารหัสส่วนข้อมูลของเซลล์ระหว่างระบบผู้ใช้และสถานีสอง โดยส่งไปยังสถานีหนึ่ง
  6. สถานีแรกรวมการยอมรับการต่อวงจร (Extended) พร้อมกับข้อมูลที่กำหนดกุญแจอายุสั้น (g^y2 เป็นต้น) เข้าในส่วนข้อมูลของเซลล์ แล้วเข้ารหัสลับด้วยกุญแจอายุสั้นที่ใช้ร่วมกับระบบผู้ใช้ ต่อจากนั้นจึงส่งข้อมูลกลับไปยังระบบผู้ใช้โดยเป็นคำขอให้ส่ง (Relay) (ให้สังเกตว่า ถ้ามีใครสามารถถอดรหัสลับการสื่อสารโดยใช้ทีแอลเอสได้ แต่ไม่มีกุญแจอายุสั้นของสถานีแรก ก็จะไม่สามารถกำหนดได้ว่า เซลล์มีข้อมูลที่จะส่งต่อ หรือเป็นคำขอ/คำตอบรับ คือไม่สามารถรู้ว่าใครกำลังเดินเนินงานกิจกรรมอะไรจริง ๆ)

ตัวอย่างนี้ เป็นการสร้างวงจรที่มีโหนดส่งต่อเพียงแค่สองสถานีเท่านั้น การสร้างวงจรเพิ่มเพื่อให้มีโหนดส่งต่อ 3 สถานีก็ทำได้โดยนัยเดียวกัน คือระบบผู้ใช้สามารถส่งคำขอการต่อวงจร (Extend) เชื่อมกับสถานีสามไปยังสถานีสองโดยส่งผ่านสถานีหนึ่ง คล้ายกับลำดับ 3 ที่กล่าวมาแล้ว แต่เข้ารหัสลับส่วนข้อมูลของเซลล์สองครั้งด้วยกุญแจอายุสั้นที่ใช้ร่วมกับสถานีสอง (g^x2y2) แล้วด้วยกุญแจอายุสั้นที่ใช้ร่วมกับสถานีหนึ่ง (g^x1y1)

เพื่อความกระจ่าง อาจกล่าวโดยอีกวิธีหนึ่งก็คือ

  1. โดยใช้การเข้ารหัสลับแบบกุญแจอสมมาตร ระบบผู้ใช้สามารถรับกุญแจสาธารณะ (identity key) เพื่อเริ่มการเชื่อมต่อแบบทีแอลเอสกับโหนดขาเข้า แล้วส่งข้อความผ่านทีแอลเอสซึ่งเข้ารหัสด้วยกุญแจทีแอลเอส เพื่อต่อรองสร้างกุญแจอายุสั้น (ephemeral key) อาศัยกุญแจหัวหอม (onion key) ของสถานี
  2. โดยใช้การเชื่อมต่อที่เข้ารหัสกับโหนดขาเข้า (ด้วยกุญแจทีแอลเอส และกุญแจอายุสั้นเพื่อเข้ารหัสส่วนข้อมูลของเซลล์อีกทีหนึ่ง) ระบบผู้ใช้ส่งคำขอให้ต่อสถานีสองเข้ากับวงจรไปยังสถานีแรก ซึ่งสถานีแรกทำกับสถานีสองคล้ายในขั้นตอนที่หนึ่ง แต่ใช้ข้อมูลการต่อรองสร้างกุญแจอายุสั้นที่ได้จากระบบผู้ใช้ (เพราะสถานีแรกจะไม่รู้กุญแจอายุสั้นของสถานีที่สอง) โดยมุมมองของสถานีที่สอง นี่เป็นเหมือนการขอสร้างวงจรจากสถานีแรก จึงไม่สามารถบอกได้ว่าเป็นการต่อวงจรที่เริ่มจากระบบผู้ใช้
  3. โดยใช้การเชื่อมต่อที่เข้ารหัสกับโหนดขาเข้า (ด้วยกุญแจทีแอลเอส และกุญแจอายุสั้นเพื่อเข้ารหัสส่วนข้อมูลของเซลล์อีกทีหนึ่ง) และการเชื่อมต่อที่เข้ารหัสกับโหนดกลาง (ด้วยกุญแจทีแอลเอสที่ใช้ร่วมกันระหว่างสถานีแรกและสอง และกุญแจอายุสั้นเพื่อเข้ารหัสส่วนข้อมูลของเซลล์อีกทีหนึ่ง) ระบบผู้ใช้ส่งคำขอให้ต่อสถานีสามเข้ากับวงจรไปยังสถานีสอง ซึ่งสถานีสองทำกับสถานีสามเหมือนในขั้นตอนที่หนึ่ง แต่ใช้ข้อมูลการต่อรองสร้างกุญแจอายุสั้นที่ได้จากระบบผู้ใช้ (เพราะสถานีสองจะไม่รู้กุญแจอายุสั้นของสถานีที่สาม) โดยมุมมองของสถานีที่สาม นี่เป็นเหมือนการขอสร้างวงจรจากสถานีสอง จึงไม่สามารถบอกได้ว่าเป็นการต่อวงจรที่เริ่มจากระบบผู้ใช้

เมื่อสร้างวงจรเสร็จแล้ว ระบบผู้ใช้ก็จะสามารถส่งข้อมูลผ่านอินเทอร์เน็ตไปยังระบบปลายทางอย่างนิรนามได้ สำหรับโปรแกรมผู้ใช้ที่ตั้งให้สื่อสารผ่านเครือข่ายหัวหอม ไม่ว่าจะเป็นโปรแกรมเดียว (เช่นทอร์เบราว์เซอร์) หรือหลายโปรแกรม สายข้อมูลทีซีพีต่าง ๆ ที่โปรแกรมผู้ใช้สร้างก็จะส่งผ่านวงจรเดียวกัน แต่ระบบผู้ใช้จะตั้งวงจรใหม่ทุก ๆ 10 นาที ดังนั้น สายข้อมูลใหม่ที่ตั้งขึ้นก็จะใช้วงจรใหม่ ส่วนสายข้อมูลเก่าที่ยังดำเนินการอยู่ก็จะคงอยู่ในวงจรเดิมจนกว่าจะเสร็จ ดังนั้น ในระบบผู้ใช้ อาจมีการส่งข้อมูลผ่านเครือข่ายหัวหอมเป็นหลายวงจร แต่ละวงจรอาจมีสายข้อมูลหลายสาย โดยอาจเป็นสายข้อมูลจากโปรแกรมชุดเดียวหรือหลายโปรแกรม การเปลี่ยนวงจรการสื่อสารเช่นนี้ โดยมีสถานีขาออกที่ต่าง ๆ กัน จะทำให้ระบบปลายทางสัมพันธ์การกระทำของผู้ใช้ที่เกิดในเวลาต่าง ๆ ได้ยากขึ้น[1]

การส่งข้อมูล[แก้]

ระบบผู้ใช้ (Alice) ได้สร้างวงจรผ่านสถานีส่งต่อ 3 สถานี (Tor node) เพื่อสื่อสารกับระบบปลายทาง (Bob) เส้นสีเขียวเป็นการเชื่อมต่อที่เข้ารหัสลับโดยเครือข่าย ส่วนเส้นสีแดงประไม่ได้เข้ารหัสลับโดยเครือข่าย

เมื่อวงจรสร้างขึ้นแล้ว ระบบผู้ใช้สามารถเริ่มส่งรับข้อมูลผ่านเครือข่ายนิรนามที่เข้ารหัสลับด้วยกุญแจสองตัวคือ กุญแจอายุสั้นที่ใช้เข้ารหัสเพียงส่วนข้อมูลของเซลล์เป็นชั้น ๆ และกุญแจทีแอลเอสที่ใช้เข้ารหัสเซลล์ทั้งหมดเมื่อส่งผ่านเครือข่ายอินเทอร์เน็ตระหว่างสถานี ๆ โดยที่ไม่มีสถานีส่งต่อใด ๆ รวมทั้งระบบปลายทาง ที่สามารถรู้ทั้งที่อยู่ไอพีของระบบผู้ใช้และของระบบปลายทางทั้งสอง และมีสถานีทางออกเท่านั้น ที่สามารถเข้าถึงข้อมูลดั้งเดิมที่ส่งในระหว่างต้นสายและปลายทาง ยกเว้นถ้าผู้ใช้ใช้โปรแกรมที่เข้ารหัสข้อมูลจากต้นจนถึงปลาย เช่น ทอร์เบราว์เซอร์เมื่อสื่อสารผ่านเอชทีทีพีเอสเป็นต้น อนึ่ง เพราะกุญแจที่ใช้เข้ารหัสลับเป็นกุญแจชั่วคราว จึงหมายความว่า แม้ถ้ามีใครดักเก็บข้อมูลที่ส่งผ่านระหว่างระบบต่าง ๆ แล้วโจมตีเข้าถึงระบบเหล่านั้นได้ในภายหลัง ก็จะไม่สามารถถอดรหัสข้อมูลเหล่านั้นได้เพราะระบบได้ทิ้งกุญแจไปแล้ว

การรับส่งข้อมูลมีรายละเอียดคือ (ดูรูป)[36]

  1. ระบบผู้ใช้สร้างเซลล์ส่งต่อพร้อมคำสั่งรีเลย์ relay begin โดยมีระบบปลายทางพร้อมหมายเลขช่องทาง (website:80) เป็นข้อมูลรีเลย์ แล้วเข้ารหัสส่วนข้อมูลของเซลล์ด้วยกุญแจอายุสั้นที่ใข้กับสถานีส่งต่อต่าง ๆ เริ่มจากสถานีขาออกกลับมาถึงสถานีขาเข้า แล้วส่งเซลล์รีเลย์ผ่านการเชื่อมต่อทีแอลเอส (และดังนั้นเข้ารหัสลับด้วยกุญแจทีแอลเอส) ไปยังสถานีขาเข้า
  2. สถานีขาเข้าถอดรหัสส่วนข้อมูลของเซลล์ที่ได้รับด้วยกุญแจอายุสั้นที่ตนใช้ร่วมกันระบบผู้รับ แล้วส่งข้อมูลต่อผ่านเซลล์ที่ตนสร้างผ่านการเชื่อมต่อแบบทีแอลเอสไปยังสถานีขาออก
  3. สถานีขาออกถอดรหัสส่วนข้อมูลของเซลล์ที่ได้รับด้วยกุญแจอายุสั้นที่ตนใช้ร่วมกันระบบผู้รับ แล้วพบคำสั่งรีเลย์ relay begin จึงเริ่มการเชื่อมต่อแบบทีซีพีกับระบบปลายทางผ่านช่องทาง 80 แล้วสร้างเซลล์ระบุคำตอบรับการเชื่อมต่อที่สำเร็จโดยเข้ารหัสลับส่วนข้อมูลด้วยกุญแจอายุสั้น แล้วส่งกลับไปยังสถานีขาเข้าผ่านทีแอลเอส
  4. สถานีขาเข้าสร้างเซลล์ส่งต่อโดยเข้ารหัสส่วนข้อมูลที่มาจากสถานีขาออกด้วยกุญแจอายุสั้นของตน แล้วส่งผ่านทีแอลเอสไปยังระบบผู้รับ
  5. ระบบผู้รับถอดรหัสส่วนข้อมูลเซลล์ที่ได้รับด้วยกุญแจสองตัวที่ใช้ร่วมกันสถานีส่งต่อทั้งสอง แล้วพบว่า การเชื่อมต่อแบบทีซีพีกับระบบปลายทางสำเร็จแล้ว และจึงดำเนินการสื่อสารกับระบบปลายทางในนัยเดียวกันต่อไป

วิธีการโจมตี[แก้]

ผู้ออกแบบการจัดเส้นทางแบบหัวหอมได้พิจารณาการโจมตีและผลต่อระบบหลายอย่าง (ปี 2004) รวมทั้งที่จัดว่าเป็นการดักฟังเฉย ๆ (passive attack) และแบบต้องทำการอย่างแอ๊กถีฟ (active attack)[37] ต่อไปนี้เป็นตัวอย่างของการโจมตีที่ได้พิจารณา

แบบดักฟังเฉย ๆ[แก้]

การโจมตีแบบดักฟังเฉย ๆ (passive attack) รวมทั้ง[38]

  • การเฝ้าดูรูปแบบการสื่อสาร (observing user traffic patterns) เพราะข้อมูลการสื่อสารของวงจรเข้ารหัสลับอยู่ จึงไม่สามารถตรวจดูโดยตรงภายในวงจรได้ แต่สามารถวิเคราะห์รูปแบบการสื่อสารได้ ทั้งในการรับและส่งข้อมูล
  • การตรวจดูข้อมูล (observing user content) แม้ข้อมูลทางด้านระบบผู้ใช้จะเข้ารหัสลับ แต่การสื่อสารจากสถานีขาออกกับระบบปลายทางอาจจะไม่ได้เข้ารหัส ถึงแม้การกรองข้อมูลที่ส่งเข้าเครือข่ายอาจไม่ใช่เป้าหมายของโปรเจ็กต์โดยตรง แต่ผู้ใช้อาจใช้โปรแกรมเสริมเช่น Prixvoxy ที่ช่วยกรองข้อมูล ไม่ให้ส่งข้อความซึ่งไม่ได้เข้ารหัสลับที่เปิดเผยตนได้
  • รูปแบบการสื่อสารต่างกันเนื่องจากตั้งค่าไม่เหมือนกัน (option distinguishability) เนื่องจากพร็อกซีหัวหอมสามารถตั้งค่าต่าง ๆ กันได้ ผู้ใช้การตั้งค่าแบบที่มีจำนวนน้อยอาจเสียสภาพนิรนาม
  • การสัมพันธ์เวลาระหว่างต้นกับปลาย (end-to-end timing correlation) ระบบสามารถปิดบังข้อมูลทางเวลาได้เพียงเล็กน้อยเท่านั้น ปฏิปักษ์ที่สามารถดูรูปแบบการสื่อสารทั้งที่ต้นสายและปลายทาง จะมีโอกาสยืนยันการสื่อสารระหว่างต้นสายปลายทางได้สูงมาก วิธีป้องกันดีสุดก็คือปิดบังการเชื่อมต่อกันระหว่างระบบผู้ใช้กับสถานีขาเข้า ซึ่งอาจทำได้โดยดำเนินการระบบผู้ใช้และสถานีรีเลย์ในคอมพิวเตอร์เดียวกัน หรือในคอมพิวเตอร์ต่างกันแต่อยู่หลังไฟร์วอลล์เดียวกัน ซึ่งทำให้การโจมตีระบบได้จะต้องแยกแยะการสื่อสารที่เริ่มมาจากที่อื่นหรือเริ่มมาจากระบบผู้ใช้ โดยผู้โจมตีซึ่งจะทำได้ก็คือผู้ที่สามารถทำการได้ทั่วโลก (เช่น หน่วยจารกรรมที่มีทรัพยากรมาก) แต่ผู้ที่มีทรัพยากรจำกัดไม่สามารถทำได้
  • การสัมพันธ์ขนาดข้อมูลระหว่างต้นกับปลาย (end-to-end size correlation) คือการนับเพียงแค่แพ็กเกต (กลุ่มข้อมูล) ซึ่งส่งที่ต้นสายและรับ ที่ปลายทางก็อาจสามารถสัมพันธ์การสื่อสารได้แล้ว แต่การที่ระบบผู้ใช้สามารถสื่อสารออกนอกวงจรก่อนจะถึงสถานีสุดท้ายอาจช่วยลดระดับปัญหานี้ วิธีการป้องกันและลักษณะผู้โจมตีจะคล้ายกับในปัญหาการสัมพันธ์เวลาระหว่างต้นกับปลาย
  • การระบุลักษณะเฉพาะของเว็บไซต์ (website fingerprinting) ผู้โจมตีอาจสร้างฐานข้อมูลของเว็บไซต์ต่าง ๆ ที่ระบุขนาดไฟล์ที่เข้าถึง และรูปแบบการสื่อสารเพื่อเข้าถึงไฟล์ แล้วสามารถยืนยันการสื่อสารกับเว็บไซต์ของระบบผู้ใช้โดยใช้ข้อมูลนั้น ๆ[38] โดยมีผู้ชำนาญบางพวกที่วิเคราะห์ว่า ทำได้ยากเนื่องจากในโลกจริง ๆ ผู้โจมตีจะต้องสามารถแยกแยะหน้าเว็บเป็นจำนวนมากโดยอาศัยเพียงแค่รูปแบบการสื่อสาร[39][40]

แบบแอ๊กถีฟ[แก้]

การโจมตีแบบแอ๊กถีฟ (active attack) รวมทั้ง[25]

  • การได้กุญแจ (compromise key) ผู้โจมตีที่ได้กุญแจทีแอลเอสสามารถมองเห็นเซลล์ควบคุมและเซลล์รีเลย์ที่ยังเข้ารหัสลับอีกชั้นสำหรับวงจรทุก ๆ วงจรที่วิ่งผ่านการเชื่อมต่อแบบทีแอลเอสนั้น ๆ แต่จะดูข้อมูลที่เข้ารหัสในเซลล์รีเลย์ได้ก็จะต้องรู้กุญแจอายุสั้นต่าง ๆ ที่สมควรด้วย ซึ่งอาจเป็นเรื่องทำได้ยากโดยเฉพาะเมื่อกุญแจชั่วคราวเหล่านี้จะทิ้งไปเมื่อการเชื่อมต่อหรือวงจรยุติลง
  • iterated compromise - ผู้โจมตีที่ทำการต่อระบบต่าง ๆ ต่อ ๆ กันได้ อาจเอาชนะการป้องกันของสถานีส่งต่อ ไม่ว่าจะโดยการแฮ็ก โดยกฎหมาย หรือโดยวิธีการนอกกฎหมาย ต่อ ๆ กันจนถึงระบบผู้ใช้ แต่ก็จะต้องทำการให้สำเร็จก่อนวงจรจะยุติลง ไม่เช่นนั้นแล้ว กุญแจที่เข้ารหัสการสื่อสารก็จะทิ้งไปหมดแล้ว นอกจากนั้น การสร้างวงจรเพื่อให้มีสถานีส่งต่อที่อยู่ในเขตกฎหมายต่าง ๆ กันก็จะทำให้การบังคับตามกฎหมายทำได้ยากขึ้น
  • การดำเนินการระบบปลายทาง - ผู้โจมตีที่ดำเนินการระบบบริการเว็บไซต์สามารถรู้รูปแบบการสื่อสารกับระบบต้นทางได้ง่าย ๆ หรือสามารถตอบสนองโดยมีรูปแบบโดยเฉพาะ ๆ ซึ่งทำให้การโจมตีแบบจากต้นสายจนถึงปลายทางทำได้ง่ายขึ้น นอกจากนั้น ระบบอาจจะชักจูงให้ระบบต้นสายไม่ว่าจะโดยโพรโทคอลหรือผ่านการทำงานโปรแกรม ให้ส่งข้อมูลเปิดเผยตนเองได้ วิธีการป้องกันและลักษณะผู้โจมตีจะคล้ายกับในปัญหาการสัมพันธ์เวลาระหว่างต้นกับปลาย
  • การดำเนินงานพร็อกซีหัวหอม - ในสถานการณ์ที่สถาบันต้องการควบคุมการใช้การจัดเส้นทางแบบหัวหอม แล้วให้ใช้พร็อกซีซึ่งดำเนินการในคอมพิวเตอร์ต่างหาก (แทนที่จะดำเนินการแบบปกติในคอมพิวเตอร์ของผู้ใช้) การแฮ็กระบบที่ดำเนินการพร็อกซีได้จะทำให้สามารถทำการต่าง ๆ ต่อการเชื่อมต่อผ่านพร็อกซีในอนาคตทั้งหมด
  • การโจมตีสถานีที่ลอบฟังไม่ได้เพื่อให้บริการไม่ได้ (DoS non-observed nodes) ผู้โจมตีที่สามารถตรวจดูเครือข่ายเป็นบางส่วนจะได้ข้อมูลเพิ่มขึ้นถ้าโจมตีสถานีส่งต่ออื่น ๆ เพื่อไม่ให้ให้บริการได้ ทำให้ผู้ใช้มีโอกาสเพิ่มในการสร้างวงจรผ่านสถานีที่ผู้โจมตีควบคุมหรือสามารถตรวจดูการใช้ได้
  • การดำเนินงานสถานีส่งต่อ - นอกจากจะสามารถตรวจดูข้อมูลที่ส่งผ่านสถานีของตน ผู้โจมตียังสามารถเปลี่ยนรูปแบบการสื่อสารผ่านสถานีอื่น ๆ แต่จะสามารถทำลายสภาพนิรนามได้ก็ต่อเมื่อเป็นสถานีส่งต่อแรกสุดและสุดท้าย โดยอาจเพิ่มโอกาสการเชื่อมต่อกับสถานีของตนโดยดำเนินการสถานีขาออกที่ให้บริการอย่างมีข้อจำกัดน้อย หรือทำลายความน่าเชื่อถือของสถานีอื่น ๆ
  • การส่งเซลล์ต่อโดยมีกำหนดเวลาโดยเฉพาะ ๆ - เป็นการเพิ่มสมรรถภาพวิธีการตรวจดูเวลาของการส่งข้อมูลแบบดักฟังเฉย ๆ ดังที่ได้กล่าวมาแล้ว
  • การโจมตีโดยการติดป้าย - สถานีโจมตีอาจติดป้ายเซลล์โดยเปลี่ยนข้อมูล แต่การตรวจดูบูรณภาพของข้อมูลก็จะป้องกันการโจมตีเยี่ยงนี้ได้
  • การเปลี่ยนข้อมูลสำหรับโพรโทคอลที่ไม่พิสูจน์ตัวจริง - คือ สถานีขาออกที่อยู่ใต้การควบคุมของผู้โจมตีสามารถปลอมตัวเป็นระบบบริการปลายทาง ดังนั้น ผู้ใช้ควรเลือกใช้โพรโทคอลที่มีการพิสูจน์ตัวจริง (เช่น เอชทีทีพีเอสแทนที่จะใช้เอชทีทีพี)
  • การโจมตีด้วยการเล่นซ้ำ (replay attack) - สำหรับโพรโทคอลของทอร์ การเริ่มจับมือโดยการเล่นซ้ำข้อมูลที่ดักเก็บมาก่อนจะมีผลให้สร้างกุญแจอายุสั้นที่ต่างกัน ทำให้ข้อมูลที่ได้ดักเก็บที่เหลือไม่สามารถใช้อีก
  • การโจมตีทำลายชื่อเสียง - ผู้โจมตีสามารถใช้เครือข่ายทำการที่ไม่ชอบ เป็นการทำลายชื่อเสียง เพื่อบังคับให้ผู้ดำเนินงานหยุดปฏิบัติการ นโยบายของสถานีขาออกจะช่วยลดปัญหานี้ แต่โดยที่สุดแล้ว เครือข่ายต้องมีอาสาสมัครที่สามารถอดทนต่อความกดดันทางการเมือง/ทางกฎหมายได้
  • การกระจายโปรแกรมที่ถูกบ่อนทำลาย - ผู้โจมตีสามารถหลอกให้ผู้ใช้หรือสถานีใช้ซอฟต์แวร์ที่ถูกแก้ไขไม่ให้รักษาสภาพนิรนาม ทอร์ใช้วิธีเซ็นชื่อซอฟต์แวร์ที่แจกจ่าย โดยมีรายการจากโหนดสารบบที่แสดงรุ่นของซอฟต์แวร์ที่เชื่อว่าปลอดภัย นอกจากนั้นเพื่อกันปัญหาจากภายในโปรเจ็กต์ทอร์เอง ยังเปิดให้ดูรหัสต้นทางทั้งหมด สนับสนุนให้มีการตรวจรหัสต้นทางบ่อย ๆ และเตือนผู้ใช้ไม่ให้เชื่อใจซอฟต์แวร์ที่ไม่เปิดเผยรหัสต้นทาง

จุดอ่อน[แก้]

การวิเคราะห์เวลา[แก้]

เหตุผลหนึ่งที่การเชื่อมต่ออินเทอร์เน็ตปกติจะไม่ได้สภาวะนิรนาม ก็เพราะผู้ให้บริการสามารถติดตามและลงบันทึกการเชื่อมต่อกันระหว่างคอมพิวเตอร์ ยกตัวอย่างเช่น เมื่อผู้ใช้เยี่ยมชมเว็บไซต์ ข้อมูลเองอาจจะปลอดภัยเพราะเชื่อมต่อด้วยเอชทีทีพีเอส ดังนั้น คนพวกอื่นจะไม่สามารถรู้รหัสผ่าน อีเมล และเนื้อความอื่น ๆ แต่ก็ยังมีบันทึกเกี่ยวกับการเชื่อมต่อเอง เช่น ต่อเมื่อไร มีข้อมูลส่งผ่านแค่ไหน

การจัดเส้นทางแบบหัวหอมจะสร้างทางที่คลุมเครือระหว่างคอมพิวเตอร์สองเครื่อง เพื่อไม่ให้ระบบผู้ใช้เชื่อมต่อกับเว็บไซต์โดยตรง แม้จะยังมีบันทึกการเชื่อมต่อกันระหว่างคอมพิวเตอร์และก็ยังสามารถวิเคราะห์การสื่อสารเนื่องกับบันทึกการเชื่อมต่อเช่นนั้น แล้วพยายามเชื่อมเวลาและการส่งข้อมูลกับการเชื่อมต่อไปยังผู้รับหนึ่ง ๆ ยกตัวอย่างเช่น อาจจะเห็นบุคคลส่งข้อมูล 51 กิโลไบต์ถ้วนไปยังคอมพิวเตอร์ที่ไม่รู้จัก 3 วินาทีก่อนคอมพิวเตอร์อีกเครื่องที่ไม่รู้จักก็ส่งข้อมูล 51 กิโลไบต์ถ้วนเช่นกันไปยังเว็บไซต์หนึ่งโดยเฉพาะ[41][42]

ปัจจัยที่อาจช่วยให้วิเคราะห์การสื่อสารได้รวมทั้งโหนดขัดข้องแล้วออกจากเครือข่าย[42] และโหนดส่งต่อที่ถูกแฮ็กให้เก็บบันทึกการเชื่อมต่อทุก ๆ ครั้งที่มีการสร้างวงจรใหม่[43]

การจัดเส้นทางแบบกระเทียม (Garlic routing) เป็นการจัดเส้นทางแบบหัวหอมอีกอย่างหนึ่งที่ใช้ในเครือข่ายไอทูพี และเข้ารหัสลับข้อความหลายข้อความเข้าด้วยกันเพื่อทำการวิเคราะห์การสื่อสารเช่นนี้ให้ยากขึ้น[44] และเพื่อเพิ่มความเร็วในการถ่ายโอนข้อมูล[45]

โหนดขาออก (Exit node)[แก้]

แม้ข้อความที่ส่งจะเข้ารหัสลับเป็นชั้น ๆ แต่หน้าที่ของโหนดขาออก (exit node) ที่เป็นโหนดท้ายสุดในโซ่ ก็คือการถอดรหัสลับชั้นสุดท้ายแล้วส่งข้อความไปให้ผู้รับ ดังนั้น โหนดขาออกที่ถูกแก้ก็อาจจะเก็บข้อมูลที่ส่ง ซึ่งอาจมีรหัสผ่าน ข้อความส่วนตัว เลขบัญชีธนาคาร หรือข้อมูลส่วนตัวอื่น ๆ ในปี 2007 นักวิจัยชาวสวีเดนได้ใช้การโจมตีคล้าย ๆ กันนี้แล้วสามารถเก็บรหัสผ่านของบัญชีอีเมลกว่า 100 บัญชีของสถานทูตประเทศต่าง ๆ[46]

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

ดูเพิ่ม[แก้]

เชิงอรรถและอ้างอิง[แก้]

  1. 1.0 1.1 1.2 1.3 1.4 "Tor: Overview". The Tor Project. สืบค้นเมื่อ 19 มิถุนายน 2018.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Dingledine, Mathewson & Syverson (2004)
  3. "routing", ศัพท์บัญญัติอังกฤษ-ไทย, ไทย-อังกฤษ ฉบับราชบัณฑิตยสถาน (คอมพิวเตอร์) รุ่น ๑.๑ ฉบับ ๒๕๔๕ (CD-ROM). "(เทคโนโลยีสารสนเทศ) การจัดเส้นทาง".
  4. Goldschlag, D; Reed, M; Syverson, P (1999). "Onion Routing for Anonymous and Private Internet Connections" (PDF). onion-router.net.
  5. Soltani, Ramin; Goeckel, Dennis; Towsley, Don; Houmansadr, Amir (2017-11-27). "Towards Provably Invisible Network Flow Fingerprints". arXiv:1711.10079 [cs.NI].
  6. Reed MG, Sylverson PF, Goldschlag DM (1998). "Anonymous connections and onion routing". IEEE Journal on Selected Areas in Communications. 16 (4): 482–494. ISSN 0733-8716.
  7. 7.0 7.1 US patent 6266704, Reed, Michael G. (Bethesda, MD) ; Syverson, Paul F. (Silver Spring, MD) ; Goldschlag, David M. (Silver Spring, MD), "Onion routing network for securely moving data through communication networks", assigned to The United States of America as represented by the Secretary of the Navy (Washington, DC) 
  8. 8.0 8.1 Levine, Yasha (16 กรกฎาคม 2014). "Almost everyone involved in developing Tor was (or is) funded by the US government". Pando Daily. สืบค้นเมื่อ 30 สิงหาคม 2014.
  9. Fagoyinbo, Joseph Babatunde (24 พฤษภาคม 2013). The Armed Forces: Instrument of Peace, Strength, Development and Prosperity. AuthorHouse. ISBN 9781477226476. สืบค้นเมื่อ 29 สิงหาคม 2014.
  10. Leigh, David; Harding, Luke (8 กุมภาพันธ์ 2011). WikiLeaks: Inside Julian Assange's War on Secrecy. PublicAffairs. ISBN 1610390628. สืบค้นเมื่อ 29 สิงหาคม 2014.
  11. Dingledine, Roger (20 กันยายน 2002). "pre-alpha: run an onion proxy now!". or-dev (Mailing list). สืบค้นเมื่อ 17 กรกฎาคม 2008.
  12. "Tor FAQ: Why is it called Tor?". Tor Project. สืบค้นเมื่อ 1 กรกฎาคม 2011.
  13. "Tor: Sponsors". Tor Project. สืบค้นเมื่อ 1 ธันวาคม 2010.
  14. "Attacks Prompt Update for 'Tor' Anonymity Network". Washington Post. 8 สิงหาคม 2007.
  15. 15.0 15.1 15.2 Dingledine, Mathewson & Syverson (2004), 4 The Tor Design
  16. 16.0 16.1 16.2 16.3 16.4 Dingledine, Mathewson & Syverson (2004), 1 Overview
  17. 17.0 17.1 Elahi, Tariq; Bauer, Kevin; AlSabah, Mashael; Dingledine, Roger; Goldberg, Ian (15 ตุลาคม 2012). "Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor". Proceedings of the Workshop on Privacy in the Electronic Society (WPES 2012). ACM Press. Full Archived Article PDF (600 KB)
  18. "Tor: Bridges". Tor Project. สืบค้นเมื่อ 9 มกราคม 2011.
  19. "Tor FAQ: Is Tor like a VPN?". Tor Projects. สืบค้นเมื่อ 19 มิถุนายน 2018.
  20. 20.0 20.1 20.2 20.3 20.4 20.5 20.6 20.7 "Tor FAQ: Tell me about all the keys Tor uses". Tor Projects. สืบค้นเมื่อ 19 มิถุนายน 2018.
  21. 21.0 21.1 Dingledine, Mathewson & Syverson (2004), 6.3 Directory Servers
  22. Dingledine, Mathewson & Syverson (2004), 5 Rendezvous Points and hidden services
  23. 23.00 23.01 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09 23.10 23.11 23.12 23.13 Dingledine, Mathewson & Syverson (2004), 4.1 cells
  24. 24.0 24.1 Dingledine, Roger (30 กรกฎาคม 2014). "Tor security advisory: "relay early" traffic confirmation attack". The Tor Project.
  25. 25.0 25.1 25.2 Dingledine, Mathewson & Syverson (2004), 7 Attacks and Defenses: Active Attacks
  26. Dingledine & Mathewson (2018), 1.1. Keys and names, line 154-196
  27. 27.0 27.1 "index : torspec : Tor directory protocol, version 3 (blob: bcb04a5e63beed9d8ae9ff54334f090321b3435d)". The Tor Project. 0.2. Goals of the version 3 protocol, line 87–113. สืบค้นเมื่อ 18 มิถุนายน 2018.
  28. Dingledine, Mathewson & Syverson (2004), 4.1 cells: Relay Cells "When an OR later replies to Alice with a relay cell, it encrypts the cell’s relay header and payload with the single key it shares with Alice, and sends the cell back toward Alice along the circuit. Subsequent ORs add further layers of encryption as they relay the cell back to Alice."
  29. 29.0 29.1 29.2 29.3 29.4 29.5 Dingledine, Roger; Mathewson, Nick. "index : torspec : Tor Protocol Specification (blob: ea195ada02c325293dba8fe788862f19db4a20e3)". Tor Project. 3. Cell Packet format, line 412-495. สืบค้นเมื่อ 18 มิถุนายน 2018.
  30. Dingledine & Mathewson (2018), 5.6. Handling relay_early cells, line 1385-1403
  31. Mathewson, Nick (4 ตุลาคม 2012). "Top changes in Tor since the 2004 design paper (Part 1)". Tor Blog.
  32. Dingledine, Mathewson & Syverson (2004), 4.2 Circuits and streams: Figure 1
  33. "Tor FAQ: What are Entry Guards?". Tor Projects. สืบค้นเมื่อ 19 มิถุนายน 2018.
  34. Dingledine, Mathewson & Syverson (2004), 4.2 Circuits and streams: Constructing a circuit
  35. "Tor FAQ: How is Tor different from other proxies?". Tor Projects. สืบค้นเมื่อ 19 มิถุนายน 2018.
  36. Dingledine, Mathewson & Syverson (2004), 4.2 Circuits and streams: Relay cells
  37. Dingledine, Mathewson & Syverson (2004), 7 Attacks and Defenses
  38. 38.0 38.1 Dingledine, Mathewson & Syverson (2004), 7 Attacks and Defenses: Passive Attacks
  39. Perry, Mike (7 พฤศจิกายน 2013). "A Critique of Website Traffic Fingerprinting Attacks". Tor Blog.
  40. Dingledine, Roger (31 กรกฎาคม 2015). "A technical summary of the Usenix fingerprinting paper".
  41. Shmatikov, Vitaly; Wang, Ming-Hsiu (18 กันยายน 2006). "Timing analysis in low-latency mix networks: attacks and defenses". Proceedings of the 11th European conference on Research in Computer Security. ESORICS'06: 18–33. doi:10.1007/11863908_2. S2CID 3113181.
  42. 42.0 42.1 Dingledine, Roger. "Tor: The Second-Generation Onion Router". Tor Project. สืบค้นเมื่อ 24 ตุลาคม 2012.
  43. Wright, Matthew K; Adler, Micah; Levine, Brian Neil; Shields, Clay (พฤศจิกายน 2004). "The Predecessor Attack: An Analysis of a Threat to Anonymous Communications Systems" (PDF). ACM Transactions on Information and System Security. 7 (4): 489–522. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 4 มีนาคม 2016. สืบค้นเมื่อ 10 กรกฎาคม 2018.
  44. "Common Darknet Weaknesses 2: Tor and I2P". Privacy PC. 28 มกราคม 2004. เก็บจากแหล่งเดิมเมื่อ 25 มกราคม 2018.
  45. Zantour, Bassam; Haraty, Ramzi A (มกราคม 2011). I2P Data Communication System. Proceedings of ICN 2011, The Tenth International Conference on Networks. IARIA. pp. 401–409. hdl:10725/7119.
  46. "Security researcher stumbles across embassy e-mail log-ins". Arstechnica. 30 สิงหาคม 2007.

แหล่งข้อมูลอื่น[แก้]