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)

Anleitung Entwicklung PHP

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

27.01.2017, aktualisiert 30.11.2017, 1655 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 ...

PHP
PHP 5.5 - OPcache, APC und Alternativen
Tipp von FrankPHP1 Kommentar

Hallo PHP User, seit der PHP Version 5.5.x ersetzt das Modul OPcache per Default die Funktionalität von APC oder ...

Samba
Samba und die Unix CIFS-Extensions
Erfahrungsbericht von toddi65Samba

Ich wollte mal was zu Samba loswerden, wovon vielleicht auch der eine oder andere Windows-Admin profitiert. Ich bin ebenfalls ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 12 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 16 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...