تكرار السؤال: …
الإجابة المختصرة
هو مستودع آمن يسمح بإنشاء وحفظ المفاتيح التشفيرية داخل بيئة أجهزة مخصصة ومعزولة (TEE أو StrongBox) بحيث لا يمكن للتطبيق أو المهاجم استخراج المادة الخام للمفتاح.
الشرح
في التخزين العادي، يتم قراءة المفتاح إلى ذاكرة RAM حيث يمكن سرقته إذا تم عمل Root للجهاز. في Android Keystore، تنفذ عمليات التشفير وفك التشفير والتوقيع الرقمي داخل الشريحة الأمنية المعزولة نفسها دون أن تغادر مفاتيح التشفير العتاد الصلب إطلاقًا، مع إمكانية ربط استخدام المفتاح بمصادقة بصمة المستخدم.
مثال بالكود
val keyStore = KeyStore.getInstance("AndroidKeyStore").apply { load(null) }
val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
val keyGenParameterSpec = KeyGenParameterSpec.Builder(
"MySecretKeyAlias",
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setUserAuthenticationRequired(true) // يتطلب مصادقة حيوية
.build()
keyGenerator.init(keyGenParameterSpec)
keyGenerator.generateKey()أخطاء شائعة
- كتابة مفاتيح التشفير بشكل صريح (Hardcoded Strings) داخل الكود المصدري للتطبيق، مما يسهل كشفها فورًا بفك الحزمة (Decompilation).