Verschlüsselung / US-Recht

  • Verschlüsselung / US-Recht

    Hallo,
    ich bin ganz neu hier und habe vor einigen Tagen zu ersten mal eine App an den App Store geschickt.

    Dabei wurde ich mehrmals gefragt ob meine App irgendwelche Verschlüsselungstechniken (auch vom System) enthält / benutzt. Bei der aktuellen App war das kein Problem.

    Für mein nächstes Projekt wollte ich jedoch, dass sich User mittels eines Accounts an einem Server anmelden können. Hierbei sollten natürlich zumindest die Logindaten bei der Übertragung verschlüsselt sein. Besser wäre den ganzen Datenaustunsch zum Server über https abzuwickeln.

    Jetzt die Frage: Wenn ich sowas in meiner App habe:

    aURL = @"https://mein.server.de/index.php?login=user&pass=123456";
    [NSString stringWithContentsOfURL:aURL encoding:NSUTF8StringEncoding error:&err];

    dann benützt man doch strengenommen Verschlüsselungsroutinen vom iOS.

    Muss man in so einem Fall schon die US-Formulare von ITunes Connect wegen Verschlüsselung ausfüllen?.

    Wenn ja, gibts irgendwo ne deutsche Anleitung wie der ganze Prozess funktioniert?
  • es geht dabei darum, dass du kein program hast was geheime daten der usa (dazu zaehlen praktisch alle informationen der usa) verschluesselt und dann an einen server der sich nicht in den usa befindet schickst, so dass FBI, NSA, CIA etc. nicht "sehen" koennen was du da geschickt hast

    in deinem fall scheint es sich ja nicht darum zu handeln
  • Hi,

    so lange du die zugelassenen APIs von Apple verwendest und die Verschlüsselung nur für die Datenübertragung nutzt, brauchst du keine gesonderten CCAT Dokumente. Wenn du Daten aber auch verschlüsselt speichern willst, brauchst du eine gesonderte Exportgenehmigung. Auch dann, wenn du die Apple APIs nimmst.

    Schau auch mal hier: objectiveceeds.com/application/artikel/49/1/

    Gruß
    Manfred
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Quellcode

    1. aURL = @"https://mein.server.de/index.php?login=user&pass=123456";


    Du weisst, dass Benutzername und Passwort auf diese Art und Weise nicht verschlüsselt werden? So ist nur der Content, der als Antwort vom Server übertragen wird, verschlüsselt. Alle Systeme dazwischen, z.B. (transparente) Proxies können die URL und damit auch Benutzername und Passwort sehen. Es wird so auch im Logfile des Servers gespeichert. Du solltest Benutzername und Passwort statt per GET- besser per POST-Request übermitteln, denn damit zählt es zum Content und wird mittels SSL verschlüsselt.

    Gruss
    McPringle
    Flattr this
  • McPringle schrieb:


    Du weisst, dass Benutzername und Passwort auf diese Art und Weise nicht verschlüsselt werden?

    Das ist mir jetzt neu. Wie soll das Funktionieren, dass bei einem GET kein HTTPS greift? Ich bin verwirrt und erbitte Aufklärung.

    Edit Die Frage war eher rhetorisch. RFC 2818 definiert HTTPS wie folgt

    RFC 2818 schrieb:

    Conceptually, HTTP/TLS is very simple. Simply use HTTP over TLS precisely as you would use HTTP over TCP.

    Keine Rede davon, dass irgendetwas im Klartext übertragen wird. Es ist einfach nur HTTP, auf einer verschlüsselten Verbindung (um die sich HTTP eigentlich gar nicht schert).
    Mit den Server-Logs ist es dann natürlich eine andere Geschichte, unter anderem auch deshalb würde ich von Login-Daten im GET abraten. HTTPS Proxies klingt dann wirklich spannend, wo bekommt man die? Am besten die transparenten, das ist eh meine Lieblingsfarbe ;)
    C++

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von zerm ()

  • McPringle schrieb:

    Quellcode

    1. aURL = @"https://mein.server.de/index.php?login=user&pass=123456";


    Du weisst, dass Benutzername und Passwort auf diese Art und Weise nicht verschlüsselt werden? So ist nur der Content, der als Antwort vom Server übertragen wird, verschlüsselt. Alle Systeme dazwischen, z.B. (transparente) Proxies können die URL und damit auch Benutzername und Passwort sehen. Es wird so auch im Logfile des Servers gespeichert. Du solltest Benutzername und Passwort statt per GET- besser per POST-Request übermitteln, denn damit zählt es zum Content und wird mittels SSL verschlüsselt.

    Gruss
    McPringle

    AUA!
  • McPringle schrieb:

    Quellcode

    1. aURL = @"https://mein.server.de/index.php?login=user&pass=123456";


    Du weisst, dass Benutzername und Passwort auf diese Art und Weise nicht verschlüsselt werden? So ist nur der Content, der als Antwort vom Server übertragen wird, verschlüsselt. Alle Systeme dazwischen, z.B. (transparente) Proxies können die URL und damit auch Benutzername und Passwort sehen. Es wird so auch im Logfile des Servers gespeichert. Du solltest Benutzername und Passwort statt per GET- besser per POST-Request übermitteln, denn damit zählt es zum Content und wird mittels SSL verschlüsselt.

    Das stimmt nicht, versuch mal mit WireShark HTTPS-URLs auszulesen, da findest du ausser natürlich dem Hostnamen rein gar nichts. Auch HTTPS-URLs sind verschlüsselt weil zuerst eine SSL-Verbindung aufgebaut wird und dann darüber alle HTTP Daten geschickt werden.

    Also zum Fragesteller: Nein, wie erläutert musst du nicht angeben, dass du Verschlüsselung verwendest. Ja, deine Eingaben werden so verschlüsselt übertragen.
    Widgetschmie.de • Life is too short for gadgets
  • Pascal schrieb:

    Das stimmt nicht, versuch mal mit WireShark HTTPS-URLs auszulesen, da findest du ausser natürlich dem Hostnamen rein gar nichts. Auch HTTPS-URLs sind verschlüsselt weil zuerst eine SSL-Verbindung aufgebaut wird und dann darüber alle HTTP Daten geschickt werden.
    Das, liebe Kinder, und vieles mehr, ergibt sich aus dem TCP/IP-Referenzmodell. Wenn Layer 4 noch nicht steht, ist es für Layer 5 eher schwierig, Daten auszutauschen.
  • Erst mal vielen Dank an alle für die vielen Antworten!

    Eine Sache ist mir jedoch noch unklar: Darf ich das Passwort verschlüsselt in den Settings speichern? Oder gilt das dann schon als gespeicherte verschlüsselte Daten?

    Pascal schrieb:


    Das stimmt nicht, versuch mal mit WireShark HTTPS-URLs auszulesen, da findest du ausser natürlich dem Hostnamen rein gar nichts. Auch HTTPS-URLs sind verschlüsselt weil zuerst eine SSL-Verbindung aufgebaut wird und dann darüber alle HTTP Daten geschickt werden.

    Also zum Fragesteller: Nein, wie erläutert musst du nicht angeben, dass du Verschlüsselung verwendest. Ja, deine Eingaben werden so verschlüsselt übertragen.


    Davon gehe ich als laie jetzt auch mal aus. Es kann doch unmöglich sein, dass der 'Mann in der Mitte' alle Seitenaufrufe bei https Verbindungen protokollieren kann. Ausserdem habe ich es auch so in Erinnerung, dass als allererstes eine SLL-Verbindung aufgebaut wird.
  • runningdave schrieb:

    Eine Sache ist mir jedoch noch unklar: Darf ich das Passwort verschlüsselt in den Settings speichern? Oder gilt das dann schon als gespeicherte verschlüsselte Daten?

    Dieses solltest du sowieso in den Keychain speichern. Dort ist er verschlüsselt, am richtigen Ort und du musst nicht angeben, dass du Verschlüsselung verwendest. :)
    Widgetschmie.de • Life is too short for gadgets