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, 2232 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
Windows Server
DP mit Benutzerdatenträger und VDS-SAN-policy
Tipp von lcer00 vor 16 StundenWindows Server

Hallo zusammen, ich habe gerade einen halben Tag mit Recherche zu dem Thema hinter mir und endlich ein Ergebnis. ...

Internet

Europa baut Zensurinfrastruktur auf: EU-Parlament stimmt für Upload-Filter, Leistungsschutzrecht und gegen KI-Forschung

Information von Frank vor 3 TagenInternet9 Kommentare

Eine sehr schlechte Entscheidungen für die Zukunft Europas ist gefallen: Der Rechtsausschuss im EU-Parlament stimmte heute morgen in einer ...

Windows 10

Mikrofon von Headset geht nach Update auf Windows 10 1803 nicht mehr

Tipp von Deepsys vor 5 TagenWindows 102 Kommentare

Ich verwende ein Plantronics Headset das per USB mit dem Windows 10 PC verbunden ist. Damit kann ich auch ...

Video & Streaming

Ruckelfreies Fernsehen auf Smartphone oder Tablet - in SD oder gar HD - Eine Alternative zum Fritz DVB-C Receiver

Anleitung von power-user vor 6 TagenVideo & Streaming11 Kommentare

Wer kennt das nicht: Man möchte gemütlich auf dem Balkon sitzen und vielleicht grillen und dabei das WM-Spiel gucken ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Sophos UTM 110 120 in Betrieb nehmen und IP Adresse am Cisco Switch herausfinden
Frage von KabuntelLAN, WAN, Wireless13 Kommentare

Hallo, ich mache in Rahmen meiner Umschulung zum Fachinformatiker - Systemintegration ein Praktikum. Gestern hat mir mein Chef gleich ...

Switche und Hubs
VPN Router empfehlung
Frage von mstSwitche und Hubs9 Kommentare

Moin Leute ich hab mal eine Frage an die VPN und Netzwerkprofis unter euch. Folgendes Szenario, ich habe einen ...

Hardware
Neue Hardware für meine pfSense - APU2 apu4b4?
Frage von jokru1Hardware8 Kommentare

Hallo zusammen, ich betreibe aktuell meine pfSense auf einer APU2-Hardware (3 NICs, 4GB RAM) ohne AES-NI-Unterstützung. Diese möchte ich ...

Firewall
Firewall Vorteil und Nachteil
gelöst Frage von vegeta500Firewall7 Kommentare

Hallo , ich habe eine Fragen (Theoretische), Welches Sicherheitsproblem kann eine gewöhnliche Firewall nicht lösen