Horcrux: divide archivos en fragmentos cifrados
(github.com/jesseduffield)- Horcrux es una herramienta CLI que divide archivos en fragmentos horcrux cifrados y permite restaurar el archivo original sin tener que recordar una contraseña
- Está pensada para usuarios que necesitan cifrar archivos grandes y sensibles, pero podrían no recordar la contraseña años después, o para quienes quieren enviar archivos por varios canales y reducir mucho la posibilidad de que un atacante los intercepte
splitfunciona recibiendo la cantidad de fragmentos a generar al dividir el archivo y la cantidad de fragmentos necesarios para restaurar el original; el ejemplo muestra una configuración en la que se puede restaurar con 3 fragmentos cualquiera de un total de 5bindes el comando para volver a unir el archivo original desde un directorio que contiene fragmentos horcrux; también se puede pasar el directorio como argumento- Internamente usa Shamir Secret Sharing Scheme para dividir la clave de cifrado en varias partes y reconstruir la clave original cuando se dispone de una cantidad de fragmentos igual o superior al umbral (threshold) definido
- La generación de claves usa la función
Readdecrypto/randde la biblioteca estándar de Go, y la implementación de Shamir es una adaptación de la implementación del repo de vault de Hashicorp - La instalación está disponible con
brew install jesseduffield/horcrux/horcruxen Homebrew,scoop bucket add extras; scoop install horcruxen scoop, o mediante una versión binaria - La alternativa mencionada,
ssss, se describe como funcional para claves pero no para archivos en sí; otros proyectos comohorcruxyHaystackse diferencian en que no soportan umbrales de horcrux
1 comentarios
Opiniones en Hacker News
Algo a tener en cuenta es que esta herramienta usa modo AES OFB para cifrar y descifrar archivos, y no garantiza la integridad del texto cifrado; es decir, no tiene MAC
[0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...
Hay un proyecto genial entre las herramientas de respaldo en papel que usa intercambio secreto de Shamir para permitirte repartir varias copias en papel entre tus amigos y luego restaurar el archivo leyéndolas ópticamente
https://github.com/cyphar/paperback
Ahora todas las funciones andan, pero hay que copiar y pegar el contenido del código QR en la línea de comandos, y también tengo que fijar el formato en disco, bueno, en papel
https://github.com/paritytech/banana_split
Hace poco Levchin escribió sobre el intercambio secreto de Shamir y el caos que causó en PayPal: https://max.levch.in/post/724289457144070144/shamir-secret-s...
Es uno de mis algoritmos favoritos, pero, sinceramente, últimamente empiezo a preguntarme si su atractivo para mí es más académico o si sus casos de uso reales son más limitados de lo que pensaba
Es lo bastante simple como para entenderlo con muy poca formación en criptografía o matemática avanzada; en realidad, basta con un poco de álgebra. Que sea posible ya es sorprendente, y al menos al principio sus casos de uso concretos se ven claramente, además de que puedes implementarlo tú mismo. Claro que igual tiene trampas
Por eso creo que aparece con demasiada frecuencia, no solo en foros de discusión sino también en soluciones industriales
No sé si estás planteando una relación causal entre ambos, pero el problema no era el algoritmo en sí, sino la interfaz para acceder al algoritmo
Según las FAQ, esta herramienta divide la clave de cifrado usando el esquema de intercambio secreto de Shamir. Pero, de hecho, se puede lograr el mismo objetivo sin una clave de cifrado usando Reed-Solomon
Primero se procesa la entrada con una transformación todo-o-nada (AONT) y luego se divide en fragmentos Reed-Solomon. La AONT es necesaria porque Reed-Solomon es vulnerable a ataques de distinción y es probable que filtre información de la entrada
[1] <https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_cor...>
[2] <https://en.wikipedia.org/wiki/All-or-nothing_transform>
[3] <https://en.wikipedia.org/wiki/Distinguishing_attack>
Estrictamente hablando, en Shamir el paso de cifrado tampoco es obligatorio. Pero tiene ventajas cifrar el secreto en sí y usar SSS solo para la clave. No sé si Horcrux funciona así, pero mi herramienta similar, Paperback, sí lo hace
[1]: https://github.com/cyphar/paperback
Paper: <https://www.usenix.org/legacy/event/fast11/tech/full_papers/...>
Se me ocurren varias formas de “dividir un archivo cifrado con contraseña de modo que pueda volver a ensamblarse aunque falten algunos fragmentos”, pero me llamó la atención que esto pueda hacerse sin contraseña.
Para alguien a quien le gustan los temas de seguridad o los algoritmos, es algo bastante interesante. Creo que me pondría a revisar el código fuente y a leer sobre las técnicas relacionadas para entender cómo lo implementaron. Dicho eso, no estoy muy seguro de para qué sirve algo así. Me pregunto si hay un modelo de amenazas donde tenga sentido como una capa más de la “piel de cebolla” para proteger datos sensibles, o si tiene alguna ventaja frente a casos de uso que ya se resuelven mejor de otras maneras.
El autor también compara en broma el problema de recordar la contraseña de un diario viejo con el de recordar suficientes escondites, y personalmente creo que esto último sería un problema mucho mayor. Habría que reducir la cantidad de fragmentos y aumentar los lugares donde esconderlos, pero entonces se reduce la seguridad que ofrece[0].
Me viene a la mente la multifirma, aunque lo que yo llegué a ver fue algo como “tener que conectar una llave USB y ejecutar un programa junto con dos colegas para desplegar una actualización”. Todos tenían que aportar su llave, y quedábamos en una situación de “si estoy con licencia médica, no sale la actualización”; no sé si eso era una limitación de la herramienta o si lo habían configurado así porque en ese momento estaba en alfa.
Aun así, es muy interesante.
[0] Dicho eso, “debajo del colchón” probablemente tenga un nivel de seguridad similar a usar “password” como contraseña.
La protección real es el control de acceso físico ya existente. Para obtener los datos, un ladrón tendría que entrar en tres lugares.
También podrías cifrar los datos y dividir la contraseña en tres fragmentos para guardarlos en ubicaciones distintas, pero entonces tendrías que almacenar tanto los datos como la contraseña.
Cosas que parecen relacionadas por el nombre. Probablemente haya más de un proyecto. ¿Qué más habrá?
Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - noviembre de 2021, 11 comentarios
Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - febrero de 2021, 40 comentarios
Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - agosto de 2020, 93 comentarios
I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - agosto de 2020, 80 comentarios
You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - enero de 2020, 17 comentarios
Me recuerda a los archivos de paridad de Usenet. Se subía un archivo grande dividido en varios archivos pequeños y cierta cantidad de archivos de paridad, y por ejemplo se podía regenerar el archivo original aun teniendo solo n-3 de n archivos.
https://en.wikipedia.org/wiki/Parchive
Hace poco descubrí que Clevis también soporta el esquema de compartición de secretos de Shamir. De hecho, es la única forma de configurar varios pines del mismo tipo y con los mismos permisos; por decirlo de algún modo, es como el RAID0 de SSS.
https://github.com/latchset/clevis#pin-shamir-secret-sharing
Me pareció prolijo y entré al repositorio, y resultó que quien lo hizo era la misma persona que creó lazygit/lazydocker. Da gusto ver a alguien tan prolífico.
En las FAQ, a la pregunta “¿Esto no es distinto de los horrocruxes del universo de Harry Potter?”, responden algo como: “Es bastante parecido. Un solo horrocrux no debería poder resucitar el archivo original, pero se puede hacer que con dos sí sea posible, así que solo hay una diferencia de uno. Jaque mate, fans de Harry Potter”.
Pero la idea central de un horrocrux es tener copias de respaldo en varios lugares. Esta herramienta, que respalda copias de respaldo en varios lugares, usa el nombre mucho mejor: https://github.com/chrispoole643/horcrux. Jaque mate, jesseduffield ;)
Una copia de respaldo parcial encaja mejor con el espíritu de esa idea.
Además, yo leí ese concepto como un ataque a la promiscuidad. Como “Whore crux”. En cambio, Lord of the Rings puede verse como un ataque al matrimonio, porque cuando te pones un anillo te vuelves invisible y te vas desvaneciendo lentamente hasta no ser nada, como “mantequilla untada sobre demasiado pan”.