场景:
- 数据都存在 mysql 中(大概十几个 G );
- 需要对部分数据加密(导师自认为实验室的敏感数据)
- 然后存在大量的爬虫采集数据;
- 现有依赖这个数据库的有:一个 web 系统( php 开发),各种算法分析模块( python/java )开发;
需求:
- 实现 web 系统中每个用户都有自己的密钥来解密获得数据(就是用户自己输密钥,前端解密);
- 每个算法分析程序对加密数据也要用自己的密钥来解;
- 对所有需要加密的字段进行加密存储(目前都是明文的);
- 可以更换用户的密钥不影响加密数据;
目前遇到的问题:
- 不同语言的加密算法能否通用?
- 导师是想用一个统一的 api 来实现,让所有对数据库的请求过这个加解密服务(未来还要加上一些访问控制),但是目前的程序 php/java 都是用其自带的 orm 来实现 mysql 操作的(修改工作量很大);
- web 系统存在一些十分复杂的 sql 查询,怎么能方便的转化成 api 的形式;
目前的设想:
- 使用统一的对称加密密钥( key )加密数据(可能每个表一个密钥),这个密钥用加密服务的一个密钥加密( sys-key )存储;
- 程序请求数据的时候要先验证程序身份( username+pwd ),然后用其对应的公钥加密( key,经过 sys-key 解密后),然后和数据一起发回去,由程序根据自己的私钥解密。
但是可能存在问题 1 (不同编程语言加密算法是否通用?),还有就是该怎么设计这个 api 才能满足系统中各类程序的需求 因为导师又想监控管理所有的请求(做访问控制),只能来一个新的需求就再新增一个 api ?(先不管性能,就是一个辣鸡项目,只是想快捷做完应付老师)