ความปลอดภัยเครือข่าย - เลเยอร์การขนส่ง

การรักษาความปลอดภัยเครือข่ายก่อให้เกิดการรักษาความปลอดภัยข้อมูลจากการโจมตีในขณะที่อยู่ระหว่างการขนส่งบนเครือข่าย เพื่อให้บรรลุเป้าหมายนี้ได้มีการออกแบบโปรโตคอลความปลอดภัยแบบเรียลไทม์จำนวนมาก มีมาตรฐานยอดนิยมสำหรับโปรโตคอลการรักษาความปลอดภัยเครือข่ายแบบเรียลไทม์เช่น S / MIME, SSL / TLS, SSH และ IPsec ดังที่ได้กล่าวไว้ก่อนหน้านี้โปรโตคอลเหล่านี้ทำงานในชั้นต่างๆของรูปแบบเครือข่าย

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

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

ต้องการ Transport Layer Security

เรามาพูดคุยเกี่ยวกับธุรกรรมทางธุรกิจบนอินเทอร์เน็ตทั่วไป

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

  • หากธุรกรรมไม่ได้ใช้การรักษาความลับ (การเข้ารหัส) ผู้โจมตีสามารถรับข้อมูลบัตรชำระเงินของเขาได้ จากนั้นผู้โจมตีสามารถทำการซื้อโดยใช้ค่าใช้จ่ายของ Bob

  • หากไม่มีการใช้มาตรการความสมบูรณ์ของข้อมูลผู้โจมตีสามารถแก้ไขคำสั่งซื้อของ Bob ในแง่ของประเภทหรือปริมาณสินค้า

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

โครงร่างการรักษาความปลอดภัยของเลเยอร์การขนส่งสามารถแก้ไขปัญหาเหล่านี้ได้โดยการปรับปรุงการสื่อสารบนเครือข่ายแบบ TCP / IP ด้วยการรักษาความลับความสมบูรณ์ของข้อมูลการรับรองความถูกต้องของเซิร์ฟเวอร์

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

ปรัชญาของการออกแบบ TLS

โปรโตคอล Transport Layer Security (TLS) ทำงานเหนือเลเยอร์ TCP การออกแบบโปรโตคอลเหล่านี้ใช้ Application Program Interfaces (API) ยอดนิยมกับ TCP เรียกว่า“ ซ็อกเก็ต” สำหรับการเชื่อมต่อกับเลเยอร์ TCP

ขณะนี้แอปพลิเคชันเชื่อมต่อกับ Transport Security Layer แทน TCP โดยตรง Transport Security Layer มี API ที่เรียบง่ายพร้อมซ็อกเก็ตซึ่งคล้ายและคล้ายคลึงกับ API ของ TCP

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

TLS ได้รับการออกแบบให้ทำงานบน TCP ซึ่งเป็นโปรโตคอลเลเยอร์ 4 ที่เชื่อถือได้ (ไม่ใช่ในโปรโตคอล UDP) เพื่อให้การออกแบบ TLS ง่ายขึ้นมากเพราะไม่ต้องกังวลกับ 'หมดเวลา' และ 'ส่งข้อมูลที่สูญหายอีกครั้ง' เลเยอร์ TCP ยังคงทำเช่นนั้นตามปกติซึ่งตอบสนองความต้องการของ TLS

เหตุใด TLS จึงเป็นที่นิยม

เหตุผลที่นิยมใช้ระบบรักษาความปลอดภัยที่ Transport Layer คือความเรียบง่าย การออกแบบและการปรับใช้การรักษาความปลอดภัยในเลเยอร์นี้ไม่ต้องการการเปลี่ยนแปลงใด ๆ ในโปรโตคอล TCP / IP ที่นำไปใช้ในระบบปฏิบัติการ เฉพาะกระบวนการของผู้ใช้และแอปพลิเคชันเท่านั้นที่ต้องได้รับการออกแบบ / แก้ไขซึ่งมีความซับซ้อนน้อยกว่า

Secure Socket Layer (SSL)

ในส่วนนี้เราจะพูดถึงกลุ่มของโปรโตคอลที่ออกแบบมาสำหรับ TLS ตระกูลนี้มีโปรโตคอล SSL เวอร์ชัน 2 และ 3 และ TLS SSLv2 ถูกแทนที่ด้วย SSLv3 แล้วดังนั้นเราจะเน้นที่ SSL v3 และ TLS

ประวัติโดยย่อของ SSL

ในปี 1995 Netscape ได้พัฒนา SSLv2 และใช้ใน Netscape Navigator 1.1 SSL version1 ไม่เคยเผยแพร่และใช้งาน ต่อมา Microsoft ได้ปรับปรุง SSLv2 และนำโปรโตคอลอื่นที่คล้ายกันชื่อ Private Communications Technology (PCT) มาใช้

Netscape ปรับปรุง SSLv2 อย่างมากสำหรับปัญหาด้านความปลอดภัยต่างๆและนำ SSLv3 มาใช้ในปี 2542 ต่อมา Internet Engineering Task Force (IETF) ได้แนะนำโปรโตคอล TLS (Transport Layer Security) ที่คล้ายกันเป็นมาตรฐานแบบเปิด โปรโตคอล TLS ไม่สามารถทำงานร่วมกับ SSLv3 ได้

TLS แก้ไขอัลกอริทึมการเข้ารหัสสำหรับการขยายคีย์และการพิสูจน์ตัวตน นอกจากนี้ TLS ยังแนะนำให้ใช้การเข้ารหัสแบบเปิด Diffie-Hellman (DH) และ Digital Signature Standard (DSS) แทนการเข้ารหัส RSA ที่จดสิทธิบัตรซึ่งใช้ใน SSL แต่เนื่องจากสิทธิบัตร RSA หมดอายุในปี 2543 จึงไม่มีเหตุผลที่ชัดเจนที่ผู้ใช้จะเปลี่ยนจาก SSLv3 ที่ใช้กันอย่างแพร่หลายมาเป็น TLS

คุณสมบัติเด่นของ SSL

คุณสมบัติเด่นของโปรโตคอล SSL มีดังนี้ -

  • SSL ให้ความปลอดภัยในการเชื่อมต่อเครือข่ายผ่าน -

    • Confidentiality - มีการแลกเปลี่ยนข้อมูลในรูปแบบที่เข้ารหัส

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

    • Reliability - รักษาการตรวจสอบความสมบูรณ์ของข้อความ

  • SSL พร้อมใช้งานสำหรับแอ็พพลิเคชัน TCP ทั้งหมด

  • รองรับโดยเว็บเบราว์เซอร์เกือบทั้งหมด

  • ให้ความสะดวกในการทำธุรกิจกับเอนทิตีออนไลน์ใหม่ ๆ

  • พัฒนาสำหรับเว็บอีคอมเมิร์ซเป็นหลัก

สถาปัตยกรรมของ SSL

SSL เฉพาะสำหรับ TCP และไม่ทำงานกับ UDP SSL จัดเตรียม Application Programming Interface (API) ให้กับแอปพลิเคชัน ไลบรารี / คลาส C และ Java SSL พร้อมใช้งาน

โปรโตคอล SSL ออกแบบมาเพื่อทำงานร่วมกันระหว่างแอปพลิเคชันและเลเยอร์การขนส่งดังที่แสดงในภาพต่อไปนี้ -

SSL นั้นไม่ใช่โปรโตคอลชั้นเดียวตามที่ปรากฎในภาพ ในความเป็นจริงมันประกอบด้วยสองชั้นย่อย

  • เลเยอร์ย่อยด้านล่างประกอบด้วยส่วนประกอบหนึ่งของโปรโตคอล SSL ที่เรียกว่า SSL Record Protocol ส่วนประกอบนี้ให้บริการด้านความซื่อสัตย์และการรักษาความลับ

  • เลเยอร์ย่อยด้านบนประกอบด้วยส่วนประกอบโปรโตคอลที่เกี่ยวข้องกับ SSL สามส่วนและโปรโตคอลแอปพลิเคชัน ส่วนประกอบแอปพลิเคชันให้บริการถ่ายโอนข้อมูลระหว่างการโต้ตอบกับไคลเอนต์ / เซิร์ฟเวอร์ ในทางเทคนิคสามารถทำงานบนชั้น SSL ได้เช่นกัน ส่วนประกอบของโปรโตคอลที่เกี่ยวข้องกับ SSL 3 รายการ ได้แก่ -

    • โปรโตคอล SSL Handshake
    • เปลี่ยน Cipher Spec Protocol
    • โปรโตคอลการแจ้งเตือน
  • โปรโตคอลทั้งสามนี้จัดการการแลกเปลี่ยนข้อความ SSL ทั้งหมดและจะกล่าวถึงต่อไปในส่วนนี้

หน้าที่ของส่วนประกอบโปรโตคอล SSL

ส่วนประกอบย่อยทั้งสี่ของโปรโตคอล SSL จัดการงานต่างๆเพื่อการสื่อสารที่ปลอดภัยระหว่างเครื่องไคลเอ็นต์และเซิร์ฟเวอร์

  • บันทึกโปรโตคอล

    • ชั้นบันทึกจัดรูปแบบข้อความโปรโตคอลชั้นบน

    • แยกส่วนข้อมูลลงในบล็อกที่จัดการได้ (ความยาวสูงสุด 16 KB) เป็นการบีบอัดข้อมูลหรือไม่ก็ได้

    • เข้ารหัสข้อมูล

    • จัดเตรียมส่วนหัวสำหรับแต่ละข้อความและแฮช (Message Authentication Code (MAC)) ที่ส่วนท้าย

    • ส่งมอบบล็อกที่จัดรูปแบบไปยังเลเยอร์ TCP สำหรับการส่ง

  • โปรโตคอล SSL Handshake

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

    • การสร้างเซสชันเกี่ยวข้องกับการพิสูจน์ตัวตนเซิร์ฟเวอร์การเจรจาคีย์และอัลกอริทึมการสร้างคีย์และการพิสูจน์ตัวตนไคลเอ็นต์ (ทางเลือก)

    • เซสชันถูกระบุโดยชุดพารามิเตอร์ความปลอดภัยการเข้ารหัสที่ไม่ซ้ำกัน

    • การเชื่อมต่อ TCP ที่ปลอดภัยหลายรายการระหว่างไคลเอนต์และเซิร์ฟเวอร์สามารถแชร์เซสชันเดียวกันได้

    • การดำเนินการโปรโตคอล Handshake ผ่านสี่ขั้นตอน สิ่งเหล่านี้จะกล่าวถึงในหัวข้อถัดไป

  • ChangeCipherSpec Protocol

    • ส่วนที่ง่ายที่สุดของโปรโตคอล SSL ประกอบด้วยข้อความเดียวที่แลกเปลี่ยนระหว่างสองหน่วยงานที่สื่อสารไคลเอ็นต์และเซิร์ฟเวอร์

    • เมื่อแต่ละเอนทิตีส่งข้อความ ChangeCipherSpec จะเปลี่ยนด้านของการเชื่อมต่อเป็นสถานะปลอดภัยตามที่ตกลงกัน

    • พารามิเตอร์การเข้ารหัสสถานะที่รอดำเนินการจะถูกคัดลอกไปยังสถานะปัจจุบัน

    • การแลกเปลี่ยนข้อความนี้บ่งชี้ว่าการแลกเปลี่ยนข้อมูลในอนาคตทั้งหมดได้รับการเข้ารหัสและความสมบูรณ์ได้รับการปกป้อง

  • โปรโตคอลการแจ้งเตือน SSL

    • โปรโตคอลนี้ใช้เพื่อรายงานข้อผิดพลาดเช่นข้อความที่ไม่คาดคิด MAC บันทึกไม่ดีการเจรจาต่อรองพารามิเตอร์ความปลอดภัยล้มเหลวเป็นต้น

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

การสร้างเซสชัน SSL

ตามที่กล่าวไว้ข้างต้นมีสี่ขั้นตอนของการสร้างเซสชัน SSL สิ่งเหล่านี้จัดการโดยโปรโตคอล SSL Handshake เป็นหลัก

Phase 1 - การสร้างความสามารถในการรักษาความปลอดภัย

  • ขั้นตอนนี้ประกอบด้วยการแลกเปลี่ยนของทั้งสองข้อความ - Client_helloและServer_hello

  • Client_helloประกอบด้วยรายการอัลกอริทึมการเข้ารหัสที่ไคลเอนต์สนับสนุนโดยลดลงตามลำดับความต้องการ

  • Server_helloมีการเข้ารหัสข้อมูลจำเพาะที่เลือก (CipherSpec) และใหม่session_id

  • CipherSpec มีฟิลด์เช่น -

    • อัลกอริทึมการเข้ารหัส (DES, 3DES, RC2 และ RC4)

    • อัลกอริทึม MAC (ขึ้นอยู่กับ MD5, SHA-1)

    • อัลกอริทึมคีย์สาธารณะ (RSA)

    • ข้อความทั้งสองมี "nonce" เพื่อป้องกันการโจมตีซ้ำ

Phase 2 - การตรวจสอบเซิร์ฟเวอร์และการแลกเปลี่ยนคีย์

  • เซิร์ฟเวอร์ส่งใบรับรอง ซอฟต์แวร์ไคลเอ็นต์ได้รับการกำหนดค่าด้วยคีย์สาธารณะขององค์กรที่“ เชื่อถือได้” (CA) ต่างๆเพื่อตรวจสอบใบรับรอง

  • เซิร์ฟเวอร์ส่งชุดการเข้ารหัสที่เลือก

  • เซิร์ฟเวอร์อาจขอใบรับรองไคลเอ็นต์ โดยปกติแล้วจะไม่ทำ

  • เซิร์ฟเวอร์แสดงให้เห็นในตอนท้ายของServer_hello

Phase 3 - การรับรองความถูกต้องของลูกค้าและการแลกเปลี่ยนคีย์

  • ไคลเอ็นต์จะส่งใบรับรองเฉพาะในกรณีที่เซิร์ฟเวอร์ร้องขอ

  • นอกจากนี้ยังส่ง Pre-master Secret (PMS) ที่เข้ารหัสด้วยคีย์สาธารณะของเซิร์ฟเวอร์

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

Phase 4 - เสร็จสิ้น

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

  • จากนี้ไปข้อมูลทั้งหมดจะถูกเข้ารหัสและได้รับการคุ้มครองความสมบูรณ์

  • ข้อความ“ เสร็จสิ้น” จากแต่ละด้านจะตรวจสอบว่าการแลกเปลี่ยนคีย์และกระบวนการรับรองความถูกต้องสำเร็จ

ทั้งสี่ขั้นตอนที่กล่าวถึงข้างต้นเกิดขึ้นภายในการสร้างเซสชัน TCP การสร้างเซสชัน SSL เริ่มต้นหลังจาก TCP SYN / SYNACK และเสร็จสิ้นก่อน TCP Fin

กลับสู่เซสชันที่ไม่ได้เชื่อมต่อ

  • เป็นไปได้ที่จะดำเนินการต่อเซสชันที่ถูกตัดการเชื่อมต่อ (ผ่านข้อความแจ้งเตือน ) หากไคลเอ็นต์ส่งhello_requestไปยังเซิร์ฟเวอร์พร้อมกับข้อมูลsession_id ที่เข้ารหัส

  • จากนั้นเซิร์ฟเวอร์จะพิจารณาว่าsession_idถูกต้องหรือไม่ หากตรวจสอบความถูกต้องจะแลกเปลี่ยน ChangeCipherSpec และข้อความที่เสร็จสิ้นกับไคลเอนต์และดำเนินการต่อการสื่อสารที่ปลอดภัย

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

คีย์เซสชัน SSL

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

  • ความลับหลักถูกสร้างขึ้น (ผ่านตัวสร้างตัวเลขสุ่มหลอก) โดยใช้ -

    • ความลับก่อนมาสเตอร์

    • สอง nonces (RA และ RB) แลกเปลี่ยนในข้อความ client_hello และ server_hello

  • ค่าลับหกค่าจะได้รับจากความลับหลักนี้เป็น -

    • รหัสลับที่ใช้กับ MAC (สำหรับข้อมูลที่ส่งโดยเซิร์ฟเวอร์)

    • รหัสลับที่ใช้กับ MAC (สำหรับข้อมูลที่ส่งโดยไคลเอนต์)

    • รหัสลับและ IV ใช้สำหรับการเข้ารหัส (โดยเซิร์ฟเวอร์)

    • รหัสลับและ IV ใช้สำหรับการเข้ารหัส (โดยไคลเอนต์)

โปรโตคอล TLS

เพื่อให้เป็นมาตรฐานอินเทอร์เน็ตแบบเปิดของ SSL IETF ได้เปิดตัวโปรโตคอล The Transport Layer Security (TLS) ในเดือนมกราคม 2542 TLS ถูกกำหนดให้เป็นมาตรฐานอินเทอร์เน็ตที่เสนอใน RFC 5246

คุณสมบัติเด่น

  • โปรโตคอล TLS มีวัตถุประสงค์เดียวกันกับ SSL

  • ช่วยให้แอปพลิเคชันไคลเอนต์ / เซิร์ฟเวอร์สามารถสื่อสารได้อย่างปลอดภัยโดยการตรวจสอบสิทธิ์ป้องกันการดักฟังและต่อต้านการแก้ไขข้อความ

  • โปรโตคอล TLS อยู่เหนือเลเยอร์ TCP การขนส่งที่เน้นการเชื่อมต่อที่เชื่อถือได้ในสแต็กเลเยอร์เครือข่าย

  • สถาปัตยกรรมของโปรโตคอล TLS คล้ายกับโปรโตคอล SSLv3 มีโปรโตคอลย่อยสองโปรโตคอล: โปรโตคอล TLS Record และโปรโตคอล TLS Handshake

  • แม้ว่าโปรโตคอล SSLv3 และ TLS จะมีสถาปัตยกรรมที่คล้ายกัน แต่มีการเปลี่ยนแปลงหลายอย่างในสถาปัตยกรรมและการทำงานโดยเฉพาะอย่างยิ่งสำหรับโปรโตคอลการจับมือ

การเปรียบเทียบโปรโตคอล TLS และ SSL

มีความแตกต่างหลัก 8 ประการระหว่างโปรโตคอล TLS และ SSLv3 มีดังต่อไปนี้ -

  • Protocol Version - ส่วนหัวของเซ็กเมนต์โปรโตคอล TLS มีหมายเลขเวอร์ชัน 3.1 เพื่อแยกความแตกต่างระหว่างหมายเลข 3 ที่ดำเนินการโดยส่วนหัวของโปรโตคอล SSL

  • Message Authentication- TLS ใช้รหัสรับรองความถูกต้องของข้อความแฮชแบบคีย์ (H-MAC) ข้อดีคือ H-MAC ทำงานร่วมกับฟังก์ชันแฮชใด ๆ ไม่ใช่เฉพาะ MD5 หรือ SHA ตามที่ระบุไว้อย่างชัดเจนโดยโปรโตคอล SSL

  • Session Key Generation - มีความแตกต่างสองประการระหว่างโปรโตคอล TLS และ SSL สำหรับการสร้างเนื้อหาหลัก

    • วิธีการคำนวณความลับระดับพรีมาสเตอร์และมาสเตอร์คล้ายกัน แต่ในโปรโตคอล TLS การคำนวณความลับหลักจะใช้เอาต์พุตมาตรฐาน HMAC และฟังก์ชัน pseudorandom (PRF) แทน ad-hoc MAC

    • อัลกอริทึมสำหรับการคำนวณคีย์เซสชันและค่าเริ่มต้น (IV) แตกต่างใน TLS มากกว่าโปรโตคอล SSL

  • ข้อความแจ้งเตือนโปรโตคอล -

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

    • ข้อความแจ้งเตือนเพิ่มเติมจำนวนมากรวมอยู่ในโปรโตคอล TLS สำหรับเงื่อนไขข้อผิดพลาดอื่น ๆ เช่นrecord_overflow, decode_errorเป็นต้น

  • Supported Cipher Suites- SSL รองรับ RSA, Diffie-Hellman และ Fortezza cipher suites โปรโตคอล TLS รองรับทุกชุดยกเว้น Fortezza

  • Client Certificate Types- TLS กำหนดประเภทใบรับรองที่จะขอในข้อความcertificate_request SSLv3 รองรับสิ่งเหล่านี้ทั้งหมด นอกจากนี้ SSL ยังรองรับใบรับรองประเภทอื่น ๆ เช่น Fortezza

  • CertificateVerify และข้อความสำเร็จรูป -

    • ใน SSL ขั้นตอนข้อความที่ซับซ้อนถูกใช้สำหรับข้อความcertificate_verify ด้วย TLS ข้อมูลที่ตรวจสอบแล้วจะอยู่ในข้อความการจับมือซึ่งจะหลีกเลี่ยงขั้นตอนที่ซับซ้อนนี้

    • ข้อความสำเร็จรูปถูกคำนวณในลักษณะที่แตกต่างกันใน TLS และ SSLv3

  • Padding of Data- ในโปรโตคอล SSL การเพิ่มช่องว่างภายในข้อมูลผู้ใช้ก่อนการเข้ารหัสคือจำนวนขั้นต่ำที่จำเป็นในการทำให้ขนาดข้อมูลทั้งหมดเท่ากับความยาวบล็อกของการเข้ารหัส ใน TLS ช่องว่างภายในอาจเป็นจำนวนเท่าใดก็ได้ที่ส่งผลให้มีขนาดข้อมูลซึ่งเป็นผลคูณของความยาวบล็อกของการเข้ารหัสสูงสุด 255 ไบต์

ความแตกต่างข้างต้นระหว่างโปรโตคอล TLS และ SSLv3 สรุปไว้ในตารางต่อไปนี้

การท่องเว็บอย่างปลอดภัย - HTTPS

ในส่วนนี้เราจะพูดถึงการใช้โปรโตคอล SSL / TLS สำหรับการท่องเว็บอย่างปลอดภัย

กำหนด HTTPS

โปรโตคอล Hyper Text Transfer Protocol (HTTP) ใช้สำหรับการท่องเว็บ ฟังก์ชันของ HTTPS คล้ายกับ HTTP ข้อแตกต่างเพียงอย่างเดียวคือ HTTPS ให้การท่องเว็บที่ "ปลอดภัย" HTTPS ย่อมาจาก HTTP over SSL โปรโตคอลนี้ใช้เพื่อให้การเชื่อมต่อที่เข้ารหัสและรับรองความถูกต้องระหว่างเว็บเบราว์เซอร์ไคลเอนต์และเซิร์ฟเวอร์ของเว็บไซต์

การท่องเว็บอย่างปลอดภัยผ่าน HTTPS ช่วยให้มั่นใจได้ว่าเนื้อหาต่อไปนี้ได้รับการเข้ารหัส -

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

การทำงานของ HTTPS

โดยทั่วไปโปรโตคอลแอปพลิเคชัน HTTPS จะใช้หนึ่งในสองโปรโตคอลความปลอดภัยของเลเยอร์การขนส่งที่เป็นที่นิยม - SSL หรือ TLS ขั้นตอนการเรียกดูอย่างปลอดภัยมีอธิบายไว้ในประเด็นต่อไปนี้

  • คุณขอการเชื่อมต่อ HTTPS กับหน้าเว็บโดยป้อน https: // ตามด้วย URL ในแถบที่อยู่ของเบราว์เซอร์

  • เว็บเบราว์เซอร์เริ่มต้นการเชื่อมต่อกับเว็บเซิร์ฟเวอร์ การใช้ https เป็นการเรียกใช้โปรโตคอล SSL

  • แอปพลิเคชันเบราว์เซอร์ในกรณีนี้ใช้พอร์ตระบบ 443 แทนพอร์ต 80 (ใช้ในกรณีของ http)

  • โปรโตคอล SSL ผ่านโปรโตคอลการจับมือสำหรับการสร้างเซสชันที่ปลอดภัยตามที่กล่าวไว้ในส่วนก่อนหน้านี้

  • เริ่มแรกเว็บไซต์จะส่งใบรับรอง SSL Digital ไปยังเบราว์เซอร์ของคุณ ในการตรวจสอบใบรับรองการจับมือ SSL จะดำเนินต่อไปเพื่อแลกเปลี่ยนความลับที่แชร์สำหรับเซสชัน

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

  • เมื่อสร้างแล้วเซสชันนี้ประกอบด้วยการเชื่อมต่อที่ปลอดภัยมากมายระหว่างเว็บเซิร์ฟเวอร์และเบราว์เซอร์

การใช้ HTTPS

  • การใช้ HTTPS เป็นการรักษาความลับการรับรองความถูกต้องของเซิร์ฟเวอร์และความสมบูรณ์ของข้อความแก่ผู้ใช้ ช่วยให้สามารถดำเนินการอีคอมเมิร์ซบนอินเทอร์เน็ตได้อย่างปลอดภัย

  • ป้องกันข้อมูลจากการดักฟังและปฏิเสธการขโมยข้อมูลประจำตัวซึ่งเป็นการโจมตีทั่วไปบน HTTP

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

Secure Shell Protocol (SSH)

คุณสมบัติเด่นของ SSH มีดังนี้ -

  • SSH เป็นโปรโตคอลเครือข่ายที่ทำงานบนชั้น TCP / IP ได้รับการออกแบบมาเพื่อแทนที่ TELNET ซึ่งให้วิธีการล็อกออนจากระยะไกลที่ไม่ปลอดภัย

  • SSH จัดเตรียมการสื่อสารไคลเอนต์ / เซิร์ฟเวอร์ที่ปลอดภัยและสามารถใช้สำหรับงานต่างๆเช่นการถ่ายโอนไฟล์และอีเมล

  • SSH2 เป็นโปรโตคอลที่แพร่หลายซึ่งให้ความปลอดภัยในการสื่อสารบนเครือข่ายที่ดีขึ้นกว่า SSH1 เวอร์ชันก่อนหน้า

SSH กำหนด

SSH จัดเป็นสามโปรโตคอลย่อย

  • Transport Layer Protocol- ส่วนนี้ของโปรโตคอล SSH ให้การรักษาความลับของข้อมูลการตรวจสอบความถูกต้องของเซิร์ฟเวอร์ (โฮสต์) และความสมบูรณ์ของข้อมูล อาจเป็นทางเลือกให้มีการบีบอัดข้อมูลด้วย

    • Server Authentication- คีย์โฮสต์ไม่สมมาตรเหมือนคีย์สาธารณะ / ส่วนตัว เซิร์ฟเวอร์ใช้คีย์สาธารณะเพื่อพิสูจน์ตัวตนกับไคลเอ็นต์ ไคลเอนต์ตรวจสอบว่าเซิร์ฟเวอร์ที่ติดต่อเป็นโฮสต์ที่ "รู้จัก" จากฐานข้อมูลที่ดูแลอยู่ เมื่อตรวจสอบสิทธิ์เซิร์ฟเวอร์แล้วจะมีการสร้างคีย์เซสชัน

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

    • Data Integrity- SSH ใช้อัลกอริทึม Message Authentication Code (MAC) เพื่อตรวจสอบความสมบูรณ์ของข้อมูล เป็นการปรับปรุง CRC 32 บิตที่ SSH1 ใช้

  • User Authentication Protocol- SSH ส่วนนี้จะตรวจสอบผู้ใช้กับเซิร์ฟเวอร์ เซิร์ฟเวอร์ตรวจสอบว่าการเข้าถึงมอบให้กับผู้ใช้ที่ต้องการเท่านั้น ปัจจุบันมีการใช้วิธีการตรวจสอบความถูกต้องหลายอย่างเช่นรหัสผ่านที่พิมพ์ Kerberos การพิสูจน์ตัวตนด้วยคีย์สาธารณะเป็นต้น

  • Connection Protocol - สิ่งนี้มีช่องทางตรรกะหลายช่องทางผ่านการเชื่อมต่อ SSH พื้นฐานเดียว

บริการ SSH

SSH มีบริการหลักสามอย่างที่ช่วยให้สามารถจัดหาโซลูชันที่ปลอดภัยมากมาย บริการเหล่านี้อธิบายสั้น ๆ ดังนี้ -

  • Secure Command-Shell (Remote Logon)- อนุญาตให้ผู้ใช้แก้ไขไฟล์ดูเนื้อหาของไดเรกทอรีและเข้าถึงแอปพลิเคชันบนอุปกรณ์ที่เชื่อมต่อ ผู้ดูแลระบบสามารถเริ่ม / ดู / หยุดบริการและกระบวนการจากระยะไกลสร้างบัญชีผู้ใช้และเปลี่ยนสิทธิ์ของไฟล์ / ไดเร็กทอรีและอื่น ๆ ขณะนี้งานทั้งหมดที่เป็นไปได้ในพรอมต์คำสั่งของเครื่องสามารถดำเนินการได้อย่างปลอดภัยจากเครื่องระยะไกลโดยใช้การเข้าสู่ระบบระยะไกลที่ปลอดภัย

  • Secure File Transfer- SSH File Transfer Protocol (SFTP) ได้รับการออกแบบเป็นส่วนขยายสำหรับ SSH-2 สำหรับการถ่ายโอนไฟล์ที่ปลอดภัย โดยพื้นฐานแล้วมันเป็นโปรโตคอลแยกต่างหากที่อยู่เหนือโปรโตคอล Secure Shell เพื่อจัดการการถ่ายโอนไฟล์ SFTP เข้ารหัสทั้งชื่อผู้ใช้ / รหัสผ่านและข้อมูลไฟล์ที่กำลังถ่ายโอน ใช้พอร์ตเดียวกับเซิร์ฟเวอร์ Secure Shell นั่นคือพอร์ตระบบหมายเลข 22

  • Port Forwarding (Tunneling)- อนุญาตให้มีการรักษาความปลอดภัยข้อมูลจากแอปพลิเคชันที่ใช้ TCP / IP ที่ไม่ปลอดภัย หลังจากตั้งค่าการส่งต่อพอร์ตแล้ว Secure Shell จะเปลี่ยนเส้นทางการรับส่งข้อมูลจากโปรแกรม (โดยปกติคือไคลเอนต์) และส่งผ่านช่องสัญญาณที่เข้ารหัสไปยังโปรแกรมอีกด้านหนึ่ง (โดยปกติจะเป็นเซิร์ฟเวอร์) แอปพลิเคชันหลายตัวสามารถส่งข้อมูลผ่านช่องสัญญาณที่ปลอดภัยแบบมัลติเพล็กซ์เดียวทำให้ไม่จำเป็นต้องเปิดพอร์ตจำนวนมากบนไฟร์วอลล์หรือเราเตอร์

ประโยชน์และข้อ จำกัด

ประโยชน์และข้อ จำกัด ของการใช้การรักษาความปลอดภัยการสื่อสารที่ชั้นการขนส่งมีดังนี้ -

  • สิทธิประโยชน์

    • Transport Layer Security มีความโปร่งใสสำหรับแอปพลิเคชัน

    • เซิร์ฟเวอร์ได้รับการรับรองความถูกต้อง

    • ส่วนหัวของเลเยอร์แอปพลิเคชันซ่อนอยู่

    • มีความละเอียดมากกว่ากลไกการรักษาความปลอดภัยที่เลเยอร์ 3 (IPsec) เนื่องจากทำงานในระดับการเชื่อมต่อการขนส่ง

  • ข้อ จำกัด

    • ใช้ได้กับแอปพลิเคชันที่ใช้ TCP เท่านั้น (ไม่ใช่ UDP)

    • ส่วนหัว TCP / IP ชัดเจน

    • เหมาะสำหรับการสื่อสารโดยตรงระหว่างไคลเอนต์และเซิร์ฟเวอร์ ไม่รองรับแอปพลิเคชันที่ปลอดภัยโดยใช้เซิร์ฟเวอร์เชน (เช่นอีเมล)

    • SSL ไม่จัดเตรียมการไม่ปฏิเสธเนื่องจากการพิสูจน์ตัวตนไคลเอ็นต์เป็นทางเลือก

    • หากจำเป็นต้องใช้การรับรองความถูกต้องของไคลเอ็นต์บน SSL

สรุป

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

วิธีหนึ่งในการบรรเทาการโจมตีที่อาจเกิดขึ้นระหว่างเซสชันของผู้ใช้คือการใช้โปรโตคอลการสื่อสารที่ปลอดภัย โปรโตคอลการสื่อสารสองแบบดังกล่าวคือ Secure Sockets Layer (SSL) และ Transport Layer Security (TLS) จะกล่าวถึงในบทนี้ โปรโตคอลทั้งสองนี้ทำงานที่เลเยอร์การขนส่ง

โปรโตคอลชั้นการขนส่งอื่น Secure Shell (SSH) ซึ่งออกแบบมาเพื่อแทนที่ TELNET มอบวิธีการรักษาความปลอดภัยในการเข้าสู่ระบบระยะไกล สามารถให้บริการต่างๆเช่น Secure Command Shell และ SFTP

การใช้การรักษาความปลอดภัยของเลเยอร์การขนส่งมีประโยชน์มากมาย อย่างไรก็ตามโปรโตคอลความปลอดภัยที่ออกแบบในเลเยอร์เหล่านี้สามารถใช้ได้กับ TCP เท่านั้น พวกเขาไม่ให้ความปลอดภัยสำหรับการสื่อสารที่ดำเนินการโดยใช้ UDP