Cómo crear un método de encriptación PHP que sea lo más irrompible posible

El cifrado es rompible, inherentemente.

Hashing no lo es, pero es colisionable. (Incluso un hash de 256 bits solo tiene un número fijo de posibilidades. Si creo una “contraseña” que tenga los mismos 32 bits que la tuya, el sitio la aceptará, porque no hay diferencia entre ellos. Por lo tanto, debes limitar los intentos , después de quizás los primeros 3, a uno cada 5 segundos, luego, después de otros 5, tal vez uno cada minuto).

La codificación no es rompible, y es por eso que la máquina Enigma era imposible de romper. Si “martes” significa “África” ​​y “miércoles” significa “pastel”, no puede descifrar eso sin un libro de códigos (o, en el caso de Enigma, una máquina de codificación capturada).

Para un método práctico que es extremadamente difícil de descifrar, agregue la contraseña con una sal variable (por ejemplo, la hora, en segundos, desde la medianoche hora local) y obtenga el resultado. (Y guarde la sal en alguna forma encriptada, por supuesto). Eso puede romperse, pero usar una supercomputadora para entrar en un blog es como gastar un millón de dólares para recoger un centavo, simplemente no vale la pena el esfuerzo.

De la entrada manual de PHP en hash :

the salt should be random string with at least as many variable bits, as there are bits in the hash result. In the user database, store username, the randomly generated salt for that user, and the result of hashing the salt-password-string. Access authentication is then done by looking up the entry for the user, calculating the hash of the salt found in the database and the password provided by the user, and comparing the result with the one stored in the database.

Eso generalmente se considera más allá del alcance de cualquier computadora del tipo actual (una CPU electrónica, etc.) para interrumpir en un período de tiempo razonable. (Todavía es frágil, pero ¿alguien realmente quiere esperar 300 años para que una computadora multimillonaria entre en el foro de alguien?)

(Por cierto, esa sal nunca debe ser la misma sal para todas las entradas).

El consenso en la comunidad sugiere que usted * NUNCA * intente crear su propio método de cifrado.

La razón de esto es que tiene tantos buenos algoritmos como AES y bcrypt y es básicamente imposible igualar su nivel de seguridad.

Además, nada es 100% irrompible. Los métodos existentes son seguros solo por ahora. A medida que avanza la tecnología y aumenta la potencia informática, podremos romper cualquier método de cifrado.

Puedes ver cómo se rompió SHA1 aquí: SHAttered

no intente crear un método de cifrado irrompible, porque con el tiempo la potencia informática aumentará hasta el punto en que lo que ha creado ahora se romperá y se buscarán nuevos métodos.

En cambio, busque crear sistemas de seguridad para manejar las brechas de seguridad. por ejemplo, limitar los intentos de inicio de sesión, contraseñas de sal y hash, desinfección de códigos php, implementación de SSL, copias de seguridad adecuadas y periódicas de su base de datos, plan de recuperación ante desastres después de un ataque, etc.

More Interesting

Quiero hacer mi carrera en pruebas de seguridad. ¿Un CEH ayudará con eso?

¿Cómo podrían los ISP detener todos los ataques DDoS?

Si tiene 2 usuarios en una computadora (Admin y Usuario1) y el Usuario1 obtiene un virus, ¿afecta a ambos usuarios o solo al que lo adquirió?

¿Qué tipo de matemática es útil en la seguridad de la información y en qué área?

Si mi computadora tiene un virus y le cargo el teléfono, ¿puede el pirata informático que colocó el virus en mi computadora usar toda la cámara de mi teléfono para mirar a mi alrededor?

Debido a que se accedió a toda nuestra información personal en la violación de seguridad de Equfax, ¿hay algún punto en tener cuidado con su información personal?

Cómo informar y cómo evito que ocurran las siguientes amenazas de sombrero negro

Pensando en estudiar la seguridad de la red. ¿Algún consejo? ¿Me arrepentiré de esto por alguna razón?

¿Dónde está disponible el mejor antivirus?

¿Qué es CA Antivirus?

¿Cuáles son los buenos algoritmos mentales para generar contraseñas seguras?

Teniendo en cuenta los problemas de ciberseguridad como WannaCry, con lo que quiero decir que Windows estaba infectado de todos modos, ¿vale la pena invertir recursos en el desarrollo de un antivirus para Windows o Android o cualquier otro sistema operativo?

Al elegir una contraseña, ¿es una buena práctica repetir una contraseña de 6 u 8 dígitos para que sea el doble y, por lo tanto, más difícil de descifrar?

Qué tipo de cosas deberían tener los departamentos de seguridad de la información. poner en un tablero que muestran a la administración de negocios que no es de TI?

En términos de seguridad, ¿está Windows mal diseñado en comparación con un sistema operativo basado en Unix?