5 puntos por GN⁺ 2023-09-17 | 1 comentarios | Compartir por WhatsApp
  • 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
  • split funciona 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 5
  • bind es 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 Read de crypto/rand de 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/horcrux en Homebrew, scoop bucket add extras; scoop install horcrux en 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 como horcrux y Haystack se diferencian en que no soportan umbrales de horcrux

1 comentarios

 
GN⁺ 2023-09-17
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...

    • Esa explicación de Wikipedia fue difícil de entender incluso teniendo algo de contexto técnico. ¿Podrías explicarlo como si tuviera 5 años?
  • 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

    • De verdad tengo que hacerme el tiempo para crear una interfaz de usuario usable, pero lo gráfico nunca fue mi fuerte
      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
    • Me pregunto si esto es distinto o si hace exactamente lo mismo
      https://github.com/paritytech/banana_split
    • Muy prolijo. Todavía se siente un poco pronto para depender de él, pero si madura y se vuelve más fácil de usar, parece que podría ser bastante útil para mucha gente
    • ¿El intercambio secreto de Shamir funciona bien con entradas grandes? ¿O conviene cifrar el texto plano con AEAD y dividir solo la clave con intercambio secreto de Shamir?
  • 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

    • El intercambio secreto de Shamir es básicamente perfecto para el nerd sniping
      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 veo por qué el artículo enlazado debería generar esas dudas
      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
    • Justamente estoy escribiendo un libro basado en esa preocupación: pmfpbook.org
  • 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>

  • 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.

    • ¿Qué tal como una forma de compartir información para que la gente pueda usarla en emergencias? Los datos se guardan en varias ubicaciones, pero solo puede leerlos quien tenga acceso a 3 de ellas.
      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 ;)

    • Sí, pero también no. Técnicamente, un horrocrux era una copia de respaldo, pero el peso emocional del concepto estaba en dividir el alma y desprenderse de la propia esencia para protegerse de un peligro.
      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”.