2016-08-01 33 views
-1

Ich möchte eine Variable speichern, wo niemand den Wert sehen können,Fest programmierte Geheimtext in android app es für die Authentifizierung zu verwenden oder andere

Wenn jemand versucht, die APK-Datei zu dekompilieren:

private final String secretkey = "THEmyKEYISLOVE"; 

Ich kompilierte die Anwendung zu APK und dekompilierte sie dann mit http://www.javadecompilers.com

Wenn ich den Code überprüfte, zeigt es den Wert an! Ist das ein Sicherheitsproblem?

Ich lese etwas über Signed APK-Dateien, die einen öffentlichen Schlüssel in der APK enthält, so dass nur diejenigen, die den privaten Schlüssel haben, öffnen können. Funktioniert das, um zu verhindern, dass jemand den Wert secretkey sieht?

Irgendwelche Ratschläge?

+2

Es gibt keine 100% Lösung dafür. Was immer Sie tun, die Anwendung muss in der Lage sein, den Wert zu rekonstruieren, und ein Angreifer kann dasselbe tun. Wenn Sie für API 18 oder höher entwickeln, kann dies helfen: https://developer.android.com/training/articles/keystore.html – Henry

+1

http://Stackoverflow.com/a/5220925/5515371 –

+1

Verwenden Sie einfach Steganografie und Verstecke deinen Text in einem Bild. –

Antwort

1

Die Idee hinter der Verwendung einer asymmetrischen Verschlüsselung besteht darin, ein Schlüsselpaar zu haben: öffentlicher Schlüssel, der von anderen Parteien bekannt ist, und einen privaten Schlüssel, den nur Sie kennen. Schreiben Sie die Schlüssel im Code nicht fest. Speichern Sie sie entweder im privaten Speicher oder im android Keystore. Die beste Vorgehensweise besteht darin, sie in einem Server zu speichern und bei Bedarf zu erhalten. Es gibt andere Möglichkeiten zum Speichern, wie sie in einem Bild in den Android-Ressourcen gespeichert werden.

Sie können auch einen Obfuscator verwenden, wenn Sie eine Apk generieren, indem Sie proguard aktivieren. Dies ist die Aktion, die Sie in der obigen Frage verpasst haben.

1

Es gibt keine Möglichkeit, dies zu tun. Sie müssen Ihre App so gestalten, dass sie auch bei einem nicht vertrauenswürdigen Client sicher ist.

Verschleierung kann es etwas schwieriger machen, den geheimen Wert tatsächlich zu finden, aber es wird einen sachkundigen Angreifer nicht lange aufhalten und es gibt Ihnen wirklich nur ein falsches Gefühl der Sicherheit. Verschleierung ist eine rote Fahne, dass das zugrunde liegende Sicherheitsmodell gebrochen ist und neu gestaltet werden muss.