Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi einfaches Verschlüsseln (https://www.delphipraxis.net/207354-einfaches-verschluesseln.html)

Willie1 16. Mär 2021 10:24

einfaches Verschlüsseln
 
Hallo Delphifreunde*innen,
ich hole etwas aus. Ich benutze den Norton Tresor für meine Passworte, PINs usw. Vor ein paar Jahren ist der Tresor abgestürzt und ließ sich nicht mehr öffnen. Das hat mir als Lehre gedient, ein Backup des Tresors abzuspeichern. Programmieren macht Spaß, deshalb will ich selbst etwas schreiben.
Die Daten zeige ich in einem Memo mit schöner großer Schrift. Den Text speichere ich mit Rar.exe in ein Passwort geschütztes Archiv. Vorher will ich das Memo noch etwas verschlüsseln, doppelt hält besser. Wie soll ich vorgehen? Die Idee mit den Nibbles kann ich nicht realisieren. Wichtig ist mir, dass der Zeilenumbruch nach dem Verschlüsseln nicht mehr sichtbar ist.
Das mit Rar (SheellExecute) habe ich schon fertig und funktioniert.

Gruß Willie.

himitsu 16. Mär 2021 10:41

AW: einfaches Verschlüsseln
 
DEC (Delphi Encryption Combendium) ... kann sein, dass es erst ab 10.3 oder 10.4 im GetIt zu finden ist (ansonsten siehe Forum und Github)
LockBox ... siehe GetIt
auch TZipFile kann Verschlüsselung


Und weil's hier immer wieder jemand nennt ... mORMot kann wohl auch vershclüsseln.

Ansonsten gibt es hier im Forum viel zum Thema Verschlüsselung zu finden.

mytbo 16. Mär 2021 11:05

AW: einfaches Verschlüsseln
 
Du hast von mir in einem anderen Thread schon eine komplette Lösung bekommen. Hier. Was gefällt dir den an einer Verschlüsselung mit AES-256 nicht?

Bis bald...
Thomas

Blup 16. Mär 2021 11:38

AW: einfaches Verschlüsseln
 
Doppelt verschlüsseln ist nicht unbedingt auch sicherer. Wichtig ist eher die Stärke der Verschlüsselung ausreichend auszulegen(Schlüssellänge).
Wenn es nur darum geht den Inhalt vor zufälliger Einsicht zu schützen (Zeilenumbrüche nicht sichtbar), reicht es vieleicht den Inhalt Base64-codiert zu speichern.

KodeZwerg 16. Mär 2021 11:45

AW: einfaches Verschlüsseln
 
Ich nutze mal die Gelegenheit um ein paar bekannte Krypto-Quellen zu benennen.

Dies ist keine Rangordnung! Nicht als solches interpretieren. Danke.

DEC Eine Sammlung die von TurboMagic gerade geupdated wird.
mORMot bzw mORMot2 Umfangreiche Sammlung als Framework verpackt, in meinen Augen sehr stabil.
CryptoLib4Pascal Man könnte sagen wie der Zwilling von DEC. (benötigt HashLib4Pascal)
LockBox bzw LockBox3 Eine weitere Krypto-Sammlung.
Gammatester Gedenk-Sammelsurium der verschiedensten Algorithmen die meist schnell und unabhänging arbeiten.
AES was keine zusätzlichen Units/Frameworks braucht (sehr schlanke Version sozusagen, für Kleinstprojekte würde ich das nehmen.)


Hier noch ein paar Kompressions-Möglichkeiten.

XZ Kompression könnte man als "Außenhaut" einbinden, dann entfällt externes Rar/Zip/7zip gedöns. (baut auf liblzma.dll auf)
LZMA nativ, benötigt keine weiteren Dlls.
7zip für Delphi 7, benötigt 7zip dll.
7zip etwas moderner gegenüber den Delphi 7 port.
oder ZLib von Delphi...

Wenn es um eigen-Kreationen geht, zeige doch mal was Du getippst hast und wir arbeiten dran.

stahli 16. Mär 2021 11:55

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Blup (Beitrag 1485283)
Doppelt verschlüsseln ist nicht unbedingt auch sicherer. Wichtig ist eher die Stärke der Verschlüsselung ausreichend auszulegen(Schlüssellänge).
Wenn es nur darum geht den Inhalt vor zufälliger Einsicht zu schützen (Zeilenumbrüche nicht sichtbar), reicht es vieleicht den Inhalt Base64-codiert zu speichern.

... oder evtl. einfach so etwas wie StringList.SaveToStream

Sinspin 16. Mär 2021 14:47

AW: einfaches Verschlüsseln
 
Ich habe mir vor Jahren auch ein eigenes Tool gebaut.
Innen drinne ist LZMA, nach dem Verschlüsseln bringt das ja nix mehr. Dann eine OTP Variante drum herum.
Das ist klein und fein. Lediglich der Editor für den Inhalt ist nicht mehr ganz zeitgemäß.

KodeZwerg 16. Mär 2021 15:57

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Sinspin (Beitrag 1485296)
Dann eine OTP Variante drum herum.

Verdoppelt sich nicht dadurch das ganze? Also ich meine Datengröße.

himitsu 16. Mär 2021 17:28

AW: einfaches Verschlüsseln
 
Was die verschlüsselten daten betrifft, das kommt drauf an.

Es gibt Verfahren, da werden die Daten mehr, aber meisten werden die Bytes 1:1 verschlüsselt und es bleibt. (vielleicht ein Salt wird zusätzlich gespeichert)


Was den OTP selbs betrifft, das kommt drauf an.
Den kann man so groß wie die Daten machen (größer ist egal, da abgeschnitten wird),
dann belegt der Key (OTP) natürlich genauso viel Platz, wie die verschlüsselten Daten.

Aber auch einen OTP kann man kleiner sein. Gut, da er dann mehrfach angewendet wird, könnte es die Sicherheit bissl vermindern.

TurboMagic 16. Mär 2021 18:41

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von himitsu (Beitrag 1485278)
DEC (Delphi Encryption Combendium) ... kann sein, dass es erst ab 10.3 oder 10.4 im GetIt zu finden ist (ansonsten siehe Forum und Github)
LockBox ... siehe GetIt
auch TZipFile kann Verschlüsselung


Und weil's hier immer wieder jemand nennt ... mORMot kann wohl auch vershclüsseln.

Ansonsten gibt es hier im Forum viel zum Thema Verschlüsselung zu finden.

Himitsu meint das hier:
https://github.com/MHumm/DelphiEncryptionCompendium

Ja, es ist eine Variante davon in GetIt zu finden und zwar in jeder Version für die es GetIt gibt aber:
die nützt dir nix. Das ist nämlich eine Lite Variante mit diversen Kryptographischen Algorithmen aber
explizit ohne Verschlüsselungsalgorithmen! Warum? EMBT will keine Probleme mit irgendwelchen US
Exportbeschränkungen die Verschlüsselung betreffen.

=> lieber direkt von der Quelle runterladen, dann hat man alles. Enthält außer ca. 40 Seiten PDF
Doku auch diverse Beispielprogramme.

Grüße
TurboMagic

Sinspin 17. Mär 2021 12:13

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von KodeZwerg (Beitrag 1485301)
Verdoppelt sich nicht dadurch das ganze? Also ich meine Datengröße.

Nein, bei mir nicht.

Zitat:

Zitat von himitsu (Beitrag 1485307)
Aber auch einen OTP kann man kleiner sein. Gut, da er dann mehrfach angewendet wird, könnte es die Sicherheit bissl vermindern.

Die Matrix als auch den Key erzeuge ich aus dem Passwort via krytografischem Zufallsgenerator.
Das produziert Angriffsfläche, daher werden die Daten vorm verschlüsseln gesalzen.
100% sicher ist die Lösung nicht. Darum geht es mir aber auch garnicht.
Ich habe nur keine Lust auf eine Textdatei in der alles in Plaintext steht.

himitsu 17. Mär 2021 12:44

AW: einfaches Verschlüsseln
 
Es wurden Fremdkomponenten genannt.

Wie geagt, ganz einfach und mit Hausmitteln:
Man kann auch einfach ein TZipFile mit Passwort verwenden
und die Datei via TMemoryStream+TStringList/TMemIniFile/TEncoding oder via TStringStream "intern" rausholen/speichern.

KodeZwerg 17. Mär 2021 14:08

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Sinspin (Beitrag 1485351)
Die Matrix als auch den Key erzeuge ich aus dem Passwort via krytografischem Zufallsgenerator.
Das produziert Angriffsfläche, daher werden die Daten vorm verschlüsseln gesalzen.
100% sicher ist die Lösung nicht. Darum geht es mir aber auch garnicht.
Ich habe nur keine Lust auf eine Textdatei in der alles in Plaintext steht.

Das klingt interessant, nette Information!
Auch Danke fürs schreiben "erst packen dann krypten", als ich das tippste hab ich noch nicht voll nachgedacht, klar ist "Rohmaterial" stärker Kompressierbar (gibts das Wort?) gegenüber verschlüsseltem Inhalt.

Willie1 18. Mär 2021 09:37

AW: einfaches Verschlüsseln
 
Hallo Freunde*innen,
es geht in der Tat darum, zu verhindern, dass jemand ohne Mühe meine Passworte einsehen könnte. Das ist sehr unwahrscheinlich, meine Frau hat ihren eigenen PC und wer sollte an meine Daten kommen. Schließlich sind meine Computer Start-Passwortgeschützt. Aber trotzdem sollen meine "Geheimnisse" nicht offen herumliegen. Ich habe 3 Einbrüche hinter mir, die Einbrecher haben sich zum Glück nicht für die Computer interessiert! Deshalb sind mir eure Hinweise sehr wichtig. Die Banken usw. bombardieren einen mit PINs, aufschreiben darf man sie nicht aber alle im Kopf behalten, geht auch nicht. Ich melde mich.

Zur Zeit bin ich dabei, einen Impftermin zu bekommen, das ist sehr kompliziert und anstrengend für mich.
Bis bald Grüße Willie.

himitsu 18. Mär 2021 10:21

AW: einfaches Verschlüsseln
 
NTFS bietet eine Verschlüsselung, die ist an den Nutzeraccount deines Windows-Benutzers gebunden.
Wenn man das nutzt, sollte man auf jeden Fall soeine Wiederherstellungsdiskette (oder wie man das jetzt nennt) erstellen, denn falls Windows kaputt ist, wären auch diese Daten futsch.

Bei mir ist es ein verschlüsseltes VBerzeichnis im NAS.

Es gibt auch USB-Sticks mit PIN oder sogar Fingerabdruckscanner.



Selbet ein "einfaches" XOR ist per se sicher.

Ver und entschlüsseln
Delphi-Quellcode:
// S = AnsiString oder UTF8String
RandSeed := .....;
for i := 1 to Length(S) do
  S[i] := AnsiChar(Ord(S[i]) xor Random(256)); // für UnicodeString 65536 da 2 Byte

Randomize; // Zufallsgenerator zufällig
Achtung: heoretisch könnte sich der Pseudozufallsgenerator von Delphi mal ändern (hat er zwar seit 20 Jahren nicht, aber könnte.
Aber man kann das "Random" ja durch eine eigene Formel ersetzen. So lange das Programm nich neu kompiliert wird, bleibt es aber auch unverändert.

Und sooo schwer sind die vorher schon genannten Verschlüsselungen auch nicht, als dass man sie nicht nutzen könnte.

Andreas13 18. Mär 2021 11:46

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Willie1 (Beitrag 1485423)
...es geht in der Tat darum, zu verhindern, dass jemand ohne Mühe meine Passworte einsehen könnte.

Du könntest mit TrueCrypt, VeraCrypt oder GostCrypt einen verschlüsselten Container auf Deiner Festplatte für Deine Daten erstellen.

Ich benutze TrueCrypt (die relativ „knack-sichere“ Version 7.1a) seit vielen Jahren als eine für mich zufriedenstellende Lösung. Dabei habe ich etliche verschlüsselte Container in der Größe von einigen 100 MB bis zu 4 TB erstellt, die ich je nach Gebrauch innerhalb von ca. 1 Sekunde hoch- und runterfahren („mounten“ & „dismounten“) kann. Bei jedwedem Internetzugang werden die gemounteten Laufwerke mit empfindlichem Inhalt wie Paßwörter, Adressenlisten, Bankverbindungen etc. blitzschnell heruntergefahren.

Für Deine Paßwörter kannst Du einen kleineren Extra-Container erstellen. Auch Container in Container ist ohne Probleme möglich.
Gruß, Andreas

DeddyH 18. Mär 2021 11:57

AW: einfaches Verschlüsseln
 
Oder noch eine ganz simple Variante: die zu "verschlüsselnden" Dateien in einen BASE64-String wandeln. Dann ein zufälliges Byte erzeugen und jedes Zeichen des BASE64-Strings damit verxodern. Ans Ende der Daten dann noch das zufällige Byte schreiben. Zum "Entschlüsseln" das letzte Byte der Daten ermitteln, damit wieder alle Bytes verxodern und das Ergebnis BASE64 dekodieren. Das ist natürlich nicht annähernd sicher, aber für einen zufälligen Betrachter tut sich da nur binärer Salat auf.

Willie1 18. Mär 2021 16:21

AW: einfaches Verschlüsseln
 
Hallo,
auf dem alten Vista-PC habe ich TrueCrypt. Der Container läuft seit Jahren prima. TC soll aber doch geknackt sein.
Mit xor habe ich gemacht aber nicht mit Random, da trau ich Delphi nicht.

Ich habe was fertig, das ich seit 10 Jahren benutze, seit 2017 mit WideString statt AnsiString . Nur hatte ich übersehen, dass bei WideString jedes 2. Byte 0 ist. Deshalb habe ich mich gemeldet. Ich habe auch etwas Camouflage betrieben, tarnen kann besser als verstecken sein.
Kann ich das Projekt hier mal vorstellen? Als Dateianhang gepackt ? oder?

Willie.

KodeZwerg 18. Mär 2021 16:34

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Willie1 (Beitrag 1485455)
Ich habe was fertig, das ich seit 10 Jahren benutze, seit 2017 mit WideString statt AnsiString . Nur hatte ich übersehen, dass bei WideString jedes 2. Byte 0 ist. Deshalb habe ich mich gemeldet. Kann ich das Projekt hier mal vorstellen? Als Dateianhang gepackt ?

Genau deswegen bat ich Dich ja im anderen Thread (speicher string) das Du ein neues Thema aufmachst um Deinen Code gerade zu biegen.
Weil kein Quelltext kam hab ich halt das Listing der Krypto und Archiver genannt.

Mir wäre es am liebsten doppelt.
Einmal als Posting mit dem Kodier/DeKodier-Teil, das man gleich sieht was einen erwartet.
Einmal eine mini Demo (.dpr, .pas, .frm, .res bei Vcl Projekten) verpackt als Archiv (.zip, .rar, .7z), da wir das einfach nur entpacken brauchen und loslegen können.

Nur so eine Idee, also um Deine Frage zu beantworten, Ja :-]

Willie1 18. Mär 2021 17:24

AW: einfaches Verschlüsseln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei die DLL als Quelltext zum Codieren/Decodieren.

Verschuesseln/Entschluesseln sind alt und nicht mehr notwendig!

Willie1 19. Mär 2021 17:10

AW: einfaches Verschlüsseln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Demo-Programm

Warum die DLL nach dem 2.,4. usw. de-kodieren abstürzt, weiß ich nicht. Der Fehler wäre mir doch längst aufgefallen, schließlich benutze ich die DLL seit 3 Jahren.
W.

JanWe 20. Mär 2021 20:14

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von Willie1 (Beitrag 1485455)
Hallo,
auf dem alten Vista-PC habe ich TrueCrypt. Der Container läuft seit Jahren prima. TC soll aber doch geknackt sein.
Mit xor habe ich gemacht aber nicht mit Random, da trau ich Delphi nicht.
Willie.

Random (und hoffentlich mit 1x Randomize; ...)

TrueCrypt ist nicht geknackt.
Also ich kann mich da jedenfalls nicht an einen Bericht erinnern, in dem das fest untermauert wurde.
Der (unter Pseudonym schreibende) Entwickler hat auf seiner Webseite behauptet, man solle TC nicht mehr verwenden, da die NSA das unterwandert habe.

Es gab ein Audit und die kamen zu dem Schluß, daß einige Fehler in der Implementierung und im Design vorlagen, die grundsätzliche Software aber sicher sei.
(wenn man die tausend antiken Tools und Compileeinstellungen mal korrekt auf seinem System angepaßt und angewendet hat, sollte das angeblich ein 100% sicheres Programm ergeben. Allerdings hat genau deshalb der öffentliche Code bei niemandem (oder nur bei einem einzigen Tester, weltweit) den gleichen binären ausführbaren Code [.exe] ergeben)

Warum Du immer noch an dem für Windows XP gedachten Truscrypt festhältst und nicht auf das mittlerweile aktuelle, darauf basierende, aber von grundauf neugeschriebene
https://veracrypt.fr

zurückgreifst, versteh ich nicht.
Das hat auch ein Audit durchgemacht, wo nichts gravierendes festgestellt und Bemängeltes danach sofort behoben wurde und welches größere Sicherheit, mehr bewährte Algorithmen und Funktionen bietet.

Sogar Universitäten setzen Veracrypt ein.
Die sollten schon wissen, warum.

Und für Passwörter würde ich ohnehin Keepass verwenden.
Das bietet glaub ich mehr Sicherheit und ist schon fertig und gut durchdacht.

Also falls Du sensible Daten wie Passworte für reale, Accountdaten (Uni, berufliche Email, etc.) speichern möchtest, solltest Du auf Selbstgebasteltes verzichten.
Das taugt nur zum Spielen und Probieren, nur ggf. zum Lernen.

Also ich hab die DLL nur kurz überflogen ...
Hab gerade wenig Zeit, Deinen Algorithmus zu analysieren,
und kann Dir daher nur Keepass und Veracrypt dringed anraten!
(seh ich das richtig, daß der Schlüssel im Programm abgelegt wird?? und EDIT: die "Verschlüsselung" scheint auch eine richtige Chiffre zu sein. äh ...)

Du kannt auch Deine KeepassDatenbank in ein VeraCrypt Laufwerk verlegen.
Mehr Sicherheit geht dann aber wirklich nicht.


und trauere nicht Deinem Norton Dingens nach.
Die hatten mal in der Norton 360 Security oder wie das Dingen hieß, eine Sicherheitsfunktion,
die warnte° mit großem Fenster, wenn Du auf Deiner Tastatur irgendwo beim Surfen und Briefe-Tippen ein im Norton gespeichertes Passwort getippt hattest oder wenn das Passwort im HTML-Text(!) usw. des Browsers (etc.) auftauchte, daß jemand Deine Passworte mißbrauchen würde.
Nochbesser konnte man Bösewichte die am PC rumfummelten gar nicht auf korrekte in der Suite gespeicherte Passworte hinweisen.
Man stelle sich vor, daß Passwort würde "/www.w3.org/199" lauten ... oder ein b64-Token im Hidden-Field ...

°= oder zumindest war das mal so. ...
Von daher ... sch.i. auf Symantec-Produkte.
Die haben bihser nur alles verkrüppelt, was sie aufgekauft haben. ALLES.

LG

Sinspin 21. Mär 2021 08:08

AW: einfaches Verschlüsseln
 
Zitat:

Zitat von JanWe (Beitrag 1485646)
Und für Passwörter würde ich ohnehin Keepass verwenden.
Das bietet glaub ich mehr Sicherheit und ist schon fertig und gut durchdacht.

Es mag zwar unter irgendwelchen Aspekten besser sein aber, es ist aber ein fertiges Programm!
Somit haben es schon alle möglichen Freaks in den Fingern gehabt und ihre Wege gefunden es zu entschlüsseln. Nur weil es nicht bekannt ist, bedeutet es nicht dass es geht.

Außerdem, wir sind hier Entwickler! Wir können uns unsere Tools selber schreiben. Vieleicht sogar besser als die bestehenden.

Zitat:

Zitat von JanWe (Beitrag 1485646)
Also falls Du sensible Daten wie Passworte für reale, Accountdaten (Uni, berufliche Email, etc.) speichern möchtest, solltest Du auf Selbstgebasteltes verzichten.
Das taugt nur zum Spielen und Probieren, nur ggf. zum Lernen.
...
Hab gerade wenig Zeit, Deinen Algorithmus zu analysieren,
und kann Dir daher nur Keepass und Veracrypt dringed anraten!

Das ist zwar an Willie1 gerichtet. Trotzdem, was für eine Arroganz!

Willie1 21. Mär 2021 18:00

AW: einfaches Verschlüsseln
 
Hallo,
ich habe absolut keine Sorge um die Sicherheit meiner Passworte im privaten Umfeld. Nur nach dem dritten Einbruch weiß ich, dass die Versicherung den Diebstahl des PCs nur nach dem Zeitwert ersetzt. Eventuelle Folgen lassen sich nicht versichern. Wie sollte das gehen.
Über TrueCrypt gibt es schon Gerüchte! Gut VeraCrypt soll TC ersetzen.
Nein, das Passwort steht nicht als Konstante im Quelltext. Jede Datei hat ein eigenes Passwort.
Jan, ich sehe, du benutzt Delphi 7 Personal, diese Version (besser noch D6) habe ich sehr geschätzt, aber inzwischen ist sie doch sehr alt.

Willie.

Sinspin 22. Mär 2021 07:46

AW: einfaches Verschlüsseln
 
Ich bewahre die verschlüsselte Datei an verschiedenen Orten auf. Macht ein bisschen arbeit die immer wieder abzugleichen, aber das ist ja mit allen Backups das selbe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz