Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Codebeispiel: Mit PyCrypto und AES sicher verschlüsseln

  1. #1
    @SlopePointNZ Avatar von craano
    Registriert seit
    Jul 2004
    Beiträge
    1.313

    Codebeispiel: Mit PyCrypto und AES sicher verschlüsseln

    Hallo,
    nicht ganz Linux, aber Python ist wahrscheinlich unter Euch auch beliebt.
    Ich möchte einen String mit Python und AES verschlüsseln und in einer Datei speichern. Dazu möchte ich Euch folgendes Codebeispiel zeigen:
    Code:
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import Crypto.Cipher.AES
    import sys
    import md5
    import base64
    
    pwd="abcd"
    print "pwd: " + pwd
    m = md5.new()#Das Passwort muss in einen 16 bytes langen Hash gewandelt werden
    m.update(pwd)
    pwd = m.hexdigest()#Den Hash in ein lesbares Format bringen
    print "md5: " + pwd
    plain="1234567890123456"
    print "Plain: " + plain
    
    mode = Crypto.Cipher.AES.MODE_CFB#AES verwenden.
    aes  = Crypto.Cipher.AES.new(pwd, mode)
    crypt_hex = aes.encrypt( plain )#verschlüsseln
    crypt_plain = crypt_hex.encode("hex") #in lesbare Zeichen 
    print "Cryprt: " + crypt_plain
    Ein angemessenes Passwort vorrausgesetzt, haltet Ihr das für sicher?
    Egal ob ich CBC oder CFB verwende, es kommt bei jedem Durchlauf immer der selbe verschlüsselte Text heraus, das sollte doch eigentlich nicht sein:
    http://de.wikipedia.org/wiki/Blockve...Block_Chaining

    Gesegnete Weihnachten
    craano
    Geändert von craano (22.12.11 um 20:41 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jul 2006
    Ort
    Hamburg
    Beiträge
    646
    Moin craano

    1. Zum sicheren Speichern solltest Du noch einen Salt verwenden.
    2. Wo soll denn bei deinem Beispiel die Varianz herkommen?

    Du hast immer die selben Input. Damit bekommst Du auch immer einen identisches Chiffrat. Sonst hättest Du ja einen Zufallsgenerator.

    Das CBC,CFB bezieht sich auf den Klartext. Der wird in Blocks aufgeteilt und dann wird jeder Block einzeln verschlüsselt. Dabei wird der Klartext des Folgeblockes geändert, damit Du bei gleichartigem Klartext kein gleiches Chiffrat erhälst.

    Auf das Endergebnis hat das keinen Einfluss.

    Thorashh

  3. #3
    @SlopePointNZ Avatar von craano
    Registriert seit
    Jul 2004
    Beiträge
    1.313
    Nabend Thorashh,

    den Begriff Salt habe ich erstmal nachgelsen. So ganz verstehe ich das noch nicht. Ein Salt verlängert also das Passwort um Angriffe gegen den Hash zu erschweren. Zudem muss der Salt bekannt sein. Reicht es das ganze also so anzugehen?
    Code:
    salt = "efgh"
    pwd="abcd" + salt
    m = md5.new()#Das Passwort muss in einen 16 bytes langen Hash gewandelt werden
    m.update(pwd)
    ...
    Um Varianz in das Chiffrat zu bekommen, stelle ich x (pseudo-)zufällige Zeichen dem zu verschlüsselnden String voran.
    Nach dem dechiffrieren lösche ich einfach die ersten x Zeichen. Et voila, bei jedem Verschlüsseln sieht der chiffrierte Text völlig anders aus.

    Ich weiß zwar nicht, ob das die Sicherheit erhöht, da der Text nur sehr selten ver-, allerdings häufig entschlüsselt werden soll.

    craano

Ähnliche Themen

  1. Ordner verschlüsseln und verbergen
    Von DJ-JP im Forum Anwendungen Allgemein, Software
    Antworten: 12
    Letzter Beitrag: 28.05.10, 09:55
  2. SuSE und AES
    Von Jigsore im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 30.11.04, 15:32
  3. AES Verschlüsselung unter SUSE 9.1
    Von Linux_from_hell im Forum Sicherheit
    Antworten: 4
    Letzter Beitrag: 15.11.04, 22:33
  4. welche Partitionen verschlüsseln?
    Von flex001 im Forum Sicherheit
    Antworten: 3
    Letzter Beitrag: 03.07.04, 12:49
  5. XFS per loopAES verschlüsseln, eine Frage dazu
    Von jascha im Forum Anwendungen Allgemein, Software
    Antworten: 4
    Letzter Beitrag: 07.12.03, 15:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •