วิธีดำเนินการปักหมุด SSL ในแอป iOS
เผยแพร่แล้ว: 2020-02-24ขณะที่ผู้คนก้าวออกจากบ้าน พวกเขาก็ออกสำรวจ เครือข่าย Wi-Fi แบบ เปิด ไม่ว่าพวกเขาจะรอที่สนามบินหรือนั่งที่ร้านกาแฟ เป้าหมายหลักคือการค้นหาการ เชื่อมต่อ Wi-Fi แบบ เปิด
แฮกเกอร์ก็อยู่ในภารกิจเดียวกันเช่นกัน พวกเขายังรอให้ผู้ใช้เริ่มต้นคำขอเชื่อมต่อบนเครือข่ายแบบเปิดก่อนที่จะนำสมองฟิชชิ่งไปทำงานและกีดกันข้อมูลที่สำคัญของพวกเขาหรือแย่กว่านั้นคือเงินในบัญชีธนาคารของพวกเขา
แม้ว่า HTTPS จะมีประสิทธิภาพในระดับหนึ่ง แต่ก็เป็นโปรโตคอล SSL ที่ทำให้ผู้ใช้ปลอดภัยจากการไม่แตกหักและปลอดภัยเป็นส่วนใหญ่ แต่การโจมตีแบบ Man-In-The-Middle (MITM) ก็ พบวิธีที่จะละเมิดสิ่งนี้เช่น กัน
นี่คือที่มาของ เทคนิค การตรึง SSL ให้เป็นหนึ่งในแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของ แอพ มือถือ เมื่อพูดถึงแพลตฟอร์มโดยเฉพาะ มันเป็นโซลูชันการรักษาความปลอดภัยแอพ iphone ในอุดมคติที่แก้ปัญหาได้อย่างยอดเยี่ยม
ในบทความนี้ เราจะพิจารณา ประเภทและ กระบวนการของการรวม SSL Pinning ในแอป iOS เพื่อป้องกันการโจมตี Man In The Middle กระบวนการที่เป็นส่วนหนึ่งของ แนวปฏิบัติการ ทดสอบความปลอดภัยมือถือ OWASP
ประเภทของ วิธี การปักหมุดใบรับรอง SSL
มีสองวิธีหลักสำหรับการทดสอบ SSL Pinning ตามที่อธิบายด้านล่าง:
- ปักหมุดใบรับรอง – คุณสามารถดาวน์โหลดใบรับรองของเซิร์ฟเวอร์และรวมกลุ่มไว้ในแอพ ขณะรันไทม์ แอปจะเปรียบเทียบใบรับรองเซิร์ฟเวอร์กับใบรับรองที่คุณฝังไว้
- ตรึงคีย์สาธารณะ – คุณสามารถดึงคีย์สาธารณะของใบรับรองในรหัสเป็นสตริงได้ ที่รันไทม์ แอปพลิเคชันจะเปรียบเทียบกุญแจสาธารณะของใบรับรองกับรหัสที่ถูกฮาร์ดโค้ดในรหัส
การเลือกระหว่างวิธีการตรึง SSL สอง วิธีใน iOS ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์ของคุณและความต้องการส่วนบุคคล เมื่อคุณเลือกตัวเลือกแรก คุณจะต้องอัปโหลดแอปเมื่อเซิร์ฟเวอร์เปลี่ยนใบรับรอง มิฉะนั้นแอป จะ หยุดทำงาน เมื่อเลือกตัวเลือกที่สอง คุณอาจละเมิดนโยบายการหมุนเวียนคีย์ เนื่องจาก คีย์สาธารณะจะไม่เปลี่ยนแปลง
มาดูขั้นตอนในการปรับใช้ SSL Pinning ในแอป iOS ของคุณกัน
*หมายเหตุ: ขั้นตอนที่กล่าวถึงด้านล่างเป็นไปตามกระบวนการตรึงใบรับรอง iOS ด้วย Swift
วิธีการใช้ SSL Pinning ใน iOS App ของคุณ
1. NSURLSession
ในกรณีของ NSURLSession วิธีหลักในการจัดการการปักหมุด SSL คือ URLSession:didReceiveChallenge:completionHandler:delegate นักพัฒนาจะต้องตั้งค่าคลาสให้สอดคล้องกับ URLSessionDelegate และวางฟังก์ชันนี้ในคลาส:
ฟังก์ชันนี้จะ " ขอ ข้อมูลประจำตัวจากผู้รับมอบสิทธิ์เพื่อตอบสนองต่อคำขอตรวจสอบสิทธิ์จากเซิร์ฟเวอร์ระยะไกล " ผู้ พัฒนาแอพ iPhone จะเปรียบเทียบใบรับรองจากเซิร์ฟเวอร์กับใบรับรองที่บันทึกไว้ในชุดแอพ หากพบว่าใบรับรองทั้งสองเหมือนกัน การตรวจสอบสิทธิ์จะปล่อยให้ผ่านและไคลเอ็นต์จะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้
2. การปักหมุดใบรับรอง Alamofire
Alamofire เป็นหนึ่งในไลบรารี่ที่มีชื่อเสียงที่สุดสำหรับเครือข่าย HTTP ในภาษา Swift มันมาพร้อมกับฟังก์ชันในตัวสำหรับการปักหมุด SSL ใน iOS Swift และใช้งานง่ายมาก ต่อไปนี้คือวิธี สร้างแอป iOS ที่ปลอดภัย ด้วยการปักหมุดใบรับรอง Alamofire
ปัญหาทั่วไปที่เกี่ยวข้องกับการใช้งานการปักหมุด SSL & วิธีแก้ไข
ผู้เชี่ยวชาญด้าน การ ประกันคุณภาพ ที่หน่วยงานพัฒนาแอปที่มีชื่อเสียง ทดสอบแอปบนอุปกรณ์เคลื่อนที่เป็นประจำเพื่อหาช่องโหว่ด้านความปลอดภัย รวมถึงการรุกเครือข่ายเต็มรูปแบบ แต่มีหน่วยงานทดสอบแอปหลายแห่งที่ไม่เน้นประเด็นเหล่านี้ ด้วย ความกระตือรือร้นแบบเดียวกัน ดูเหมือนไม่เต็มใจเมื่อใช้โซลูชันความปลอดภัยของ iPhone นี้ ใน แอ ปของตน
นี่คือสาเหตุบางส่วนที่แพร่หลายเบื้องหลังสิ่งนี้ -
- ข้อเสียที่ใหญ่ที่สุดประการหนึ่ง ของ การปักหมุด SSL ใน แอป iOS คือการนำไปใช้งาน กระบวนการนี้ซับซ้อนและสามารถบังคับให้นักพัฒนาเขียนโค้ดซ้ำแล้ว ซ้ำเล่า และทำให้กระบวนการสร้างแอปซับซ้อน ขึ้น
- การตรึงใบรับรอง iOS SSL ที่จำเป็นต้องเปลี่ยนแปลงเป็นประจำสามารถบังคับให้นักพัฒนาอัปเดตไบนารีของแอปทุกครั้งที่มีการเปลี่ยนแปลงใบรับรอง
- ต้องใช้ความพยายามหลายครั้งเพื่อปกป้อง วิธีการเลี่ยงผ่านการตรวจสอบ SSL SSL ของ iOS
บริษัทพัฒนาแอพสำหรับ iPhone ที่น่าเชื่อถือ สามารถหลีกเลี่ยงข้อผิดพลาดทั่วไปบางประการ ได้
การทดสอบพิน
ต่างจากการทดสอบแอปทั่วไปที่คุณทดสอบว่าทุกอย่างทำงานหรือไม่ วิธีการทดสอบการปักหมุด SSL คือ คุณจะต้องตรวจสอบว่ามีบางอย่างล้มเหลวหรือไม่ คุณจะต้องมุ่งเน้นไปที่การทดสอบว่าแอปยกเลิกการเชื่อมต่อที่อาจถูกบุกรุก หากแอปเปิดใช้งานการสื่อสารด้วยปลายทางเดียว การทดสอบจะง่ายพอๆ กับการส่งคำขอ GET ไปยัง สถานะ ที่ กำหนดเอง ตามหลักแล้ว ในกรณีนี้ แอปจะต้องยกเลิกการเชื่อมต่อและ คำขอ จะล้มเหลว
การจัดการการเปลี่ยนแปลงใบรับรอง
การต่ออายุใบรับรองโดเมนจะคงไว้ซึ่งคู่คีย์สาธารณะ/ส่วนตัว แต่ก็ไม่เสมอไป แต่ถ้าคุณวางแผนรอบการอัปเดตอย่างถูกต้อง คุณจะสามารถหลีกเลี่ยงเวลาหยุดทำงานสำหรับผู้ใช้ปลายทางได้
ก่อนที่ ใบรับรอง iOS SSL จะเปิดใช้งานบนเว็บไซต์ คุณต้องตรึงใบรับรองนั้นในแอป นอกเหนือจากใบรับรองที่ใช้งานอยู่ในปัจจุบัน แล้วปล่อยการอัปเดต เมื่อเราทำตามขั้นตอนนี้ที่ Appinventiv เพื่อสร้าง แอ ป iOS ที่ ปลอดภัย เราจะทำการทดสอบอย่างรวดเร็วด้วยใบรับรองใหม่ชั่วคราวและทดสอบแอปโดยตรึงใบรับรองทั้งสองไว้
คำถามที่พบบ่อยเกี่ยวกับการปักหมุด SSL ในแอปพลิเคชัน iOS
1. จะจัดเก็บข้อมูลที่สำคัญในแอพ iOS ได้ที่ไหน
ข้อมูลที่ละเอียดอ่อนของแอปควรเก็บไว้ใน iCloud หรือ Keychain ใน iOS หรือแม้แต่ในฐานข้อมูลหลังจากการเข้ารหัสที่เหมาะสม
2. SSL ทำงานอย่างไร?
SSL Pinning เป็นหนึ่งใน เคล็ดลับด้านความปลอดภัยของแอป iOS ที่พบบ่อย ที่สุด แต่เพื่อที่จะเข้าใจความหมาย ก่อนอื่นคุณต้องรู้ว่า SSL ทำงานอย่างไร
- เบราว์เซอร์พยายามเชื่อมต่อกับเว็บไซต์ที่มีการรักษาความปลอดภัยด้วย SSL เบราว์เซอร์จะขอให้เว็บเซิร์ฟเวอร์ระบุตัวเอง
- เว็บเซิร์ฟเวอร์จะส่งสำเนาใบรับรอง SSL ไปให้เบราว์เซอร์
- เบราว์เซอร์ตรวจสอบว่าใบรับรอง SSL นั้นเชื่อถือได้หรือไม่ ถ้าเป็นไปได้ ข้อความจะถูกส่งไปยังเว็บเซิร์ฟเวอร์
- จากนั้นเว็บเซิร์ฟเวอร์จะส่งการตอบรับกลับเพื่อเริ่มเซสชันที่เข้ารหัส SSL
- ในที่สุดข้อมูลที่เข้ารหัสจะถูกแชร์ระหว่างเบราว์เซอร์และเว็บเซิร์ฟเวอร์
จบความคิด
แม้ว่าการปักหมุด SSL จะถือว่าปลอดภัยและใช้กันอย่างแพร่หลายเมื่อใดก็ตามที่จำเป็นต้องมีการเข้ารหัส การ ป้องกันอีกชั้นหนึ่งก็ยินดีต้อนรับเสมอเมื่อสร้างแอปที่มีความเสี่ยงสูง การตรึง SSL ช่วยให้คุณสามารถตรวจสอบข้อมูลประจำตัวของเซิร์ฟเวอร์ที่ด้านบนของสายการตรวจสอบความเชื่อถือ SSL
ด้วยการปักหมุด SSL คุณสามารถปฏิเสธการเชื่อมต่อทั้งหมดได้ ยกเว้นการเชื่อมต่อที่มีเซิร์ฟเวอร์ที่กำหนดซึ่งมีใบรับรอง SSL ที่เราบันทึกไว้ในชุดข้อมูลภายในเครื่องของเรา ข้อเสียที่อาจเกิดขึ้นคือ คุณต้องอัปเดตแอปทุกครั้งที่เปลี่ยนคีย์ SSL ของเซิร์ฟเวอร์
ในกรณีที่คุณวางแผนที่จะเปิดตัวแอป iOS ด้วยการปักหมุด SSL อาจเป็นการเริ่มต้นที่ดีในการ ปรึกษาบริษัทพัฒนาแอป iOS ที่ดี ที่สุด