องค์ประกอบของแอป
Android มีแพลตฟอร์มโอเพนซอร์สและสภาพแวดล้อมของแอปสําหรับอุปกรณ์เคลื่อนที่ ระบบปฏิบัติการหลักจะอิงตามเคอร์เนล Linux แอป Android มักเขียนด้วยภาษาโปรแกรม Java และทำงานในเครื่องเสมือน Android Runtime (ART) อย่างไรก็ตาม แอปยังเขียนเป็นโค้ดเนทีฟได้ด้วย แอปจะติดตั้งจากไฟล์เดียวที่มีนามสกุลไฟล์ APK
องค์ประกอบหลักของแอป Android มีดังนี้
-
AndroidManifest.xml: ไฟล์ AndroidManifest.xml เป็นไฟล์ควบคุมที่จะบอกให้ระบบทราบถึงสิ่งที่ต้องทํากับคอมโพเนนต์ระดับบนสุดทั้งหมด (โดยเฉพาะกิจกรรม บริการ ตัวรับการออกอากาศ และผู้ให้บริการเนื้อหาที่อธิบายไว้ด้านล่าง) ในแอป นอกจากนี้ยังระบุสิทธิ์ที่จําเป็นด้วย
-
กิจกรรม: โดยทั่วไปแล้ว กิจกรรม คือโค้ดสําหรับงานแบบมุ่งเน้นผู้ใช้งานเดียวที่ใช้คลาส
Activity
โดยปกติแล้ว กิจกรรมจะแสดง UI แก่ผู้ใช้ แต่ก็ไม่จําเป็นเสมอไป กิจกรรมบางอย่างอาจไม่แสดง UI เลย โดยปกติแล้ว กิจกรรมอย่างใดอย่างหนึ่งของแอปจะเป็นจุดแรกเข้าของแอป -
บริการ: บริการคือกลุ่มโค้ดที่ทำงานอยู่เบื้องหลัง โดยสามารถทํางานในกระบวนการของตนเองหรือในบริบทของกระบวนการของแอปอื่น ส่วนประกอบอื่นๆ จะ "เชื่อมโยง" กับบริการและเรียกใช้เมธอดในบริการผ่าน Remote Procedure Call ตัวอย่างบริการคือโปรแกรมเล่นสื่อ แม้ว่าผู้ใช้จะออกจาก UI การเลือกสื่อแล้ว แต่ผู้ใช้อาจยังต้องการให้เพลงเล่นต่อไป บริการจะเล่นเพลงต่อไปแม้ว่า UI จะเสร็จสมบูรณ์แล้วก็ตาม
-
ตัวรับการออกอากาศ: BroadcastReceiver คือออบเจ็กต์ที่สร้างอินสแตนซ์เมื่อระบบปฏิบัติการหรือแอปอื่นออกกลไก IPC ที่รู้จักกันในชื่อ Intent เช่น แอปอาจลงทะเบียนตัวรับสำหรับข้อความแบตเตอรี่เหลือน้อย และเปลี่ยนแปลงลักษณะการทํางานตามข้อมูลนั้น
รูปแบบสิทธิ์ของ Android: เข้าถึง API ที่ปกป้อง
แอปทั้งหมดใน Android จะทำงานในแซนด์บ็อกซ์แอปพลิเคชัน โดยค่าเริ่มต้น แอป Android จะเข้าถึงได้เฉพาะทรัพยากรของระบบในขอบเขตที่จำกัด ระบบจะจัดการการเข้าถึงทรัพยากรของแอป Android ซึ่งหากมีการใช้อย่างไม่ถูกต้องหรือมีเจตนาร้าย อาจส่งผลเสียต่อประสบการณ์ของผู้ใช้ เครือข่าย หรือข้อมูลในอุปกรณ์
ข้อจํากัดเหล่านี้มีการใช้งานในรูปแบบต่างๆ ความสามารถบางอย่างถูกจํากัดเนื่องจากไม่มี API สําหรับฟังก์ชันการทํางานที่มีความละเอียดอ่อน (เช่น ไม่มี Android API สําหรับการจัดการการ์ด SIM โดยตรง) ในบางกรณี การแยกบทบาทเป็นมาตรการรักษาความปลอดภัยเช่นเดียวกับการแยกพื้นที่เก็บข้อมูลต่อแอป ในกรณีอื่นๆ API ที่มีความละเอียดอ่อนมีไว้สำหรับแอปที่เชื่อถือได้และได้รับการปกป้องผ่านกลไกความปลอดภัยที่เรียกว่าสิทธิ์
API ที่ปกป้องเหล่านี้ ได้แก่
- ฟังก์ชันของกล้อง
- ข้อมูลตำแหน่ง (GPS)
- ฟังก์ชันบลูทูธ
- ฟังก์ชันโทรศัพท์
- ฟังก์ชัน SMS/MMS
- การเชื่อมต่อเครือข่าย/อินเทอร์เน็ต
เข้าถึงทรัพยากรเหล่านี้ได้ผ่านระบบปฏิบัติการเท่านั้น หากต้องการใช้ API ที่ปกป้องในอุปกรณ์ แอปต้องกำหนดความสามารถที่ต้องการในไฟล์ Manifest Android ทุกเวอร์ชันตั้งแต่ 6.0 ขึ้นไปใช้รูปแบบสิทธิ์รันไทม์ หากผู้ใช้ขอฟีเจอร์จากแอปที่ต้องใช้ Protected API ระบบจะแสดงกล่องโต้ตอบเพื่อแจ้งให้ผู้ใช้ปฏิเสธหรืออนุญาตสิทธิ์
เมื่อให้สิทธิ์แล้ว สิทธิ์จะมีผลกับแอปตราบใดที่ติดตั้งแอปไว้ ระบบจะไม่แจ้งให้ผู้ใช้ทราบอีกเกี่ยวกับสิทธิ์ที่มอบให้กับแอป และแอปที่รวมอยู่ในระบบปฏิบัติการหลักหรือที่ OEM รวมไว้ด้วยกันจะไม่ขอสิทธิ์จากผู้ใช้ เพื่อไม่ให้ผู้ใช้สับสน ระบบจะนำสิทธิ์ออกหากมีการถอนการติดตั้งแอป ดังนั้นการติดตั้งอีกครั้งในภายหลังจึงส่งผลให้มีการแสดงสิทธิ์
ในการตั้งค่าอุปกรณ์ ผู้ใช้จะดูสิทธิ์ของแอปที่ติดตั้งไว้ก่อนหน้านี้ได้ นอกจากนี้ ผู้ใช้ยังปิดฟังก์ชันการทำงานบางอย่างได้ทั้งหมดเมื่อเลือก เช่น การปิดใช้ GPS วิทยุ หรือ Wi-Fi
ในกรณีที่แอปพยายามใช้ฟีเจอร์ที่ได้รับการปกป้องซึ่งยังไม่ได้ประกาศไว้ในไฟล์ Manifest ของแอป โดยทั่วไปแล้ว สิทธิ์ที่ไม่สำเร็จจะส่งผลให้ระบบแสดงข้อยกเว้นด้านความปลอดภัยกลับไปที่แอป ระบบจะบังคับใช้การตรวจสอบสิทธิ์ API ที่ได้รับการปกป้องที่ระดับต่ำที่สุดเพื่อป้องกันการหลบเลี่ยง ตัวอย่างการรับส่งข้อความของผู้ใช้เมื่อติดตั้งแอปขณะขอสิทธิ์เข้าถึง Protected API แสดงอยู่ในรูปที่ 2
ดูคำอธิบายสิทธิ์เริ่มต้นของระบบได้ที่ https://developer.android.com/reference/android/Manifest.permission.html แอปอาจประกาศสิทธิ์ของตนเองเพื่อให้แอปอื่นๆ ใช้ สิทธิ์ดังกล่าวไม่ได้แสดงอยู่ในตำแหน่งด้านบน
เมื่อกำหนดสิทธิ์ แอตทริบิวต์ protectionLevel จะบอกให้ระบบทราบว่าผู้ใช้ควรได้รับแจ้งเกี่ยวกับแอปที่ต้องใช้สิทธิ์ หรือใครบ้างที่ได้รับอนุญาตให้มีสิทธิ์ โปรดดูรายละเอียดเกี่ยวกับการสร้างและการใช้สิทธิ์เฉพาะแอปที่หัวข้อ https://developer.android.com/guide/topics/security/security.html
ความสามารถบางอย่างของอุปกรณ์ เช่น ความสามารถในการส่ง Intent การแพร่ภาพ SMS จะใช้ไม่ได้กับแอปของบุคคลที่สาม แต่อาจใช้ได้กับแอปที่ OEM ติดตั้งไว้ล่วงหน้า สิทธิ์เหล่านี้ใช้สิทธิ์ signatureOrSystem
วิธีที่ผู้ใช้เข้าใจแอปของบุคคลที่สาม
Android มุ่งมั่นที่จะแจ้งให้ผู้ใช้ทราบอย่างชัดเจนเมื่อโต้ตอบกับแอปของบุคคลที่สาม และแจ้งให้ผู้ใช้ทราบถึงความสามารถของแอปเหล่านั้น ก่อนที่จะติดตั้งแอปใดๆ ผู้ใช้จะเห็นข้อความที่ชัดเจนเกี่ยวกับสิทธิ์ต่างๆ ที่แอปขอ หลังจากติดตั้งแล้ว ระบบจะไม่แจ้งให้ผู้ใช้ยืนยันสิทธิ์อีก
มีเหตุผลหลายประการที่ควรแสดงสิทธิ์ทันทีก่อนถึงเวลาติดตั้ง ขั้นตอนนี้เกิดขึ้นเมื่อผู้ใช้กำลังตรวจสอบข้อมูลเกี่ยวกับแอป นักพัฒนาแอป และฟังก์ชันการทำงานอย่างละเอียดเพื่อพิจารณาว่าแอปตรงกับความต้องการและตรงกับความคาดหวังของตนหรือไม่ นอกจากนี้ ผู้ใช้ยังต้องยังไม่ได้ตัดสินใจที่จะใช้แอปอย่างจริงจังหรือลงทุนทางการเงินกับแอป และสามารถเปรียบเทียบแอปกับแอปอื่นๆ ทางเลือกได้อย่างง่ายดาย
แพลตฟอร์มอื่นๆ บางแพลตฟอร์มใช้แนวทางที่แตกต่างออกไปในการแจ้งเตือนผู้ใช้ โดยขอสิทธิ์เมื่อเริ่มต้นเซสชันแต่ละครั้งหรือขณะมีการใช้แอป วิสัยทัศน์ของ Android คือช่วยให้ผู้ใช้สลับระหว่างแอปต่างๆ ได้อย่างราบรื่นตามต้องการ การยืนยันทุกครั้งจะทำให้ผู้ใช้ดำเนินการช้าลงและทำให้ Android มอบประสบการณ์การใช้งานที่ยอดเยี่ยมไม่ได้ การให้ผู้ใช้ตรวจสอบสิทธิ์ ณ เวลาติดตั้งจะช่วยให้ผู้ใช้มีตัวเลือกในการไม่ติดตั้งแอปหากไม่สบายใจ
นอกจากนี้ การศึกษาอินเทอร์เฟซผู้ใช้หลายชิ้นยังแสดงให้เห็นว่าการแจ้งเตือนผู้ใช้มากเกินไปทำให้ผู้ใช้เริ่มพูดว่า "ตกลง" กับกล่องโต้ตอบที่แสดง เป้าหมายด้านความปลอดภัยอย่างหนึ่งของ Android คือการสื่อสารข้อมูลด้านความปลอดภัยที่สำคัญไปยังผู้ใช้อย่างมีประสิทธิภาพ ซึ่งไม่สามารถทำได้โดยใช้กล่องโต้ตอบที่ผู้ใช้จะได้รับการฝึกให้เพิกเฉย การนำเสนอข้อมูลสำคัญเพียงครั้งเดียวและเฉพาะในกรณีที่สำคัญเท่านั้น จะทำให้ผู้ใช้มีแนวโน้มที่จะพิจารณาสิ่งที่ตนยอมรับ
แพลตฟอร์มบางแพลตฟอร์มเลือกที่จะไม่แสดงข้อมูลใดๆ เกี่ยวกับฟังก์ชันการทํางานของแอป แนวทางดังกล่าวทำให้ผู้ใช้เข้าใจและพูดคุยเกี่ยวกับความสามารถของแอปได้ยาก แม้ว่าผู้ใช้บางรายจะตัดสินใจอย่างมีข้อมูลครบถ้วนไม่ได้เสมอไป แต่รูปแบบสิทธิ์ของ Android ช่วยให้ผู้ใช้จำนวนมากเข้าถึงข้อมูลเกี่ยวกับแอปได้อย่างง่ายดาย ตัวอย่างเช่น คำขอสิทธิ์ที่ไม่คาดคิดอาจทำให้ผู้ใช้ที่มีประสบการณ์มากขึ้นถามคำถามที่สำคัญเกี่ยวกับฟังก์ชันการทำงานของแอปและแชร์ข้อกังวลของตนในที่ต่างๆ เช่น Google Play ซึ่งผู้ใช้ทุกคนจะเห็น
สิทธิ์ในการติดตั้งแอป — Google แปลภาษา | สิทธิ์ของแอปที่ติดตั้ง — Gmail |
---|---|
![]() |
![]() |
รูปที่ 1 การแสดงสิทธิ์สำหรับแอป
การสื่อสารระหว่างโปรเซส
กระบวนการสามารถสื่อสารโดยใช้กลไกแบบ UNIX แบบดั้งเดิมได้ เช่น ระบบไฟล์ ซ็อกเก็ตในเครื่อง หรือสัญญาณ อย่างไรก็ตาม สิทธิ์ของ Linux จะยังคงมีผล
นอกจากนี้ Android ยังมีกลไก IPC ใหม่ดังต่อไปนี้
-
Binder: กลไกการเรียกใช้โพรซีเยอร์ระยะไกล (RPC) แบบเบาที่ทำงานตามความสามารถ ซึ่งออกแบบมาเพื่อประสิทธิภาพสูงเมื่อทำการเรียกใช้ในกระบวนการและข้ามกระบวนการ Binder ติดตั้งใช้งานโดยใช้ไดรเวอร์ Linux ที่กําหนดเอง ดูที่ https://developer.android.com/reference/android/os/Binder.html
-
บริการ: บริการ (ตามที่ได้อธิบายไว้ข้างต้น) สามารถให้อินเทอร์เฟซที่เข้าถึงได้โดยตรงโดยใช้ Binder
-
Intent: Intent คือออบเจ็กต์ข้อความแบบง่ายที่แสดงถึง "ความตั้งใจ" ที่จะทําสิ่งใดสิ่งหนึ่ง เช่น หากแอปต้องการแสดงหน้าเว็บ แอปจะแสดง "Intent" เพื่อดู URL โดยการสร้างอินสแตนซ์ Intent และส่งต่อไปยังระบบ ระบบจะค้นหาโค้ดส่วนอื่น (ในกรณีนี้คือเบราว์เซอร์) ที่รู้วิธีจัดการ Intent นั้น และเรียกใช้ นอกจากนี้ คุณยังใช้ Intent เพื่อเผยแพร่เหตุการณ์ที่น่าสนใจ (เช่น การแจ้งเตือน) ทั่วทั้งระบบได้ด้วย ดูที่ https://developer.android.com/reference/android/content/Intent.html
-
ContentProvider: ContentProvider คือคลังข้อมูลที่ให้สิทธิ์เข้าถึงข้อมูลในอุปกรณ์ ตัวอย่างคลาสสิกคือ ContentProvider ที่ใช้เข้าถึงรายชื่อติดต่อของผู้ใช้ แอปสามารถเข้าถึงข้อมูลที่แอปอื่นๆ เปิดเผยผ่าน ContentProvider และยังสามารถกำหนด ContentProvider ของตนเองเพื่อเปิดเผยข้อมูลของตนเองได้ด้วย ดูที่ https://developer.android.com/reference/android/content/ContentProvider.html
แม้ว่าคุณจะใช้ IPC โดยใช้กลไกอื่นๆ ได้ เช่น ซ็อกเก็ตเครือข่ายหรือไฟล์ที่ผู้ใช้ทุกคนเขียนได้ แต่เฟรมเวิร์ก IPC ของ Android ที่แนะนำมีดังนี้ เราจะสนับสนุนให้นักพัฒนาแอป Android ใช้แนวทางปฏิบัติแนะนำด้านการรักษาความปลอดภัยข้อมูลของผู้ใช้และหลีกเลี่ยงการเปิดตัวช่องโหว่ด้านความปลอดภัย
API ที่คำนึงถึงต้นทุน
API ที่คำนึงถึงต้นทุนคือฟังก์ชันใดๆ ที่อาจก่อให้เกิดค่าใช้จ่ายสำหรับผู้ใช้หรือเครือข่าย แพลตฟอร์ม Android ได้จัด API ที่คำนึงถึงต้นทุนไว้ในรายการ API ที่ปกป้องซึ่งระบบปฏิบัติการควบคุม ผู้ใช้จะต้องให้สิทธิ์อย่างชัดแจ้งแก่แอปของบุคคลที่สามที่ขอใช้ API ที่มีความละเอียดอ่อนด้านต้นทุน API เหล่านี้ ได้แก่
- โทรศัพท์
- SMS/MMS
- เครือข่าย/อินเทอร์เน็ต
- การเรียกเก็บเงินในแอป
- การเข้าถึง NFC
Android 4.2 เพิ่มการควบคุมเพิ่มเติมในการใช้ SMS Android จะแจ้งเตือนหากแอปพยายามส่ง SMS ไปยังรหัสสั้นที่ใช้บริการพรีเมียมซึ่งอาจทำให้เกิดค่าใช้จ่ายเพิ่มเติม ผู้ใช้เลือกได้ว่าจะอนุญาตหรือบล็อกแอปไม่ให้ส่งข้อความ
การเข้าถึงซิมการ์ด
แอปของบุคคลที่สามจะเข้าถึงซิมการ์ดในระดับต่ำไม่ได้ ระบบปฏิบัติการจะจัดการการสื่อสารทั้งหมดกับซิมการ์ด รวมถึงการเข้าถึงข้อมูลส่วนบุคคล (รายชื่อติดต่อ) ในหน่วยความจำของซิมการ์ด นอกจากนี้ แอปจะเข้าถึงคําสั่ง AT ไม่ได้ เนื่องจากคําสั่งเหล่านี้ได้รับการจัดการโดย Radio Interface Layer (RIL) เท่านั้น RIL ไม่มี API ระดับสูงสําหรับคําสั่งเหล่านี้
ข้อมูลส่วนบุคคล
Android ได้จัด API ที่ให้สิทธิ์เข้าถึงข้อมูลผู้ใช้ไว้ในชุด API ที่ปกป้อง เมื่อใช้งานตามปกติ อุปกรณ์ Android จะรวบรวมข้อมูลผู้ใช้ภายในแอปของบุคคลที่สามที่ผู้ใช้ติดตั้งไว้ด้วย แอปที่เลือกแชร์ข้อมูลนี้สามารถใช้การตรวจสอบสิทธิ์ระบบปฏิบัติการ Android เพื่อปกป้องข้อมูลจากแอปของบุคคลที่สาม

รูปที่ 2 การเข้าถึงข้อมูลที่มีความละเอียดอ่อนของผู้ใช้จะพร้อมใช้งานผ่าน API ที่ปกป้องเท่านั้น
เราได้สร้างผู้ให้บริการเนื้อหาของระบบที่มีแนวโน้มจะมีข้อมูลส่วนบุคคลหรือข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ เช่น รายชื่อติดต่อและปฏิทิน โดยระบุสิทธิ์อย่างชัดเจน ความละเอียดนี้ช่วยให้ผู้ใช้ทราบอย่างชัดเจนถึงประเภทข้อมูลที่อาจให้แอปได้ ในระหว่างการติดตั้ง แอปของบุคคลที่สามอาจขอสิทธิ์เข้าถึงแหล่งข้อมูลเหล่านี้ หากให้สิทธิ์แล้ว คุณจะติดตั้งแอปได้และแอปจะมีสิทธิ์เข้าถึงข้อมูลที่ขอได้ทุกเมื่อที่ติดตั้ง
โดยค่าเริ่มต้น แอปที่เก็บรวบรวมข้อมูลส่วนบุคคลจะมีข้อมูลนั้นจํากัดไว้สําหรับแอปที่เฉพาะเจาะจงเท่านั้น หากแอปเลือกที่จะเปิดเผยข้อมูลแก่แอปอื่นๆ ผ่าน IPC แอปที่ให้สิทธิ์เข้าถึงสามารถใช้สิทธิ์กับกลไก IPC ที่ระบบปฏิบัติการบังคับใช้
อุปกรณ์อินพุตข้อมูลที่ละเอียดอ่อน
อุปกรณ์ Android มักมีอุปกรณ์ป้อนข้อมูลที่ละเอียดอ่อนซึ่งช่วยให้แอปโต้ตอบกับสภาพแวดล้อมรอบตัวได้ เช่น กล้อง ไมโครโฟน หรือ GPS หากต้องการให้แอปของบุคคลที่สามเข้าถึงอุปกรณ์เหล่านี้ ผู้ใช้ต้องให้สิทธิ์เข้าถึงอย่างชัดเจนก่อนผ่านการใช้สิทธิ์ Android OS เมื่อติดตั้งแล้ว โปรแกรมติดตั้งจะแจ้งให้ผู้ใช้ขอสิทธิ์เข้าถึงเซ็นเซอร์ตามชื่อ
หากแอปต้องการทราบตำแหน่งของผู้ใช้ แอปจะต้องมีสิทธิ์เข้าถึงตำแหน่งของผู้ใช้ เมื่อติดตั้งแล้ว โปรแกรมติดตั้งจะแสดงข้อความแจ้งให้ผู้ใช้ถามว่าแอปจะเข้าถึงตำแหน่งของผู้ใช้ได้ไหม หากไม่ต้องการให้แอปใดเข้าถึงตำแหน่งของตน ผู้ใช้สามารถเรียกใช้แอป "การตั้งค่า" ไปที่ "ตำแหน่งและความปลอดภัย" แล้วยกเลิกการเลือก "ใช้เครือข่ายไร้สาย" และ "เปิดใช้ดาวเทียม GPS" ได้ทุกเมื่อ ซึ่งจะเป็นการปิดใช้บริการตามตำแหน่งสำหรับทุกแอปในอุปกรณ์ของผู้ใช้
ข้อมูลเมตาของอุปกรณ์
นอกจากนี้ Android ยังพยายามจำกัดการเข้าถึงข้อมูลที่ไม่ได้มีความละเอียดอ่อนโดยเนื้อแท้ แต่อาจเปิดเผยลักษณะของผู้ใช้ ค่ากำหนดของผู้ใช้ และลักษณะการใช้งานอุปกรณ์โดยอ้อม
โดยค่าเริ่มต้น แอปจะไม่มีสิทธิ์เข้าถึงบันทึกของระบบปฏิบัติการ ประวัติของเบราว์เซอร์ หมายเลขโทรศัพท์ หรือข้อมูลการระบุฮาร์ดแวร์ / เครือข่าย หากแอปขอสิทธิ์เข้าถึงข้อมูลนี้ขณะติดตั้ง โปรแกรมติดตั้งจะแจ้งให้ผู้ใช้ทราบว่าจะให้แอปเข้าถึงข้อมูลได้หรือไม่ หากผู้ใช้ไม่ให้สิทธิ์เข้าถึง ระบบจะไม่ติดตั้งแอป
ผู้ออกใบรับรอง
Android มีชุดผู้ออกใบรับรองของระบบที่ติดตั้งไว้ ซึ่งเชื่อถือได้ทั่วทั้งระบบ ก่อน Android 7.0 ผู้ผลิตอุปกรณ์สามารถแก้ไขชุด CA ที่มาพร้อมกับอุปกรณ์ได้ อย่างไรก็ตาม อุปกรณ์ที่ใช้ 7.0 ขึ้นไปจะมีชุด CA ของระบบที่เหมือนกัน เนื่องจากผู้ผลิตอุปกรณ์ไม่ได้รับอนุญาตให้แก้ไขอีกต่อไป
หากต้องการเพิ่มเป็น CA สาธารณะใหม่ในชุด Android เวอร์ชันที่มาพร้อมกับระบบ CA ดังกล่าวต้องดำเนินการกระบวนการรวม CA ของ Mozilla ให้เสร็จสมบูรณ์ จากนั้นยื่นคำขอฟีเจอร์สำหรับ Android ( https://code.google.com/p/android/issues/entry) เพื่อขอให้เพิ่ม CA ดังกล่าวลงในชุด CA ของ Android เวอร์ชันที่มาพร้อมกับระบบใน Android Open Source Project (AOSP)
อย่างไรก็ตาม ยังมี CA ที่เจาะจงอุปกรณ์และไม่ควรรวมอยู่ในชุด CA หลักของ AOSP เช่น CA ส่วนตัวของผู้ให้บริการที่อาจจําเป็นต่อการเข้าถึงองค์ประกอบของโครงสร้างพื้นฐานของผู้ให้บริการอย่างปลอดภัย เช่น เกตเวย์ SMS/MMS เราขอแนะนำให้ผู้ผลิตอุปกรณ์รวม CA ส่วนตัวไว้ในคอมโพเนนต์/แอปที่ต้องเชื่อถือ CA เหล่านี้เท่านั้น โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อ การกำหนดค่าความปลอดภัยของเครือข่าย
การลงนามแอป
การรับรองโค้ดช่วยให้นักพัฒนาแอประบุผู้เขียนแอปและอัปเดตแอปได้โดยไม่ต้องสร้างอินเทอร์เฟซและสิทธิ์ที่ซับซ้อน แอปทุกแอปที่ทำงานบนแพลตฟอร์ม Android จะต้องได้รับการลงนามโดยนักพัฒนาแอป Google Play หรือโปรแกรมติดตั้งแพ็กเกจในอุปกรณ์ Android จะปฏิเสธแอปที่พยายามติดตั้งโดยไม่ได้รับการลงนาม
ใน Google Play การรับรองแอปเป็นสะพานเชื่อมความไว้วางใจของ Google ที่มีต่อนักพัฒนาแอปและความไว้วางใจของนักพัฒนาแอปที่มีต่อแอปของตน นักพัฒนาแอปทราบว่าแอปของตนได้รับการให้บริการโดยไม่มีการแก้ไขในอุปกรณ์ Android และนักพัฒนาแอปต้องรับผิดชอบต่อลักษณะการทํางานของแอป
ใน Android การรับรองแอปเป็นขั้นตอนแรกในการวางแอปใน App Sandbox ใบรับรองแอปที่ลงนามจะกำหนดรหัสผู้ใช้ที่เชื่อมโยงกับแอปใด แอปต่างๆ จะทำงานภายใต้รหัสผู้ใช้ที่แตกต่างกัน การรับรองแอปช่วยให้มั่นใจได้ว่าแอปหนึ่งจะเข้าถึงแอปอื่นไม่ได้ ยกเว้นผ่าน IPC ที่กําหนดไว้อย่างดี
เมื่อติดตั้งแอป (ไฟล์ APK) ลงในอุปกรณ์ Android เครื่องมือจัดการแพ็กเกจจะยืนยันว่า APK ได้รับการรับรองด้วยใบรับรองที่รวมอยู่ใน APK นั้นอย่างถูกต้อง หากใบรับรอง (หรือคีย์สาธารณะในใบรับรอง) ตรงกับคีย์ที่ใช้ในการรับรอง APK อื่นๆ ในอุปกรณ์ APK ใหม่จะมีตัวเลือกในการระบุในไฟล์ Manifest ว่าจะแชร์ UID กับ APK อื่นๆ ที่รับรองในลักษณะเดียวกัน
แอปอาจได้รับการรับรองโดยบุคคลที่สาม (OEM, ผู้ให้บริการเครือข่าย, ตลาดทางเลือก) หรือรับรองด้วยตนเอง Android มีการลงนามโค้ดโดยใช้ใบรับรองที่ลงนามด้วยตนเอง ซึ่งนักพัฒนาแอปสามารถสร้างได้โดยไม่ต้องขอความช่วยเหลือหรือสิทธิ์จากภายนอก แอปไม่จำเป็นต้องได้รับการรับรองจากหน่วยงานกลาง ปัจจุบัน Android ไม่ได้ดำเนินการยืนยัน CA สำหรับใบรับรองแอป
นอกจากนี้ แอปยังประกาศสิทธิ์ด้านความปลอดภัยที่ระดับการปกป้องลายเซ็นได้อีกด้วย ซึ่งจะจำกัดการเข้าถึงไว้เฉพาะแอปที่ลงชื่อด้วยคีย์เดียวกัน ขณะเดียวกันก็คง UID และ Sandbox ของแอปพลิเคชันไว้แยกกัน คุณสามารถอนุญาตให้แอปมีความสัมพันธ์ที่ใกล้ชิดมากขึ้นกับแซนด์บ็อกซ์แอปพลิเคชันที่แชร์ได้ผ่าน ฟีเจอร์ UID ที่แชร์ ซึ่งแอปตั้งแต่ 2 แอปขึ้นไปที่ลงชื่อด้วยคีย์นักพัฒนาแอปเดียวกันจะประกาศ UID ที่แชร์ในไฟล์ Manifest ได้
การตรวจสอบแอป
Android 4.2 ขึ้นไปรองรับการยืนยันแอป ผู้ใช้สามารถเลือกที่จะเปิดใช้ "ยืนยันแอป" และขอให้ผู้ตรวจสอบแอปประเมินแอปก่อนการติดตั้ง การยืนยันแอปสามารถแจ้งเตือนผู้ใช้ได้หากพยายามติดตั้งแอปที่อาจเป็นอันตราย และสามารถบล็อกการติดตั้งได้หากแอปเป็นอันตรายมาก
การจัดการสิทธิ์ดิจิทัล
แพลตฟอร์ม Android มีเฟรมเวิร์กการจัดการสิทธิ์ดิจิทัล (DRM) แบบขยายได้ ซึ่งช่วยให้แอปจัดการเนื้อหาที่ได้รับการคุ้มครองสิทธิ์ตามข้อจำกัดของใบอนุญาตที่เชื่อมโยงกับเนื้อหา เฟรมเวิร์ก DRM รองรับรูปแบบ DRM หลายรูปแบบ ขึ้นอยู่กับผู้ผลิตอุปกรณ์ว่าจะรองรับรูปแบบ DRM ใด
กรอบงาน DRM ของ Android ใช้งานได้ใน 2 เลเยอร์สถาปัตยกรรม (ดูรูปภาพด้านล่าง)
-
API เฟรมเวิร์ก DRM ซึ่งแสดงต่อแอปผ่านเฟรมเวิร์กแอป Android และทำงานผ่าน ART VM สําหรับแอปมาตรฐาน
-
เครื่องมือจัดการ DRM ที่เป็นโค้ดเนทีฟ ซึ่งใช้เฟรมเวิร์ก DRM และแสดงอินเทอร์เฟซสำหรับปลั๊กอิน DRM (ตัวแทน) เพื่อจัดการสิทธิ์และการถอดรหัสสำหรับรูปแบบ DRM ต่างๆ
รูปที่ 3 สถาปัตยกรรมของ DRM ในแพลตฟอร์ม Android