Frage:
Wie sichere ich eine mobile App gegen ihren Benutzer?
Noureddine
2020-06-08 17:03:56 UTC
view on stackexchange narkive permalink

Ich habe eine mobile Anwendung erstellt, die die Aktivität des Beschleunigungsmessers überwacht und darauf basierend den Benutzer belohnt, wenn ein bestimmtes Muster beobachtet wird. Wie kann ich die Anwendung gegen den Benutzer selbst sichern, der möglicherweise versucht, die Anwendung zu hacken, um das gesuchte Muster zu melden, um die Belohnung zu erhalten?

Eine weitere Sache ist, dass die Belohnung an die gegeben wird Gewinner am Ende des Wettbewerbs bei einer physischen Agentur. Ist es möglich, dass der Agent vor der Belohnung überprüft, ob der Benutzer die App manipuliert hat oder nicht, beispielsweise indem er etwas im Gerät beobachtet oder vergleicht?

https://www.aliexpress.com/wholesale?SearchText=phone+swing
@Coxy Was ist der Zweck dieser Geräte?
@NumLock Eine Verwendung ist das Testen von Fitness-Tracker-Apps. Durch die Telefonschwingung zählt das Telefon die Schritte hoch.Für Entwickler und QS-Teams ist es sehr nützlich, ihre Produkte mit einer bestimmten Anzahl von Schritten zu testen, ohne tatsächlich herumzulaufen.
Sind Sie sicher, dass dies ein Problem für Sie ist?Wenn der Benutzer sich selbst verrät, ist er selbst schuld.Ich sehe nur ein Problem, wenn Sie den Benutzer auf eine Weise belohnen, die für Sie kostspielig ist.Denn wenn der Benutzer ein bestimmtes Fitnessziel erreicht, ohne tatsächlich zu gehen, weiß er selbst, dass die Leistung keine echte Leistung ist, sondern nur Betrug.
@allo Sind Sie sicher, dass der Benutzer nur sich selbst betrügt?Ich habe Schrittzähler gesehen, die von Unternehmen oder Krankenversicherern ausgestellt wurden, um zu überprüfen, ob ein Subjekt "gesund" ist, mit echten Anreizen für hohe Schrittzahlen.
Die Antworten scheinen nicht die Möglichkeit zu erwähnen, dass jemand ein Gerät bauen könnte, um das Telefon physisch im gewünschten Muster zu bewegen.Das wäre fast unmöglich zu schützen, hätte ich gedacht.
Schreiben Sie Ihre Bewerbung mit Malbolge.https://esolangs.org/wiki/malbolge (Keine ernsthafte Antwort)
Sieben antworten:
#1
+69
ThoriumBR
2020-06-08 18:18:01 UTC
view on stackexchange narkive permalink

Sie können nicht.

Sobald der Benutzer das mobile Gerät und Ihre Anwendung hat, hindert ihn nichts daran, Ihre Anwendung zu dekompilieren, zu verstehen, wie sie funktioniert. & welche Daten sie sendet und repliziert. Sie können sogar mit einem Gerät betrügen, das das Telefon dreht, und Ihre Anwendung glauben lassen, dass es ein Mensch ist, der es verwendet.

Sie müssen Ihre Anwendung nicht einmal dekompilieren. Sie müssen lediglich einen Proxy einrichten, um die Anforderungen abzufangen und das Protokoll zu verstehen.

Aus den Kommentaren:

Wenn Sie die Hardware steuern, können Sie die App sichern:

Nicht ganz. Apple steuert vom Prozessor bis zur Benutzeroberfläche des iPhones, und Jailbreaks sind eine Sache. Selbst wenn sie jeden Aspekt davon kontrollieren, bricht eines Tages jemand das iPhone aus und verwurzelt es und lädt Ihre App darauf.

Zertifikatstransparenz, Key Pinning

Nicht nützlich, wenn das Gerät gerootet ist. Prüfsumme, digitale Signatur und Integritätsprüfung funktionieren nur, wenn das Betriebssystem nicht gefährdet ist. Wenn der Benutzer das Betriebssystem und das Gerät besitzt, kann er Betriebssystemprüfungen deaktivieren, die Binärdatei der App bearbeiten und die Anweisungen zur Überprüfung der Signatur oder Prüfsumme ändern.

Virtuelle Maschine, Codeverschleierung

Sie erschweren die Analyse des Codes erheblich, aber der Code muss vom Prozessor ausgeführt werden. Wenn ein Disassembler nicht helfen kann, wird ein Debugger. Der Benutzer kann Haltepunkte für wichtige Teile des Codes setzen und mit der Zeit die Funktion erreichen, die das Zertifikat oder die Prüfsumme oder alle vorhandenen Validierungsprüfungen überprüft, und alles ändern, was er möchte.

Es ist also sinnlos, es zu versuchen?

Nein. Sie müssen Kosten und Nutzen abwägen. Verlassen Sie sich nur nicht darauf, dass die Verteidigung unschlagbar ist, denn jede Verteidigung kann geschlagen werden. Sie können es nur so schwer machen, dass der Angreifer es aufgibt, viele Ressourcen für Ihre App bereitzustellen und einen kleinen Vorteil zu erhalten.

Grundsätzlich bist du richtig.In einem praktischen Ansatz können Sie jedoch einige Maßnahmen ergreifen, um die Schwierigkeiten beim Spielen mit der App zu erhöhen.
Sie können es immer schwieriger machen, aber Sie können keine App vor Hackerangriffen schützen.Pokemon Go ist ein gutes Beispiel: Es verwendete die Telefonsensoren, hatte eine Firma mit viel Erfahrung und Geld und die App wurde trotzdem gehackt.
Ich begann damit, dass Sie richtig sind.Und du bist.Aber es ist immer noch wertvoll, es schwieriger zu machen, auch wenn unmöglich keine Option ist.
Richtig!Sobald die Belohnung für das Brechen des Systems höher ist als die Kosten, wird es gebrochen.Manchmal ist es "nur zum Spaß" kaputt, deshalb funktioniert der Versuch, ein System clientseitig zu schützen, meistens nicht.
Auch ganz richtig.Die Auswirkungen auf ein Unternehmen sind jedoch sehr unterschiedlich, je nachdem, wie viel Schutz vorhanden ist.Von keinem Schutz bis zu unglaublich schwierig ist ein großes Spektrum potenzieller Einnahmeverluste (und damit Motivation zur Implementierung von Sicherheit).
Sie können den Datenverkehr einer App nicht abfangen, wenn sie grundlegenden Sicherheitsprinzipien wie z. B. der Transparenz von Zertifikaten folgt.
@CONvid19 Wenn es auf von Ihnen kontrollierter Hardware ausgeführt wird, können Sie dies tun, unabhängig davon, wie gut es den Sicherheitsprinzipien entspricht.
@ThoriumBR: Nun, Sie können, wenn Sie die Hardware steuern.Nehmen Sie Apple Inc, der über die Codesignatur steuern kann, was auf IPhones ausgeführt wird.Es erfordert jedoch dedizierte Hardware und viel Planung - und kann immer noch kaputt gehen.
@JosephSible-ReinstateMonica Selbst Apple kann nicht immer alles kontrollieren, und Jailbreaks sind hier, um dies zu beweisen.Sony hat mit der PS3 gute Arbeit geleistet und es dauerte ungefähr 4 Jahre, bis die Sicherheit besiegt war, aber sie wurde auch besiegt.
@CONvid19 Nichts hindert den Benutzer daran, eine "JNZ" im Code in "JZ" zu ändern und fortzufahren, wenn das Zertifikat nicht übereinstimmt.Oder die Binärdatei bearbeiten und sein eigenes Zertifikat anheften.Oder `NOP` die gesamte Prüffunktion.Die clientseitige Sicherheit wird immer scheitern, wenn genügend Zeit und Motivation vorhanden sind.
@ThoriumBR Ich meinte "Kontrolle" wie in "physischen Besitz haben".
@JosephSible-ReinstateMonica in diesem Fall ist es möglich.Doch im Fall von OP wäre es nicht sehr nützlich, wenn der Benutzer nicht über das Gerät verfügt, das seine eigenen Bewegungen aufzeichnen wird ...
@ThoriumBR Richtig, das ist mein Punkt.Ich stimme Ihrer Antwort zu.
Ich denke, die Frage ist: Wenn es einmal gehackt wird, ist es für alle über den Informationsaustausch weit offen, oder müsste jeder Benutzer es selbst hacken?Im letzteren Fall stelle ich mir vor, dass es sich immer noch lohnt, es schwieriger zu machen, während es im ersten Fall vielleicht nicht so ist?
@bob hat einmal gehackt, für immer gehackt, bis Sie eine neue Version veröffentlichen, die das Loch schließt oder das Protokoll oder eine andere Gegenmaßnahme ändert.Es ist jetzt schwer, Geheimnisse zu bewahren.
@ThoriumBR dann ja in diesem Fall scheint es nicht wert zu sein, zu versuchen, zu verhindern.
#2
+24
MechMK1
2020-06-08 18:40:27 UTC
view on stackexchange narkive permalink

Obwohl ich im Allgemeinen der Antwort von ThoriumBR zustimme, gibt es einige Dinge, die Sie tun können.

Sie können beispielsweise das Verhalten des Benutzers analysieren Diskrepanzen, wie zum Beispiel:

  1. Offensichtlich wiedergegebene Daten

    Zum Beispiel könnte ein Benutzer auf die gewünschte Weise handeln und dann die Daten erfassen Daten gesendet und die Daten zu einem späteren Zeitpunkt erneut abgespielt. Dies kann recht einfach festgestellt werden, wenn man bedenkt, dass die verrauschten Sensordaten genau gleich sind, was in einem realen Anwendungsfall niemals der Fall wäre.

  2. Offensichtlich gefälscht Daten

    Ein Benutzer könnte beispielsweise gefälschte Sensordaten melden. Diese Daten wären wahrscheinlich nicht zufällig genug. Anstatt beispielsweise einen Ort mit 48,7849165 ° N; 27,4159014 ° W zu melden, könnte der gefälschte Datenpunkt 48,78 ° N; 27,42 ° W code sein >.

  3. Maschinenähnliche Muster

    Beispielsweise könnte ein Benutzer ein Programm schreiben, das automatisch verrauscht und "korrekt" sendet -Die Daten werden immer zur gleichen Tageszeit angezeigt. Dies scheint verdächtig, da im Grunde kein Benutzer so genau wäre.

  4. ol>

    Natürlich können Sie diese Beispiele nicht als vollständige Liste ansehen. Es gibt nur hier als Beispiele dafür, welche Art von Mustern Sie erkennen können. Das Training Ihres Systems zur Erkennung von Anomalien ist in der Praxis viel schwieriger und wird wahrscheinlich schwieriger zu implementieren sein, als nur damit zu leben, dass einige Leute betrügen.


    Da die Frage nach Veröffentlichung der Antwort bearbeitet wurde: Sie können eine gründlichere Analyse des Datensatzes der Gewinner durchführen, um festzustellen, ob Unregelmäßigkeiten auftreten. Auf diese Weise müssten Sie nur Datensätze analysieren, die für Sie als Unternehmen tatsächlich von Bedeutung sind.

    Wie Falco in den Kommentaren erwähnt hat, fügen Sie einen Haftungsausschluss wie "Ihre Beiträge werden analysiert, um Betrug zu verhindern" hinzu "kann einige Leute daran hindern, gefälschte Einsendungen einzusenden.

Wie können Sie Wiederholungsangriffe abfangen, ohne die Rohdaten aufzuzeichnen, zu speichern und zu durchsuchen?Das klingt ziemlich unpraktisch.
@jpaugh das ist genau das, was wir für unsere App tun - es sind nur viele Daten, es ist nicht gerade unpraktisch und sobald Sie ein Modell dafür erhalten, wie "echte" Daten aussehen, können Sie "gefälschte" Daten basierend auf dem Modell erkennen und mehr davon verwerfendie Hintergrunddaten.
@jpaugh Es ist schwierig und erfordert das Speichern vieler Daten.Ich möchte auch nicht so tun, als wäre die Analyse von Anomalien das A und O, da sie eine Menge Daten und Analysen erfordert und höchstwahrscheinlich für die meisten kleinen Unternehmen, die dies versuchen, zu groß istGeben Sie eine oder zwei Apps frei.
Sie können die Vor- und Nachteile des Erkennens und Handelns dieser Diskrepanzen beim Spielen erkennen, bei denen Betrug und dessen Erkennung und Verhinderung nicht ungewöhnlich sind.Es gibt einige Highscore-Tabellen mit eindeutig unglaublich hohen Punktzahlen (z. B. das Beenden eines Levels in 0,0001 Sekunden), und es gibt einige Fälle, in denen einige Spieler verboten sind, das Spiel nur normal zu spielen.
Ich denke, Sie unterschätzen die realen Probleme mit unterschiedlicher Hardware."Zu genaue" Daten?Sie wissen nicht, was die Telefon-Firmware auf einem Telefon, das Sie nie verwendet haben, möglicherweise tut.Es ist nicht einmal so dumm, ungenaue Standortdaten zu entstören, denn warum sollten sich Apps auf den fünften Platz nach dem Komma verlassen, wenn der Sensorwert nur auf zwei Stellen genau ist?
Das OP hat einen Sonderfall, in dem es nur einen (oder einige) Gewinner gibt, die physisch anwesend sind und wegen Betrugs verklagt werden könnten.- Wenn Sie die Daten auf dem Gerät aufzeichnen und regelmäßig in die Cloud hochladen, müssen Sie die Daten nur dann auf ihre Richtigkeit überprüfen, wenn eine Person behauptet, ein Gewinner zu sein, und das Formular "Ich verspreche, ich habe nicht geschummelt und wenn ichHabe ich der Firma 1000 Dollar Schadenersatz geschuldet, "als ich ihren Preis sammelte und danach seine Daten überprüfte?"- Die meisten Menschen werden nicht versuchen zu schummeln, wenn ein echtes Risiko besteht, nachträglich erwischt zu werden.
@Falco Alle diese Informationen wurden hinzugefügt, nachdem diese Antwort geschrieben wurde
@MechMK1 Ich denke, diese Antwort könnte verbessert werden, indem am Ende ein kleiner Absatz hinzugefügt wird.Da Ihre vorgeschlagene Lösung für die OP-Situation ideal erscheint, sollten nicht alle Daten analysiert werden, sondern nur die Datensätze der Gewinner - und selbst die Offenlegung der Informationen "Ihre Daten werden analysiert, um Betrug zu verhindern" sollte dies verbietendie meisten Betrüger
#3
+24
DennisFrett
2020-06-09 11:55:50 UTC
view on stackexchange narkive permalink

Obwohl ich den anderen Antworten zustimme, gibt es einige pragmatische Dinge, die dort übersehen werden.

Vollständige Offenlegung: Ich arbeite für ein Unternehmen, das Verschleierungs- / Schutzsoftware für mobile Anwendungen entwickelt.

Für eine App, die auf einem vom Angreifer kontrollierten Gerät ausgeführt wird, ist kein vollständiger, unzerbrechlicher Schutz möglich. Es gibt jedoch Software, die darauf abzielt, die Messlatte höher zu legen und es für eine Person weniger / nicht lohnenswert macht, einen Angriff auszuführen.

In der Regel decken diese Lösungen zwei Aspekte ab:

Statisch Schutz

Dies umfasst normalerweise eine Reihe von Verschleierungstechniken, die es einem Angreifer erschweren sollen, eine mobile Anwendung zu analysieren, indem er die Binärdateien mit Tools wie IDA Pro, Ghidra und Hopper untersucht.

Techniken hier sind Kontrollfluss-Verschleierung, semantische Verschleierung (Klasse, Methode, ... Namen), arithmetische Verschleierung, Zeichenfolgenverschlüsselung, Klassenverschlüsselung, ...

Diese machen es Es ist sehr schwierig, einen Blick in eine Binärdatei zu werfen und herauszufinden, was gerade passiert, bietet jedoch keinen großen Schutz, wenn ein Angreifer die Anwendung betrachtet, während sie auf dem Gerät selbst ausgeführt wird.

Dynamischer Schutz

Dies sind Schutztechniken, die darauf abzielen, eine Anwendung vor Analysen oder Änderungen zu schützen, während sie auf dem Gerät ausgeführt wird. Beliebte Tools sind hier Debugger (lldb, gdb, ...) und Hooking-Frameworks (Frida, Cydia Substrate, ...).

Die hier beschriebenen Techniken versuchen, die Verwendung dieser Tools zu blockieren / zu erkennen, manipulierte Ausführungsumgebungen (Geräte mit Jailbreak / Root, Emulatoren), an der Anwendung vorgenommene Änderungen und vieles mehr zu erkennen.

Schlussfolgerung

Obwohl es von größter Wichtigkeit ist, sicherzustellen, dass Ihre Anwendung mit den genau definierten Sicherheitspraktiken erstellt wurde (Verschleierungs- / Schutzsoftware hilft Ihnen hier nicht !), gibt es Tools, die als Bündel fungieren können von Shells um Ihre Anwendung herum, die es insgesamt viel schwieriger und hoffentlich nicht lohnenswert machen, Ihre Anwendung zu knacken.

Sie können auch eine virtuelle Maschine in der App erstellen, um dort kritische Vorgänge auszuführen, die einen gewissen Schutz vor statischen und dynamischen Angriffen bietet.
Ich finde es traurig, dass Sicherheit durch Dunkelheit eine so wichtige Sache sein muss ... Nicht, dass es nicht nützlich ist.Ich wünschte nur, es gäbe eine ... * robustere * Lösung, um zu verhindern, dass der Benutzer irgendetwas mit Ihrem Code macht. Ich denke, ich hätte eher ein Bauingenieur als ein Software-Ingenieur sein sollen.Passanten reißen nicht allzu wahrscheinlich eine Brücke, nur um nicht die Maut bezahlen zu müssen :-(
@Mathieu VIALES, auch an dieser Front werden einige Änderungen vorgenommen.Sie können sich Intel SGX und ARM TrustZone ansehen, bei denen es sich um Hardware-Implementierungen handelt.Ich kenne auch Hypervisor-basierte akademische Ideen, die versuchen, auf mit Malware infizierten Geräten eine sinnvolle Sicherheit zu bieten.Natürlich keine vollständige Lösung gegen ein vom Angreifer kontrolliertes Gerät, aber es gibt einige zusätzliche Garantien.
@DennisFrett Das klingt ziemlich interessant!Ich werde sicherstellen, dass SGX & Trust Zone nachgeschlagen wird.Klingt recht vielversprechend. In Bezug auf Angreifer-Controller-Geräte wird es wohl nie eine tatsächliche Lösung geben, solange der Code in irgendeiner Form jemals auf den Geräten des Angreifers vorhanden ist: - /
Nitpick, aber: Wie kommt man vom "Gerät des Endbenutzers" zum "vom Angreifer kontrollierten"?Sowohl die Prüfung einer Software als auch die Fehlerbehebung / Sandbox sind legitime, wenn auch oft langwierige Praktiken.In meinem Buch würden Sie zum Angreifer werden, wenn Sie nicht verwandte Anwendungen auf dem Computer des Benutzers stören.
Ich bin nicht der Meinung, dass all diese Arbeit für wenig Geld eine schlechte Sache ist.Es ist idiotisch, Closed-Source-Software auf Kernel-Ebene installieren zu müssen, um sicherzustellen, dass Sie in einem Videospiel nicht schummeln.Ich würde mich lieber mit Betrügern als mit schädlicher Software befassen müssen.
@MathieuVIALES die Brücke gehört auch nicht den Passanten, das Telefon ist.Es sind also hauptsächlich ihre Sachen, mit denen sie sich abfinden - und obwohl es einige Argumente für Verträge gibt, die bestimmen, wie eine Software verwendet werden kann (z. B. um keine andere Maschine ohne die Zustimmung des Eigentümers zu hacken usw.), bemühen sich viele Geschäftsmodelle / Unternehmen viel zu sehrum zu steuern, wie ihre Software auf den Geräten anderer Personen verwendet wird.Es wäre lächerlich, wenn jemand versuchen würde, sicherzustellen, dass Sie keinen Schlitzschraubendreher für Philipps-Schrauben verwenden können.
@MathieuVIALES Gibt es dazwischen eine Grauzone?Sicher, aber die Allegorie der Brücke kommt von einem extremen Standpunkt aus, es mag Ihr Code sein, aber es ist ihr Gerät und sie haben Ihren Code darüber lizenziert, also besitzen sie in meinem Buch wie drei Viertel der sagen, was mit der Kombination von zu tun istbeide.
#4
+6
8vtwo
2020-06-09 01:35:40 UTC
view on stackexchange narkive permalink

Es ist einigermaßen möglich.

Senden Sie die aufgezeichneten Daten einfach an einen Remote-Server, der die Musterprüfung durchführt. Stellen Sie sicher, dass zwischen dem Beobachten eines korrekten Musters und der Belohnung eine Verzögerung liegt. Es wird sehr schwierig sein, genau herauszufinden, welches Muster übereinstimmt.

Wenn Sie dies mit Heuristiken kombinieren, die wiederholte Aktivitäten erkennen und Straftäter verbieten, besteht eine gute Chance, dass Sie diese Art von Modell beibehalten können.

Dies setzt voraus, dass der Benutzer nichts über das Muster wissen kann, z.welche Aktivität soll es verursachen, und wenig Chance, es anzunähern.Wenn Sie mit realen Sensordaten arbeiten, besteht die Möglichkeit, dass eine geringfügige zufällige Änderung der aufgezeichneten Daten die akzeptablen Parameter Ihres Modells unterschreitet.
Sie können wissen, was * ein * Teil des Musters ist, aber nicht alles.Zum Beispiel, wenn das Muster das Telefon einfach in die Luft wirft: Durch Senden des gesamten Datenstroms aus der Ferne können Sie die Daten auch vor und nach dem bekannten Ereignis überprüfen.Wie das "Aufwickeln" und das "Fangen".Dann können Sie überprüfen, ob all diese Dinge richtig übereinstimmen und jedes Mal einzigartig sind.
Das hindert mich nicht daran, beispielsweise zehn Würfe aufzuzeichnen, so lange ich auf die Antwort warte, den gesamten Datensatz leicht zu verzerren, ihn zwischen den Würfen aufzuteilen und ihn dann in zufälliger Reihenfolge zurückzusenden.Schließlich sind Beschleunigungsmesser-Messwerte kein zufälliges weißes Rauschen.Welches Muster Sie auch erwarten, es hängt von der Physik der Aktivität ab, die Sie erfassen möchten, und von der Genauigkeit der Messungen.Und Sie können Benutzer auch nicht einfach auf die schwarze Liste setzen, da Sie ständig nicht übereinstimmende Messwerte erhalten.
Ich denke, Sie unterschätzen die Schwierigkeit, den gesamten Datensatz * genau * zu verzerren und einen völlig neuen Datensatz wiederzugeben, der dem Verhalten eines normalen Benutzers korrekt entspricht.Durch die Verwendung des serverseitigen Mustervergleichs erhalten Sie eine enorme Datenmenge, die Sie analysieren können.Alles, was vom Öffnen der App bis zum Zielmuster passiert, kann überprüft werden.Algorithmen für maschinelles Lernen sind sehr gut in der Lage, zwischen echten einzigartigen Mustern und solchen mit Anomalien jeglicher Art zu unterscheiden.Die Punkte, an denen Sie die Würfe "hacken", würden verdächtig aussehen, wenn der Übergang nicht reibungslos wäre.
@RutherRendommeleigh zur Unterstützung dieser Antwort finden Sie hier in den Techniken, mit denen Uber GPS-Spoofing verhindert https://eng.uber.com/advanced-technologies-detecting-preventing-fraud-uber/ Es ist eine in der Branche übliche Lösung.Es ist offensichtlich nicht narrensicher.
@goncalopp Ich würde argumentieren, dass die Art und Menge der Daten, die Uber sammelt, sowie die Ressourcen, die sie auf das Problem werfen können, für das OP-Szenario wahrscheinlich nicht in Betracht kommen.Wenn sie * konstante * Standortdaten benötigen und die App komplex genug ist, um unterschiedliche Nutzungsmuster zu erzielen, fair genug.Auf der anderen Seite verlieren Sie Benutzer, die der Überwachung rund um die Uhr nicht zustimmen.
#5
+2
goncalopp
2020-06-10 11:57:24 UTC
view on stackexchange narkive permalink

In den letzten Jahren wird die vorgeschlagene sichere Lösung für dieses Problem häufiger als Remote Attestation bezeichnet.

Kurz gesagt bedeutet dies, dass die sicherheitskritischen Teile Ihrer Anwendung ausgeführt werden in einem separaten Bereich der CPU, der ihre Integrität garantiert (durch Schlüssel-Escrow auf der Hardware) und es einem Remote-Server ermöglicht, dies zu bestätigen.

Soweit ich weiß, gibt es keine Praktische narrensichere Methode für eine unabhängig entwickelte mobile App ab 2020. Es gibt jedoch bereits APIs, um zu überprüfen, ob das System nicht manipuliert wurde, und da immer mehr Telefone TPMs enthalten a> / TEEs, ich denke, es ist vernünftig zu erwarten, dass es in naher Zukunft allgemein verfügbar sein wird. Es wird derzeit beispielsweise in Google Pay verwendet.

Wichtige Vorsichtsmaßnahmen:

  • Dies verhindert, dass Ihre Anwendung auf kontrollierten Telefonen ausgeführt wird (" im Besitz "?) des Endbenutzers (dh: Telefone mit oder ohne Jailbreak). Es kann als eine Form von DRM betrachtet werden und ist umstritten (siehe die damit verbundene Kontroverse um sicheren Boot auf PCs).
  • Sie müssen Ihre erweitern TCB, um die CPU-Hersteller und den Betriebssystemhersteller einzubeziehen.

Die Menschen haben eine Vielzahl von Meinungen zu diesen Vorbehalten, wobei die beiden Extreme für die Praxis "irrelevant" sind. die Technologie schlechter als nutzlos machen ".


Dies wird aus meiner eigenen Antwort hier

kopiert
Es spielt keine Rolle, wo Software ausgeführt wird - es werden immer noch Daten von irgendwoher abgerufen.Wenn Sie einen gefälschten Bewegungssensor / Schrittzähler einrichten, verarbeitet und sendet Ihr Programm gefälschte Daten sehr sicher.
#6
+1
Eric Johnson
2020-06-10 22:25:47 UTC
view on stackexchange narkive permalink

Andere haben bezüglich des Softwareschutzes geantwortet, aber ein Angriff kann sogar auf Hardwareebene auftreten.

Wenn ein Telefon beispielsweise über einen Beschleunigungsmesser-IC verfügt, der sich auf der PCBA befindet, senden die meisten dieser Sensoren über einen Standard-SPI- oder I2C-Bus mit den Rohdaten und ohne Verschlüsselung. Ein Angreifer kann möglicherweise den vorhandenen Sensor entfernen und falsche Daten auf dem Datenbus senden. Es wäre für die Telefonsoftware unmöglich, eine Änderung des normalen Betriebsmodus zu erkennen, da keine Änderung an der Software vorgenommen wurde. Daher wäre es unmöglich, einen motivierten Angreifer zu verhindern.

Nun könnten einige Abschwächungen bestehen, z. B. das Erkennen, ob das Gerät eingegeben wurde, oder die Verwendung eines Sensors, der die Kommunikation verschlüsselt / den IC als echt authentifiziert, aber angesichts dessen Ein Handy ist ein Warenprodukt (zumindest für Android). Es wäre möglich, ein Handy zu finden, das dies nicht tut.

#7
+1
Daniël van den Berg
2020-06-11 11:44:12 UTC
view on stackexchange narkive permalink

Zusätzlich zu den anderen genannten Antworten besteht eine "einfache" Möglichkeit zum Schutz vor Hacking darin, dass die Logik nicht in Ihrer App enthalten ist.

In der App möchten Sie nur zwei Dinge tun.

  1. Daten auslesen
  2. Daten anzeigen
  3. ol>

    Sobald Sie versuchen, Daten auf dem Gerät zu verarbeiten, sind Sie zum Scheitern verurteilt Die App wird gehackt. Senden Sie stattdessen alle Rohdaten an einen Server (dies birgt natürlich eigene Sicherheitsrisiken, die jedoch leichter zu mindern sind). Auf diesem Server können Sie die gesamte Verarbeitung der Daten sicher durchführen, da sie unter Ihrer Kontrolle stehen.

    Ein weiterer Vorteil dieses Ansatzes besteht darin, dass die Erkennung böswilliger Benutzer erheblich vereinfacht wird. Sie erwähnen, dass diese App für einen Wettbewerb verwendet werden soll. Auf Ihrem Server können Sie am Ende des Wettbewerbs einfach die Bewegungsdaten mit den Daten anderer Benutzer vergleichen. Wenn alle Benutzer ein Muster mit beispielsweise 8 Stunden Schlaf anzeigen und ein Benutzer ein Muster anzeigt, bei dem sie rund um die Uhr wach sein müssen, wissen Sie, dass es gefälscht ist. Aber zu diesem Aspekt gab MechMK1 bereits eine hervorragende Antwort, nur dass Sie jetzt auch mehrere Benutzer kombinieren können.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...