2012-06-07 46 views
7

Tôi muốn mở đầu câu hỏi này với hai điều để tôi có thể thu hẹp nơi câu hỏi thực tế của tôi là:Xác minh ứng dụng/chữ ký của Android hoạt động như thế nào?

a) tôi đã thực hiện phần mềm dev trước đó, mặc dù không bao giờ cho android

b) Tôi quen thuộc với PKI và encryptions và băm và chữ ký số và blah blah blah

Điều đó đang được nói rằng tôi đang gặp sự cố khi theo dõi thêm thông tin về vị trí và cách Android xác minh người sáng tạo ứng dụng. Tôi đã nghe rất nhiều thông tin khác nhau vì vậy tôi đang cố gắng tổng hợp để có ý tưởng tốt hơn về quy trình làm việc.

Tôi biết rằng mọi nhà phát triển ứng dụng đều có cặp khóa riêng/khóa công khai của riêng họ và họ ký ứng dụng của họ bằng cách băm APK (với SHA-1 phần lớn thời gian nếu tôi không nhầm) và ở đó bạn đi. Bạn tải nó lên và (tôi tin) chìa khóa công khai đi vào META INF bên trong APK. Điều này tôi hiểu rất nhiều.

Câu hỏi của tôi là cách điều này liên quan đến thời điểm người dùng tải xuống ứng dụng. Tôi biết kiểm tra điện thoại để đảm bảo rằng ứng dụng được ký hợp lệ và chữ ký cũng có thông tin về tác giả và v.v. Nhưng tôi cũng đã đọc rằng các ứng dụng được tự ký và Google Play (hoặc bất kỳ thứ gì mà họ đang gọi là Market bây giờ) không triển khai CA và không có xác thực danh tính? Nhưng câu hỏi của tôi là những gì, sau đó, ngăn chặn mọi người tải lên một ứng dụng dưới một tên nhà phát triển khác (crowdsourcing sang một bên)?

Nếu điện thoại chỉ kiểm tra chữ ký hợp lệ, điều đó có nghĩa là phương thức xác thực duy nhất được thực hiện khi ứng dụng được tải lên? Và nếu đó là trường hợp thị trường ứng dụng kiểm tra nó như thế nào? Có phải thông thường - sử dụng khóa cá nhân trên tệp và xác minh chữ ký? Hay nhà phát triển có cung cấp cho thị trường khóa riêng của họ để xác thực không?

+0

Khi bạn đăng ký gói ứng dụng, bạn phải cung cấp mật khẩu riêng. Vì vậy, để ai đó đăng một ứng dụng "với tư cách người khác", họ sẽ cần quyền truy cập vào kho khóa/tệp khóa và mật khẩu của họ. Và truy cập vào Tài khoản Google được liên kết với thị trường. – FoamyGuy

+0

@Tim: Tôi nghĩ rằng anh ta đang hỏi: Điều gì là để ngăn chặn người khác tạo ra cặp khóa riêng của họ và một chứng chỉ tự ký mà cũng nói "Fewmitz" trong đó. Có phải nó được liên kết với một tài khoản ở đâu đó không? –

Trả lời

9

Tóm lại, Android và Google Play về cơ bản không quan tâm đến những gì trong chứng chỉ thực tế. Google Play sẽ xác thực nó thực sự, và kiểm tra xem nó có hợp lệ trong 30 năm hoặc hơn, nhưng họ không thực sự sử dụng (ít nhất là hiện tại, AFAIK) thông tin thực tế trong cert. Bạn có thể sử dụng tên của riêng bạn/tên công ty trong CN, nhưng không ai sẽ xác thực điều này và người dùng sẽ không thấy thông tin này chút nào. Có gì Android làm là:

  • kiểm tra chữ ký để đảm bảo APK đã không bị giả mạo
  • sau đó so sánh chứng hát như một blob nhị phân vào một trong những phiên bản hiện đang được cài đặt của ứng dụng để đảm bảo rằng hai phiên bản đã được ký bằng cùng một khóa/chứng chỉ (ví dụ: bởi cùng một người/công ty)
  • thực hiện điều tương tự để thực thi quyền nếu bạn đang sử dụng quyền sharedUid hoặc chữ ký với hai hoặc nhiều hơn ứng dụng.

Vì vậy, để trả lời câu hỏi của bạn, ai đó có thể dễ dàng tạo chứng chỉ với tên của bạn trên đó, nhưng Android và Google Play không thực sự quan tâm. Miễn là họ không có khóa riêng của bạn, họ sẽ không thể tạo chữ ký ứng dụng giống với chữ ký của bạn và do đó họ sẽ không thể ghi đè/cập nhật ứng dụng của bạn với ứng dụng của họ hoặc nhận bất kỳ quyền đặc biệt nào .

+0

Vì vậy, điều đó có nghĩa là nếu sử dụng hai chứng chỉ có cùng cặp khóa riêng-công khai nhưng các tên chủ đề khác nhau thì cả hai đều hợp lệ? Về cơ bản, khi tôi đăng ký ứng dụng của mình với khóa riêng tư, các chi tiết của tôi có giống như tên chủ đề, vv được đưa vào tài khoản ở bất kỳ đâu không? – Ashwin

+2

Nó không quan tâm đến 'chi tiết' thực tế (chứng chỉ DN, số sê-ri, v.v.), nhưng chỉ so sánh các chứng chỉ dưới dạng các đốm màu nhị phân. Vì chúng khác nhau, bạn không thể cập nhật ứng dụng ban đầu được ký bằng cert1 với một ứng dụng khác được ký với cert2. –

+0

Bằng cách nói "Nó không quan tâm đến chi tiết thực tế" (chứng chỉ DN, số sê-ri, v.v.), "bạn có ý nói rằng những chi tiết đó không bao giờ được sử dụng? Bởi vì cuối cùng như bạn đã nói với bạn "so sánh các chứng chỉ như các đốm màu nhị phân" - điều đó có nghĩa là nó sẽ lấy các chi tiết chứng chỉ vào tài khoản. – Ashwin

Các vấn đề liên quan