1、工资表存储加密数据格式的方案:关键的要求:1、 数据是以加密的形式存储于表中的,即使数据库管理员通过后台代码也不能查询到明文数据2、 同一个员工的工资数据可能存在多个人都需要查看的问题。如:A员工的工资,事业部总经理B、副总经理C、人力资源分管负责人D和他的部门经理E都需要能看到。整体方案:将工资数据分成两部分:需要加密的 和 不需要加密的, 需要加密的部分给每一个可以查看该数据的人员一份拷贝,该拷贝使用查看人员自己的密码加密后存放在数据库中,只有使用查看人员的密码解密后才能够使用。具体过程:1、 基于用户输入的短语,密码和系统自动创建的唯一标识生成一个对称密钥,并将短语、密码、唯一标识保存到
2、用户计算机的文件中,以后凭此三项信息恢复该密钥。用户需要自行备份此文件,如果文件丢失,该用户的数据不能解密,只能由别的用户重新分发一份给他。短语:用来作为对称密钥的种子密码:用于给密钥加锁,要使用此密钥解密数据时,必须要使用此密码打开该密钥后才能使用。唯一标识:用于在系统中唯一地标识一个对称密钥,由系统在恢复对称密钥时使用。 对称密钥用于加密和解密数据。2、 创建证书,证书用于在数据分发的过程中对数据进行加密,防止数据被非法截取。3、 需加密数据的录入:需加密的数据由专门的人员录入系统(通常是财务部张素勤),录入的同时即加密存储。录入完成后使用专用分发工具将数据用查看人员的证书公钥分别加密后,
3、作为文件存储到录入人员的电脑上,由录入人员在系统外分发给不同的查看人员。4、 查看人员收到文件后,使用专门的上传工具将数据上传到服务器中,此时使用证书私钥解密数据后,使用查看用户的对称密钥加密,再将数据存到表中。5、 使用数据时,统一先用对称密钥解密才能使用。6、 使用的对称密钥全部为临时的,在用户登录时创建,在用户连接关闭时由数据库自动删除。在整个生存周期中通过其他连接的用户都不能使用该密钥(由Sql 2005 保证)方案的优点:录入数据的人员不需要知道查看数据人员的密钥信息,查看数据的人员能够独立的保护自己的密码。一份数据多人持有拷贝,降低了密码丢失导致的数据丢失风险。方案的缺点:1、 分发数据比较麻烦(如果只有一个人录入的话,可以将密码交给录入的人,可以绕过)。2、 如果数据有修改,而查看用户没有及时上传的话,每个人看到的数据不一致(可以通过技术手段减轻)。