用户私密信息如何加密存储

举报
幼儿园老大* 发表于 2024/11/27 15:46:19 2024/11/27
【摘要】 数据库加密是计算机系统对信息进行保护的一种最可靠的方法。它利用密码技术对信息进行加密,实现信息屏蔽,从而起到保护信息安全的作用。对数据库中的数据进行加密,可以防止数据在存储和传输过程中失密数据库加密技术属于主动防御机制,可以防止明文存储引起的数据泄密、突破边界防护的外部黑客攻击以及来自内部高权限用户的数据窃取,从根本上解决数据库敏感数据泄漏问题数据库加密存储过程的重要性数据库中存储的数据往往...

数据库加密是计算机系统对信息进行保护的一种最可靠的方法。它利用密码技术对信息进行加密,实现信息屏蔽,从而起到保护信息安全的作用。对数据库中的数据进行加密,可以防止数据在存储和传输过程中失密


数据库加密技术属于主动防御机制,可以防止明文存储引起的数据泄密、突破边界防护的外部黑客攻击以及来自内部高权限用户的数据窃取,从根本上解决数据库敏感数据泄漏问题


数据库加密存储过程的重要性


数据库中存储的数据往往具有很高的敏感度,例如用户的密码、个人隐私信息等等。如果数据库的管理员不能保证数据的安全,将会给用户和企业带来不可估量的损失。因此,对数据库中的数据进行加密存储是至关重要的


哪些信息要加密存储


虽然理论上所有存储在数据库中的数据都应该被加密,但是出于性能和实用性的考虑,通常会优先加密以下类型的信息:


1. 个人身份信息(PII):如姓名、地址、社会保险号、驾驶执照号等


2. 财务信息:包括银行账户信息、信用卡号、交易记录等


3. 健康信息:如病历记录、治疗信息、健康保险信息等,特别是在遵守HIPAA等法规的环境中


4. 商业秘密和知识产权:如未公开的财务数据、策略计划、专利申请资料等


5. 登录凭证:如密码、密钥、令牌等,这些信息若被泄露可能直接导致未授权访问


常见的数据库加密方式


在数据库中,常见的加密方式包括:


  1. 对称加密:使用相同密钥的加密算法,加密速度快,但密钥不易管理
  2. 非对称加密:使用公钥和私钥的加密算法,安全性高,但加密速度较慢
  3. 哈希加密:将原始数据通过哈希函数转换成固定长度的字符串,不可逆,但容易遭受字典攻击


加密存储过程的实现步骤


对于数据库中敏感的数据,可以通过以下步骤进行加密存储过程的实现:


  1. 将原始数据进行加密处理
  2. 生成加密后的数据并存储到数据库中
  3. 当需要查询原始数据时,在查询语句中对数据进行解密处理


需要注意的问题


在使用加密存储过程时,需要注意以下问题:


  • 要保证加密算法的安全性,不能选择容易被破解的加密算法
  • 要合理地使用加密算法,避免加密后的数据长度过长,影响数据库的性能
  • 要对密钥进行管理,保证密钥的安全性
  • 要进行数据备份,防止因为加密算法或密钥丢失而导致的数据无法恢复的情况


项目中的加密技术选型


在大麦网中需要加密的私密信息有用户手机号、购票人证件号,下面来介绍是如何将这些信息进行加密存储的


由于大麦网使用了ShardingSphere来实现分库分表,而且ShardingSphere提供了数据加密存储的功能,所以直接按照ShardingSphere的加密规则来配置

项目实际加密流程


引入 ShardingSphere 的相关依赖


<properties>
	<shardingsphere.version>5.3.2</shardingsphere.version>
</properties>
<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc-core</artifactId>
    <version>${shardingsphere.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>logback-classic</artifactId>
            <groupId>ch.qos.logback</groupId>
        </exclusion>
    </exclusions>
</dependency>


用户项目相关配置:


spring:
  datasource:
    driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver
    url: jdbc:shardingsphere:classpath:shardingsphere-user.yaml


shardingsphere-user.yaml配置:


rules:
  # 加密规则
  - !ENCRYPT
    tables:
      # d_user表
      d_user:
        columns:
          # 对mobile列进行加密
          mobile:
            # 密文列mobile
            cipherColumn: mobile
            # 自定义的加密算法
            encryptorName: user_encryption_algorithm
          # 对password列进行加密
          password:
            # 密文列password
            cipherColumn: password
            # 自定义的加密算法
            encryptorName: user_encryption_algorithm
          # 对id_number列进行加密
          id_number:
            # 密文列id_number
            cipherColumn: id_number
            # 自定义的加密算法
            encryptorName: user_encryption_algorithm  
      # d_user_mobile表
      d_user_mobile:
        columns:
          # 对mobile列进行加密
          mobile:
            # 密文列id_number
            cipherColumn: mobile
            # 自定义的加密算法
            encryptorName: user_encryption_algorithm
      # d_ticket_user表
      d_ticket_user:
        columns:
          # 对id_number列进行加密
          id_number:
            # 密文列id_number
            cipherColumn: id_number
            # 自定义的加密算法
            encryptorName: user_encryption_algorithm      
    encryptors:
      # 使用SM4算法
      user_encryption_algorithm:
        type: SM4
        props:
          sm4-key: d3ecdaa11d6ab89e1987870186073eaa
          sm4-mode: CBC
          sm4-iv: 1afc7fdce9ebc393f693cd3d23e35ed2
          sm4-padding: PKCS7Padding
props:
  # 打印真实sql
  sql-show: true


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。