Eran(Encrypted remote access node)

    • Beta
    • Open Source

    Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

      Eran(Encrypted remote access node)

      Beispielaufbau für einen Thread im Showroom (diese Vorlage kann beliebig angepasst werden):

      Name:
      Eran

      Beschreibung:
      Es handelt sich hierbei um einen Verschlüsselungsmessenger. Hierbei werden die Algorithmen AES 256bit und RSA 2048bit genutzt. Der Schlüsselaustausch erfolgt über RSA worauf dann die Kommunikation in AES fortgesetzt wird wenn Client und Server sich auf einen Schlüssel geeinigt haben. Das selbe verfahren wird denn zusätzlich nochmal angewendet wenn ein Nutzer einen anderen Nutzer Kontaktiert damit der Server keine Nachrichten zwischen den Nutzern mitlesen kann(der Server ist ebenfalls OpenSource)

      Screenshot(s):


      Verwendete Programmiersprache(n) und IDE(s):
      Visual Basic .NET / IDE VB 20010 Express

      Systemanforderungen:
      .Net Framework 4

      Systemveränderungen:
      Das Programm installiert sich in das AppData verzeichnis.

      Download(s):
      86x Installer
      64x Installer
      86x Zip

      WebSite: project-eran.wincrypt.org/
      Organisation: WinCrypt.org

      Lizenz/Weitergabe:
      OpenSource/GPL v3
      Ich weis nicht weshalb auf der Webseite z.b. ganz unten sowas steht:

      HTML-Quellcode

      1. <p><a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p>

      Die Webseite hat außerdem kein Icon

      wincrypt.org/wp-content/uploads/2016/04/support.png ragt aus dem Post heraus.

      Mr. Johny schrieb:

      OpenSource

      Wo sind die Links zum Code?

      project-eran.wincrypt.org/wp-c…/uploads/2016/04/menu.png
      Warum wird das ganze weiß wenn man draufklickt?

      Mr. Johny schrieb:

      Der Schlüsselaustausch erfolgt über RSA worauf dann die Kommunikation in AES fortgesetzt wird wenn Client und Server sich auf einen Schlüssel geeinigt haben.

      Wie schützt sich das ganze gegen MITM-Ags?

      Mr. Johny schrieb:

      IDE VB 20010 Express



      Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Danke für die Hinweise, die seite befindet sich noch im aufbau. Die Sources findet ihr hier
      github.com/WinCrypt/WinCrypt/tree/master/Eran

      //Edit
      Und das mit MITM wird noch dran gearbeitet, noch ist es möglich den Public Key vom Client abzufangen und auszutauschen mit seinem eigenen. Da muss ich wirklich schauen wie ich das mache das der Public Key nicht ausgetauscht werden kann während der Übertragung vielleicht hat hier ja jemand tipps wie man das Realisieren kann.(Und wiki hab ich alles dazu schon durchgelesen, aber auch wenn ein zweiter kanal mit authentifiziert ist die immer noch kein schutz vor MITM.) Allgemein ist es enorm schwer sich mit nur einer Inetleitung vor MITM zu schützen.

      Zitat entfernt. ~Thunderbolt

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

      Da ist ja schon, und ob 2048 oder 8096 ist nur die verschlüsselungsstärke ändert aber nichts an dem schutz von MITM. Es stellt sich also die frage von welcher art von MITM hier ist. Wenn man sich diese Methode anschaut wie der Herr von SemperVideo das beschreibt() so ist der Messenger vor solche Art des angriffes geschützt, da der Client seinen PublicKey an den Server schickt und nicht wie üblich der Server an den Client. Der Angreifer empfängt also nur die Verschlüsselten daten wieder die der Server verschlüsselt mit dem PublicKey vom Client. Aber was ist wenn jemand direkt den kompletten Traffic umleitet(z.b. ein Geheimdienst sitzt beim Provider und manipuliert den Traffic, so kann der Angreifer direkt den PublicKey mit seinen eigenen Austauschen) Wie kan man sich vor so einem Angriff schützen?
      Ich meinte einen key der einmal vom Server generiert wurde und dann für immer in der exe steckt. Deshalb auch 8096 mit nem botnet sind 2048 nach nen paar woche bis Jahren geknackt 8096 hält da viel länger durch. Dann kann der Geheimdienst nur die Exe austauschen und dadurch das der sowieso mit etwas Aufwand im Rechner vom Client sitzt ist das auch wieder wurst.


      Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Klar ich weißt waas du meinst, allerdings ist dies auch Manipulierbar wenn der gesamte Traffic einer Leitung gefiltert wird und ggf. Daten Manipuliert werden werden können. Denn nützt auch kein PublicKey im Server der Hardcoded ist wenn meine Inetleitung mitgelesen wird und schon beim Empfangen des PublicKeys vom Server der PubKey einfach ausgetauscht wird. Klar bietet die Methode die du beschreibst etwas mehr sicherheit bzw. der aufwand wäre etwas höher, da man bei der Methode die du meinst den PubKey z.b. über einen anderen Server auslesen kann und abgleichen kann. Aber all dies kann Manipuliert werden wenn der GESAMTE Traffic einer einzelnen PrivatPerson mitgeschnitten wird und ggf. manipuliert wird.
      Es gibt keine 8096 Bit, die entsprechende Schlüsselgröße wäre 8192 Bit. Es gibt sonst noch 4096 Bit.

      Und wenn man den PublicKey austauschen kann, hast Du das ziemlich falsch implementiert... Deswegen kompiliert man sowas auch ein. Sonst macht das komplette asymm. Kryptosystem doch gar keinen Sinn und würde ja nichts nutzen.

      BTW: https://twitter.com/progtrade/status/681579158615552010

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hier ist mal ein Szenario wenn der Hacker den gesamten Traffic Filtert und ggf. Manipuliert. Wie soll man so ein Problem lösen können? Die einzigste Möglichkeit wäre das die Verifizierung über eine komplett andere Internetleitung geht.


      //Edit
      Anders würde es aussehen wenn der Hacker an der Leitung vom Server hängt. Da wäre dies für den Hacker nicht möglich MITM zu spielen. Aber darum geht es ja nicht, es geht darum wenn ein Hacker direkt bei dem Nutzer seinen gesamten Traffic filtert und manipuliert.
      Bilder
      • Hacker.png

        106,62 kB, 1.000×700, 285 mal angesehen
      Für den Schlüsselaustausch kannst du ja ein Signaturverfahren verwenden. Ich weiß jetzt nicht in wie weit du dich schon damit auseinander gesetzt hast, aber das Funktionsprinzip dahinter: Um eine Nachricht zu übertragen, erstellst du über die Nutzdaten eine Prüfsumme (Hash mit z.B. SHA) und verschlüsselst sie mit dem eigenen Private Key. Anschließend hängst du Nachricht und verschlüsselte Prüfsumme aneinander und verschlüsselst die mit dem Public Key des Empfängers und schickst die entstandene Nachricht weg. Der Empfänger braucht dann nur noch die Nachricht mit seinem Private Key entschlüsseln, die. Prüfsumme einmal selber über die Nachricht (den Key) errechnen und die empfange Prüfsumme mit dem Public Key des Senders entschlüsseln und vergleichen. Wenn beide identisch sind, weiß der Empfänger, dass die Nachricht sicher von dir ist und keinem MITM.

      Lg Radinator
      In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
      Gegen ein Mitschneiden der Verbindung hilft eine SSL Verschlüsselung und ein ordentliches prüfen des Zertifikats.

      Aber der Witz bei asymmetrischem Schlüsselaustausch liegt doch darin dass nur Daten getauscht werden die es Dritten nicht ermöglichen die privaten Schlüssel zu errechnen und ihnen somit nichts bringen, oder?
      @Solaris der Angriff erfolgt so:
      1. Client sendet Public Key an den Server
      2. MITM fängt den Schlüssel ab und sendet eigenden Public Key an den Server.
      3. Server sendet seinen Public Key verschlüsselt mit dem Public Key des MITM an den Client bzw. den MITM weiter.
      4. MITM sendet eigenen Public Key mit dem Orginalpublic Key des Client verschlüsselt an den Client und entschlüsselt den Public Key des Servers
      5. Nun kann der MITM alles mitlesen


      Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Und eben dagegen hilft eine Signatur, denn sobald der Angreifer die Nachricht manipulier, ist die Prüfsumme anders. Daher weiß der Empfänger dass die Nachricht manipuliert wurde. Und kann folglich entweder die Anfrage verwerfen oder eine Re-Transmission anfordern (muss halt inneinem Protokoll definiert werden).
      Lg Radinator

      PS: In der IHK Abschlussprüfung Winter 2015 sollte man anhand eines Schaubildes den Ablauf erklären. Gezeigt war eben ein Signaturverfahren. Bei Bdarf einfach mich per PN anschreiben.
      Edit: @'Mr. Jonny': Wo genau hast du in deinem Projekt eigentlich dein SecureDesktop implementiert? Bin iwie zu doof des zu finden.


      In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Radinator“ ()

      Mokki schrieb:

      @Solaris der Angriff erfolgt so:
      1. Client sendet Public Key an den Server
      2. MITM fängt den Schlüssel ab und sendet eigenden Public Key an den Server.
      3. Server sendet seinen Public Key verschlüsselt mit dem Public Key des MITM an den Client bzw. den MITM weiter.
      4. MITM sendet eigenen Public Key mit dem Orginalpublic Key des Client verschlüsselt an den Client und entschlüsselt den Public Key des Servers
      5. Nun kann der MITM alles mitlesen


      Lg Mokki


      So wie Mokki das Beschrieben hat liegt ja das Problem, wenn der MITM als Client für den Server Agiert und als Server für den Client. Die einzigste Möglichkeit davor wirklich Schutz zu bekommen wäre über eine Zweite Leitung/Internetverbindung z.b. das bekannte TAN Verfahren per SMS. Da es sich hierbei um ein OpenSource Projekt handelt sind feste RSA Keys in Programmen nicht möglich, da der Server als auch der Client OpenSource ist. Ich denke wir sind hier im Forum nicht die einzigsten die da über eine Lösung nachdenken außer dem TAN Verfahren. Wir brauchen Kryptographen ^^
      Es ist unmöglich ein Geheimnis auszutauschen wenn jeder sieht was man redet. Die einzigen Möglichkeiten sind feste Schlüssel die z.b. zu einem Server führen der alle anderen Public Keys hat oder ein Physischen Kontakt der Personen. Bei Zertifikaten oder Signaturen ist das ja auch so: wenn beim ersten Mal etwas ausgetauscht wurde, ist der Client verwundbar.

      Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Ä-hem...hat überhaupt irgendwer meinen Beitrag gelesen?
      @Mr. Johny: Das Problem mit dem MITM kannst du über diese Signaturen umgehen. Wenn jetzt der Angreifer die Nachricht ändert, kann er das nicht tun ohne auch die Signatur zu ändern...d.h wr muss erst die Nachricht ändern, dann die veränderte Nachricht mit dem Privten Schlüssel des Sender verschlüsseln (den er ned hat) und dann das ganze zusammenketten und weiter schicken (was er ned kann, weil er den privaten Key des Senders ned hat). Er kann zwar die Nachricht ändern, aber wenn er das tut, ändert sich auch der Hash, damit erkennt der Empfänger eine Manipulation.
      In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

      Radinator schrieb:

      Ä-hem...hat überhaupt irgendwer meinen Beitrag gelesen?
      @Mr. Johny: Das Problem mit dem MITM kannst du über diese Signaturen umgehen. Wenn jetzt der Angreifer die Nachricht ändert, kann er das nicht tun ohne auch die Signatur zu ändern...d.h wr muss erst die Nachricht ändern, dann die veränderte Nachricht mit dem Privten Schlüssel des Sender verschlüsseln (den er ned hat) und dann das ganze zusammenketten und weiter schicken (was er ned kann, weil er den privaten Key des Senders ned hat). Er kann zwar die Nachricht ändern, aber wenn er das tut, ändert sich auch der Hash, damit erkennt der Empfänger eine Manipulation.


      Ja was ist aber wenn der MITM von einer eigenen verschlüsselten nachricht auch seinen eigenen Hashwert mit sendet von der nachricht? Der server erkennt es halt als nachricht vom eigentlichen Client, allerdings gibt der MITM sich ja als diesen Client aus. Der Server unterhält sich dann mit dem MITM und der MITM verarbeitet dementsprechend die eingehnden nachrichten vom Server und schickt sie an den hauptsächlichen nutzer.