Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Uygulama İmzalama

Uygulama imzalama, geliştiricilerin uygulamanın yazarını tanımlamasına ve uygulamalarını karmaşık arabirimler ve izinler oluşturmadan güncellemelerine olanak tanır. Android platformunda çalıştırılan her uygulama geliştirici tarafından imzalanmalıdır . İmzalanmadan yüklemeye çalışan uygulamalar Google Play veya Android cihazdaki paket yükleyici tarafından reddedilir.

Google Play'de uygulama imzalama, Google'ın geliştiriciye duyduğu güveni ve geliştiricinin uygulamaları ile olan güvenini köprüler. Geliştiriciler, Android cihazına uygulamalarının değiştirilmediğini biliyorlar; ve geliştiriciler uygulamalarının davranışlarından sorumlu tutulabilirler.

Android'de uygulama imzalama, bir uygulamayı Uygulama Korumalı Alanına yerleştirmenin ilk adımıdır. İmzalı uygulama sertifikası hangi kullanıcı kimliğinin hangi uygulamayla ilişkili olduğunu tanımlar; farklı uygulamalar farklı kullanıcı kimlikleri altında çalışır. Uygulama imzalama, bir uygulamanın iyi tanımlanmış IPC dışında başka bir uygulamaya erişememesini sağlar.

Bir Android cihaza bir uygulama (APK dosyası) yüklendiğinde, Paket Yöneticisi APK'nın söz konusu APK'da bulunan sertifikayla doğru bir şekilde imzalandığını doğrular. Sertifika (veya daha doğru bir şekilde, sertifikadaki ortak anahtar) cihazdaki diğer APK'ları imzalamak için kullanılan anahtarla eşleşirse, yeni APK, manifest'te bir UID'yi diğeriyle benzer şekilde paylaşacağını belirleme seçeneğine sahiptir. imzalı APK'lar.

Başvurular üçüncü taraflarca (OEM, operatör, alternatif pazar) imzalanabilir veya kendinden imzalı olabilir. Android, geliştiricilerin harici yardım veya izin almadan üretebilecekleri kendinden imzalı sertifikalar kullanarak kod imzalama sağlar. Başvurular merkezi bir otorite tarafından imzalanmak zorunda değildir. Android şu anda uygulama sertifikaları için CA doğrulaması gerçekleştirmiyor.

Uygulamalar, aynı zamanda farklı UID'leri ve Uygulama Korumalı Alanlarını korurken aynı anahtarla imzalanan uygulamalara erişimi kısıtlayarak İmza koruma düzeyinde güvenlik izinleri bildirebilir. Aynı geliştirici anahtarıyla imzalanan iki veya daha fazla uygulamanın bildiriminde paylaşılan bir UID bildirebileceği paylaşılan UID özelliği ile paylaşılan Uygulama Korumalı Alan ile daha yakın bir ilişkiye izin verilir.

APK imzalama şemaları

Android üç uygulama imzalama şemasını destekler:

Maksimum uyumluluk için uygulamaları önce v1, sonra v2 ve sonra v3 ile tüm şemalarla imzalayın. Android 7.0 ve sonraki sürümleri, v2 + şemalarıyla imzalanan uygulamaları yalnızca v1 şemasıyla imzalanan uygulamalardan daha hızlı yükler. Eski Android platformları v2 + imzalarını yok sayar ve bu nedenle v1 imzalarını içeren uygulamalara ihtiyaç duyar.

JAR imzalama (v1 şeması)

APK imzalama en başından beri Android'in bir parçası oldu. İmzalı JAR'a dayanmaktadır. Bu düzeni kullanma hakkında ayrıntılar için Uygulamanızı imzalama konusundaki Android Studio belgelerine bakın.

v1 imzaları APK'nın ZIP meta verileri gibi bazı bölümlerini korumaz. APK doğrulayıcının çok sayıda güvenilmeyen (henüz doğrulanmamış) veri yapılarını işlemesi ve ardından imzaların kapsamadığı verileri atması gerekir. Bu, büyük bir saldırı yüzeyi sunar. Ayrıca, APK doğrulayıcı, daha fazla zaman ve bellek harcayan tüm sıkıştırılmış girişleri açmalıdır. Bu sorunları gidermek için Android 7.0, APK Signature Scheme v2'yi tanıttı.

APK İmza Düzeni v2 ve v3 (v2 + şeması)

Android 7.0 ve sonraki sürümlerini çalıştıran cihazlar APK imza şeması v2 (v2 şeması) ve sonraki sürümlerini destekler. (imzalama bloğuna ek bilgi eklemek için v2 şeması Android P'de v3 olarak güncellendi, ancak aksi halde aynı çalışıyor.) APK'nın içeriği karma ve imzalı, daha sonra ortaya çıkan APK İmzalama Bloğu APK'ya ekleniyor. Bir uygulamaya v2 + şemasını uygulama hakkında ayrıntılar için, bkz. APK İmza Şeması v2 .

Doğrulama sırasında, v2 + şeması APK dosyasına bir blok gibi davranır ve tüm dosyada imza kontrolü gerçekleştirir. APK'da ZIP meta veri değişiklikleri dahil her türlü değişiklik APK imzasını geçersiz kılar. Bu APK doğrulama biçimi önemli ölçüde daha hızlıdır ve daha fazla yetkisiz değişiklik sınıfının algılanmasını sağlar.

Yeni biçim geriye dönük olarak uyumludur, bu nedenle yeni imza biçimiyle imzalanan APK'ler, bu APK'lar da v1 imzalı olduğu sürece eski Android cihazlara (APK'ya eklenen ekstra verileri yok sayar) yüklenebilir.

APK imza doğrulama süreci

Şekil 1. APK imza doğrulama süreci

APK'nın tüm dosya karması, APK İmzalama Bloğunda saklanan v2 + imzasına göre doğrulanır. Karma, v2 + imzasını içeren APK İmzalama Bloğu hariç her şeyi kapsar. APK İmzalama Bloğu dışındaki APK'da yapılacak herhangi bir değişiklik, APK'nın v2 + imzasını geçersiz kılar. Sökülen v2 + imzasına sahip APK'lar da reddedilir, çünkü v1 imzası APK'nın v2 imzalı olduğunu belirtir, bu da Android 7.0 ve daha yeni sürümlerin v1 imzalarını kullanarak APK'ları doğrulamayı reddetmesini sağlar.

APK imza doğrulama işlemiyle ilgili ayrıntılar için APK İmza Düzeni v2'nin Doğrulama bölümüne bakın .