2012-06-07 36 views
7

ben daraltabilmeniz iki şeyle bu soruyu Önsöz istiyor:Android'in uygulama/imza doğrulaması nasıl çalışır? Benim asıl soru burada

a) aşinayım asla) android

b rağmen ben daha önce yazılım dev yaptık PKI ve şifreleme ve Bozma ve dijital imza ile vesaire vesaire

sorun Android uygulaması yaratıcıları doğrular nasıl nerede ve hakkında daha fazla bilgi izini yaşıyorum söyleniyor. Çok fazla farklı bilgi duydum, bu yüzden iş akışı hakkında daha iyi bir fikir edinmek için sentezlemeye çalışıyorum.

Her uygulama geliştiricisinin kendi özel/ortak anahtar çiftini aldığını ve APK'lerini (yanlışlıkla yanılmıyorsa SHA-1 ile) uygulamaya geçirerek uygulamalarını imzaladıklarını biliyorum. Yüklersiniz ve (inanıyorum) kamu anahtarı APK içinde META INF'e gider. Bu kadarını anlıyorum.

Sorum bu kullanıcının uygulamayı kendisi indirdiğinde nasıl ilişkili olduğunu. Telefonun, uygulamanın geçerli bir şekilde imzalandığından ve imza ile yazar hakkında bilgi verdiğinden emin olmak için telefon kontrollerini biliyorum. Ancak, uygulamaların kendiliğinden imzalandığını ve Google Play'in (veya şu anda Market'i aradıkları her neyse) bir CA'yı uygulamadığını ve kimlik doğrulamalarının olmadığını da okuduğumu da okudum. Ama sorum şu, insanların başka bir geliştiricinin adı altında bir uygulamayı yüklemesini engelliyor (bir kenara koymayı)?

Telefon sadece geçerli imzalar için Onaylarsa yaptığı uygulama yüklendiğinde onaylaması için tek vasıta yapıldığını ima? Ve durum buysa, uygulama pazarı nasıl kontrol eder? Her zamanki gibi - özel anahtarını dosyada kullan ve imzayı doğrula? Ya da geliştiricinin, kimliğini doğrulamak için kendi özel anahtarıyla pazara sunması gerekiyor mu? Kısacası

+0

Eğer özel şifreyi kullanmak zorundadırlar. Yani birisinin bir uygulamayı "başka biri olarak" yayınlayabilmesi için anahtar deposu/anahtar dosyalarına ve şifrelerine erişmeleri gerekir. Ve pazara bağlı Google Hesabı'na erişim. – FoamyGuy

+0

@Tim: Sanırım şu soruyu soruyor: Bir başkasının kendi keypair'lerini oluşturmasını engellemenin yanı sıra "Fewmitz" de yazan kendinden imzalı bir sertifika. Bir şekilde bir yerle bağlantılı mı? –

cevap

9

, Android ve Google fiili sertifikada ne umurumda değil aslında oynayın. Google Play bunu gerçekten doğrulayacak ve 30 yıl veya daha uzun bir süredir geçerli olup olmadığını kontrol edecek, ancak gerçekten de (en azından şu anda AFAIK) sertifikadaki asıl bilgileri kullanmıyorlar. CN'de kendi adınızı/şirket adınızı kullanabilirsiniz, ancak kimse bunu doğrulayamaz ve kullanıcılar bu bilgiyi hiç görmez. Ne Android yapmasıdır:

  • onay imzası APK ardından uygulamanın şu anda yüklü sürümü birine bir ikili damla olarak şan sertifikasını karşılaştırmak
  • tahrif edilmemiş emin olmak için iki sürümü (aynı kişi/şirket tarafından, örneğin) aynı anahtar/sertifika ile imzalanmış olduğundan emin olmak için
  • aynı şey iki ya da daha fazla olan sen sharedUid veya imza izinlerini kullanarak kullanıyorsanız izni zorlamak için yok uygulamaların.

Sorunuzu yanıtlamak için birisi adında bir sertifika oluşturabilir, ancak Android ve Google Play gerçekten ilgilenmez. Kendi özel anahtarınız olmadığı sürece, sizinkiyle aynı olan bir uygulama imzası oluşturamazlar ve böylece uygulamanızı onlarınla ​​birlikte üzerine yazamaz/güncelleyemez veya herhangi bir özel izin alamazlar. . Eğer apk imzalamak

+0

Yani, aynı kamu-özel anahtar çifti ile ancak farklı konu adları ile iki sertifika kullanırsanız, her ikisi de geçerli olur mu? Temelde uygulamamı özel anahtarımla imzaladığımda, konu adı gibi detaylarmı hesaba katıyor muyum? – Ashwin

+2

Gerçek 'detaylar' (sertifika DN'si, seri numarası, vb.) Ile ilgilenmez, ancak sertifikaları ikili lekeler olarak karşılaştırır. Farklı olduklarından, cert1 ile orijinal olarak imzalanmış bir uygulamayı cert2 ile imzalanmış bir diğeriyle güncelleyemezsiniz. –

+0

"Asıl 'detaylar' (sertifika DN, seri numarası, vb.) Umurumda değil mi," bu detayların hiçbir zaman kullanılmadığı anlamına mı geliyor? Nihayetinde kendinizin söylediği gibi "sertifikaları ikili bloklar olarak karşılaştırır" - bu, sertifika ayrıntılarını dikkate alması anlamına gelir. – Ashwin

İlgili konular