Administrador de acceso en Smart Contract

Estoy creando un servicio en el que se puede publicar un archivo cifrado en Internet al que las personas autorizadas pueden acceder y descifrar. No quiero almacenar ninguna clave cifrada en un servidor o algo así.

Por el momento, tengo el propietario del archivo que inicializa una clave en la cadena de bloques, y las direcciones en una lista pueden acceder a esta clave después de una buena requiredeclaración. Pero luego me di cuenta de que cuando el propietario inicializa su clave, se ve sobre la entrada que es pública.

¿Hay alguna forma conocida de resolver este problema?

Podrías usar encriptación asimétrica. No entraré en detalles, pero podría hacer que el remitente de los datos los cifre con la clave pública del receptor y los almacene en la cadena de bloques, en IPFS o algo así, en cuyo caso podría almacenar el hash de datos en la cadena para su verificación. La clave pública no es lo mismo que la dirección. Debe ser proporcionado por el receptor o derivarse de una firma del receptor. Hay maneras de hacer eso. Una vez que los datos se almacenan en IPFS, el receptor puede descifrar los datos utilizando su propia clave privada.
El caso es que quiero poder administrar dinámicamente el permiso para esta clave, ya que el propietario puede agregar un visor y eliminarlo sobre la marcha.
¿Cómo manejarías que el espectador copie los datos antes de eliminarlos?
Todos pueden copiar datos, todos pueden hacer capturas de pantalla o lo que sea, este no es el problema aquí :)
En este caso, simplemente no podría cifrar y publicar los datos usando la clave pública del espectador eliminado después de una actualización.
Mi visión es más bien cifrar los datos de una determinada clave, y luego permitir o denegar que las direcciones obtengan la clave de la cadena de bloques para descifrar estos datos.

Respuestas (1)

Podrías usar encriptación asimétrica. No entraré en detalles, pero podría hacer que el remitente de los datos los cifre con la clave pública del receptor y los almacene en la cadena de bloques, en IPFS o algo así, en cuyo caso podría almacenar el hash de datos en la cadena para su verificación. La clave pública no es lo mismo que la dirección. Debe ser proporcionado por el receptor o derivarse de una firma del receptor. Hay maneras de hacer eso. Una vez que los datos se almacenan en IPFS, el receptor puede descifrar los datos utilizando su propia clave privada.