2011-06-24 12 views
6

Może to być załadowane pytanie, które zostało zadane w wielu formularzach wcześniej, ale nie widziałem, żeby zostało zadane w ten sposób, i chciałbym przedstawić kilka opinii na temat postępowania .Identyfikator urządzenia/konta specyficznego dla systemu Android do szyfrowania materiału siewnego

Zajmuję się tworzeniem aplikacji, która wymaga przechowywania poświadczeń do zewnętrznych usług internetowych na urządzeniu. Chcę, aby te poświadczenia zostały zaszyfrowane, ale nie chcę również przechowywać nasiona w kodzie/na urządzeniu, aby zapobiec możliwemu porwaniu. Aplikacja obsługuje również tworzenie kopii zapasowych za pomocą funkcji tworzenia kopii zapasowych w chmurze Google, dodatkowo wymagając szyfrowania.

Moją myślą było, że gdybym mógł znaleźć unikatowy identyfikator, który mógłby zostać użyty jako nasiono. Jest kilka dziwnych wymagań, które utrudniają to.

  1. Identyfikator MUSI być unikalny ORAZ taki sam dla danej kombinacji sprzętu/użytkownika we wszystkich okolicznościach.
  2. Nie można go po prostu powiązać z urządzeniem lub użytkownikiem, musi to być kombinacja obu.
  3. To musi być dostępne BEZ WZGLĘDU; Adresy Wifi i Bluetooth MAC nie wchodzą w rachubę, ponieważ są niedostępne na niektórych urządzeniach, gdy są wyłączone.
  4. Z tego, co przeczytałem, identyfikatory TelephonyManager (SIM itp.) Nie są dostępne na wszystkich urządzeniach.
  5. Z tego co przeczytałem, identyfikator ANDROID_ID nie będzie obecny we wszystkich okolicznościach.
  6. Aplikacja zostanie wydana na wielu rynkach (np. Amazon Appstore), więc konto Google niekoniecznie będzie obecne.
  7. Wykonywanie czyszczenia fabrycznego NIE powinno wpływać na elementy używane do generowania tego identyfikatora (w ten sposób użytkownik może wykonywać kopie zapasowe, czyścić bez zatrzymywania).
  8. Wykonanie aktualizacji OTA NIE powinno wpłynąć na cokolwiek użyte do wygenerowania tego identyfikatora (patrz powód powyżej).
  9. Jest OK, jeśli trzeba ponownie uwierzytelnić się po odinstalowaniu/ponownym zainstalowaniu.

Rozumiem, że wartość ta może być oczywiście pobierane przez inne aplikacje, dlatego zamierzam go hash, dalej rozstawiony przez UID aplikacji, jak również < sugestię tutaj >.

Jeśli ktoś uważa, że ​​wymagania są nierealne, również chciałbym to usłyszeć.

Szczególnie w świetle ostatnich maratonów hakerskich, chcę móc przynajmniej powiedzieć: "Jeśli ktoś może to zrobić, nic w telefonie nie jest bezpieczne".

+3

Jestem ciekawem tego, co zrobiłeś na końcu? Czy możesz podzielić się swoimi doświadczeniami? – tasomaniac

Odpowiedz

0

Twoje wymagania są uzasadnione, aby zapewnić bezpieczeństwo, jednak, jak się wydaje, podejrzewasz, że są nierealistyczne. Istnieje po prostu zbyt wiele różnic w poziomach obsługi urządzeń z systemem Android, aby były realistyczne.

+0

Dziękuję za wyrażenie "rozsądnego zapewnienia bezpieczeństwa". Podejrzewam, że niektórzy nadal będą reagować na "wszystko, co jest niepotrzebne", niezależnie od tego, czy jest to wykonalne, czy nie. –

+0

Niestety, postanowiłem zrzucić 3 z powyższych wymagań; Sądzę, że wszystko co mogę zrobić, to zrobić co mogę. –

Powiązane problemy