SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Criptografia
Como utilizar
Felipe Weckx
felipe@weckx.net
@weckx
PHP Conference 2015 2
Segurança da Informação
● Confidencialidade
● Autenticidade
● Integridade
● Disponibilidade
PHP Conference 2015 3
Criptografia
● Transformação da informação para que que
seja conhecida apenas pelas partes desejadas.
● Algoritmos
– Cifra de Bloco
– Modo de Operação
– Tamanho da Chave
● Criptografia forte – algoritmos resistentes à
ataques criptoanalíticos
PHP Conference 2015 4
Criptografia vs Segurança
● Apenas criptografia não é suficiente
● Criptografia não resolve todos os problemas
● Má utilização é pior do que nenhuma
criptografia
● Ataques
– Força bruta
– Ataque teórico
– Ataque de implementação
PHP Conference 2015 5
Hashes
● Criptografia de mão única
● Dados originais não podem ser recuperados
● Salt – essencial para sempre gerar um valor
distinto
● Usos
– Assinaturas digitais
– Armazenamento de senhas
– Verificação de integridade
PHP Conference 2015 6
Hashes - Algoritmos
● MD5, SHA1 – ultrapassados, não utilizar
● SHA256, SHA512
● WHIRLPOOL
● HMAC
– Hash-based Message Authentication Code
– Assinatura de mensagens (dados) com hashes
PHP Conference 2015 7
Criptografia
● Chave Simétrica
– Mesma chave utilizada para criptografar e descriptografar
● Chave Assimétrica
– Uma chave para criptografar
– Uma chave para descriptografar
● Criptografia Autenticada
– Combinação de Criptografia + HMAC
– Garante confidencialidade e autenticidade
PHP Conference 2015 8
Criptografia - Algoritmos
● Chave Simétrica
– AES
– 3DES (em desuso)
– DES (não utilizar, inseguro)
● Chave Assimétrica
– RSA
– ElGamal
PHP Conference 2015 9
No PHP...
PHP Conference 2015 10
Principais Bibliotecas/Funções
● Mcrypt – abandonware – não utilizar
– Último release libmcrypt: 19/02/2007
● OpenSSL
– Ativamente mantida, utilizada em inúmeros projetos
● libsodium-php
– Extensão baseada na libsodium, moderna e ativamente
mantida
● crypt(), password_*()
– Funções do PHP para hash
PHP Conference 2015 11
Hash
● password_hash() (PHP >= 5.5)
– Utilizar para armazenamento e verificação de senhas
– Geração automática de salt e uso do algoritmo mais seguro
– password_needs_rehash() verifica se a senha precisa ser
hasheada novamente
– password_verify() verificação simples de senha para
autenticação
● Extensão HASH
– Habilitada por padrão
– Suporta HMAC e principais algoritmos
PHP Conference 2015 12
Hash – importância do salt
SEM SALT
Valor 1: phpconference
Hash SHA1:
068fb0a3d6cd126ca0132c798b6d90db50f504be
Valor 2: novasenha2015
Hash SHA1:
61e9e9a8942cf25619fa162600ffa139d44230f3
Valor 3: phpconference
Hash SHA1:
068fb0a3d6cd126ca0132c798b6d90db50f504be
COM SALT
Valor 1: phpconference
Salt: QE/m4ueJzHA=
Hash SHA1:
8ca52fcf30105c686ad4df512f58395bc32c8ff7
Valor 2: novasenha2015
Salt: EtE33ovfCsE=
Hash SHA1:
69eb34c2c41e376cd60015242ea8927eea2ac291
Valor 3: phpconference
Salt: NKRAYDmovvk=
Hash SHA1:
c92def2a9d6ac80d647d48110f9afee554ad3ddf
PHP Conference 2015 13
Problemas de má implementação...
Fonte: http://arstechnica.com/security/2015/09/once-seen-as-bulletproof-11-million-ashley-madison-passwords-already-cracked/
PHP Conference 2015 14
Criptografia de Dados
● Armazenamento de dados sensíveis
● Algoritmo Recomendado AES-256
– Utilizar OpenSSL ou libsodium
● Gerar chaves seguras
– Não utilizar rand() nem mt_rand()
– Utilizar openssl_random_pseudo_bytes()
● Armazenar chaves em local separado dos
dados
PHP Conference 2015 15
Criptografando com AES
● Modo de Operação
– Nunca utilizar ECB
– Utilizar CBC ou CTR
● Gerar chaves seguras
● Utilizar HMAC para gerar
código de autenticação
– Validar ao ler dados
Original
AES com ECB
PHP Conference 2015 16
Exemplo – AES OpenSSL
PHP Conference 2015 17
IV?
● Initialization Vector
● String aleatória de tamanho fixo que
normalmente deve ser aleatória (depende do
algoritmo)
● IV não é secreto
● Garante valores criptografados distintos para
mesmo valor original, semelhante ao salt
PHP Conference 2015 18
Criptografia Autenticada
PHP Conference 2015 19
Melhores Práticas
● Nunca crie seu próprio algoritmo criptográfico
● Utilize algoritmos e bibliotecas já testados e
conhecidos
● Não utilizar mcrypt
● Criptografia é apenas uma parte da
segurança
PHP Conference 2015 20
Perguntas?

Weitere ähnliche Inhalte

Was ist angesagt?

WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017Edgar Silva
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJSEmmanuel Neri
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosRafael Chaves
 
MUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appMUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appRenato de Oliveira
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
Tdc2019 intro event-sourcing_kafka
Tdc2019   intro event-sourcing_kafkaTdc2019   intro event-sourcing_kafka
Tdc2019 intro event-sourcing_kafkaMarcelo Ohashi
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....Renato Groff
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBEdgar Silva
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Renato Groff
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIsRafael de Paula Souza
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3Alex Miranda
 
ASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureWaldyr Felix
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 

Was ist angesagt? (20)

Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017
 
A trilogia Spring MVC + Spring Data + AngularJS
A trilogia  Spring MVC + Spring Data + AngularJSA trilogia  Spring MVC + Spring Data + AngularJS
A trilogia Spring MVC + Spring Data + AngularJS
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 
MUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appMUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu app
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Tdc2019 intro event-sourcing_kafka
Tdc2019   intro event-sourcing_kafkaTdc2019   intro event-sourcing_kafka
Tdc2019 intro event-sourcing_kafka
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Developers-SP - Out...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Restful APIs com Spring 3
Restful APIs com Spring 3Restful APIs com Spring 3
Restful APIs com Spring 3
 
Do Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no AzureDo Monolítico aos Micro Serviços no Azure
Do Monolítico aos Micro Serviços no Azure
 
ASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureASP.NET Web API no Windows Azure
ASP.NET Web API no Windows Azure
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 

Andere mochten auch

Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHPFelipe Weckx
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Bruno Pedro
 
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Julio Bitencourt
 
Criptografia: matemática e lógica computacional protegendo informações
Criptografia: matemática e lógica computacional protegendo informaçõesCriptografia: matemática e lógica computacional protegendo informações
Criptografia: matemática e lógica computacional protegendo informaçõesAlex Camargo
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografiafelipetsi
 
Criptografia
CriptografiaCriptografia
CriptografiaPaula P.
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with dockerRuoshi Ling
 

Andere mochten auch (8)

Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHP
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
 
Criptografia: matemática e lógica computacional protegendo informações
Criptografia: matemática e lógica computacional protegendo informaçõesCriptografia: matemática e lógica computacional protegendo informações
Criptografia: matemática e lógica computacional protegendo informações
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografia
 
Criptografia Aplicada
Criptografia AplicadaCriptografia Aplicada
Criptografia Aplicada
 
Criptografia
CriptografiaCriptografia
Criptografia
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 

Ähnlich wie Criptografia - como utilizar

Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurançaMichael Douglas
 
TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!tdc-globalcode
 
Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Cyrille Grandval
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e FuturoFreedom DayMS
 
WebCrawling Utilizando PHP
WebCrawling Utilizando PHPWebCrawling Utilizando PHP
WebCrawling Utilizando PHPRodrigo Sales
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013George Mendonça
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHPVinícius Krolow
 
Seminário Plataforma Java - Segurança e Criptografia
Seminário Plataforma Java - Segurança e CriptografiaSeminário Plataforma Java - Segurança e Criptografia
Seminário Plataforma Java - Segurança e CriptografiaLeonardo Venancio
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPAlexandre Gaigalas
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
HTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSAHTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSARudá Moura
 

Ähnlich wie Criptografia - como utilizar (20)

Programando php com mais segurança
Programando php com mais segurançaProgramando php com mais segurança
Programando php com mais segurança
 
TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!
 
PHP - Aula #01
PHP - Aula #01PHP - Aula #01
PHP - Aula #01
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 
Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Criptografia com PHP
Criptografia com PHPCriptografia com PHP
Criptografia com PHP
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
WebCrawling Utilizando PHP
WebCrawling Utilizando PHPWebCrawling Utilizando PHP
WebCrawling Utilizando PHP
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
 
Api todo list
Api todo listApi todo list
Api todo list
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
Dica 01 - Hash de Senhas e sua utilização Segura
Dica 01 - Hash de Senhas e sua utilização SeguraDica 01 - Hash de Senhas e sua utilização Segura
Dica 01 - Hash de Senhas e sua utilização Segura
 
Webcast Luiz Vieira criptografia on-the-fly com software livre
Webcast Luiz Vieira criptografia on-the-fly com software livreWebcast Luiz Vieira criptografia on-the-fly com software livre
Webcast Luiz Vieira criptografia on-the-fly com software livre
 
Deixando de ser moleque com PHP
Deixando de ser moleque com PHPDeixando de ser moleque com PHP
Deixando de ser moleque com PHP
 
Seminário Plataforma Java - Segurança e Criptografia
Seminário Plataforma Java - Segurança e CriptografiaSeminário Plataforma Java - Segurança e Criptografia
Seminário Plataforma Java - Segurança e Criptografia
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHP
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
Dicas de segurança para o PHP e seus amigos
Dicas de segurança para o PHP e seus amigosDicas de segurança para o PHP e seus amigos
Dicas de segurança para o PHP e seus amigos
 
HTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSAHTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSA
 

Criptografia - como utilizar

  • 2. PHP Conference 2015 2 Segurança da Informação ● Confidencialidade ● Autenticidade ● Integridade ● Disponibilidade
  • 3. PHP Conference 2015 3 Criptografia ● Transformação da informação para que que seja conhecida apenas pelas partes desejadas. ● Algoritmos – Cifra de Bloco – Modo de Operação – Tamanho da Chave ● Criptografia forte – algoritmos resistentes à ataques criptoanalíticos
  • 4. PHP Conference 2015 4 Criptografia vs Segurança ● Apenas criptografia não é suficiente ● Criptografia não resolve todos os problemas ● Má utilização é pior do que nenhuma criptografia ● Ataques – Força bruta – Ataque teórico – Ataque de implementação
  • 5. PHP Conference 2015 5 Hashes ● Criptografia de mão única ● Dados originais não podem ser recuperados ● Salt – essencial para sempre gerar um valor distinto ● Usos – Assinaturas digitais – Armazenamento de senhas – Verificação de integridade
  • 6. PHP Conference 2015 6 Hashes - Algoritmos ● MD5, SHA1 – ultrapassados, não utilizar ● SHA256, SHA512 ● WHIRLPOOL ● HMAC – Hash-based Message Authentication Code – Assinatura de mensagens (dados) com hashes
  • 7. PHP Conference 2015 7 Criptografia ● Chave Simétrica – Mesma chave utilizada para criptografar e descriptografar ● Chave Assimétrica – Uma chave para criptografar – Uma chave para descriptografar ● Criptografia Autenticada – Combinação de Criptografia + HMAC – Garante confidencialidade e autenticidade
  • 8. PHP Conference 2015 8 Criptografia - Algoritmos ● Chave Simétrica – AES – 3DES (em desuso) – DES (não utilizar, inseguro) ● Chave Assimétrica – RSA – ElGamal
  • 9. PHP Conference 2015 9 No PHP...
  • 10. PHP Conference 2015 10 Principais Bibliotecas/Funções ● Mcrypt – abandonware – não utilizar – Último release libmcrypt: 19/02/2007 ● OpenSSL – Ativamente mantida, utilizada em inúmeros projetos ● libsodium-php – Extensão baseada na libsodium, moderna e ativamente mantida ● crypt(), password_*() – Funções do PHP para hash
  • 11. PHP Conference 2015 11 Hash ● password_hash() (PHP >= 5.5) – Utilizar para armazenamento e verificação de senhas – Geração automática de salt e uso do algoritmo mais seguro – password_needs_rehash() verifica se a senha precisa ser hasheada novamente – password_verify() verificação simples de senha para autenticação ● Extensão HASH – Habilitada por padrão – Suporta HMAC e principais algoritmos
  • 12. PHP Conference 2015 12 Hash – importância do salt SEM SALT Valor 1: phpconference Hash SHA1: 068fb0a3d6cd126ca0132c798b6d90db50f504be Valor 2: novasenha2015 Hash SHA1: 61e9e9a8942cf25619fa162600ffa139d44230f3 Valor 3: phpconference Hash SHA1: 068fb0a3d6cd126ca0132c798b6d90db50f504be COM SALT Valor 1: phpconference Salt: QE/m4ueJzHA= Hash SHA1: 8ca52fcf30105c686ad4df512f58395bc32c8ff7 Valor 2: novasenha2015 Salt: EtE33ovfCsE= Hash SHA1: 69eb34c2c41e376cd60015242ea8927eea2ac291 Valor 3: phpconference Salt: NKRAYDmovvk= Hash SHA1: c92def2a9d6ac80d647d48110f9afee554ad3ddf
  • 13. PHP Conference 2015 13 Problemas de má implementação... Fonte: http://arstechnica.com/security/2015/09/once-seen-as-bulletproof-11-million-ashley-madison-passwords-already-cracked/
  • 14. PHP Conference 2015 14 Criptografia de Dados ● Armazenamento de dados sensíveis ● Algoritmo Recomendado AES-256 – Utilizar OpenSSL ou libsodium ● Gerar chaves seguras – Não utilizar rand() nem mt_rand() – Utilizar openssl_random_pseudo_bytes() ● Armazenar chaves em local separado dos dados
  • 15. PHP Conference 2015 15 Criptografando com AES ● Modo de Operação – Nunca utilizar ECB – Utilizar CBC ou CTR ● Gerar chaves seguras ● Utilizar HMAC para gerar código de autenticação – Validar ao ler dados Original AES com ECB
  • 16. PHP Conference 2015 16 Exemplo – AES OpenSSL
  • 17. PHP Conference 2015 17 IV? ● Initialization Vector ● String aleatória de tamanho fixo que normalmente deve ser aleatória (depende do algoritmo) ● IV não é secreto ● Garante valores criptografados distintos para mesmo valor original, semelhante ao salt
  • 18. PHP Conference 2015 18 Criptografia Autenticada
  • 19. PHP Conference 2015 19 Melhores Práticas ● Nunca crie seu próprio algoritmo criptográfico ● Utilize algoritmos e bibliotecas já testados e conhecidos ● Não utilizar mcrypt ● Criptografia é apenas uma parte da segurança
  • 20. PHP Conference 2015 20 Perguntas?