एफएस-सत्य एकीकरण

fs-verity एक Linux कर्नेल सुविधा है जो सिस्टम को विश्वसनीय डिजिटल प्रमाणपत्रों के साथ APK फ़ाइलों को लगातार सत्यापित करने की अनुमति देती है। जब प्लेटफ़ॉर्म प्ले जैसे समर्थित स्टोर से विश्वसनीय प्रमाणपत्र के साथ यह ऑन-एक्सेस सत्यापन तंत्र प्रदान करता है, तो स्टोर निरंतर सत्यापन के लिए fs-verity हस्ताक्षर के साथ एपीके फ़ाइलों को स्थापित कर सकता है। fs-verity द्वारा संरक्षित फ़ाइलें अपरिवर्तनीय हैं और पढ़ने के अनुरोध केवल तभी सफल होते हैं जब सामग्री सत्यापित होती है।

एक बार कर्नेल में fs-verity का समर्थन करने के बाद, भागीदार अपने विश्वसनीय स्टोर से नए प्रकार के प्रमाणपत्र को उत्पाद विभाजन /product/etc/security/fsverity में रख सकते हैं, प्रमाणपत्र बूट समय के दौरान कर्नेल कीरिंग में लोड किए जाते हैं। इस सुविधा का समर्थन करने वाले डिवाइस पर, विश्वसनीय स्टोर उनके संगत fs-verity हस्ताक्षर के साथ एक APK स्थापित कर सकता है।

कार्यान्वयन

Android R . के साथ लॉन्च होने वाले डिवाइस

fs-verity एक Linux कर्नेल सुविधा है जो 5.4 से अपस्ट्रीम की गई है, और इसे Android सामान्य कर्नेल 4.14 और उच्चतर पर बैकपोर्ट किया गया है। सामान्य कर्नेल 4.14 या उच्चतर का उपयोग करने वाले और उपयोगकर्ता डेटा विभाजन के लिए ext4 या f2fs का उपयोग करने वाले नए उपकरणों को कोई कार्रवाई करने की आवश्यकता नहीं है क्योंकि वे पहले से ही Linux कर्नेल के माध्यम से fs-verity का समर्थन करते हैं।

Android R . में अपग्रेड करने वाले उपकरण

fs-verity पैच को डिवाइस कर्नेल में बैकपोर्ट करने की आवश्यकता है। Ext4 के लिए, fsverity को fs_mgr फ़्लैग में fstab में जोड़ें। फिर सुविधा को निम्न सेटिंग के साथ सक्षम किया जा सकता है:

ro.apk_verity.mode=2

एपीआई

डिवाइस की समर्थन स्थिति को क्वेरी करने और यह निर्धारित करने के लिए कि डिवाइस पर किसी प्रमाणपत्र पर भरोसा है या नहीं, एक नया सार्वजनिक एपीआई पेश किया गया है।

  public final class FileIntegrityManager {
    public boolean isApkVeritySupported();
    @RequiresPermission(anyOf={
        android.Manifest.permission.INSTALL_PACKAGES,
        android.Manifest.permission.REQUEST_INSTALL_PACKAGES})
    public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate)
            throws java.security.cert.CertificateEncodingException;
  }

मान्यकरण

कार्यान्वयन को मान्य करने के लिए निम्नलिखित VTS, CTS और GTS परीक्षण चलाएँ।

  • [वीटीएस] ApkVerityTest
  • [सीटीएस] CtsAppSecurityHostTestCases:android.appsecurity.cts.ApkVerityInstallTest
  • [सीटीएस] CtsSecurityHostTestCases#android.security.cts.KernelConfigTest
  • [जीटीएस] GtsPlayFsiTestCases और GtsPlayFsiHostTestCases