การจัดเส้นทางแบบหัวหอม
การจัดเส้นทางแบบหัวหอมได้พัฒนาขึ้นในกลางคริสต์ทศวรรษ 1990 ณ แล็บวิจัยกองทัพเรือสหรัฐโดยเจ้าหน้าที่คือ Paul Syverson, Michael G. Reed, และ David Goldschlag[6][7] เพื่อป้องกันการสื่อสารราชการลับของสหรัฐออนไลน์[8] แล้วต่อมาจึงพัฒนายิ่งขึ้นโดยสำนักงานโปรเจ็กต์งานวิจัยก้าวหน้ากระทรวงกลาโหม (DARPA) แล้วจดสิทธิบัตรโดยกองทัพเรือในปี 1998[7][9][10]
การจัดเส้นทางแบบหัวหอม
สำหรับสถานีแรก (OR1) ระบบผู้ใช้ขอให้สถานีสร้างวงจร (Create c1) โดยส่งข้อมูล (g^x1) ที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีแรก ซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจสมมาตรคือกุญแจอายุสั้น (ให้สังเกตว่า สถานีแรกรู้ที่อยู่ไอพีของระบบผู้ใช้[35] และสถานีแรกจะตอบสนองต่อคำขอได้ก็ต่อเมื่อรู้กุญแจหัวหอมส่วนตัวของตน[15][20]) สถานีแรกส่งคำตอบยอมรับการสร้างวงจร (Created c1) พร้อมข้อมูลที่กำหนดกุญแจอายุสั้น (g^y1 เป็นต้น) ที่จะใช้เพื่อเข้ารหัสข้อมูลเซลล์ระหว่างระบบผู้ใช้กับสถานีแรก สำหรับสถานีสอง (OR2) ระบบผู้ใช้จะส่งคำขอให้ต่อวงจรเชื่อมกับสถานีที่สองไปยังสถานีแรก โดยรวมข้อมูลที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีที่สอง (g^x2) ซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจอายุสั้น พร้อมกับคำขอการต่อวงจร (Extend) ซึ่งระบุสถานีที่สองโดยเฉพาะ เข้าเป็นส่วนข้อมูลของเซลล์ แล้วเข้ารหัสลับส่วนข้อมูลด้วยกุญแจอายุสั้นที่ใช้ร่วมกับสถานีแรก (g^x1y1) ต่อจากนั้นจึงส่งคำขอให้ส่ง (Relay/Relay early) ไปยังสถานีแรก (ให้สังเกตว่า ถ้ามีใครสามารถถอดรหัสลับการสื่อสารโดยใช้ทีแอลเอสได้ แต่ไม่มีกุญแจอายุสั้นของสถานีแรก ก็จะไม่สามารถกำหนดได้ว่า เซลล์มีข้อมูลที่จะส่งต่อ หรือเป็นคำขอ/คำตอบรับ คือไม่สามารถรู้ว่าใครกำลังเดินเนินงานกิจกรรมอะไรจริง ๆ) สถานีแรกถอดรหัสส่วนข้อมูลของเซลล์ด้วยรหัสอายุสั้นที่ใช้ร่วมกับระบบผู้ใช้ (g^x1y1) แล้วพบคำขอให้ต่อวงจร (Extend) จึงขอให้สถานีสองสร้างวงจร (Create c2) โดยส่งคำขอพร้อมกับข้อมูลเข้ารหัสลับ (g^x2) ที่มาจากระบบผู้ใช้ ให้สังเกตว่า สถานีแรกรู้ที่อยู่ไอพีของสถานีสอง แต่ไม่รู้ส่วนข้อมูลที่เข้ารหัสลับด้วยกุญแจหัวหอมของสถานีสองจากระบบผู้ใช้ ข้อมูลซึ่งเป็นส่วนแรกของโพรโทคอลต่อรองเพื่อกุญแจสมมาตรคือกุญแจอายุสั้น สถานีสองจะตอบสนองต่อคำขอได้ก็ต่อเมื่อรู้กุญแจหัวหอมส่วนตัวของตน และจากมุมมองของสถานีสอง คำขอการสร้างวงจรเหมือนกับมาจากสถานีแรก จึงไม่สามารถบอกได้ว่า เป็นการเพิ่มต่อวงจรจากระบบผู้ใช้ สถานีสองส่งคำตอบยอมรับการสร้างวงจร (Created c2) พร้อมข้อมูลที่กำหนดกุญแจอายุสั้น (g^y2 เป็นต้น) ที่จะใช้เพื่อเข้ารหัสส่วนข้อมูลของเซลล์ระหว่างระบบผู้ใช้และสถานีสอง โดยส่งไปยังสถานีหนึ่ง สถานีแรกรวมการยอมรับการต่อวงจร (Extended) พร้อมกับข้อมูลที่กำหนดกุญแจอายุสั้น (g^y2 เป็นต้น) เข้าในส่วนข้อมูลของเซลล์ แล้วเข้ารหัสลับด้วยกุญแจอายุสั้นที่ใช้ร่วมกับระบบผู้ใช้ ต่อจากนั้นจึงส่งข้อมูลกลับไปยังระบบผู้ใช้โดยเป็นคำขอให้ส่ง (Relay) (ให้สังเกตว่า ถ้ามีใครสามารถถอดรหัสลับการสื่อสารโดยใช้ทีแอลเอสได้ แต่ไม่มีกุญแจอายุสั้นของสถานีแรก ก็จะไม่สามารถกำหนดได้ว่า เซลล์มีข้อมูลที่จะส่งต่อ หรือเป็นคำขอ/คำตอบรับ คือไม่สามารถรู้ว่าใครกำลังเดินเนินงานกิจกรรมอะไรจริง ๆ)