Schmidt: Daten sichern durch Verschlüsselte Datei auf Webserver?

Hallo ihr Lieben,

ich möchte eine Art online Adressbuch programmieren. Um alles recht einfach zu halten, das einfach sichern zu können, einfach den Server wechseln zu ukönnen, etc. möchte ich die Daten in je einer Datei pro Kontakt speichern.

Nun verwend ich aber Freien Webspace und bin auch so recht besort um die sensiblen Daten.

So dachte ich mir ich verschlüssele die Dateien mit einem Schhlüssel, der gleichzeitig das Loginpasswort ist.

Man meldet sich mit dem Schlüssel an und dann erst weiß mein PHP Script den Schlüssel zum entschlüsseln, entschhlüsselt die Dateinen und bearbeitet sie.

SOllte warum auch immer nun jemand an die Kontaktdateien kommen, so dachte ich mir, kann er (unter vertretbarem Aufwand) nichts damit anfangen.

Jedoch scheint das eine Milchmädchenrechnung zu sein, denn der Schlüssel wird in reinform eingeben und übertragen (kein https) und ist die ganze session über in einer Variable gespeichert.
Das sind riesige Schwachstellen, richtig?

Habt ihr eine Idee?

Vielen Dank

  1. Hello,

    Man meldet sich mit dem Schlüssel an und dann erst weiß mein PHP Script den Schlüssel zum entschlüsseln, entschhlüsselt die Dateinen und bearbeitet sie.

    Hast Du schon aml eine Sicherheitszonenplan erstellt?

    Wo läuft Dein Dateiserver nebst PHP-API dafür? Steht der bei Dir zuhause im Sicherheitsbereich oder noch besser, per illegaler Leitung von Dir aus zu einem Deiner Nachbarn?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. hi,

    Nun verwend ich aber Freien Webspace und bin auch so recht besort um die sensiblen Daten.

    Ab Deiner Rj45 Buchse am PC ist die Umgebung nicht vertrauenswürdig. Legst Du da verschlüsselte Daten hin, ist es nur eine Frage der Zeit, bis der Schlüssel geknackt ist.

    Bei sicheren Verbindungen in nichtvertrauenswürdigen Umgebungen wird daher der Schlüssel ständig geändert. Dazu gibt es Verfahren zum Schlüsseltausch, z.B. Diffie Hellmann. Das wäre mal was zum Anschauen, ist im wiki beschrieben.

    Horst Leberwurst

  3. Na gut, ich formuliere um:

    Ich möchte ein Online Adressbuch programmmieren unter Verwendung von Kostenfreiem Webspace im Internet.

    Wie sollte ich am besten vorgehen um die Daten bestmöglich vor dem Zugriff Fremder zu schützen?

    1. hi,

      Wie sollte ich am besten vorgehen um die Daten bestmöglich vor dem Zugriff Fremder zu schützen?

      Na, wie schon gesagt: Bei verschlüsselten Daten in einer nichtvertrauenswürdigen Umgebung den Schlüssel ständig wechseln. Den Zugriff verhinderst Du damit zwar nicht, aber die Wahrscheinlichkeit der Entschlüsselung.

      Hotti

      1. Hello,

        Wie sollte ich am besten vorgehen um die Daten bestmöglich vor dem Zugriff Fremder zu schützen?

        Na, wie schon gesagt: Bei verschlüsselten Daten in einer nichtvertrauenswürdigen Umgebung den Schlüssel ständig wechseln. Den Zugriff verhinderst Du damit zwar nicht, aber die Wahrscheinlichkeit der Entschlüsselung.

        Damit müssten aber die Daten in der nicht vertrauenswürdigen Umgebung bereits verschlüsselt ankommen und abgelegt werden. Die Entschlüsselung/Verschlüsselung darf dann immer erst am vertrauenswürdigen Client geschehen.

        @Hotti und andere Stammposter privat:
        Ich habe noch ein paar Kisten Bier stehen, die weg müssen. In den ersten acht Augusttagen könnte das geschehen, nebst Übernachtung im Oberharz...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          Wie sollte ich am besten vorgehen um die Daten bestmöglich vor dem Zugriff Fremder zu schützen?

          Na, wie schon gesagt: Bei verschlüsselten Daten in einer nichtvertrauenswürdigen Umgebung den Schlüssel ständig wechseln. Den Zugriff verhinderst Du damit zwar nicht, aber die Wahrscheinlichkeit der Entschlüsselung.

          Damit müssten aber die Daten in der nicht vertrauenswürdigen Umgebung bereits verschlüsselt ankommen und abgelegt werden. Die Entschlüsselung/Verschlüsselung darf dann immer erst am vertrauenswürdigen Client geschehen.

          Ja, genau...

          @Hotti und andere Stammposter privat:
          Ich habe noch ein paar Kisten Bier stehen, die weg müssen. In den ersten acht Augusttagen könnte das geschehen, nebst Übernachtung im Oberharz...

          Lieber Tom, gerne komme ich in' Harz, aber nicht wegen Bier. Allerdings könnte ich Dir sogar beim Vernichten desselben zugucken ohne eine Miene zu verziehen, sofern ich dabei eine gute Zigarre oder ein Pfeifchen rauchen darf ;-)

          Anfang August ist für mich ein bischen früh, ab Mitte August habe ich mehr Zeit....

          Bis dann,
          Horst Harzer

          --
          Hmmm, Harzgeruch ... dont Bogart that joint ;-)
      2. Gut, vielen Dank.

        Gibt es noch einen Tipp wie ich den Schlüssel bei der Übertragung vom Eingabefeld zum PHP-Script besser schützen kann?

        1. Hello,

          Gibt es noch einen Tipp wie ich den Schlüssel bei der Übertragung vom Eingabefeld zum PHP-Script besser schützen kann?

          Benutze eine gesicherte Verbindung über HTTPS.

          Aber der Bereich der Datenspeicherung liegt immer noch ungeschützt in einem fremden Hoheitsbereich. Den solltest Du besser in deinen Hoheitsbereich verlegen.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Gut, das geht dann scheinbar tatsächlich nur mit einem eigenen kleinen Server.
            Ich hatte mal versucht einen Server unter Ubuntu einzurichten, es wurde mir allerdings zu kompliziert.

            Ich könnte evtl. einen alten Laptop dazu verwenden, sodass die Stromaufnahme nicht allzu hoch sein sollte.

            Gibt es die Möglichkeit den Webserver komfortabel mit grafischer Oberfläche einzurichten und die Oberfläche dann für den laufenden Betrieb ab zu schalten.

            Der in meinen Augen große Aufwand zur Einrichtung und Pflege des kleinen Servers stellt eine große Hürde für mich dar.
            Aber vielleicht gibt es irgendwo ein Paket, welches sehr unproblematisch ist, ich jedoch noch nicht entdeckt habe.

            Kennt jemand so etwas?

            Danke

            1. Hello,

              Aber vielleicht gibt es irgendwo ein Paket, welches sehr unproblematisch ist, ich jedoch noch nicht entdeckt habe.

              Ich habe mit der Debian-Netinstall-Variante bisher nur Probleme gehabt, wenn die Harware nicht ganz fit war, was bei meinen alten Krücken hier durchaus der Standard war. Meistens war es der Speicher, der nicht schnell genug war für die neueren Linux-Kernels.

              Ausgetauscht - schon läuft es.

              Eine grafische Oberfläche benötigst Du allerdings nicht, wenn das Gerät nur für Dienste benutzt werden soll, wie Fileserver, Webserver, MySQL-Server, PHP-Host, Mailserver usw.

              Es gibt von MSI inzwischen absolute Slimline-Hosts, die kaum noch Leistung benötigen.
              Die sogenannte "MSI Windbox" benötigt ca. 20 bis 30Watt im Normalbetrieb. Es gibt das Gerät vorinstalliert mit WindowsXP Home oder Pro und mit Linux (i.d.R. Suse)

              Da sie auch per USB-Stick gebootet werden kann, kannst Du auch leicht jede übliche Linux-Netinstall-Version aufspielen.

              Wir haben mehrere von den Dingern im Betrieb laufen. Sie sind leise und zuverlässig. Nur das Booten der Windows-bestückten braucht ein Weilchen. Da merkt man dann doch den abgespeckten Prozessor.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
    2. Hello,

      Na gut, ich formuliere um:

      Ich möchte ein Online Adressbuch programmmieren unter Verwendung von Kostenfreiem Webspace im Internet.

      Wie sollte ich am besten vorgehen um die Daten bestmöglich vor dem Zugriff Fremder zu schützen?

      Du solltest das Adressbuch programmieren, Dir einen DSL-Always.On-Anschluss beschaffen und dann per DynDNS die Namensauflösung darauf betreiben. Auf Deinem Webspace in deinem persönlichen Sicherheitsbereich richtest Du dann einen HTTPS-Dienst ein.

      Nun kannst Du von überall aus auf die Daten zugreifen, ohne besonders angreifbar zu sein. Da ich davon ausgehe, dass Du dir keinen bezahlten Key für SSL mietest, sondern dies selber regeln möchtest, wirst DU forthin eine USB-Stick mit deinem Zertifikat mitführen. Damit kannst Du auch auf fremdem PCs sicherstellen, dass der Server, mit dem Du dich per SSL (HTTPS) verbinden willst, auch wirklich Dein eigener ist. Die verbleibene Fehlerquote ist extrem gering (ich weiß jetzt leider gerade nicht, wie gering).

      Alle anderen von Dir angedachten Möglichkeiten, insbesondere Billigwebspace bei einem Dir persönlich unbekannten Provider, sind unsicher.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  4. Hi!

    Man meldet sich mit dem Schlüssel an und dann erst weiß mein PHP Script den Schlüssel zum entschlüsseln, entschhlüsselt die Dateinen und bearbeitet sie.
    Jedoch scheint das eine Milchmädchenrechnung zu sein, denn der Schlüssel wird in reinform eingeben und übertragen (kein https) und ist die ganze session über in einer Variable gespeichert.
    Das sind riesige Schwachstellen, richtig?

    Auch ohne eine Speicherung in der Session bleibt das riskant.

    Die Frage ist ja immer, wem man vertraut. Wenn du dem Server vertraust, beauftrage ihn mit der Entschlüsslung. Das machst du aber nicht, denn sonst wäre es ja nicht notwendig, die Daten verschlüsselt dort abzulegen. Wenn du den Schlüssel zum Server sendest, muss er dort in Klarform auftauchen, um die Daten zu entschlüsseln. Eine verschlüsselte Übertragung nützt dir nicht viel, denn die ist ja hinten und vorn offen. Der Serverbetreiber oder jemand mit unberechtigtem Zugang zu diesem Server kann dein Passwort oder deinen Schlüssel abfangen und ...

    Schwerer kann man es nur machen, wenn nicht nur ein einziger Schlüssel für sämtliche Daten vorgesehen ist, dann dauert es eben länger, an alle Daten zu kommen. Aber immerhin kommt man an die Daten, die dir wichtig sind, denn die fragst du ja gelegentlich ab.

    Einen Dritten, auf den im Falle einer Abfrage temporär die Daten und Schlüssel gebracht werden können, hast du nicht, denn dann hättest du ihn komplett zur Datenhaltung verwenden können. Denn wenn der sicher ist, warum dann noch die Unsicherheit mit den Servern in Kauf nehmen?

    Bleibt noch der jeweilige Client, an dem du die Daten abrufen willst. Auch der kann verseucht sein, besonders wenn er nicht unter deiner ständigen Obhut steht. Mal angenommen, du vertraust dem Client, so müsstest du die verschlüsselten Daten zu ihm übertragen und in einem dort auszuführenden Programm entschlüsseln. Das Problem ist, das Programm dort laufen zu lassen. Wenn du eine .exe (oder Unix- und Mac-Äquivalente) verwenden kannst, kann man darin schonmal eine Menge Verschleierungsaufwand betreiben, damit die Daten nicht so einfach von anderen Programmen aus dem Speicher gelesen oder an Ausgabeschnittstellen abgefangen werden können.

    Eine Alternative wäre, den Entschlüsslungscode in Javascript/Silverlight/Flash zu schreiben. Der nimmt dein Passwort entgegen und errechnet dir die Daten. Wie aber stellst du sicher, dass der Code auf dem Server nicht soweit manipuliert wurden, dass er das eingegebene Passwort im Hintergrund an den Server sendet?

    Es gibt eine Menge Möglichkeiten, wie man so ein System aufsetzen kann, aber alle haben mehr oder weniger Schwachstellen. Du kannst hier nur alle Umstände und Vertrauenswürdigkeiten gegeneinander abwägen und den jeweiligen Aufwand gegen das was dir deine Daten wert sind ins Verhältnis setzen.

    Lo!