Інтеграція 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-процесора на Galaxy S21+ та Knox-certified пристроях. Приватні ключі, створені в Knox Vault, неможливо витягти навіть при повній компрометації Android OS або фізичному аналізі флеш-пам'яті.
Доступ через стандартний 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-статус не нарушен. Клієнт запитує nonce-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 або FRP 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 тижнів. Вартість розраховується індивідуально.







