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

ให้สังเกตว่า การจัดเส้นทางแบบหัวหอมเป็นโพรโทคอลที่ดำเนินการและพัฒนาการขึ้นเรื่อย ๆ โดยโปรเจ็กต์ทอร์เป็นหลัก เนื่องจากไม่มีเอกสารที่รวมสรุปการทำให้เกิดผลดังที่ใช้ในปัจจุบันแบบง่าย ๆ นอกเหนือจากเอกสารกำหนดคุณลักษณะทางเทคนิกต่าง ๆข้อมูลในบทความนี้จึงมาจากบทความต่าง ๆ เริ่มตั้งแต่เอกสารแสดงแบบของโพรโทรคอลรุ่นสองของทอร์ในปี 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 (ดูข้อมูลเกี่ยวกับเซลล์ควบคุมดังที่กล่าวแล้ว)

ใกล้เคียง

การจัดการความเครียด การจัดการทาลัสซีเมีย การจัดอันดับของจุฬาลงกรณ์มหาวิทยาลัย การจัดเส้นทางแบบหัวหอม การจัดหมู่หนังสือแบบทศนิยมดิวอี้ การจัดอันดับของมหาวิทยาลัยเกษตรศาสตร์ การจัดอันดับของมหาวิทยาลัยมหิดล การจัดเรียงอิเล็กตรอนของธาตุ (หน้าข้อมูล) การจัดระดับความเหมาะสมของรายการโทรทัศน์ไทย การจัดเก็บข้อมูลจราจรทางคอมพิวเตอร์

แหล่งที่มา

WikiPedia: การจัดเส้นทางแบบหัวหอม http://pando.com/2014/07/16/tor-spooks/ http://privacy-pc.com/articles/common-darknet-weak... http://voices.washingtonpost.com/securityfix/2007/... http://citeseerx.ist.psu.edu/viewdoc/summary?doi=1... http://freehaven.net/anonbib/#wpes12-cogs http://www.onion-router.net http://www.onion-router.net/Publications/CACM-1999... http://www.onion-router.net/Publications/SSP-1997.... //doi.org/10.1007%2F11863908_2 http://archives.seul.org/or/dev/Sep-2002/msg00019....