企业加密方案指南 随着合规要求,企业上云,加密的需求也越来越多。
但无论是人员和开发,真正能够说清楚加密方案的并不多。线上正在跑的生产进行数据加密,应该怎么同步?
涉及到用户地址信息的加密,是在应用,还是在数据库或者存储里?是你在防范什么威胁,以及是否符合合规要求。
1、 加密组成 由三个部分组成:
(1)数据:要加密的对象,数据的位置对加密方案有很大影响。
(2)加密引擎:这个组件实际处理加操作。
(3)密钥管理:处理密钥,传递给加密引擎。 数据在哪里,加密在哪里,如何组合,是很多加密方案常见错误,这些组合决定了加密性。 在基本加密软件里,这三个组件可能都在同一个,比如个人的全盘加密软件,密钥、引擎、数据都在同一个硬件,硬件丢了也就丢了引擎和KEY。这里的KEY,一般是用一个密码来保护,如果电脑在运行的情况下被盗,内存中的KEY就可能被盗。但对于复杂的企业应用来说,这些组件是在不同的里的,这就增加了复杂性。 实际应用中会把这三个组件解耦,比如加密引擎是在应用里,数据在DB,密钥是设施管理。又或者DB里用的是TDE透明加密,引擎和数据在一个里,但密钥在其他地方。
2、在哪里加密的数据加密都是由数据所在位置来定义,层次上是:
(1)应用收集数据
(2)DB保存数据
(3)数据存储在文件
(4)文件驻留在存储卷(硬盘或虚拟存储等)的数据都在这个层次中流动,加密越靠近应用性越高,但复杂度也高,而且有些时候不能做到。整个加密必然在这里的某一层进行,也就是你要决定在哪层加密。
3、为什么加密 做加密,无非三个原因:
(1) 数据移动,可能是物理,也可能是虚拟。
(2) 职责分离,例如防止运维人员看到数据。
(3) 有人要求你加密。 比如有人说,你要加密手机号码。但这里又可以分解来看,目的是什么?目的如果是即使DBA被盗,数据也是没问题的。存储层加密在这个需求里就没用,因为被盗之后,仍然可以在DB这一层访问。单加密文件也没用,被授权在DB里工作,在这里数据不是加密的。
4、文件加密 有些应用是不用数据库的,直接在文件中存数据,数据写到文件时进行透明加密,操作和三方都可以提供这种加密,加对应用透明。用户验证身份后请求文件时则进行,验失败则给出无用加密数据。文件加密通常用于保护应用中的“静止数据”,也是很多大数据平台的加密方法。
5、磁盘/卷加密 现在很多磁盘和存储都带有自动数据加密功能,磁盘加密是在数据写入磁盘时,未经过验证的身份/应用,企业级密钥管理一般依赖KMS,可进行密钥轮换。 6、权衡 加密层越高越好,代价是难以集成,需要动代码。在应用层加密可以充分利用身份验证、授权和业务流程,但在现实中,这种的控制是难以实现成本高。透明加密比应用层加密快,代价是相对来说较弱。 7、应用 处理数据的都是应用,当需要细粒度控制的时候,就需要应用层对数据元素进行加,当然这个代价也比较高,需要对应用多做验测试,但对有些软件来说这就是的,比如涉及到财务和人事的,其他不这么的则可以在静止数据上做加密,也就是文件或数据加密,一般都是足够的。