Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
ARTIGOS
Libsodium para criptografia de última geração em PHP
Sodium é uma biblioteca de fácil utilização para criptografia, assinaturas, password hash.
## Introdução [Fonte](https://download.libsodium.org/doc/) Sodium é uma biblioteca moderna, fácil de usar para: * criptografia * descriptografia * assinaturas * hash de senhas * outros Sodium é multi plataformas e multi linguagens, ela executa em diversos compiladores e sistemas operacionais. O seu objetivo é fornecer as principais operações para construir ferramentas criptográficas de alto nível. ### Multi plataforma Ao se afirmar multi plataforma a libsodium quer dizer que uma mensagem pode ser criptografada em PHP e ser descriptografada em Python ou suas assinaturas serem verificadas em um aplicativo de um iPhone escrito em Swift. Os algoritmos disponíveis são idênticos em todas as plataformas suportadas.
## Instalação > Versões 7.2 ou superior do PHP incluem a extensão Sodium como biblioteca de criptografia. Existe um [projeto no github](https://github.com/paragonie/sodium_compat) que se propõe a dar suporte a libsodium em versões antigas do php. Paras versões do PHP que já tenham a extensão libsodium habilitada ainda é necessário instalar o pacote específico, afim de ter acesso a todas as funcionalidades. **Libsodium** Ambientes linux ```bash $ sudo apt-get install libsodium-dev ``` Se você estiver usando uma distribuição antiga e ainda não tem acesso a este pacote é necessário instalar um PPA específico: - [https://answers.launchpad.net/~chris-lea/+archive/ubuntu/libsodium](https://answers.launchpad.net/~chris-lea/+archive/ubuntu/libsodium) - [https://launchpad.net/~anton+/+archive/ubuntu/dnscrypt](https://launchpad.net/~anton+/+archive/ubuntu/dnscrypt) --- Ambientes Windows O primeiro passo é fazer o download da [versão apropriada para o seu PHP](https://windows.php.net/downloads/pecl/releases/libsodium/1.0.2/). Com o arquivo descompactado é necessário: 1. Copie o arquivo `libsodium.dll` no `SYSTEM32` ou no mesmo diretório que o `php.exe` 2. Copie o arquivo `php_libsodium.dll` para o diretório de extensões, esse diretório normalmente fica na pasta `ext/` do local que contém o arquivo `php.exe`. 3. Adicione `extension=php_libsodium.dll` no seu `php.ini`. ### Verificar a instalação Depois de instalar a biblioteca e a extensão do PHP execute o seguinte script afim de verificar se a instalação se deu de maneira correta: ```php int 10 1 => int 1 2 => string '1.0.16' ``` ## Como criptografar uma mensagem usando uma chave secreta Primeiro vou mostrar como é o funcionamento básico de uma troca de mensagens criptografada: ```php Uma mensagem pode ser criptografada usando a mesma $key, mas usando dois nonces diferentes e serão produzidas duas cifras totalmente diferentes. Para criptografar uma mensagem usando a função `sodium_crypto_secretbox` tanto a `$key` como o `$nonce` precisam ter um tamanho determinado e a maneira mais prática de gerá-los é usando a função `random_bytes` conforme demonstrado no exemplo acima. As constantes informadas na invocação da função `random_bytes` são constantes da extensão libsodium e são elas que criam o retorno do tamanho correto. Para descriptografar uma mensagem é necessário usar a mesma `$key` e `$nonce` usados para criptografar, como mencionado anteriormente o `$nonce` pode ser enviado junto com a mensagem cifrada. A `$key` por sua vez, deve ser conhecida para os que a comunicação interessa.
### Criptografia baseada em chave pública A criptografia baseada em chaves secretas tem como característica que os participantes da conversa tenham a mesma chave secreta. Essa chave permite criptografar e descriptografar mensagens. Portanto pelo menos uma vez é necessário compartilhar a chave secreta depois da sua criação. Por sua vez, a criptografia baseada em chaves públicas tem como premissa que a chave secreta nunca deve ser compartilhada. A criptografia baseada em chaves públicas funciona da seguinte maneira, todos os participantes geram um parde chaves, pública + privada. A chave pública pode ser compartilhada livremente, no entanto a chave privada deve permanecer em sigilo. A criptografia das mensagens é feita usando a chave privada de quem envia a mensagem + a chave pública de quem recebe. A descriptográfia da mensagem é feita com a chave públida de quem enviou + a chave privada de quem recebe. > Antes de estabelecer uma comunicação usando chaves públicas é necessário que cada participante gere um par de chaves! O código abaixo demonstra uma comunicação entre duas pessoas usando a criptografia baseada em chaves públicas. Mesmo sendo um script corrido imagine que a comunicação está estabelecida entre dois computadores e os dados são enviados de um para outro, por um web service por exemplo. ```php
COMENTE SOBRE