emb*_*oss 11
加密整个数据库是很麻烦的,除非数据库提供"透明加密",Oracle数据库提供了这样的东西.使用透明加密的轻量级开源解决方案是SQLite.使用此功能,加密不直接应用于数据,但存储本身已加密.这意味着您可以照常处理数据库,并获得物理存储加密的额外好处.但不幸的是,MySQL没有提供这样的东西.
首先,为什么加密整个数据库不是一个好主意.加密数据看起来像数据库的随机垃圾.这意味着很多负面的事情,比如
如果使用MySQL的内置加密支持加密,那么这意味着数据本身以纯文本形式发送到数据库 - 除非您使用TLS安全连接,这意味着窃听者根本不关心您的加密.
因此,如果您需要加密数据,则应将其保持在最低限度,并且只加密数据的真正敏感部分,以便仍能够对其执行高效查询.如果在应用程序和数据库之间不可能建立安全的TLS连接,您还应该直接在应用程序中加密数据.