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

อาการ: ตัวที่ช้าไม่ใช่โปรไฟล์ที่เข้ารหัส

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

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

นั่นคือคำอธิบายทั้งหมด และไม่ต้องอ้างว่าพื้นฐานแบบใดเร็วกว่าโดยสากล ทั้งสองแบบเร็วได้ ทั้งสองแบบช้าได้ และลำดับขึ้นกับเครื่องและโค้ด

นับการดำเนินการ ไม่ใช่ป้ายกำกับ

โครงสร้าง AEAD ตามที่ RFC 5116 อธิบาย ให้อินเทอร์เฟซเดียวแก่ implementation ที่คืนทั้งข้อความไซเฟอร์และแท็กพร้อมกัน AES-GCM เป็นตัวอย่างหนึ่ง คือการเข้ารหัสโหมดตัวนับรวมกับตัวยืนยัน Galois อินเทอร์เฟซไม่ได้ทำให้ความสมบูรณ์ฟรี แต่ทำให้การรวมกันถูกนิยามอย่างชัดเจน และนั่นคือสิ่งที่ทำให้ implementation ปรับแต่งคู่ให้เหมาะสมเป็นหน่วยเดียวได้

Separate authentication path:
  payload -> independent HMAC -> framed packet

AEAD path:
  payload -> authenticated encryption with tag -> framed packet

นี่คือภาพร่างของการประมวลผล ไม่ใช่คำแนะนำด้านคอนฟิกูเรชัน แบบแรกไม่มีความลับแต่ยังใช้ CPU ในการยืนยันตัวตน และนั่นคือเหตุผลที่ “ปิดการเข้ารหัส” ไม่ได้มีความหมายเดียวกับ “ปิดงานวิทยาการเข้ารหัส”

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

โหมดที่เจรจาไว้เปิดความสามารถอะไรจริง

ใน Community OpenVPN ไซเฟอร์ข้อมูลแบบ AEAD หมายความว่าตัวเลือก auth ไม่ได้เพิ่ม HMAC แยกของช่องข้อมูลเองอีกต่อไป เอกสารอ้างอิงตัวเลือกการเข้ารหัสอธิบายขอบเขตนั้น และนั่นคือเหตุผลที่คอนฟิกูเรชันสองชุดที่ดูคล้ายกันในไฟล์ข้อความอาจต่างกันในงานต่อแพ็กเก็ต

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

openvpn --show-ciphers | head -20
sudo grep -E 'cipher|auth' /etc/openvpn/server.conf

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

วัดภาระงานที่คุณรันจริง

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

openssl speed -evp aes-256-gcm
openssl speed -evp sha1

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

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

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

บทความที่เกี่ยวข้อง