Başvuru İmzalama

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

Google Play'de uygulama imzalama, Google'ın geliştiriciye duyduğu güven ile geliştiricinin uygulamasına duyduğu güven arasında bir köprü oluşturur. Geliştiriciler, uygulamalarının Android cihaza değiştirilmeden sağlandığını bilir; 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 aracılığıyla başka bir uygulamaya erişememesini sağlar.

Bir Android cihaza bir uygulama (APK dosyası) yüklendiğinde, Paket Yöneticisi APK'nin bu APK'da bulunan sertifikayla düzgün bir şekilde imzalandığını doğrular. Sertifika (veya daha doğrusu sertifikadaki genel anahtar), cihazdaki başka herhangi bir APK'yı imzalamak için kullanılan anahtarla eşleşiyorsa, yeni APK, bildirimde, UID'yi diğeriyle benzer şekilde paylaşacağını belirtme seçeneğine sahiptir. -imzalı APK'lar.

Uygulamalar bir üçüncü taraf (OEM, operatör, alternatif pazar) tarafından imzalanabilir veya kendinden imzalı olabilir. Android, geliştiricilerin dışarıdan yardım veya izin almadan oluşturabileceği kendinden imzalı sertifikalar kullanarak kod imzalama sağlar. Başvuruların merkezi bir makam tarafından imzalanması gerekmez. Android şu anda uygulama sertifikaları için CA doğrulaması gerçekleştirmemektedir.

Uygulamalar ayrıca, farklı UID'leri ve Uygulama Korumalı Alanlarını korurken yalnızca aynı anahtarla imzalanmış uygulamalara erişimi kısıtlayarak, İmza koruma düzeyinde güvenlik izinleri bildirebilir. Paylaşılan Uygulama Sandbox ile daha yakından ilişki yoluyla izin verilir paylaşılan UID özelliği aynı geliştirici anahtarı ile imzalanan iki veya daha fazla uygulama onların apaçık paylaşılan UID bildirebilirsiniz.

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 daha yeni cihazlar, v2+ şemalarıyla imzalanan uygulamaları yalnızca v1 şemasıyla imzalananlardan daha hızlı yükler. Daha eski Android platformları v2+ imzalarını yok sayar ve bu nedenle uygulamaların v1 imzalarını içermesi gerekir.

JAR imzalama (v1 şeması)

APK imzalama, başından beri Android'in bir parçası olmuştur. Bu dayanmaktadır imzalı JAR . Bu düzeni kullanarak ilgili ayrıntılar için Android Studio belgelerine bakın uygulamanızı imzalama .

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ısını işlemesi ve ardından imzaların kapsamadığı verileri atması gerekir. Bu, oldukça büyük bir saldırı yüzeyi sunar. Ayrıca, APK doğrulayıcı daha fazla zaman ve bellek harcayarak 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 Planı v2 ve v3 (v2+ şeması)

Android 7.0 ve sonraki sürümleri çalıştıran cihazlar APK imza şeması v2 (v2 şeması) ve sonraki sürümleri destekler. (v2 şeması, imzalama bloğuna ek bilgiler eklemek için Android 9'da v3'e güncellendi, ancak aksi takdirde aynı şekilde çalışır.) APK'nın içeriği hash'lenir ve imzalanır, ardından elde edilen APK İmzalama Bloğu APK'ya eklenir. Bir uygulamaya v2 + şeması uygulama hakkında ayrıntılı bilgi için bkz APK İmza Şeması v2 .

Doğrulama sırasında v2+ şeması APK dosyasını bir blob olarak ele alır ve tüm dosyada imza denetimi gerçekleştirir. ZIP meta veri değişiklikleri dahil olmak üzere APK'da yapılacak herhangi bir 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'lar, 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 işlemi

Şekil 1. APK imza doğrulama işlemi

APK'nın tüm dosya karması, APK İmzalama Bloğunda depolanan v2+ imzasıyla doğrulanır. Karma, v2+ imzasını içeren APK İmza Bloğu dışındaki her şeyi kapsar. APK'da APK İmza Bloğu dışında yapılacak herhangi bir değişiklik APK'nın v2+ imzasını geçersiz kılar. V2+ imzası kaldırılmış APK'lar da reddedilir, çünkü v1 imzaları APK'nın v2 imzalı olduğunu belirtir ve bu da Android 7.0 ve daha yeni sürümlerin APK'ları v1 imzalarını kullanarak doğrulamayı reddetmesine neden olur.

APK imza doğrulama işlemi hakkında ayrıntılı bilgi için bkz Doğrulama bölümüne APK İmza Şeması v2.