Es posible que esté cayendo en una trampa clásica de problemas de encriptación aquí ... He estado desarrollando aplicaciones usando AES y encriptación de clave pública / privada por algún tiempo, así que tengo una buena comprensión del uso directo, sin embargo, no lo haría ' No pretendo ser un criptógrafo.
Situación que entiendo:
- User1 cifra un archivo con una clave AES-256 y carga el archivo cifrado en alguna parte.
- Cualquier persona que quiera acceder al archivo puede pedirle al Usuario1 y entregarle su clave pública.
- User1 cifra la clave AES-256 con su clave pública y la carga. Todos los usuarios autorizados pueden descifrar la clave y, a su vez, descifrar el archivo.
Bien.
¿Qué pasa si User1 quiere tener algún control sobre quién puede acceder al archivo después del evento?
- Paso 1 igual que arriba
- Paso 2 igual que arriba
- Cuando alguien solicita acceso a un archivo, User1 genera una nueva clave AES-256, vuelve a cifrar el archivo y lo carga. Luego encripta la nueva clave específica del usuario con su clave pública. Ahora solo ese usuario tiene esa llave. Cuando se solicita el archivo, el solicitante puede firmar la solicitud con su clave privada, y el usuario sabe quién la solicitó.
- Si el usuario alguna vez comparte la clave, entonces la firma de la solicitud provendrá de otra parte, y el Usuario1 podría eliminar la versión del archivo al que se puede acceder con esa clave, bloqueando de hecho al usuario (y a cualquier persona que compartan). la clave con)
Esto funcionaría, sin embargo a) requiere la interacción del Usuario 1 para cada nuevo usuario, yb) es ineficiente ya que hay varias copias del mismo archivo.
Objetivo: Uso compartido de archivos cifrados de extremo a extremo con una clave de acceso por usuario.
¿Existe el cifrado retroactivo? O ¿qué pasaría si hubiera otra cosa (como un activo en la cadena de bloques) que pudiera demostrarse como propiedad del solicitante y, por lo tanto, darles acceso?
Estaba pensando que cuando algo está incrustado con las claves públicas de varias personas, se requiere que todos lo descifren para ver el archivo, eso no ayuda, pero fue una línea de pensamiento
También pensaba que si el usuario tenía un activo en la cadena de bloques (ERC721), el propietario del archivo podría requerir que la solicitud de acceso a los archivos provenga de allí, o que al menos este lo verifique. Al igual que para firmar la solicitud, supongo, pero estaría ligado a la billetera de un usuario específico y compartir esa billetera podría significar que el usuario inicial pierde el acceso al archivo (alguien con quien lo comparte se envía con el propietario del mismo).
En otras palabras, no necesariamente necesito que la solución sea "un montón de claves AES", sino una forma de controlar el acceso de descifrado por usuario, incluso si tienen la clave.
P.S Me gustaría hacer esto con la menor lógica de servidor posible. Los contratos inteligentes funcionan, si se pueden usar, o las aplicaciones del lado del cliente ...