LockedShield
Final de la fase
Hola a tod@s como comenté ayer tarde fue la fase final del concurso universitario de software libre. Por no liarme mucho resumiré en que no quedé entre los tres primeros puestos porque igual el proyecto resultaba muy comercial ( o eso entendí ).
Aprovecho para felicitar a los tres premiados por sus excelentes aplicaciones que paso a comentar:
R^2 ( http://rsquaredproject.wordpress.com/ ). En resumidas cuentas es una aplicación gráfica que interactúa con “R” para realizar una potente aplicación estadística. Aún está verde pero le veo un gran futuro en la docencia.
QDemos ( http://qdemos.wordpress.com/ ). Como siempre, Paco, ha realizado un proyecto magnífico. Una aplicación nativa para Android para realizar quedadas entre amigos sin complicaciones.
Go-Engine ( http://goengine.wordpress.com/ ). Es un motor gráfico basado en OpenGL con un gran potencial. Me flipó la idea y animo a que el autor, Daniel, no abandone el proyecto y continúe con él.
Sin más, dejo por aquí la presentación de lo que fue LockedShield esperando que día a día pueda seguir mejorando la aplicación para que en un futuro no quede en el olvido.
¡Más y más cambios!
Hoy ha sido un día provechoso en lo que al proyecto se refiere y como no, han habido cambios. Los más notables se los lleva la parte móvil pues se ha rediseñado algunas pantallas ( espero que para mejor ).
Lo primero y gracias al feedback de Jesús Torres, he eliminado los servidores de la pantalla principal. Ahora para seleccionarlo hay que ir al panel de servidores. En la versión móvil el diseño se ha alargado a los bordes y los elementos se han hecho algo más grandes. También se ha añadido el menú en la parte inferior y eliminado la barra superior ( sólo en versión móvil y tablet ).
Aparte ( como “novedad” ) la función de borrar un servidor ya funciona ( también se cambió la pantalla donde se veía el listado de los mismos ).
Seguramente esta noche añada algunas restricciones más de seguridad como por ejemplo que la contraseña no sea menor a X caracteres y demás.
Mañana ya es la final del concurso, aprovecho para que si alguno de los otros participantes lo lee, desearle mucha suerte ( ¿alguien leerá toda esta parrafada? o.O )
Bugfixes
En un ratito de la tarde de hoy he podido corregir algunos “errores” de diseño. El primero de todos ha sido el agregar el “swipe” a LockedShield ( arrastrar el dedo de un lado al otro para que aparezcan menús )
( ya los cambios están en el repositorio )
El segundo cambio, y no menos importante aunque no del todo terminado, es la adición de una barra en la parte inferior de la pantalla a modo de menú.
El menú también está implementado en el repositorio aunque está comentado debido a que aún no funciona como quiero ( que aparezca y desaparezca según se necesite ).
Editado: Fé de ratas
También se ha agregado un gran parche que hacía que los móviles con teclados predictivos insertaran por defecto un espacio al final. Ahora el problema se ha solventado y automaticamente ( da igual el número de espacios que insertes ) se eliminan automáticamente.
¡Rumbo a la final!
Ayer día 26 se anunciaron los proyectos que pasan a la fase final del Concurso Universitario de Software Libre en la ULL entre los cuales ¡se encuentra LockedShield!
Tema aparte, aunque muy relacionado, ya han pasado algunos días desde que se publicó LockedShield como versión de testeo para android y para cliente web y no podía ser menos, tiene fallos.
En la próxima versión se intentarán corregir y mejorar los siguientes aspectos:
Por parte del cliente:
- Añadir swipe para transición entre pantallas ( arrastrar el dedo de un lado a otro )
- Bajar el tiempo de las transiciones para dispositivos móviles ( necesitan un mayor tiempo para reaccionar y por tanto hay que eliminarlo de la otra parte )
- Aumentar el tiempo en los mensajes de alerta, información y error ( aunque ya se está trabajando en una versión “más” nativa que interactúe directamente con el sistema en java y no en javascript ).
- Se arreglarán textos que no se muestran correctamente en dispositivos móviles.
- Modificar algunos textos para darles más sentido
- Se reiniciará el form de guardar contraseña cuando se guarde correctamente
- La pantalla de login será independiente como una página más debido a que el menú lateral confunde.
- Posiblemente se agregue una barra inferior con iconos que facilitarán el acceso a los menús.
- Añadir las funcionalidades que en el post anterior se especificaron que no funcionaban aún como borrar contraseña, editar contraseña, borrar/editar servidor, etc.
Por parte del servidor:
- Hasta la fecha, para cada dispositivo se genera un par de claves asimétricas ( sí, parece una locura pero cuando empecé tenía sentido para aumentar la seguridad ya que se podía elegir entre un cifrado de 512, 1024, 2048.. ). Ahora me estoy planteando en generar para el servidor 4 claves ( públicas y privadas ) donde las privadas se guarden en un texto en alguna carpeta ( obviamente no accesible vía navegador ) y las públicas queden a disposición de los usuarios. Estas claves se regenerarían cada X tiempo para evitar romper el cifrado por ataques por fuerza bruta.
En general:
- Documentar el código
Todas estas mejoras serán próximas pero no estarán para el concurso puesto que ahora hay que trabajar en una presentación para el producto y posteriormente ejercer como estudiante ( ¡hola época de exámenes! ). Se espera que para verano ya exista una versión funcional y optimizada hasta con auto-instalador de cliente/servidor para que montes tu propio servidor donde te apetezca.
¡Por supuesto que tengo muchas ideas más pero no las voy a revelar todas el primer día :P!
Habemus App!
Bueno, después de díassemanas meses de duro trabajo ya puedo decir que hay una versión alpha de LockedShield lista para descargar y probar
Instrucciones de uso:
- Bajar la aplicación de http://lockedshield.wesped.es/servidor/LockedShield.apk
- Instalar en tu dispositivo Android
- Probar y, si eres tan amable, reportar errores y/o sugerencias por facebook, email o como quieras.
Como podrán observar la aplicación es sumamente fácil de utilizar. En la parte superior vemos una barra gris con dos botones a los lados. El de la derecha abre el menú para autentificarte como usuario ya registrado. El de la izquierda abre un menú de opciones.
- Cerrar menú ( para cerrarlo ). También se puede hacer “tap” fuera del menú para que se cierre automáticamente.
- Acerca de… ( aún no funciona :p )
- Gestor de Servidores
En esta última opción se podrán “gestionar” ( de momento sólo agregar ^_^U ) servidores de la aplicación. Por defecto ya rellené uno con la dirección al servidor que tengo alojado aquí aunque por supuesto pueden bajar el código del servidor del repositorio.
Ahora las instrucciones de uso:
- Para autentificarte antes debes registrarte, de modo que, una vez agregado el servidor de prueba puedes registrarte con un usuario y contraseña. Este paso puede tardar un poco ya que, tanto cliente como servidor estarán generando un par de claves para establecer una conexión segura.
- Una vez dentro ( obvia el mensaje en rojo que aún no tengo implementada la recuperación de la cuenta por esa vía ). Puedes sincronizar contraseñas, guardar una nueva, salir de tu cuenta, sincronizar dispositivos, generar códigos, ir a las opciones, ver recomendaciones de seguridad,etc ( realmente no hay un etc.. )
- Generar un código de seguridad: Antes de hacerlo, intenta acceder con tu cuenta en la siguiente dirección con otro dispositivo que no sea el móvil ( Haz click aquí ). Una vez te autentifiques ( ojo, no registrar aunque sí deberás agregar nuevamente el servidor ya que recuerda, la información NO se guarda en el servidor ) verás ( o deberías ) ver la pantalla de espera donde se solicita un código y, opcionalmente, un nombre de dispositivo. Ahora desde tu móvil ve al menú y genera un código de seguridad ( válido durante media hora ) e ingrésalo en el navegador ( de lo contrario no podrás acceder ). Si todo ha ido bien podrás haber accedido a tu cuenta ( aunque por seguridad se te pida otra vez la contraseña )
- Guardar contraseña. No tiene misterio alguno, simplemente guardas una contraseña con una referencia. Se manda al servidor y si quieres, desde el navegador, ahora haz click en sincronizar contraseñas para ver la/s contraseña/s guardada/s.
- Sincronizar contraseñas: Sincroniza las contraseñas con el servidor.
- Dispositivos. Si haces click en sincronizar dispositivos ahora podrás ver el del navegador o como lo llamaras y un interruptor en la parte derecha que, en azul, muestra “Sí”. Significa que ese dispositivo tiene acceso a tu cuenta. Si alguna vez pierdes ese dispositivo o te dejaste la sesión abierta en algún lugar basta con ir a esta opción y hacer click encima de él para que cambie a “No” y se le corte el acceso.
- Si hacers click en el cuadro azul que se encuentra al pie de la pantalla en tu cuenta, podrás ver un listado de recomendaciones de seguridad ( falla en pantallas pequeñas )
- Si quieres salir de tu cuenta, haz click en “Salir de cuenta”. Fácil, ¿verdad? xD
De momento esto es todo. Una aplicación medianamente funcional al menos para que se pueda ir probando su funcionamiento. Por último, si quieres ver la base de datos por dentro ( uy, qué temerario soy ). Puedes conectarte remotamente usando los siguientes parámetros:
Host: 212.83.191.171 User: lockedsh_tester Password: l0cK3d5h13lD Base de datos: lockedsh_lockedshieldtest( Tranquilos, sólo pueden hacer selects :p )
¡Hasta pronto!¡Habemus una aplicación!
Igual aún es muy pronto para tirar cohetes pero ya LockedShield va tomando forma. Aún no he realizado la migración del código a Android pero sólo es cuestión de horas/días.
Actualmente el proyecto es medianamente funcional con respecto a la idea básica de gestionar contraseñas ya que permite:
- Guardar servidores
- Registrarte con tu cuenta de usuario
- Loguearte/Autentificarte
- Si es desde un dispositivo conocido ( navegador ya usado/móvil ) lo hace sin paso intermedio.
- Si es un dispositivo no registrado, solicita una clave que se genera en el dispositivo conocido.
- Generar los códigos de registro ( si no, ¡menuda gracia! xD )
- Guardar nuevas contraseñas en el servidor elegido
- Recuperar el listado de contraseñas
Otras minucias han sido pantallas estáticas con consejos sobre seguridad y otras curiosidades que si todo va bien en unas horas estarán en el repositorio.
Por supuesto que tengo mil ideas más ( hacer una extensión para Chrome y FF ), mejorar el sistema, hacer un sistema de contraseñas compartidas, un sistema de control de base de datos ( como un git pero algo más limitado :p ) y mucho más que pronto se verá.