Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Libsodium Extension als Alternative für entfernte Mcrypt Extension installieren (ab PHP 7.2)

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

27.01.2017, aktualisiert 30.11.2017, 2036 Aufrufe, 2 Kommentare, 2 Danke

Da die PHP Mcrypt Extension ab PHP 7.2 entfernt wird, suche ich schon einige Zeit lang eine gute und sichere Alternative. Siehe dazu auch PHP RFC: Mcrypt Extension wird ab PHP 7.2 entfernt.

Meine Lösung heißt: Libsodium (a portable, cross-compilable, installable, packageable, API-compatible version of NaCl (Networking and Cryptography library)).

Der folgende Installationsvorgang ist nur für PHP Versionen kleiner als 7.2.0 nötig. Alle Versionen darüber haben libsodium bereits integriert.

Dazu muss man die libsodium PHP Extension installieren (Alternativ gibt es sie auch auf GitHUB):
01.
pecl install libsodium
und in die php.ini folgende Zeile hinzufügen:
01.
extension=sodium.so
Dann kann man überprüfen, ob alle funktioniert:

01.
<?php 
02.
if (extension_loaded("sodium")) { 
03.
    $constants = get_defined_constants(true); 
04.
    var_dump([ 
05.
        SODIUM_LIBRARY_VERSION, 
06.
        get_extension_funcs('sodium'), 
07.
        $constants["sodium"
08.
    ]); 
09.
} else
10.
    // sodium not fount 
11.
}
Es sollte die aktuelle Version der libsodium Extension erscheinen (kann natürlich variieren)

01.
$ php version_check.php 
02.
array(3) { 
03.
  [0]=> 
04.
  string(6) "1.0.15" 
05.
  [1]=> 
06.
  array(82) { 
07.
    [0]=> 
08.
    string(41) "sodium_crypto_aead_aes256gcm_is_available" 
09.
    [1]=> 
10.
    string(36) "sodium_crypto_aead_aes256gcm_decrypt" 
11.
    [2]=> 
12.
    string(36) "sodium_crypto_aead_aes256gcm_encrypt" 
13.
    [3]=> 
14.
    string(43) "sodium_crypto_aead_chacha20poly1305_decrypt" 
15.
    [4]=> 
16.
    string(43) "sodium_crypto_aead_chacha20poly1305_encrypt" 
17.
    [5]=> 
18.
    usw. 
19.
}
Eine detailierte Installationsanleitung findet ihr hier:
https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-li ...


Sichere Passwörter mit PHP erzeugen (benutzt Argon2 - Gewinner der Hashing Competition 2015)

01.
// Password hashing: 
02.
$hash_str = sodium_crypto_pwhash_str( 
03.
    $password
04.
    SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, 
05.
    SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE 
06.
); 
07.
// Password verification: 
08.
if (sodium_crypto_pwhash_str_verify($hash_str, $password)) { 
09.
    // recommended: wipe the plaintext password from memory 
10.
    sodium_memzero($password); 
11.
     
12.
    // Password was valid. 
13.
} else
14.
    // recommended: wipe the plaintext password from memory 
15.
    sodium_memzero($password); 
16.
     
17.
    // Password was invalid. 
18.
}

Basic Encryption

01.
$key = sodium_randombytes_buf(SODIUM_CRYPTO_SECRETBOX_KEYBYTES); 
02.
 
03.
// Using your key to encrypt information 
04.
$nonce = sodium_randombytes_buf(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); 
05.
$ciphertext = sodium_crypto_secretbox('test', $nonce, $key);

Basic Decryption

Dazu brauchen wir als Eingabe natürlich das selbe "nonce" und den selben "key" (siehe oben) um die Nachricht wieder zu entschlüsseln.

01.
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key); 
02.
if ($plaintext === false) { 
03.
    throw new Exception("Bad ciphertext"); 
04.
}

Hier eine erweitere Version mit AES-256 + GCM:

AEAD Encryption - Authenticated (secret-key) Encryption with Associated Data - AES-256 + GCM

01.
$key = sodium_randombytes_buf(SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES); 
02.
if (sodium_crypto_aead_aes256gcm_is_available()) { 
03.
    $nonce = sodium_randombytes_buf(SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES); 
04.
    $ad = 'Additional (public) data'; 
05.
    $ciphertext = sodium_crypto_aead_aes256gcm_encrypt( 
06.
        $message
07.
        $ad
08.
        $nonce
09.
        $key 
10.
    ); 
11.
}

AEAD Decryption

Dazu brauchen wir als Eingabe natürlich das selbe "nonce" und den selben "key" (siehe oben) um die Nachricht wieder zu entschlüsseln.

01.
if (sodium_crypto_aead_aes256gcm_is_available()) { 
02.
    $decrypted = sodium_crypto_aead_aes256gcm_decrypt( 
03.
        $ciphertext
04.
        $ad
05.
        $nonce
06.
        $key 
07.
    ); 
08.
    if ($decrypted === false) { 
09.
        throw new Exception("Bad ciphertext"); 
10.
11.
}
Weitere Informationen und Beispiele für PHP findet ihr auf dieser Seite:
https://paragonie.com/book/pecl-libsodium

Viel Spaß beim Umbauen ...

Update vom 30.11.2017

Die Version PHP 7.2.0 hat seit dem 30.11.2017 libsodium integriert. Es wird libsodium-php 2.x verwendet. In der ursprünglichen Anleitung wurde libsodium-php 1.x verwendet. Ich habe die Codebeispiele für die Version 2.x angepasst. Auch https://paragonie.com/book/pecl-libsodium hat seine Beispiele an die neue Version angepasst.


Gruß
Frank
Mitglied: Frank
30.11.2017, aktualisiert um 21:10 Uhr
Die Anleitung wurde zum heutigen Erscheinen von PHP 7.2.0 (30.11.2017) auf libsodium-php 2.x aktualisiert. libsodium ab jetzt fester Bestandteil von PHP.

Migrationshinweise für libsodium-php 1.x (< PHP 7.2) vs libsodium-php 2.x (>=PHP 7.2)

This extension was originally named libsodium. The module was named libsodium.so or libsodium.dll.

All the related functions and constants were contained within the \Sodium\ namespace.

This extension was accepted to be distributed with PHP >= 7.2, albeit with a couple breaking changes:

  • No more \Sodium\ namespace. Everything must be in the global namespace.
  • The extension should be renamed sodium. So, the module becomes sodium.so or sodium.dll.

The standalone extension (this repository; also the extension available on PECL) was updated to match these expectations, so that its API is compatible with what will be shipped with PHP 7.2.

libsodium-php 2.x is thus not compatible with libsodium-php 1.x.
The 1.x branch will not receive any public updates any more.


Gruß
Frank
Bitte warten ..
Ähnliche Inhalte
PHP

PHP RFC: Mcrypt Extension wird ab PHP 7.2 entfernt

Information von FrankPHP

Ein RFC ist grob eine Abstimmung unter den PHP-Entwicklern, um neue, bestehende oder alte Feature hinzuzufügen, zu ändern, oder ...

PHP

PHP 7.2 veröffentlicht

Information von FrankPHP

Das PHP-Team hat heute, den 30.11.207 die aktuelle Version von PHP 7.2 veröffentlicht. Eine der wichtigsten Änderungen für PHP-Entwickler ...

Google Android

Cyanogenmod alternative Downloadquelle

Tipp von LochkartenstanzerGoogle Android6 Kommentare

Hi Kollegen, Wollte heute einen Samsung S2 auf einen aktuelleren Stand bringen (CM13 /Android 6.0). Leider kam beimAufruf von ...

Datenschutz

Datenschutzfreundliche Alternativen zu bekannten Apps

Information von sabinesDatenschutz2 Kommentare

Studenten der UNI Wien haben bekannte Apps hinsichtlich des Datenschutzes untersucht und bewertet. Und einen Hinweis auf Alternativen hierzu ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 23 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...