可信个人数据授权应用架构设计
流程与架构设计
https://www.processon.com/v/656c06b324a505060372461a
1、用户请求数据下载
用户通过平台(或直接到数源)下载数源中的个人数据,数源通过用户对数据用途签名验证请求是用户同意发起
数源将数据进行加密,并pre加密的密钥一并通过平台返回给用户。其中数据采用随机密钥对称加密,密钥本身使用用户公钥pre返回给用户,平台在这个过程中无法获知数据内容以及数源和用户之间的随机密钥。
2、用户客户端处理
用户客户端本地接收加密数据以及pre后的随机密钥;用户可以查看自己的个人数据:用户输入解锁密码后,在wasm环境中使用私钥解密随机密钥,进而解密加密数据,获得原始数据,以及数源的签名。
3、用户授权使用方使用数据
用户输入解锁密码进行确认,在wasm沙箱内解密个人数据,使用私钥对数据、授权对象、失效时间、用途等进行签名。
然后使用随机密钥对上述内容进行加密,使用使用方(授权对象)的公钥和自己的私钥对随机密钥进行pre加密。
通过平台,将加密内容和pre加密的密钥,发送给使用方。
4、使用方接收数据
使用方收到加密数据和pre的随机密钥,使用私钥解密随机密钥,进而获得数据内容。对用户签名、验证数源进行验签,验证数据真实性和用户授权使用的真实性。
前端离线密钥安全
1、实名用户可设置密码,平台本地不保存、只存在用户记忆;(作为aes对称密钥)
2、平台前端本地生成随机密钥对,将公钥传给服务端进行保存。 私钥本地加密存储, 密码用于解锁本地的私钥 。(私钥用密码进行对称加解密);
生成密钥对、签名都在wasm中进行,使用加密的私钥和密码在wasm中解密私钥、进而生成签名;
3、平台服务端存储公钥,用来验证前端用户的签名;
用户,平台,数源, 使用方信任机制
1、用户通过平台到数源下载其个人数据:
数源信任用户,但需要信任平台已经认证了用户的真实身份,且没有伪造。
平台需要验证是用户本人,需要识别数源可靠。
用户信任数源,但需要证明平台没有获取其个人数据。
解法:
平台通过权威实人验证,确保认证用户真实身份;通过数据上的数源签名保证数据真实性、没有伪造;
通过数据加密存储,用户掌管解密密码,且只能由使用方进行解密来证明平台没有获取用户个人数据。
关于用户加密的数据只能由其指定的使用方进行解密:使用pre代理重加密技术。
2、用户对个人数据进行授权签名,后将签名后的数据传给使用方
使用方需要得知该数据确为用户本人数据的真实性、且经过用户同意;
平台需要证明按照用户的授意确实将数据给到了正确的使用方,需要证明没有篡改数据。
用户需要确保自己的数据给到了正确的使用方,且没有被篡改。
解法:
通过离线私钥机制用户签名证明用户对数据的控制权,进而证明经过用户同意。
使用方身份在平台透出公开,同时使用方可以在自己的官方渠道透出自己身份以及与平台的合作。
使用方可以验证用户的签名,签名的摘要和数据原文可以证明没有经过篡改。
理论支持
个保法:个人数据可携带权
数据二十条:个人数据授权、核验服务
实施策略与路径
快速上线应用进行产品试错的同时也要注意厚积薄发,加密算法、区块链合约、CA、WASM等技术需要扎实引入和掌握。
参考
https://www.assemblyscript.org/ 用类ts的AssemblyScript开发并编译wasm二机制代码,然后在浏览器中执行
https://wiki.anyweb.cc/ AnyWeb钱包 , 采用 Multi-Sig 门限密钥分片、分布式私钥托管、MPC 多方安全计算、WASM 可信隔离沙盒四大技术保证用户的私钥安全
共有 0 条评论