เทคโนโลยี
KeyMeld: คีย์รวมสำหรับ iPhone และ Android และสถาปัตยกรรม Zero Vault สำหรับโครงการ
KeyMeld เองไม่ได้เป็น Zero Vault เป็นบริการ SaaS ที่แยกออกมา ซึ่งช่วยให้นักพัฒนาสามารถนำคีย์สากลออกนอก Backend ของผลิตภัณฑ์ รวมลูกค้า iOS และ Android และสร้างสถาปัตยกรรมตามโมเดล Zero Vault สำหรับแอปพลิเคชันของตนเอง
แอปพลิเคชันข้ามแพลตฟอร์มเผชิญกับปัญหาที่ผู้ใช้มักไม่สังเกตเห็น บนหน้าจอ เขาจะเห็นบัญชีเดียวและคาดหวังให้ทำงานได้เท่ากันบนอุปกรณ์ใดก็ได้ แต่ภายใน iPhone และ Android ใช้กลไกการป้องกันที่แตกต่างกัน และทำงานกับคีย์ท้องถิ่นต่างกัน
บน iPhone แอปสามารถป้องกันคีย์ท้องถิ่นของอุปกรณ์โดยใช้ Apple Keychain ในขณะที่บน Android ใช้ Android Keystore เทคโนโลยีเหล่านี้ออกแบบมาเพื่อให้คีย์สำคัญอยู่ในสภาพแวดล้อมที่ปลอดภัยของอุปกรณ์ แต่ไม่สามารถทดแทนกันได้
สำหรับผู้ใช้แล้ว เรื่องนี้ไม่สำคัญ เขาแค่ต้องการเปิดแอปบน iPhone แล้วติดตั้งบน Android เพื่อดำเนินงานต่อด้วยข้อมูลที่เข้ารหัสเดียวกัน
สำหรับนักพัฒนา นี่เป็นคำถามด้านสถาปัตยกรรม: จัดการการเข้าถึงร่วมกันบนสองแพลตฟอร์มอย่างไร โดยไม่ย้ายคีย์ท้องถิ่นของอุปกรณ์และไม่เก็บไฟล์สำเนาไว้ในฐานข้อมูล Backend ของตัวเอง
เมื่อสำรวจใน KeyMeld ฉันเห็นว่าบริการนี้เสนอโซลูชันสำหรับเรื่องนี้ด้วยคีย์สากลเฉพาะที่ไม่เข้าไปแทรกแซงการป้องกันภายในของ iOS และ Android
คีย์รวมสำหรับแพลตฟอร์มต่างกัน
คีย์ท้องถิ่นของอุปกรณ์เป็นของอุปกรณ์เฉพาะและรองรับด้วยเครื่องมือของระบบปฏิบัติการที่เกี่ยวข้อง คีย์นี้อยู่ในสภาพแวดล้อมที่ปลอดภัยของอุปกรณ์เฉพาะและไม่ได้ออกแบบให้เคลื่อนย้ายอย่างเสรีระหว่างอุปกรณ์
คีย์สากลของ KeyMeld เป็นสิ่งแตกต่าง มันสร้างขึ้นสำหรับโปรเจกต์ บัญชี และพื้นที่ปลอดภัยเฉพาะกลุ่มและกลายเป็นคีย์ร่วมสำหรับลูกค้าที่ได้รับอนุญาตบนแพลตฟอร์มต่าง ๆ
บริการนี้ไม่ดึงคีย์จาก iPhone ไม่โอนคีย์ไปยัง Android และไม่พยายามรวมคีย์สองอันเป็นอันเดียวกัน การป้องกันบนแพลตฟอร์มยังคงเป็นอิสระ แอปพลิเคชันได้รับระดับการเข้าถึงร่วมกันสำหรับโปรเจกต์ของตนเอง
สิ่งนี้คือบทบาทเชิงสถาปัตยกรรมของ KeyMeld มันไม่ได้ทำให้ iOS และ Android เป็นอันเดียวกันหรือแทนที่กลไกภายในของพวกเขา แต่จะเพิ่มระดับการทำงานร่วมกันด้วยคีย์สากล ซึ่งทำให้โปรเจกต์ไม่จำเป็นต้องแก้ปัญหาสำหรับการแยกกลุ่มอิสระระหว่างแพลตฟอร์ม
สำหรับผลิตภัณฑ์และบัญชีต่าง ๆ จะสร้างโครงร่างคีย์แยกกัน แต่ละโปรเจกต์เก็บข้อมูลเกี่ยวกับการเข้าถึงของตัวเอง และหลายบัญชีบนอุปกรณ์เดียวกันยังคงแยกกันอยู่
Zero Vault เป็นของโปรเจกต์
โดยทันทีที่ต้องการชี้แจง: Zero Vault ไม่ใช่ชื่อของ KeyMeld แต่เป็นโมเดลสถาปัตยกรรม ซึ่งโปรเจกต์ที่เชื่อมต่อสามารถสร้างขึ้นได้
KeyMeld ทำงานเป็นบริการ SaaS แยกต่างหาก ไม่ได้ติดตั้งไว้ภายใน Backend ของแอปพลิเคชัน และไม่ได้วางไว้ข้างๆ ฐานข้อมูลของโปรเจกต์ในฐานะโมดูลซอฟต์แวร์อีกตัว คีย์สากรถูกดูแลในโครงสร้าง SaaS แยกต่างหากนอกเหนือจาก Backend ของตัวผลิตภัณฑ์
เพื่อให้โมเดลนี้คงอยู่ขอบเขตความเชื่อถือระหว่างโปรเจกต์กับ KeyMeld ต้องเป็นอิสระกัน ฐานข้อมูลของ Backend และของบริการนอกมีข้อมูลประจำตัว สิทธิและกลไกการบริหารจัดการที่แตกต่างกัน
ผลลัพธ์นี้สามารถนิยามเป็นโมเดล Zero Vault ได้: ฐานข้อมูลบนเซิร์ฟเวอร์ของมันไม่เก็บคีย์จากพื้นที่ปลอดภัยของลูกค้า
Zero Vault ไม่หมายความว่า Backend ของโปรแกรมไม่เก็บอะไรเลย บัญชี การตั้งค่า ข้อมูลธุรกิจ และข้อมูลอื่น ๆ ที่จำเป็นต่อการทำงานจะยังคงอยู่ แต่ไม่มีคีย์สากรร่วมอยู่ใกล้เคียง
การถูกคุกคามของฐานข้อมูลเซิร์ฟเวอร์ของโปรแกรมไม่ได้เปิดเผยคีย์สากลเอง เพราะมันไม่ได้เก็บอยู่ร่วมกับบัญชีและข้อมูลเซิร์ฟเวอร์อื่น ๆ ในทางเทคนิค โมเดลนี้ไม่ได้รับประกันว่าความล้มเหลวใด ๆ จะเป็นอันตรายต่อความปลอดภัยโดยอัตโนมัติ แต่มันแก้ปัญหาเฉพาะในเรื่องของการแยกคีย์สากลออกจากพื้นที่เก็บข้อมูล client ซึ่งอยู่ในฐานข้อมูลของตัวโปรเจกต์เอง
ตัวอย่าง: บัญชีเดียวบน iPhone และ Android
สมมติว่าเป็นแอปพลิเคชันที่เก็บข้อมูลที่เข้ารหัสไว้ในเครื่อง ซึ่งอาจเป็นแอปพลิเคชันยืนยันตัวตน ลูกค้าองค์กร หรือลูกค้าหลายรายที่ต้องทำงานกับข้อมูลเข้ารหัสโดยตรงบนอุปกรณ์
บน iPhone แอปพลิเคชันปกป้องคีย์ท้องถิ่นด้วย iOS ในขณะที่บน Android ใช้กลไกการป้องกันของ Android การเก็บคีย์ภายในเครื่องต่างกันไป และนั่นเป็นเรื่องปกติ
หากไม่มีชั้นที่เป็นกลางเช่นนี้ นักพัฒนาจะต้องแก้ไขว่าเข้าถึงข้อมูลเข้ารหัสเดียวกันได้อย่างไรบนสองแพลตฟอร์ม ระบบจัดเก็บบนแพลตฟอร์มก็ยังแตกต่างกันอยู่ดี และผู้พัฒนาต้องเชื่อมโยงกลไกทั้งสองด้วยตนเอง
จากนั้นอาจสร้างแผนผังที่แตกต่างกันสำหรับ iOS และ Android พยายามโยกย้ายคีย์ภายในเครื่องด้วยมือ หรือต้องเก็บสำเนาบนเซิร์ฟเวอร์
KeyMeld ช่วยให้หลีกเลี่ยงการโยกย้ายคีย์ท้องถิ่นและเก็บสำเนาบนเซิร์ฟเวอร์ โดยการเพิ่มคีย์สากลร่วมกัน
ลูกค้า iPhone และ Android เข้าถึงคีย์สากลเดียวกันภายในโปรเจกต์และบัญชีเดียวกัน ในขณะที่แต่ละเครื่องยังคงใช้กลไกการป้องกันของตัวเอง
สำหรับผู้ใช้แล้ว ดูเหมือนว่าเป็นบัญชีเดียวบนอุปกรณ์ต่าง ๆ ไม่จำเป็นต้องรู้ว่ากลไกไหนใช้ใน iPhone และ Android
เมื่อเปลี่ยนโทรศัพท์ ไม่จำเป็นต้องส่งออกคีย์ท้องถิ่นจากอุปกรณ์เก่า หรือต้องสร้างสำเนาพื้นที่เก็บข้อมูลปลอดภัยใหม่สำหรับแพลตฟอร์มใหม่ ลูกค้าใหม่สามารถเชื่อมต่อโปรเจกต์เดียวกันและเข้าถึงคีย์เดียวกันได้
Backend มีส่วนร่วมในกระบวนการยืนยันตัวตนของคำขอ แต่คีย์สากลถูกออกให้แก่ลูกค้าที่ได้รับอนุญาตและไม่ได้เก็บไว้ในฐานข้อมูลของโปรเจกต์
ตัว KeyMeld เองไม่ได้โยกย้ายฐานข้อมูลของแอปพลิเคชันหรือแทนที่ระบบซิงค์ข้อมูลผู้ใช้ จุดประสงค์ของมันคือจัดหา cies คีย์ให้ลูกค้าเพื่อทำงานกับข้อมูลที่เข้ารหัส เนื้อหาคือจัดการและอัปเดตข้อมูลในพื้นที่เก็บของแอปพลิเคชันเป็นหน้าที่ของตัวผลิตภัณฑ์เอง
สามประเภทของคีย์และความลับ
เพื่อไม่ให้สับสนในเรื่องต่าง ๆ ของสถาปัตยกรรม ควรแยกแยะสามแนวคิดนี้
คีย์ท้องถิ่นของอุปกรณ์ เป็นของโทรศัพท์เครื่องนั้น โดยรองรับโดย iOS หรือ Android
คีย์สากล ใช้โดยลูกค้าที่ได้รับอนุญาตของโปรเจกต์และบัญชีเดียวกัน ซึ่งเชื่อมโยงแพลตฟอร์มต่าง ๆ ระดับตัวโปรเจกต์
ความลับของบริการ จำเป็นสำหรับ Backend ในการเชื่อมต่อกับ KeyMeld อย่างปลอดภัย ซึ่งไม่ได้ส่งให้แอปพลิเคชันหรือเบราว์เซอร์
ความลับของบริการและคีย์สากลมีหน้าที่ต่างกัน ในโมเดลสถาปัตยกรรม Zero Vault คีย์สากลจะไม่ถูกเก็บไว้ในฐานข้อมูลของโปรเจกต์ร่วมกับข้อมูลของ Backend
การทำงานของ KeyMeld ไม่ต้องการชื่อผู้ใช้ รหัสผ่าน เนื้อหา TOTP หรือข้อมูลเชิงธุรกิจใด ๆ สิ่งสำคัญคือการเชื่อมโยงโปรเจกต์ บัญชีผู้ใช้ และสิทธิ์ของลูกค้าในการเข้าถึงคีย์สากล
การควบคุมการเข้าถึงคีย์ยังอยู่ในความดูแล
การได้รับคีย์สากลไม่ได้เป็นสิทธิขั้นพื้นฐานของลูกค้าทุกคน
หากอุปกรณ์ไม่สามารถเชื่อถือได้อีกต่อไป สถานะของบัญชีเปลี่ยนไป หรือลูกทีมระงับการเข้าถึงโปรเจกต์ KeyMeld อาจหยุดให้คีย์สากลแก่ลูกค้ารายนั้น
สิ่งสำคัญคือต้องไม่สรุปอย่างกว้างขวาง ซึ่งไม่หมายความว่าจะลบคีย์ท้องถิ่นที่มีอยู่แล้วโดยอัตโนมัติ แต่เป็นการควบคุมการเข้าถึงคีย์ในอนาคตและการเชื่อมต่อของลูกค้าใหม่
สำหรับผู้ใช้ หมายความว่าการเชื่อมต่ออุปกรณ์ใหม่และการควบคุมการเข้าถึงคีย์ของพวกเขานั้นอยู่ภายใต้ระบบเดียวกัน
สำหรับนักพัฒนา — ไม่จำเป็นต้องสร้างกลไกนี้เองสำหรับ iOS และ Android เพราะโมเดล Zero Vault ขึ้นอยู่กับว่าพวกเขาเก็บคีย์สากลในที่ของตนเองและแยกส่วนระหว่างโครงสร้างพื้นฐานของตนเองกับโครงสร้างภายนอกของ SaaS อย่าง KeyMeld
สิ่งที่ KeyMeld ไม่ทำ
KeyMeld ไม่เป็นเครื่องจัดการรหัสผ่าน และไม่ได้เก็บบันทึก TOTP ของผู้ใช้ มันไม่กลายเป็นฐานข้อมูลบนคลาวด์ของแอปพลิเคชันและไม่แทนที่การซิงค์ข้อมูลเนื้อหาของแอป
มันไม่ใช่การแทนที่ Apple Keychain หรือ Android Keystore บริการนี้ปล่อยให้กลไกภายในของแต่ละแพลตฟอร์มทำงานต่อไป และเพิ่มระดับร่วมสำหรับผลิตภัณฑ์
นอกจากนี้ มันไม่ใช่ระบบระบุผู้ใช้ที่จำเป็น สำหรับการรับรองตัวตนและการอนุญาต แอปพลิเคชันอื่น เช่น MeldID อาจดูแลเรื่องนี้ ในขณะที่ KeyMeld ทำหน้าที่แค่ให้คีย์สากลแก่ลูกค้าที่ได้รับอนุญาต โดยไม่บันทึกไว้ใน Backend ของตัวผลิตภัณฑ์
สุดท้าย KeyMeld ไม่สร้าง Zero Vault อัตโนมัติ มันให้โครงร่างภายนอกของคีย์สากลกับโปรเจกต์ เพื่อต้องการเก็บโครงสร้างนี้ไว้ โปรเจกต์ไม่ควรเก็บคีย์สากลไว้ในฐานข้อมูลของตัวเอง และพื้นที่ปลอดภัยของแต่ละส่วนต้องยังคงแยกจากกัน
ใครอาจสนใจสิ่งนี้
แนวทางนี้เหมาะสำหรับแอปพลิเคชันที่ทำงานบนหลายแพลตฟอร์มพร้อมข้อมูลปลอดภัยในเครื่อง ซึ่งอาจเป็นแอปยืนยันตัวตน แอปองค์กร ผลิตภัณฑ์ SaaS บริการหลายอุปกรณ์ หรือโปรเจกต์ใด ๆ ที่ต้องให้บัญชีเดียวทำงานได้บน iPhone และ Android
สำหรับนักพัฒนาความสำคัญไม่ได้อยู่เพียงแค่ลดความซับซ้อนในแต่ละแพลตฟอร์ม แต่ยังรวมไปถึงการแบ่งรับผิดชอบ แอป Backend เก็บข้อมูลของตนเอง และ KeyMeld เป็น SaaS ภายนอกที่ให้คีย์สากลและควบคุมการแจกจ่าย
หลังจากทำความเข้าใจโปรเจกต์นี้ ฉันจะอธิบายว่า KeyMeld ไม่ใช่ Zero Vault พร้อมสมบูรณ์แบบ แต่เป็นเครื่องมือที่นักพัฒนาสามารถสร้างโมเดลนี้สำหรับผลิตภัณฑ์ของตนเองได้
iOS และ Android ยังคงใช้กลไกป้องกันของตัวเอง ลูกค้าได้รับคีย์สากลร่วมกัน และ Backend ของแอป หากมันไม่ได้เก็บคีย์ไว้เองและยังแยกส่วนระหว่างโครงสร้างพื้นฐานของตัวเองกับ KeyMeld ก็จะไม่กลายเป็นเซฟเก็บคีย์ปลอดภัย
สำหรับผู้ใช้ การเข้าถึงแบบรวมหลายแพลตฟอร์ม การส่งต่อคีย์สากลให้กับแอปพลิเคชันของตนเองในฐานะของส่วนหนึ่งของสถาปัตยกรรม Zero Vault นั้นเป็นประโยชน์ ซึ่งไม่ต้องเก็บคีย์ในฐานข้อมูลของโปรเจกต์เอง
เรียนรู้เพิ่มเติมเกี่ยวกับโครงการ: KeyMeld