我正在做一个简单的数据库系统作为简历项目,我想知道像MySQL或MongoDB这样的主流数据库是否会对存储表/集合数据的文件进行加密?如果他们这样做了,他们是加密整个文件,还是在插入数据时加密数据(我认为这可能是第二个,但也许我错了)?他们使用的是加密算法还是散列算法?
发布于 2020-07-25 19:40:13
大多数现代数据库都支持静态加密。从DBMS的角度来看,这是完全的数据库加密,从应用程序的角度来看,这是透明的,有时称为TDE,透明数据库加密)。这意味着客户端在初始连接时提供密钥或密钥id,然后访问数据库,就好像它没有被加密一样。(这过于简单了,请参考DBMS文档,了解实际发生的情况以及如何对客户端进行身份验证和授权。)
在DBMS存储上(例如,文件系统)整个数据库文件(或多个文件)用适当且可配置的算法(通常为AES256 )加密。您提到了哈希,但是哈希是单向的,不能提供机密性。如果你想实现任何与密码学相关的东西,你需要了解它们之间的区别。
对数据进行粒度加密(例如,每个字段分开)将是应用程序的任务,如果需要,通常不是由DBMS完成的。这种应用程序级别的加密缓解了与TDE不同的威胁。
还有一个关键点(双关语)是在哪里存储加密密钥,以及如何管理(轮换、授权使用、撤销、记录访问)它们。回答这个问题远远超出了SO帖子的范围。
https://stackoverflow.com/questions/63087626
复制相似问题