2011-01-12 12 views
9

Używam API Dropbox. W przykładowej aplikacji, zawiera następujące wiersze:Przechowywanie kluczy API w systemie Android, czy wystarczające jest obmycie?

// Replace this with your consumer key and secret assigned by Dropbox. 
// Note that this is a really insecure way to do this, and you shouldn't 
// ship code which contains your key & secret in such an obvious way. 
// Obfuscation is good. 
final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE"; 
final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE"; 

Jestem świadom mantry „Tajemnica nie jest bezpieczeństwo” i zaciemniania naprawdę tylko nieznacznie zwiększa ilość wysiłku potrzebnego do wyodrębnienia kluczy. Nie zgadzam się z ich stwierdzeniem "Obalenie jest dobre". Co powinienem zrobić, aby chronić klucze? Czy obfumowanie jest dobre wystarczy, czy powinienem rozważyć coś bardziej wyszukanego?

+2

Przeczytaj dyskusję na ten temat tutaj: https://groups.google.com/d/topic/android-developers/quD5gYIZ4Ig/discussion –

Odpowiedz

5

Nie możesz nic na to poradzić. Jeśli użytkownik (atakujący) ma chronione dane i kod, który usuwa protekcję, użytkownik może ostatecznie uzyskać dostęp do danych. To takie proste. Debugger i punkt przełomowy we właściwym momencie to wszystko, czego potrzebują. To i dużo wolnego czasu i determinacji.

Niezależnie od tego, czy tajemnica jest wystarczająco dobra dla twoich celów, zależy od specyfiki Twojej firmy. Ale ogólnie w świecie mobilnym, jeśli klient obawia się kradzieży danych, wdraża kontrolę kradzieży i strat na wysokim poziomie. Rzeczy takie, jak zdalne czyszczenie, obowiązkowa blokada ekranu itp. Nie sądzę, że to programista aplikacji powinien duplikować wszystkie te rzeczy.

2

Bezpieczeństwo nigdy nie może być idealne, więc to ty decydujesz, ile pracy chcesz wykonać. Możesz podzielić tajemnicę klienta na wiele Ciągów dla prostej zmiany, która oferuje minimalną ilość dodatkowego zabezpieczenia lub możesz stworzyć algorytm do reprezentowania sekretu w inny sposób (od wstawiania znaków, które nie są używane co X spacji w ciągu znaków do modyfikowania każdego znaku, być może na podstawie reprezentacji numerycznej).

Musisz wziąć pod uwagę pracę a korzyść. Jeśli jest to aplikacja, z której będziesz korzystać wraz z kilkoma przyjaciółmi, prawdopodobnie nie ma to większego znaczenia. Jeśli będzie to aplikacja używana przez 10 milionów ludzi, bezpieczeństwo jest oczywiście bardziej niepokojące.

Powiązane problemy