2009-07-22 3 views
1

Ich habe eine Zeichenfolge in meinem Code, die ich als ein Geheimnis benutze, wenn ich mit meinem Server kommuniziere. Was ist der beste Weg, um diese Zeichenfolge zu verschlüsseln, um sicherzustellen, dass ein Hacker nicht in der Lage ist, es herauszufinden, indem er meine Binärdatei durchsucht oder während der Laufzeit in den Speicher schaut? (wenn möglich überhaupt zu verhindern?)Was ist der beste Weg, um einen String in ObjC/C zu verstecken/zu verschlüsseln?

Welche Maßnahmen würden Sie vorschlagen, um dies zumindest so schwierig wie möglich zu machen?

Antwort

2

Ein weit besserer Ansatz wäre, die Verwendung von Ihrem Server zu überwachen und zu versuchen, Nutzungsmuster zu erkennen, die nicht zu Ihrer Anwendung passen - z. B. dass Sie immer eine Art von Anfrage vor einer anderen stellen oder eine iPhone-ID weitergeben up als Parameter für einen Aufruf wurde nicht übermäßig aus mehreren Quellen verwendet. Sie können einen ersten Anruf tätigen, wenn die App gestartet wird, und auf dem Server die Telefon-ID aufzeichnen, um andere Anrufe zuzulassen.

Es gibt mehrere Möglichkeiten, das Problem anzugehen, aber sie sind alle serverbasiert - alles im Client kann und wird von einem Hacker gesehen werden. Alles, was der Klient sagt, muss immer als eine Lüge behandelt werden, denn manchmal wird es sein.

+1

Adobe habe das noch nicht einmal gelernt;) – ewanm89

1

Technisch ist es nicht möglich, man kann immer mindestens Speicher den Code gerade nach der Entschlüsselung vor der Verbindung abkratzen, und da der ganze benötigte Entschlüsselungsalgorithmus auch schon im Code vorhanden ist. Eine Disassemblierung ermöglicht es, die Daten direkt aus der Binärdatei zu entschlüsseln.

In der Praxis, da dies eine geschlossene Plattform ist (von der Tatsache, dass Sie das iPhone-Tag verwendet haben), werden nur große Hacker es schaffen, es zu bekommen, auch wenn es nur eine einfache hexadezimale Zeichenfolge in der Binärdatei ist.

+0

Welche Maßnahmen würden Sie vorschlagen, um dies zumindest so schwierig wie möglich zu machen? – erotsppa

+0

Legen Sie die Saite einfach an Ort und Stelle - sie wird für jemanden, der nach Saiten sucht, bedeutungslos sein. Verwenden Sie dann immer HTTPS für die Kommunikation mit Ihrem Server, damit er nicht abgefangen werden kann. Natürlich muss man dann die Performance-Strafe bezahlen, wenn man HTTPS benutzt, aber es ist die einzige Möglichkeit, es sogar geheim zu halten. –

+0

Nun, warum genau brauchen Sie diese Zeichenfolge, ist es zu versuchen, es so zu machen, nur Ihre binäre Verbindung zu Ihrem Server? – ewanm89

Verwandte Themen