Интеграция Samsung Knox для корпоративного Android-приложения
Samsung Knox — это стек security-технологий, встроенных в железо и прошивку Samsung-устройств. Не EMM-платформа, а набор API поверх Android, которые доступны только на Samsung. Для корпоративного приложения Knox открывает возможности, недоступные через стандартный Android Enterprise: аппаратно-изолированный Keystore (Knox Vault), Dual Persona (личный + рабочий режим без Work Profile), TIMA KeyStore, управление SIM-картами и NetworkPolicy на уровне ниже ОС.
Knox Vault: аппаратная защита ключей
Knox Vault — изолированный security processor, физически отделённый от основного ARM-процессора на устройствах Samsung Galaxy S21+ и Knox-certified устройствах. Приватные ключи, созданные в Knox Vault, невозможно извлечь даже при полной компрометации Android OS или при физическом анализе флэш-памяти.
Доступ к Knox Vault через стандартный Android Keystore API с дополнительным флагом:
val keyPairGenerator = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_EC,
"AndroidKeyStore"
)
val parameterSpec = KeyGenParameterSpec.Builder(
"corporate_signing_key",
KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY
).apply {
setDigests(KeyProperties.DIGEST_SHA256)
setUserAuthenticationRequired(true)
setUserAuthenticationParameters(0, KeyProperties.AUTH_BIOMETRIC_STRONG)
// Knox Vault используется автоматически если устройство поддерживает StrongBox
setIsStrongBoxBacked(true)
}.build()
keyPairGenerator.initialize(parameterSpec)
val keyPair = keyPairGenerator.generateKeyPair()
setIsStrongBoxBacked(true) — флаг требует StrongBox-совместимого HSM. На Samsung Galaxy S21+ это Knox Vault. Если устройство не поддерживает StrongBox — выброс StrongBoxUnavailableException. Обработка: fallback на обычный Android Keystore с логированием в MDM.
Knox SDK: расширенные политики управления
Knox SDK (отдельно от стандартного DevicePolicyManager) предоставляет API для:
- Управления APN и SIM-политиками — корпоративный трафик через конкретный APN.
- Firewall rules на уровне устройства — блокировка конкретных IP/доменов для приложения.
- Kiosk Mode (Enhanced Kiosk) — Single App Mode с кастомной заглушкой, без возможности выйти даже через notification shade.
- Factory Reset Protection (FRP) bypass для корпоративного повторного деплоя.
- Управление Knox Container (Dual Persona) — отдельный экземпляр Android в контейнере.
Для использования Knox SDK нужна лицензия Samsung Knox:
// Инициализация Knox с Enterprise лицензионным ключом
val licenseManager = KnoxEnterpriseLicenseManager.getInstance(context)
licenseManager.activateLicense(KNOX_LICENSE_KEY)
// Слушатель результата активации
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val status = intent.getIntExtra(KnoxEnterpriseLicenseManager.EXTRA_LICENSE_STATUS, -1)
if (status == KnoxEnterpriseLicenseManager.ERROR_NONE) {
initKnoxPolicies()
}
}
}
registerReceiver(receiver, IntentFilter(KnoxEnterpriseLicenseManager.ACTION_LICENSE_STATUS))
Лицензия Knox per-device активируется через Samsung Knox License Management Service (KLMS). Для enterprise-деплоя лицензии выдаются оптом через Samsung Knox Reseller Portal.
Per-app VPN через Knox VPN Framework
Knox VPN Framework позволяет настроить per-app VPN без MDM-профиля — прямо из приложения с Device Owner правами:
val vpnManager = EnterpriseDeviceManager.getInstance(context).vpnManager
val vpnProfile = KnoxVpnProfile().apply {
profileName = "CorporateVPN"
vpnType = KnoxVpnProfile.VpnType.IPSEC_HYBRID_RSA
gatewayAddress = "vpn.corp.example.com"
packageNames = listOf("com.company.app") // только наше приложение
}
vpnManager.addVpnProfile(vpnProfile)
vpnManager.enableVpnProfile("CorporateVPN")
Отличие от стандартного VpnService: Knox VPN устанавливается на уровне SIM-стека, трафик туннелируется до того, как проходит через Android networking stack. Сложнее обойти со стороны вредоносного ПО на устройстве.
Samsung Knox Platform for Enterprise (KPE): наследник Knox SDK
С 2021 года Samsung рекомендует KPE вместо устаревающего Knox SDK. KPE — единый API, который объединяет функции Knox EMM, Knox Customize и управления устройством:
// Получение менеджера политик через KPE
val enterpriseDeviceManager = EnterpriseDeviceManager.getInstance(context)
val applicationPolicy = enterpriseDeviceManager.applicationPolicy
// Блокировка конкретного приложения
applicationPolicy.addPackageToBlacklist("com.example.gaming_app")
// Принудительная разрешения
applicationPolicy.addPackageToWhitelistForPermission(
"com.company.app",
Manifest.permission.CAMERA
)
Knox Attestation: проверка целостности устройства на сервере
Knox Attestation позволяет серверу убедиться, что устройство не рутовано и Knox-статус не нарушен. Клиент запрашивает нonce-based аттестационный отчёт:
val attestationManager = KnoxAttestationManager.getInstance(context)
attestationManager.getAttestation(serverNonce) { report ->
// Отправить report на сервер
// Сервер верифицирует подпись через Samsung Knox Attestation API
sendAttestationToServer(report)
}
Сервер проверяет отчёт через Samsung Knox Attestation REST API — убеждается, что boot chain не нарушен, knox_state = "ACTIVE", нет признаков root или factory reset bypass.
Этапы интеграции
Получение Knox лицензии → регистрация приложения в Samsung Knox Portal → Knox SDK / KPE интеграция → Knox Vault для критических ключей → настройка политик (VPN, Kiosk, App Whitelist) → Knox Attestation для серверной верификации → тестирование на Knox-certified устройствах → деплой через Samsung Knox Mobile Enrollment.
Сроки: базовая интеграция Knox Keystore — 2–3 недели. Полный проект с KPE политиками, VPN, Attestation — 6–10 недель. Стоимость рассчитывается индивидуально.







