سیگنال های اعتماد صفر

Android سیگنال‌های دستگاهی مختلفی را ارائه می‌کند که مدیران می‌توانند از آنها برای تعیین وضعیت امنیتی یک دستگاه استفاده کنند. در یک مدل امنیتی اعتماد صفر، این سیگنال ها برای ارزیابی اینکه آیا دستگاه باید اجازه دسترسی به اطلاعات شرکت را داشته باشد یا خیر، استفاده می شود.

ویژگی شرح دستگاه های کاملاً مدیریت شده نمایه کاری در دستگاه های متعلق به شرکت نمایه کاری در دستگاه‌های شخصی (BYOD) دستگاه های مدیریت نشده
Play Integrity API یک کارگزار Trust می تواند سیگنال های زیر را بازیابی کند:
  • یکپارچگی دستگاه
  • یکپارچگی برنامه
  • جزئیات مجوز پخش
  • جزئیات محیطی از جمله حکم جدید Play Protect
  • آره آره آره آره
    ارائه ایمن سخت افزار / گواهی کلید یک کارگزار Trust می تواند تأیید کند که اعتبار PKI آنها در سخت افزار ایمن تولید و ذخیره شده است آره آره آره آره
    گواهی خصوصیات دستگاه به عنوان بخشی از گواهی کلید، ویژگی‌های دستگاه را می‌توان به عنوان بخشی از سوابق تصدیق گنجاند آره آره آره آره
    سطح وصله امنیتی دستگاه یک کارگزار Trust می تواند سطح وصله امنیتی سیستم عامل را تأیید کند آره آره آره آره
    آیا دستگاه OTA معلق دارد؟ یک کارگزار Trust می‌تواند بررسی کند که آیا به‌روزرسانی سیستم‌عامل دستگاه معلق موجود است یا خیر آره آره آره N/A
    سطح وصله امنیتی خط اصلی یک کارگزار Trust می تواند سطح وصله امنیتی قطار خط اصلی نصب شده را بخواند آره آره آره آره
    شناسه خاص ثبت نام یک کارگزار Trust می تواند به یک شناسه دستگاه منحصر به فرد مخصوص آن شرکت دسترسی داشته باشد. این شناسه از ایجاد مجدد نمایه کاری و بازنشانی کارخانه‌ای دستگاه جان سالم به در می‌برد آره آره آره N/A
    وضعیت مدیریت (و مدیریت برنامه) یک کارگزار Trust می تواند از این برای تعیین اینکه آیا یک دستگاه مدیریت می شود استفاده کند آره آره آره N/A
    رمزگذاری دیسک یک کارگزار Trust می تواند بررسی کند که آیا دستگاه رمزگذاری شده است (در صورت نیاز به پشتیبانی از Android 8) آره آره آره آره
    نسخه سیستم عامل یک کارگزار Trust می تواند نسخه سیستم عامل دستگاه را بررسی کند و تأیید کند که از یک نسخه خاص بیشتر است آره آره آره آره
    دسترسی به وضعیت شبکه (وضعیت شبکه و وضعیت WiFi) یک کارگزار Trust می تواند اطلاعاتی درباره وضعیت فعال شبکه (سلولار و وای فای) دریافت کند. آره آره آره آره
    دسترسی به وضعیت WiFi ( اندروید 11 و پایین تر ، اندروید 12 و بالاتر از هر دو روش پاسخ به تماس یا درخواست پشتیبانی می کند) یک کارگزار Trust می تواند اطلاعاتی در مورد شبکه WiFi فعال دریافت کند آره آره آره آره
    تنظیمات پروکسی یک کارگزار Trust می‌تواند اطلاعاتی درباره تنظیمات پیش‌فرض پروکسی HTTP دریافت کند. آره آره آره آره
    بررسی کیفیت قفل صفحه یک کارگزار Trust می تواند اطمینان حاصل کند که دستگاه قبل از اعطای دسترسی، قفل صفحه با کیفیت خاصی را پیکربندی کرده است آره آره آره آره
    گزینه های برنامه نویس فعال شد وقتی گزینه‌های توسعه‌دهنده فعال هستند، یک کارگزار Trust می‌تواند دستگاهی را به عنوان دارای سطح حمله گسترده‌تری شناسایی کند آره آره آره آره
    آیا DNS از طریق TLS فعال است یک کارگزار Trust می تواند از این اهرم استفاده کند تا مطمئن شود که حالت DNS خصوصی فعال است آره آره آره آره
    SafetyNet Safe Browsing یک کارگزار Trust می تواند تعیین کند که آیا یک URL خاص توسط Google به عنوان یک تهدید شناخته شده طبقه بندی شده است یا خیر. آره آره آره آره
    رسانه خارجی نصب شده است وقتی یک حافظه خارجی نصب می شود، می توان به کارگزار Trust اطلاع داد آره آره آره آره
    UsageStatsManager یک کارگزار Trust می تواند الگوهای استفاده از برنامه های فردی را مطالعه کند آره آره آره بله 1
    ثبت امنیت یک کارگزار Trust می تواند از این داده ها به عنوان بخشی از موتور متنی خود برای اطمینان از انطباق و ایجاد اثر انگشت مبتنی بر رفتار استفاده کند. آره بله 2 بله 2 N/A
    ثبت شبکه یک کارگزار Trust می تواند از این داده ها به عنوان بخشی از موتور متنی خود برای اطمینان از انطباق و ایجاد اثر انگشت مبتنی بر رفتار استفاده کند. آره بله 2 بله 2 N/A
    NetworkStatsManager یک کارگزار Trust می تواند استفاده از شبکه برنامه را در یک بازه زمانی معین پرس و جو کند آره آره بله 2 بله 1
    قابلیت مشاهده بسته (لیست تمام برنامه های موجود در دستگاه) یک کارگزار Trust می تواند درخواست کند که چه برنامه هایی روی دستگاه نصب شده است آره بله 3 بله 3 آره
    وضعیت تلفن را بخوانید یک کارگزار Trust می‌تواند اطلاعات شبکه تلفن همراه، وضعیت تماس‌های جاری و فهرستی از حساب تلفن ثبت‌شده در دستگاه را دریافت کند. آره آره آره آره
    آخرین باری که دستگاه راه اندازی مجدد شد یک کارگزار Trust می تواند تایم سیستم را دریافت کند آره آره آره آره
    دریافت حساب ها یک کارگزار Trust می‌تواند از این برای دسترسی به لیست حساب‌های موجود در سرویس حساب‌ها استفاده کند آره بله 3 بله 3 بله 1
    تغییرات قابل توجه در سطح باتری را کنترل کنید یک کارگزار Trust می تواند تغییرات قابل توجه در سطح باتری را کنترل کند آره آره آره آره
    مکان (خوب، درشت، و غیره...) یک کارگزار Trust می تواند به مکان فیزیکی دستگاه دسترسی داشته باشد آره آره بله 1 بله 1

    1 با رضایت کاربر

    2 فقط نمایه کاری

    3 دسترسی محدود به اطلاعات نمایه کاری است

    یک کارگزار Trust می تواند به PackageInfo برای ماژول com.google.android.modulemetadata دسترسی داشته باشد و versionName از آنجا بازیابی کند:

    private fun mainlineVersion(context: Context): String? {
        val moduleProvider = "com.google.android.modulemetadata"
    
        return try {
                val pm = context.packageManager
                val packageInfo = pm.getPackageInfo(moduleProvider, 0)
                packageInfo.versionName
            } catch (e: PackageManager.NameNotFoundException) {
                null
            }
    }
    

    می توانید رشته برگشتی را با استفاده از کلاس SimpleDateFormat در شیء Date تجزیه کنید:

    private val VERSION_NAME_DATE_PATTERNS = Arrays.asList(
          "yyyy-MM-dd",
          "yyyy-MM"
    )
    
    private fun parseDateFromVersionName(text: String): Date? {
        for (pattern in VERSION_NAME_DATE_PATTERNS) {
            try {
                val simpleDateFormat = SimpleDateFormat(
                    pattern,
                    Locale.getDefault()
                )
                simpleDateFormat.timeZone = TimeZone.getDefault()
                return simpleDateFormat.parse(text)
            } catch (e: ParseException) {
                // ignore and try next pattern
            }
        }
        return null
    }
    

    به یاد داشته باشید که برای اندروید 11 و جدیدتر باید یک عبارت پرس و جو را در فایل AndroidManifest.xml خود اضافه کنید تا دید بسته اندروید را برآورده کند:

    <manifest package="com.example.game">
        <queries>
            <package android:name="com.google.android.modulemetadata" />
        </queries>
        ...
    </manifest>
    

    یک کارگزار Trust می‌تواند از این روش‌ها برای بررسی اینکه آیا دستگاه تحت حالت مدیریت است و کدام حالت مدیریت فعال است، استفاده کند.

    مدیریت دستگاه را بررسی کنید

    از getActiveAdmins() برای بررسی اینکه آیا یک دستگاه تحت مدیریت است یا خیر استفاده کنید. اگر این روش null را برگرداند، دستگاه مدیریت نمی شود.

    دستگاه کاملاً مدیریت شده را بررسی کنید

    از isDeviceOwnerApp() برای بررسی اینکه آیا دستگاه به طور کامل مدیریت شده است یا خیر استفاده کنید.

    نمایه کاری را در دستگاه متعلق به شرکت بررسی کنید

    از isOrganizationOwnedDeviceWithManagedProfile() برای بررسی اینکه آیا دستگاهی از حالت مدیریت نمایه کاری برای دستگاه های متعلق به شرکت استفاده می کند یا خیر استفاده کنید.

    نمایه کاری را در دستگاه شخصی بررسی کنید

    از isProfileOwnerApp() برای بررسی اینکه آیا دستگاهی دارای نمایه کاری است و بررسی کنید که isOrganizationOwnedDeviceWithManagedProfile() false را برمی گرداند استفاده کنید.