Aplicación Android que levanata un nodo y expone una interfaz sencilla de usar con el objetivo de probar diferentes criptosistemas y protocolos para calcular PSI (Private Set Intersection) o conjuntos de intersecciones privados. Compatible con los nodos levantados por un servicio web WS_PSI-PSI Suite.
- API 26 (Android 8.0) o superior. Recomendado: API 34 (Android 14).
- Android Studio Iguana o Jellyfish.
No quiere decir que no funcione en otras versiones de Android Studio, pero no se ha probado y puede haber problemas con los plugins de Gradle.
Se proponen dos vías de instalación:
Vía APK (Fácil y rápido)
Se pueden encontrar dos versiones de la aplicación en la página de releases del repositorio:
PSI-Suite_RTDB_X.X.apk
: Versión que envía (o puede) enviar registros a la base de datos de este proyecto.PSI-Suite_NoRTDB_X.X.apk
: Versión que no envía registros a ninguna base de datos (sigue mandando información a Crashlytics).
Se plantean como formas sencillas de probar el proyecto, pero se recomienda compilar el proyecto desde Android Studio para depurar, ver logs y conectar un proyecto de Firebase propio.
- Descargar el archivo APK.
- Instalar el archivo APK en el dispositivo Android.
Se puede instalar en emuladores.
Vía Android Studio (Mejor para continuar el desarrollo del proyecto)
- Clonar el repositorio en Android Studio. (
https://github.com/4rius/APP_PSI.git
) - Al abrir el proyecto se debería compilar automáticamente. Si no es así, se pueden seguir estos pasos:
- Ahora es necesario tener un dispositivo Android conectado al ordenador o arrancar un emulador previamente configurado.
En ambas opciones, cuando la aplicación se inicie, creará un nodo descentralizado que puede empezar a operar en la red local. Para que otros dispositivos se conecten a este nodo, deben estar en la misma red local y conocer la dirección IP del dispositivo que aloja el nodo.
También se generan las claves de los criptosistemas y el conjunto de datos oculto que se utilizará en las operaciones de PSI.
La interfaz de Android permite realizar las mismas operaciones que los servicios web, desde la hoja inferrior de la aplicación se pueden realizar todas las operaciones de gestión de la app y el nodo, así como recuperación de datos y conexión a otros compañeros, y desde las opciones de los dispositivos se pueden realizar las mismas operaciones de comunicación.
De nuevo, no es posible modificar la IP que se le asigna al nodo (que es la IP local), pero se puede realizar el cambio si se quisiera que el nodo se expusiera a internet. Esto no ha sido probado en el alcance de este proyecto, pero con una IP pública y un puerto abierto, no debería haber problemas.
La aplicación utiliza Firebase para el sistema de registro y autenticación de usuarios. Se ha configurado un proyecto de Firebase para este propósito, pero se puede cambiar por otro proyecto propio.
Para cambiar el proyecto de Firebase, se deben seguir los siguientes pasos:
- Crear un proyecto de Firebase en la consola de Firebase.
- Añadir la aplicación Android a este proyecto.
- Descargar el archivo
google-services.json
que se proporciona al configurar el proyecto, o que se puede encontrar en los ajustes generales del proyecto.
- Reemplazar el archivo que se encuentra en la carpeta
app
del proyecto de Android
- La aplicación ya está configurada, se deja a continuación una guía para añadir el usuario que permitirá la autenticación en la aplicación y el envío de registros a la base de datos. De lo contrario, la aplicación funcionará pero no podrá enviar registros
En la aplicación se puede comprobar que no se ha autenticado correctamente. Una compilación así nunca tendrá la capcidad de enviar registros a la base de datos.
- Configurar la Realtime Database de Firebase para que se puedan almacenar los datos de los usuarios. Consiste en inicializarla y configurar las reglas de acceso. Tal y como están en este proyecto, permiten lectura y escritura en el nodo
logs
a cualquier usuario autenticado.{ "rules": { "logs": { ".read": "auth != null", ".write": "auth != null" } } }
- En la consola de Firebase, ir a la sección de
Authentication
.
- Añadir el método de autenticación por correo electrónico y contraseña.
- Crear un usuario en la sección de
Users
.
- Crear un archivo
FirebaseCredentialsAndroid.properties
con el siguiente contenido:Con los datos del usuario creado.FIREBASE_EMAIL=correo@correo.com FIREBASE_PASSWORD=contraseña
- Crear una carpeta de recursos en la carpeta
app
del proyecto de Android y colocar el archivo creado.
- Añadir el archivo al
.gitignore
para que no se suba al repositorio. - Compilar el proyecto y ejecutarlo. La autenticación se realizará en el servicio de registros de manera transparente para el usuario.
Desde la aplicación también se puede comprobar que se ha autenticado correctamente. El usuario puede desactivar esta opción en cada sesión de uso.
Este proyecto está distribuido bajo la licencia MIT. Para más información, consultar el archivo LICENSE.