Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comprobación de integridad en archivos descargados #21

Open
jmdaweb opened this issue Mar 1, 2023 · 0 comments
Open

Comprobación de integridad en archivos descargados #21

jmdaweb opened this issue Mar 1, 2023 · 0 comments

Comments

@jmdaweb
Copy link
Contributor

jmdaweb commented Mar 1, 2023

Introducción teórica

Cuando nos descargamos un archivo de Internet, generalmente un programa, suele venir acompañado de unas cosas raras llamadas MD5, SHA1, SHA512, etc. Estos son nombres de algoritmos usados para elaborar algo conocido como suma de comprobación.
La suma de comprobación es un conjunto de bytes, que se suele expresar como cadena de texto. Es el resultado de una operación matemática muy complicada. En teoría, cada contenido es único, debe tener su propia suma, y no debe haber otra suma igual a la suya en el mundo.
En la práctica, ya se han detectado colisiones con MD5, por lo que se recomiendan otros algoritmos más robustos, como SHA256 o SHA512.

Lo que se pide

La tienda debe poder calcular la suma de comprobación de un complemento después de descargárselo. Si coincide con la suma que hay asociada a ese complemento en la base de datos, todo está bien. De lo contrario, significa que:

  • El complemento no se ha descargado bien, o
  • El desarrollador lo ha alterado sin actualizarlo en la tienda. Y quien dice el desarrollador, puede decir un atacante malintencionado.

En estos casos, no se debe bloquear la instalación, sino avisar al usuario y preguntarle. Existen complementos, como Braille Extender y Windows App Essentials en su versión de desarrollo, que cambian con rapidez, por lo que bloquear su instalación sería un error.
Esta incidencia está pensada para resolverse a medio-largo plazo, e implementarse por fases.

Primera fase

En el servidor de advancedAddonFiles todavía no se ha implementado la gestión de sumas de comprobación. Sin embargo, ya se pueden ir haciendo cosas en la tienda. Para comenzar, se puede calcular la suma de un complemento justo después de descargarlo, ya sea independientemente o como actualización, e imprimirla en el log de NVDA. Aunque todavía no es necesario, usaremos SHA512 en vez de SHA256, y así nos ahorramos tarea el día que SHA256 deje de ser seguro.

Algunas herramientas útiles

Para calcular la suma de comprobación desde Python, puedes usar la función hashlib.sha512. Hashlib forma parte de la biblioteca estándar de Python, y viene incorporada dentro de NVDA.
En la consola Git Bash, tienes comandos para calcular sumas de comprobación: md5sum, sha256sum, sha512sum, etc. Cuando ejecutes sha512sum complemento.nvda-addon, te saldrá por consola el resultado. Lo ideal es que trabajes con un mismo archivo desde consola y desde Python, y que la cadena que obtengas como resultado sea siempre la misma.
Recuerda que el archivo no tiene por qué estar almacenado en el disco duro necesariamente, puedes leer sus bytes en memoria y hacer el cálculo a partir de ese contenido.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant