lunes, 26 de marzo de 2018

Comparar dos campos de texto con php

A la hora de presentar un formulario una de las comprobaciones típicas que se suele hacer es que el usuario escriba dos veces su email para que el email nos llegue correctamente y podamos contestar sin problemas al usuario. Por ejemplo en un formulario de registro a algún servicio web. Aquí os dejo dos formas de hacerlo con PHP, aunque seguro que hay mas; si sabéis otras formas no dudéis en dejármelo en los comentarios que será interesante para todos.


1. Comparación de strings con operadores igual (==)

A la hora de comparar variables, resulta sencillo cuando se trata de booleanos ( true/ false) o de integers, pero cuando se trata de strings (cadenas de  carácteres) o partes de strings  se puede complicar un poco.

La forma más común de comparar dos strings es con el operador ==. Si los dos strings son iguales, el condicional devuelve true:

if('hola' == 'hola'){

    echo "El string coincide";

} else {

    echo "El string no coincide";
}

Este tipo de comparación es sensible a mayúsculas y minúsculas, por lo que 'hola' == 'Hola' devolvería false.

Si todavía se quiere ser más estricto, se pueden emplear tres signos de igual, ===.

2. Strcmp

int strcmp (string $str1, string $str2)

Es la función más básica para comparar dos strings a nivel binario. Tiene en cuenta mayúsculas y minúsculas. Devuelve < 0 si el primer valor dado es menor que el segundo, > 0 si es al revés, y 0 si son iguales:

$var1 = "hola";

$var2 = "hola";

if (strcmp($var1, $var2) === 0){

    echo "Las palabras coinciden";

} else {

    echo "Las palabras no coinciden";

}   

Una cadena es mayor que otra en función de los códigos numéricos equivalentes de cada carácter, por ejemplo la letra D tiene el código 68 y d el código 100, o sea que es en cierto modo sensible a mayúsculas / minúsculas. En la práctica sólo se suelen utilizar estas funciones utilizando estructuras de control condicionales respecto al valor 0, como en el ejemplo anterior.

viernes, 2 de marzo de 2018

Guarda segura tu información con Veracrypt (tutorial paso a paso)

¡Hola de nuevo! En esta nueva entrega os hablaré de un programa que también (enlace a post anterior) empecé a usar hace ya unos años, y de la bifurcación que surgió de él, (La cual también llevo usando algunos años también). La entrada me va a quedar un poco larga para mi gusto pero creo que os va a resultar interesante. El  y software del que quiero hablaros es Veracrypt que es el fork de TrueCrypt, ambos programas para cifrar archivos, particiones de disco, o unidades extraíbles.

¿Porque cifrar archivos? Pues porque si... no tiene nada que ver con delincuencia ni nada turbio; Se me ocurren docenas de casos en los que el cifrado está justificado, desde la seguridad de la información en el entorno personal, defensa ante el espionaje industrial y comercial en el ámbito empresarial, hasta el activismo político o el periodismo de investigación. Sin olvidarnos de nuestro derecho a la privacidad en una época de reality shows y youtubers que comen pastillas de jabón.

Simplemente conque seas CM de alguna institución o empresa o administrador de alguna web, tener los datos a salvo de miradas extrañas no es una precaución baladí. Y en esto Veracrypt es medalla de oro. Pero primero retrocedamos hasta el principio.

TrueCrypt; los orígenes.

TrueCrypt es una aplicación informática freeware que sirve para cifrar y ocultar datos que el usuario considere reservados empleando para ello diferentes algoritmos de cifrado Permite crear un volumen virtual cifrado en un archivo de forma rápida y transparente o cifrar una partición o una unidad extraíble entera.


La última versión completa es la 7.1a, publicada el 7 de febrero de 2012. El 28 de mayo de 2014, el sitio oficial de TrueCrypt anunció que el proyecto dejaría de desarrollarse y que el programa podría contener fallos de seguridad, por lo que recomendaba buscar soluciones alternativas. Ese mismo día se publicó la versión 7.2, la cual solo sirve para descifrar archivos cifrados con versiones anteriores, pero carece de funciones para realizar cifrado y no se corregirán posibles errores o problemas de seguridad que tenga, vamos que esta descontinuada.

VeraCrypt; el relevo.

VeraCrypt es un software para establecer y mantener un volumen cifrado sobre la marcha (dispositivo de almacenamiento de datos). El cifrado sobre la marcha significa que los datos se cifran automáticamente justo antes de guardarlos y descifrarlos inmediatamente después de que se carguen, sin intervención del usuario. No se pueden leer (descifrar) datos almacenados en un volumen cifrado sin utilizar la contraseña correcta

Los archivos pueden copiarse desde y hacia un volumen VeraCrypt montado tal como se copian desde a cualquier disco normal (por ejemplo, mediante simples operaciones de arrastrar y soltar). Los archivos se descifran automáticamente sobre la marcha (en memoria / RAM) mientras se leen o se copian de un volumen cifrado de VeraCrypt. Del mismo modo, los archivos que se escriben o se copian en el volumen de VeraCrypt se cifran automáticamente sobre la marcha (justo antes de que se escriban en el disco) en la memoria RAM. Tened en cuenta que esto no significa que el archivo completo que se va a cifrar / descifrar debe almacenarse en la memoria RAM antes de que pueda ser cifrado / descifrado; no es necesario aun así tener una cantidad mínima de RAM para el funcionamiento del programa, y es posible ejecutarlo en cualquier máquina. No hay requisitos de memoria extra (RAM) para VeraCrypt. Incluso con una interrupción repentina de la electricidad, cuando vuelvas a encender tu pc, el volumen aparecerá desmontado y seguro.

Para ver información técnica sobre como funciona el programa podéis visitar su web en este enlace.

El tutorial. 

Aunque está hecho sobre GNU/Linux, este tutorial sirve para Windows, pues las dos versiones son idénticas, salvo que en la versión de Windows puedes descargar los paquetes de idioma para ponerlo en castellano.

Empezaremos creando nuestro primer volumen, abriendo Veracrypt y haciendo clic en "Crear volumen" (os lo señalo en rojo en la imagen).



 Se nos abrirá una ventana donde podemos elegir el tipo de volumen que queremos:


  1.  Un contenedor en forma de archivo.
  2. Cifrar una partición o disco completo; por ejemplo una tarjeta SD.
Una vez elegido se nos preguntará si querés que el volumen sea standard (3) u oculto (4). Para este tutorial usaremos el volumen standard que es el que tiene un uso digamos mas convencional. Aun que al final os hablaré sobre los volúmenes ocultos.




Tras esto elegimos el tamaño y la carpeta donde queremos el volumen:


A continuación elegimos el tipo de cifrado que va a tener nuestro volumen. Veracrypt tiene varias opciones para elegir, cualquiera de ellas es muy segura, ya depende del uso que le vayamos a dar o del nivel de paranoia que tengamos 😎


Tras elegir el tipo de cifrado ponemos la contraseña:


Ya os lo pone debajo pero también os lo digo yo: ES MUY IMPORTANTE LA ELECCIÓN DE LA CONTRASEÑA EN ESTE PUNTO. Podríamos poner una contraseña fácil de recordar, pero una contraseña fácil de recordar podría ser una vulnerabilidad, esto no es una web, aquí no hay límite de intentos; así que alguien con picardía podría intentar sacar la contraseña y acertarla si ponéis algo muy evidente, tu fecha de nacimiento, los nombres de tus hijos o de tu perro,  ¡sobre todo si lo teneis en el Facebook!!
Por otro lado si ponemos un password tipo 234€#@nimAeD345[] .... ¿te vas a acordar de memoria?? si es así, enhorabuena por tu memoria, que la tienes prodigiosa, ¿vas a apuntarla en un papel? 😆 bueno quizá podrías usar Keepassx como vimos en el post anterior.  Pero una vez allí estaríamos en las mismas.
Yo recomendaría usar una contraseña larga, mas de 14 o 15 caracteres con algo que nos sea fácil de recordar y que esté al alcance sólo de las personas mas cercanas a nosotros o incluso que no sepa nadie, que no sea un dato que tengáis en Facebook o Instagram o en cualquier sitio de la web. Algo que si necesitas abrir el volumen en una situación de estrés o con alguien mirando por encima de tu hombro puedas teclear rápido y sin dudas. Si se te olvida la contraseña o pierdes el papelito NO PODRÁS RECUPERAR LA INFORMACIÓN. ¡Hala!¡A darle al coco!

Bueno, continuamos con la parte para mi mas interesante y extraña, para mejora la aleatoriedad de las claves que se usan para cifrar, ¡hay que mover el ratón! Cuanto mas lo mueves mas seguras serán las Header y Master keys que se usan durante el cifrado. Si queréis mas info sobre como funcionan los algoritmos de cifrado os dejaré al final un enlace para consultas.


Podemos dejar de mover el ratón cuando queramos, y si la barra de progreso se llena vamos a format (os lo marco en rojo) y listo.



Cuando queráis abrir vuestro volumen cifrado solo tenéis que ir a la ventana de inicio del programa y elegís "Seleccionar archivo" (5) o si lo que habéis cifrado es una partición o un memoria "Seleccionar dispositivo" (6)


Y bien, si hemos seguido todos los pasos ya tenemos nuestro volumen cifrado. Ahora voy a hablaros de algunas  de las features curiosas de Veracrypt:


  • Volúmenes ocultos: El principio es que un volumen de VeraCrypt se crea dentro de otro volumen de VeraCrypt (dentro del espacio libre en el volumen). Incluso cuando se monta el volumen externo, sería imposible probar si hay un volumen oculto dentro o no, porque el espacio libre en cualquier volumen de VeraCrypt siempre está lleno de datos aleatorios cuando se crea el volumen y no forma parte de él. el volumen oculto (desmontado) no se puede distinguir de los datos aleatorios. Esto viene muy bien para casos en los que te veas obligado a revelar la contraseña, como extorsión o torturas, para mas realismo se pueden meter datos que no te importe revelar.
  • Archivos clave: Puedes usar un archivo junto la contraseña para abrir el volumen, de tal forma que si alguien averiguara la contraseña e intentara acceder al volumen, necesitaría saber que archivo de los miles que tienes en el pc es el que usas  para abrirlo.
Como veis los desarrolladores de Veracrypt (no me olvido de los de Truecrypt) han hecho un trabajo de primera y pocos programas te dan tanto por tan poco.

¿Es realmente seguro Veracrypt? A ver en esta vida lo único seguro es la muerte y los impuestos pero en 2010 el FBI falló en descifrar los archivos de Daniel Dantas cifrados con Truecrypt durante un año en el transcurso de la operación Satyagraha. Teniendo en cuenta que Veracrypt ha mejorado Truecrypt, podríamos suponer que si no son irrompibles estos volúmenes, su apertura sería tan retardada que es posible que cuando alguien consiga abrir tu volumen el contenido ya no tenga ningún valor.


Y para ir terminando que ya debéis estar cansad@s de leer en la pantalla 😃 os dejo este enlace a un documento del ICAI en el que tenéis un resumen con mas enlaces por si queréis frikear un poco en el tema de la criptografía, es muy marciano pero muy interesante también.

Me despido adelantando que en el siguiente post, os hablaré sobre el borrado seguro de archivos en GNU/Linux.