138701
Goto Top

Sichere Verschlüsselung

Hallo zusammen,

Ich brauche eine gute Verschlüsselungsmethode für einen kurzen String (<100 Zeichen).

openssl_encrypt scheint die einzige Option zu sein, denn ich möchte keine externen Libraries benutzen und auch nicht mit MCrypt arbeiten. Jetzt habe ich zwei Probleme:

1. Ich kann mich nicht für eine Methode entscheiden... Immerhin gibt es mindestens 50 und jeder Programmierer im Web empfiehlt eine andere. Im Manual wird aes-256-gcm verwendet, weswegen ich es zuerst damit versuchte. Doch bei der Entschlüsselung werden nicht nur der Ciphertext und der Schlüssel verwendet, sondern ein IV und TAG werden ebenfalls benötigt. Wenn ich die beiden jedes Mal in den Ciphertext reinmische, wird dieser so lang, dass er meiner Meinung nach zu viel Speicher verwendet. Der String sollte möglichst nicht länger werden...

2. Egal wie ich arbeite, der Ciphertext ist immer mindestens 33% größer als der originale Text.

Wie sähe ein möglicher Code aus, der
- Schnell verarbeitet wird (<0.4s)
- Einen möglichst kurzen Ciphertext erstellt
- Und sicher ist?

Content-Key: 577664

Url: https://administrator.de/contentid/577664

Printed on: April 25, 2024 at 07:04 o'clock

Member: Henere
Henere Jun 07, 2020 at 21:05:52 (UTC)
Goto Top
Servus.
Doppelt-ROT-13

SCNR

Henere
Member: cykes
cykes Jun 08, 2020 at 04:57:38 (UTC)
Goto Top
Moin,

Zitat von @138701:
Ich brauche eine gute Verschlüsselungsmethode für einen kurzen String (<100 Zeichen).
Schön, aber zu welchem Anwendungszweck genau? Geht es Passwörter? Was ist für Dich "gut", also Dein Bewertungskriterium?

openssl_encrypt scheint die einzige Option zu sein, denn ich möchte keine externen Libraries benutzen und auch nicht mit MCrypt arbeiten. Jetzt habe ich zwei Probleme:
Dann verwende eben openssl_encrypt, wenn Du Dir selbst diese Vorgaben machst.

1. Ich kann mich nicht für eine Methode entscheiden...
Bei der Entscheidungsfindung können wir Dir auch eher schlecht helfen, denn
Immerhin gibt es mindestens 50 und jeder Programmierer im Web empfiehlt eine andere.
Da wirst Du wohl alle 50+ durchgehen müssen und für Dich bewerten müssen.
[...] aes-256-gcm [...]. Doch bei der Entschlüsselung werden nicht nur der Ciphertext und der Schlüssel verwendet, sondern ein IV und TAG werden ebenfalls benötigt. Wenn ich die beiden jedes Mal in den Ciphertext reinmische, wird dieser so lang, dass er meiner Meinung nach zu viel Speicher verwendet. Der String sollte möglichst nicht länger werden...
Naja, aber was erwartest Du denn bei Verschlüsselung, wenn es nicht nur ein Ersetzungsalgorithmus ist? Du musst immer irgendwie den Schlüssel mit übertragen, sonst kann das Gegenüber damit rein gar nichts anfangen. Auch wenn der Schlüssel separat übertragen wird, nimmt er dennoch Speicherplatz ein.
2. Egal wie ich arbeite, der Ciphertext ist immer mindestens 33% größer als der originale Text.
Siehe oben
Wie sähe ein möglicher Code aus, der
- Schnell verarbeitet wird (<0.4s)
- Einen möglichst kurzen Ciphertext erstellt
- Und sicher ist?
Die Verabeitungsgeschwiundigkeit dürfte wohl stark systemabhängig sein. Du wirst nicht umhinkönnen, Dich etwas intensiver mit den verschiedenen Algorithmen auseinanderzusetzen. Es bringt Dir ja auch nichts, wenn wir hier jetzt anfangen, andere Algorithmen vorzuschlagen bzw. aufzulisten, die Dir dann aus dem einen oder anderen Grund nicht passen. Mit Deinen Vorgaben wirst Du aber nichts optimal passendes finden. Irgendwo wirst Du einen Kompromiss eingehen oder das Ding selbst programmieren müssen.

Gruß

cykes
Mitglied: 117471
117471 Jun 08, 2020 at 05:47:26 (UTC)
Goto Top
Hallo,

warum?

Passwörter werden gehasht und Authentifizierung erfolgt durch Zertifikate.

Gruß,
Jörg
Mitglied: 138701
138701 Jun 08, 2020 at 07:35:59 (UTC)
Goto Top
Ich setze mich zum ersten Mal mit Verschlüsselungsmethoden auseinander und mit Sicherheit sind hier erfahrenere Sicherheitstechniker unterwegs. Ich bin offen für jede Idee.
Member: Lochkartenstanzer
Solution Lochkartenstanzer Jun 08, 2020 updated at 07:47:49 (UTC)
Goto Top
Zitat von @138701:

Hallo zusammen,

Ich brauche eine gute Verschlüsselungsmethode für einen kurzen String (<100 Zeichen).

openssl_encrypt scheint die einzige Option zu sein, denn ich möchte keine externen Libraries benutzen und auch nicht mit MCrypt arbeiten. Jetzt habe ich zwei Probleme:

1. Ich kann mich nicht für eine Methode entscheiden... Immerhin gibt es mindestens 50 und jeder Programmierer im Web empfiehlt eine andere. Im Manual wird aes-256-gcm verwendet, weswegen ich es zuerst damit versuchte. Doch bei der Entschlüsselung werden nicht nur der Ciphertext und der Schlüssel verwendet, sondern ein IV und TAG werden ebenfalls benötigt. Wenn ich die beiden jedes Mal in den Ciphertext reinmische, wird dieser so lang, dass er meiner Meinung nach zu viel Speicher verwendet. Der String sollte möglichst nicht länger werden...

Moin,

Wenn Du "die beste Verschlüsselung willst", mußt Du die Vollbitverschlüsselung vom Kryptochef nehmen (leider nur noch über archive.org erreichbar https://web.archive.org/web/20060604033443/http://kryptochef.de/ ).

Ansonsten mußt Du Dir einen Benchmark ausdenken und die veschiedenen Verfahren gegeneinander testen. Denn wir können nicht für Dich das nciht entscheiden.

Die Frage ist doch auch , welchem Verwendungszweck das ganze dient. Ich nehme z.B. gerne gpg, wenn ich veschlüsselte Dateien oder Dokumente übertragen will. Das geht natürlich auch mit kurzen strings über eine Pipe.

2. Egal wie ich arbeite, der Ciphertext ist immer mindestens 33% größer als der originale Text.

Wie sähe ein möglicher Code aus, der
- Schnell verarbeitet wird (<0.4s)
- Einen möglichst kurzen Ciphertext erstellt
- Und sicher ist?

Du bist Dir aber schon bewußt, daß diese drei Kritereien gegeneinander arbeiten. Wenn etwas sicher sein soll, darf das nicht auf Kosten der Zeit udn irgendwelchen Größenbeschränkungen gehen. (z.B. alle Schlösser am Haus abzuschließen dauert länger als wenn man nur die Tür zu zieht)

Wenn etwas schnell verarbeitet wird, hat man keine Zeit, das nach Platz oder Sicherheit zu optimieren. (z.B. alle Schlösser am Haus abzuschließen dauert länger als wenn man nur die Tür zu zieht)

Wenn etwas wenig Platz brauchen soll, mußt Du mehr Zeit investieren.

Außerdem definiert sich "sicher" über die Art der Angriffe, gegen die man sich absichern will. es nützt nichts, sich einen Super-Duper-Safe hinzustellen, in den man nicht ohne weiteres reinkommt, wenn man den "einfach mit dem Auto klauen kann". face-smile

Es hilft nichts, Du mußt selbst Hand anlegen und testen.

Und vor allem mal sagen, wofür das gut sein soll.

lks

Edit: Hat sich mit dem Post vom TO überschnitten.
Member: Lochkartenstanzer
Lochkartenstanzer Jun 08, 2020 at 07:46:04 (UTC)
Goto Top
Zitat von @138701:

Ich setze mich zum ersten Mal mit Verschlüsselungsmethoden auseinander und mit Sicherheit sind hier erfahrenere Sicherheitstechniker unterwegs. Ich bin offen für jede Idee.

Dann schreib mal, was Sinn und Zweck des ganzen ist und gegen welche Angriffe Du Dich schützen willst.

lks
Mitglied: 138701
138701 Jun 08, 2020 at 08:32:43 (UTC)
Goto Top
Und vor allem mal sagen, wofür das gut sein soll.
Ich habe einen Chatroom programmiert und möchte die einzelnen Nachrichten verschlüsseln, sodass sie nur für ausgewählte Benutzer sichtbar sind (Jeder Benutzer hat einen eigenen Code)
Member: maretz
maretz Jun 08, 2020 at 08:38:38 (UTC)
Goto Top
Ehrlich gesagt würde ich da einfach ne Standard-Version nehmen und drauf ka ob da jetzt 20% mehr is. Denn du hast ja dann eh protokoll-overhead mit drin. Wenn du jetzt nicht grade auch nen File-Transfer mit hast bei dem du eben relevante Grössen erreichst sollte das passen.

Jetzt kommt es dann eher darauf an was du genau machst... Wenn du einen 1:1 Chat baust ist das ganze kein problem mit der Verschlüsselung, bei einem 1:n oder n:n kann das halt etwas aufwendiger werden (oder du gehst auf Serverbasiert).
Mitglied: 138701
138701 Jun 08, 2020 updated at 08:48:55 (UTC)
Goto Top
Es gibt mehrere Chatrooms, die mit den selben Scripts arbeiten. Eine Nachricht wird über Ajax an ein PHP-Script gesendet, welches diese verarbeitet und in eine Datei schreibt. Mit einem anderen Script werden per Ajax alle 2 Sekunden alle Nachrichten aus der Datei gelesen und der Inhalt eines HTML-Elements damit überschrieben.
Mitglied: 138701
138701 Jun 08, 2020 at 08:50:05 (UTC)
Goto Top
Standard-Version nehmen und drauf ka ob da jetzt 20% mehr is
20% mehr sind total OK ...... Es gibt auch Methoden mit 500%...
Mitglied: 117471
Solution 117471 Jun 08, 2020 at 09:37:24 (UTC)
Goto Top
Hallo,

Zitat von @138701:

Ich habe einen Chatroom programmiert und möchte die einzelnen Nachrichten verschlüsseln, sodass sie nur für ausgewählte Benutzer sichtbar sind (Jeder Benutzer hat einen eigenen Code)

Wie gesagt - das ist absoluter Humbug was Du da vor hast.

Hier wendet man das so genannte "Private Key" Verfahren an: https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem

Ich kann mir auch vorstellen, dass da schon diverse vorgefertigte Libraries usw. gibt - ich persönlich nutze PGP seit 1995.

Gruß,
Jörg
Member: Lochkartenstanzer
Lochkartenstanzer Jun 08, 2020 at 11:02:40 (UTC)
Goto Top
Zitat von @117471:

Hallo,

Zitat von @138701:

Ich habe einen Chatroom programmiert und möchte die einzelnen Nachrichten verschlüsseln, sodass sie nur für ausgewählte Benutzer sichtbar sind (Jeder Benutzer hat einen eigenen Code)

Wie gesagt - das ist absoluter Humbug was Du da vor hast.

Hier wendet man das so genannte "Private Key" Verfahren an: https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem

Ich kann mir auch vorstellen, dass da schon diverse vorgefertigte Libraries usw. gibt - ich persönlich nutze PGP seit 1995.

/me 2 seit 1991/1992. genau weiß ich es nicht mehr, aber ich wollte damals das "komische Tool" relativ bald nach erscheinen ausprobieren. face-smile

Inzwischen nutze ich gpg.

lks
Mitglied: 117471
117471 Jun 08, 2020 at 11:57:29 (UTC)
Goto Top
Hallo,

Zitat von @Lochkartenstanzer:

Inzwischen nutze ich gpg.

Ich gar nichts. Ich habe festgestellt, dass meine E-Mail-Partner durch die Signatur eher mißtrauisch werden als dass diese Vertrauen schafft.

Gruß,
Jörg
Member: Lochkartenstanzer
Lochkartenstanzer Jun 08, 2020 at 12:06:55 (UTC)
Goto Top
Zitat von @117471:

Zitat von @Lochkartenstanzer:

Inzwischen nutze ich gpg.

Ich gar nichts. Ich habe festgestellt, dass meine E-Mail-Partner durch die Signatur eher mißtrauisch werden als dass diese Vertrauen schafft.


Ich nutze gpg selektiv, d.h. zu Partnern, die etwas damit anzufangen wissen, bzw. denen ich erklärt habe wie das funktioniert.

Bei anderen nutze ich für die Vertrauliche Übertragung andere verfahren.

lks
Mitglied: 138701
138701 Jun 08, 2020 at 15:02:02 (UTC)
Goto Top
Und wie benutze ich pgp in PHP?
Mitglied: 144260
Solution 144260 Jun 08, 2020 updated at 15:06:42 (UTC)
Goto Top
Zitat von @138701:

Und wie benutze ich pgp in PHP?
Nativ ... RTFM => https://www.php.net/manual/de/book.gnupg.php
Mitglied: 138701
138701 Jun 08, 2020 at 17:32:23 (UTC)
Goto Top
Ich hoste meine Website und habe dadurch keinen Zugriff auf die PHP-Installation oder die php.ini
Mitglied: 117471
117471 Jun 08, 2020 at 18:28:01 (UTC)
Goto Top
Hallo,

Zitat von @138701:

Ich hoste meine Website und habe dadurch keinen Zugriff auf die PHP-Installation oder die php.ini

Dann kannst Du das Gewünschte leider nicht mit deinen Ressourcen umsetzen.

Gruß,
Jörg