2018/08/30

En casa de herrero... 2

Poner 2 en el título es trampa, un truco de marketing, pues le pasó a otra persona.

Para quienes se venían regocijando con mis desventuras, les traigo otra historia parecida y el aprendizaje.

Lo que ocurrió fué que en medio de una difusión pública, pasando de una ventana a otra, quedó expuesto un documento con credenciales. Aunque la persona rápidamente notó el error y sacó el documento, obviamente era tarde, pues en la virtualidad es muy sencillo desplazarse hacia atrás en el tiempo y pausar.

Fue interesante notar que la clave, aunque era larga, tenía un importante defecto, que es que era legible al estar compuesta por palabras. Esto no es tan malo en sí, lo es por que nos da un fuerte indicio de cómo puede estar conformada esta misma clave en el futuro o en sistemas cercanos.

Es como si mi regla de claves de web mails fuera:

proveedorAñoPalabra

En particular

gmail2007canulos


Como que para atacarme en yahoo voy a probar con

yahoo20##xxxxxxx


Esta clave me da un nuevo concepto que voy a llamar "Falsa sensación de usabilidad", que es amigo de "Falsa sensación de seguridad", pero, como es evidente, desde el punto de vista de UX.

Comparando gmail2007canulos con dbHg96Pecfdu86ev sin duda la primera es más fácil de recordar y en caso de tenerla escrita o en un dispositivo distinto al de uso, de transcribir a mano, cosa para lo que la segunda no se presta

La probabilidad y estadística y la teoría de la información no es lo mío, pero intuitivamente puedo apreciar las medidas de las claves según varias fuentes:


[1][2][3]
dbHg96Pecfdu86ev 3.62573.52178.3
aaaaaaaaaaaaaaaa1566.7
gmail2007canulos3.62542.05462.8

Los numeritos cuanto mayores mejores.

¿Como que no es tan malo el que teníamos, no?


No, es muy malo, por que ya conocemos gmail2007, nos queda:

canulos2.80735 16.0424.1



Si no necesitamos recordar, podemos elegir la primera. Si necesitáramos poder escribirla pues la tenemos en papel u otro dispositivo y el login en otra, debemos tener la precaución de no usar ciertas letras. Esto debilita levemente la clave pues reduce la combinaciones a explorar pero excluye los problemas de lectura como:

1l
0O
6G

Si no te parece importante, te desafío a que en un sistema de tres intentos no te bloquees con esto:

aUIS06lxf


Acá podemos ver el diálogo de creación de una entrada en un gestor[4] de claves, es la una opción ("exclude look-alike characters"):



Tambien se podrían agregar delimitadores para facilitar la lectura:

dbHg96Pecfdu86ev  
dbHg.96Pe.cfdu.86ev
dbHg-96Pe-cfdu-86ev
dbHg_96Pe_cfdu_86ev


Estos delimitadores mejoran la resistencia ante un ataque de fuerza bruta. Para quien conoce nuestro esquema sólo triplica el tiempo de exploración.

Una vez que hemos llegado a guardar las credenciales en un gestor, si difundimos accidentalmente, sólo relevamos en qué sitios tenemos cuentas, que no es tan grave y el usuario, que sería mejor no divulgarlo tampoco, pero dista de las credenciales.

Por lo general los sitios y usuarios podemos considerarlos información pública, ya que basta con entrar en esos sitios para ver nuestros aportes e identificarnos. Es por ello que es en extremo importante proteger lo realmente secreto, que es lo único secreto, la clave.




Como el gestor permite copiar en el portapapeles la clave sin verla, en ningún momento hay riesgo de que pueda divulgarse. Al cabo de diez segundos se borra del portapapeles, así que la oportunidad de pegarla accidentalmente en otro lado que no sea el campo de autenticación es baja.



Concluyendo, el procedimiento de respuesta dicta que al menos hay que:
  • Cambiar la clave en el sistema afectado.
  • Evitar que el video quede online.
  • Cambiar la clave en el documento.
  • Notificar a los usuarios de esa clave si los hay.
  • Editar el video.
  • Publicar el video según lo planeado.

El procedimiento de prevención agrega que:
  • Sacar la clave de documento y ponerla en un almacén, por ejemplo keepass.
  • Usar una clave generada al azar de no menos de 16 caracteres.
  • Intentar recordar cerrar los documentos y aplicaciones sensibles antes de iniciar una difusión pública.

Sólo nos resta tener una clave muy fuerte y recordable para el gestor, usando una técnica como la de https://xkcd.com/936/

No estoy de acuerdo con las cuentas ahí expuestas, pues siempre debo asumir que si tengo un esquema de claves, el adversario lo conoce, pues al usarlo en distintos sitios, alguno puede haber sido vulnerado.

No es:

correcthorsebatterystaple 3.3638649.495 93.6



65 ^ 25 -> 1.4272477e+45 combinaciones


es (palabras en el diccionario) ^ 4, siendo diccionario un número bajo:

si fuera 2000 -> 1.6e+13
si fuera 10000 ->  1e+16

igual es un poco mejor que canulos (65^7 -> 4.9022279e+12).

canulos2.80735 16.0424.1

Te invito a reflexionar sobre el tema, hacer las cuentas y corregirme si me equivoqué en ellas o los conceptos.


[1] http://www.shannonentropy.netmark.pl/
[2] https://apps.cygnius.net/passtest/
[3] http://rumkin.com/tools/password/passchk.php
[4] algunos gestores
     https://www.keepassx.org/
     https://keepass.info/



2018/08/22

Parallella paradumbs: parabuntu parallella examples: primera ronda

En el marco del proyecto Forzando Brutalmente MD5 [1] he usado una parallella[2] y aquí comparto algunas notas inconexas que he tomado.

Existen tres variantes [3], voy a usar la versión más completa, hdmi con epiphany[4] y lidiar con hacer funcionar todo.


Los pasos son lo de la quick start guide [5], que son básicamente prepará el hardware (ojo con el cooler), bajá la imagen, dd, arrancá.


El problema viene después cuando querés usar todo, pues es un proyecto abandonado y se complica instalarle piezas pues los repos se han desactualizado. Esto fue lo que me llevó a probar con Linaro [6], pero me fue peor, ni pude instalar openssh-server, no sé si por que se ha tornado imposible, limitaciones mías o que no le dediqué tanto esfuerzo como a parabuntu.

El plan es que mientras voy instalando en una sd en la parallella, tengo montada la partición de la que ya me funcionó pero no tomé la debida nota, para ir viendo el historial de operaciones y los componentes instalados para rescatar el proceso.

Supongamos que ya arrancamos ok tras la quick start guide.

Podemos ajustar IP fija, x2x, cambiar credenciales, autologin, xtemp (registrado en trabajando más cómodo).

Una primera pasada sobre los ejemplos para separar lo que anda de lo que no.

Parallella Examples


Win

actors_dct2d make && ./run.sh
assembly-opt build.sh && ./run.sh
ebsp-hello make && ./bin/host_hello
eprime ./build.sh && ./run.sh
eprime2 ./build.sh && ./run.sh
fft-xcorr make IMPL=fftw parece ok, pero no sé que hace
game-of-life ./build.sh && ./main.elf
john cd src && make linux-parallella && cd ../run && ./john -te -form=bcrypt-parallella
lena ./build.sh #./test.sh #./run.sh Parece andar
multicast make &&./main.elf
omp4-epiphany/
demo1
ompicc omp4_demo1.c && ./a.out
omp4-epiphany/
demo2
ompicc omp4_demo2.c && ./a.out
omp4-epiphany/
gol
ompicc gol_fast.c && ./a.out
omp4-epiphany/
nqueens
ompicc nqueens.c && ./a.out
omp4-epiphany/
pi_kernels
ompicc pi.c && ./a.out
paralle2 ./build.sh e2 && time ./run.sh e2
pi-machin-like ./build.sh && ./main.elf


Skipped

dac-wavegen necesita porcupine
digital-pot necesita porcupine
epython no me interesa
kinect_test necesita kinetic
linux_gpio no sé a qué le pega
motion-cap necesita porcupine, muchas dependencias
y conectar cámara web
rpi-camera necesita cámara rpi, además es para 7020,
me abrió los ojos a la olvidada interfaz serial
slides es una presentación que podemos ver en cualquier lado

Fail

assembly-opt build_multi.sh && ./run_multi.sh Segmentation fault
blobubska/src make fatal error: fluidsynth.h: No such file or directory
e_dla/src make fatal error: coprthr_mpi.h: No such file or directory
e_dla/src ./dla coprthr-1.6.2 (Freewill) Segmentation fault
fft-xcorr make IMPL=coprthr cannot find -lcoprthr_mpi
heat_stencil ./build.sh && ./run.sh host_main.elf: e_open(): ECORE[0,4] MEM mmap failure
mandelbrot make && ./run.sh have to switch to TTY
mini-nbody ./build.sh fatal error: coprthr_mpi.h: No such file or directory
mpi-fft2d make fatal error: coprthr_mpi.h: No such file or directory
nbody_mpi make coprthr_mpi.h: No such file or directory
omp4-epiphany/
mandelbrot_omps
ompicc mandelbrot_omp4.c && ./a.out have to switch to TTY
raymarch make fatal error: SDL/SDL.h: No such file or directory
riecoin ./build.sh error: interrupt handlers cannot have arguments
vfft ./build.sh probablemente mal build.sh

Me gustan los relacionados con coprthr, pues recuerdo haberlos hecho andar

Special Mention


john hay una versión que usa fpga, pero 7020
para-para quizas resuelva todo lo de coprthr
r-opencl muchas dependencias


Como sigue


Hay varias dependencias que tienen que ver con video, que luego me costaría hacer funcionar de todos modos por la dificultad de acceder a una TTY.

Otro problema es el relativo a coprthr, que aunque no me está bloqueando en mis planes, estaría bueno resolver para que hayan más ejemplos funcionando.

Lo veré en la segunda ronda.




[1] http://seguridad-agile.blogspot.com/2018/05/forzando-brutalmente-md5-presentacion.html

[2] https://www.parallella.org

[3] http://www.parallella.org/create-sdcard/

[4] https://github.com/parallella/parabuntu/releases/download/parabuntu-2016.11.1/parabuntu-2016.11.1-hdmi-z7010.img.gz


[5] https://www.parallella.org/quick-start/

[6] Las entradas de este blog "Parallella paradumbs: Linaro fail X"

[7] porcupine
https://www.parallella.org/2014/12/15/meet-porcupine-the-parallella-breakout-board/
https://www.digikey.com/product-detail/en/adapteva-inc/ACC1600-01/1554-1003-ND/5048176?utm_adgroup=Accessories&slid=&gclid=EAIaIQobChMI36rm39WB3QIVFQaRCh3p6Q6LEAAYASAAEgJ9nvD_BwE