聊一下数据脱敏

背景

随着信息社会高速发展,大家对隐私数据的安全越来越重视,现在市面上各种搜集个人信息的网站,app层出不穷,你也不知道你的信息提交上去后,提供服务的那边,是不是会妥善保管好你的个人数据,包括但不限于,身份证号,手机号,各种卡号等等。

不久前诈骗犯猖獗的时候,绝大部分就是因为你的隐私数据泄露,造成的安全风险。所以作为用户和消费者,遇到平时填写个人信息的场景,一定要慎重。

那作为负责任的服务提供商,也应该做的妥善保管用户的隐私信息,这是互信的基础。

法律法规

当然,到今天为止,隐私数据的保护,不仅仅是企业责任,更是法律要求,目前我国出台的涉及到个人隐私信息保护的法律包括但不限于:

  1. 《中华人民共和国个人信息保护法》:这部法律于2021年11月1日正式实施,是我国第一部专门针对个人信息保护的法律,旨在保护个人信息权益,规范个人信息处理活动,保障个人隐私不受侵犯。
  2. 《中华人民共和国民法典》:在人格权编中有明确规定隐私权和个人信息保护的内容,尤其是在第四编第六章中详细描述了隐私权和个人信息保护的相关规定。
  3. 《中华人民共和国网络安全法》:该法于2017年6月1日开始实施,是关于网络安全的基础性法律,对于个人信息的安全保护也有所涉及。
  4. 《中华人民共和国数据安全法》:此法进一步强化了数据安全管理,保护数据安全,促进数据开发利用。

所以,作为系统服务的提供者,做好用户个人隐私数据的保护责无旁贷。

保护形式

数据脱敏处理,一般来说有2种形式。

不可逆脱敏

当用户提交个人信息后,筛选出其敏感字段,如身份证号码,手机号,银行卡号等,进行不可逆的加密,比如截断前几位和后几位,中间部分直接替成星号之类的符号,也可以直接把整个字段用一些摘要算法生成哈希值,反正是不可逆的,怎么简单怎么来。

这样做虽然简单,高效,但劣势也很明显,当我们真的需要联系,或者在某些紧急情况需要查看用户信息时,就不好处理了。

可逆脱敏

可逆的方式就是再保存信息是,多一步操作,将用户提交的敏感信息,进行加密,加密方式可以根据实际情况,采用对称或者非对称加密方式,总之是有办法查看原始数据的。

*可逆还安全吗?

既然可逆,那还安全吗?

当然是安全的,首先,用户的数据是以安全的方式进行存储的,即便是采用可逆脱敏的方式,解密的密钥一定是由用户自己保管。而且,即使要执行查看敏感数据的操作,也是需要一定的权限或者授权操作,比如发送验证码等。不是谁想看就可以看的,当然要做到这点也是需要企业遵守契约精神。

那如果有企业说,既然能解密,我不想那么麻烦,还要等验证码,还要用户授权,还要经过怎么怎么样的流程,太耽误时间了,一把梭直接明文不是更好。请参考上面👆提到的几部法律,一旦被查实,罚款通报都是从轻发落了。

总之,涉及用户敏感信息的环节,进行数据脱敏的操作,不是自寻烦恼,而是必要的保护性措施,即便是增加了一定的管理复杂度,也是必须要付出的代价。

其实还有一种脱敏方式,就是伪脱敏,简单来说就是,用户数据什么的都是明文一把梭,只在UI层做了点字符替换之类的操作,糊弄用户。这种行为,要么是不会,要么就是懒,无它。

脱敏流程

站在整个系统角度,脱敏流程大概如下图所示,在系统中流转的数据,一旦涉及到敏感字段,都需要经过脱敏操作,才能进行后续业务。

画板

而单独看脱敏操作这个环节,又可以分为几种情况

  1. 如果操作管理系统的是系统级管理员,拥有很高的管理权限,也就有查看用户敏感信息的权限,这种,可以根据实际情况,放宽查看用户解密密钥的权限。获取到解密密钥后,可以查看用户敏感数据。当然所有的操作必须要有日志记录。
  2. 如果是普通管理人员,只负责某些业务,有需要用到用户敏感信息的情况,这种一般的处理结果是做到“可用不可见”的效果,比如服务提供方需要给用户发送短信,就必须要知道用户的手机号码,而服务端是可以识别这种场景,在服务端完成解密敏感信息,并发送短信的动作,而无需把手机号展示在ui层。
  3. 如果是用户自己在用户端系统上查看个人敏感数据,一般完成基本的认证就可以了,比如验证码,人脸识别等手段都是ok的。

总结起来,流程基本如下

画板

样例代码

我这里是在模型层创建了一个中间层,专门处理敏感数据

public class MaskDataDto()
{public string text { get; set; }public MaskDataType maskDataType { get; set; }public uint firstPoint{get{if (maskDataType == MaskDataType.ChinaCellPhone)return 3;if (maskDataType == MaskDataType.ChinaIdCard)return 4;return Convert.ToUInt32(Math.Ceiling(Convert.ToDouble(text.Length) / 3));}set { }}public uint lastPoint {get{if (maskDataType == MaskDataType.ChinaCellPhone)return 7;if (maskDataType == MaskDataType.ChinaIdCard)return 14;return Convert.ToUInt32(Math.Ceiling(Convert.ToDouble(text.Length) / 1.5));}set { }}//用户专属idpublic string keyId { get; set; }//用户专属secretpublic string keySecret { get; set; }public bool valid{get{if (string.IsNullOrEmpty(keyId) || string.IsNullOrEmpty(keySecret))return false;if (maskDataType == MaskDataType.ChinaCellPhone && text.Length != 11)return false;if (maskDataType == MaskDataType.ChinaIdCard && !Assistant.IdCardValidator.IsValidIdCard(text))return false;if (firstPoint>=text.Length || firstPoint>lastPoint || lastPoint>=text.Length || lastPoint==0)return false;return true;}}public string encryptText{get{//解码的时候,要先转回普通字符,在解码return Assistant.Utils.ToBase64Str(Assistant.Security.Encrypt(text, Encoding.UTF8.GetBytes(keyId), Encoding.UTF8.GetBytes(keySecret)));}//get;set;}// public string[]? splitTexts { get; set; }public string[]? splitTexts{get{var textParts = new List<string>(){text.Substring(0, (int)firstPoint),text.Substring((int)lastPoint, text.Length - (int)lastPoint)};return textParts.ToArray();}}public string hashText{get{return Security.GenerateMD5Hash(text);}}}
public IActionResult TestMaskData(string text)
{var maskData = new MaskDataDto(){text = text,keyId = Utils.GenerateRandomCodePro(16),keySecret = Utils.GenerateRandomCodePro(16),maskDataType = MaskDataType.Other};Console.WriteLine($"TestMaskData: {JsonHelper.JsonSerialize(maskData)}");return Ok();
}

代码在实例化阶段,就会分别返回密文,哈希和一个分段的数组。密文就是加密后的敏感数据,哈希值是为了方便检索操作,接受的数据可以直接是哈希值,解决了传输层的安全问题,至于分段的数组,是保存的敏感数据的前缀和后缀,在需要显示敏感字段的地方,返回前缀,后缀以及遮掩字符拼接的安全信息,也能方便检索。

效果

简单看几个脱敏成果

  • 控制台打印的服务端脱敏效果
    在这里插入图片描述

  • 存储效果

  • 页面效果

  • 传输效果

  • 高级管理员的解密效果

这里有一些权限识别,动作识别之类动作的无法展示,只能大概看一下几个场景的截图。

好了,基本就是这样了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551454.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Web和UE5像素流送、通信教程

一、web端配置 首先打开Github地址&#xff1a;https://github.com/EpicGamesExt/PixelStreamingInfrastructure 找到自己虚幻引擎对应版本的项目并下载下来&#xff0c;我这里用的是5.3。 打开项目找到PixelStreamingInfrastructure-master > Frontend > implementat…

【pytorch】pytorch入门5:最大池化层(Pooling layers )

文章目录 前言一、定义概念 缩写二、参数三、最大池化操作四、使用步骤总结参考文献 前言 使用 B站小土堆课程 一、定义概念 缩写 池化&#xff08;Pooling&#xff09;是深度学习中常用的一种操作&#xff0c;用于降低卷积神经网络&#xff08;CNN&#xff09;或循环神经网…

GWAS分析中显著位点如何注释基因:excel???

大家好&#xff0c;我是邓飞。 今天星球的小伙伴问了一个问题&#xff1a; 我现在在做GWAS分析&#xff0c;现在已经找到性状关联的SNP位点&#xff0c;下一步我如何根据position 找到基因呢&#xff1f; 关于基因注释&#xff0c;之前写过一些博客&#xff0c;可以用到的软件…

windows全局配置pip镜像源

在Windows系统中&#xff0c;可以在用户目录下创建一个名为pip的文件夹&#xff0c;然后创建一个名为pip.ini的配置文件&#xff0c;其中输入镜像源信息。 [global] index-url http://mirrors.aliyun.com/pypi/simple/ [install] trusted-hostmirrors.aliyun.com

什么是reactor以及其三种版本

写在前面 本文来看下什么是reactor以及其三种版本。 1&#xff1a;什么是reactor以及其三种版本 为了更好的理解什么是reactor&#xff0c;我们结合现实生活中的例子来看下。 翠花是个貌美如花的姑娘&#xff0c;人称赛东施&#xff0c;她的梦想是嫁给王子&#xff0c;可是天…

AI产品经理如何做好职业规划❓

AI如何做好职业规划❓ 一、认识AI产品经理的角色 AI产品经理是连接技术与市场的桥梁&#xff0c;需要具备以下核心能力: 1)技术理解力 深入理解AI技术&#xff0c;包括机器学习、深度学习、自然语言处理等。 2)市场洞察力 敏锐捕捉市场动态&#xff0c;理解用户需求和行业趋…

中概股浪潮中暴涨20%的知乎,被低估了吗?

“在未来&#xff0c;要么被AI统治&#xff0c;要么成为AI的创造者”——埃隆马斯克 9月27日以来&#xff0c;受政策以及AI应用前景的利好&#xff0c;中概股开启了一轮强力的反弹。其中&#xff0c;知乎涨超10%&#xff0c;领涨一众中概股&#xff0c;花旗、福瑞集团均给出了…

企业内训|AI助力智能办公与职场效能提升-青岛某国资平台

9月25日&#xff0c;TsingtaoAI派驻讲师进驻现场&#xff0c;为青岛市某国资平台公司员工交付“AI助力智能办公与职场效能提升”企业内训&#xff0c;整个培训通过AIGC的实际应用案例&#xff0c;帮助学员掌握智能办公的常用工具&#xff0c;提升工作流程优化和决策效率。课程涵…

拯救华为秘盒M310

这个盒子当年宣传得比较厉害&#xff0c; 当时确实也没有什么可选的&#xff0c;当年是高价入的,这个盒子有二切一的hdmi切换功能&#xff0c; 这点从今天来看&#xff0c; 都是一个亮点 华为秘盒M310是一款小巧但功能强大的网络机顶盒。它搭载了基于安卓系统的操作平台&#x…

golang 获取证书的生效及过期时间

测试样例 func TestGetCertVaildTime(t *testing.T) {certPEM, err : ioutil.ReadFile("aa.bbb.com.crt")if err ! nil {fmt.Println("读取证书文件出错:", err)return}// 解码PEM格式的证书block, _ : pem.Decode(certPEM)if block nil {fmt.Println(&q…

智源研究院推出全球首个中文大模型辩论平台FlagEval Debate

近日&#xff0c;智源研究院推出全球首个中文大模型辩论平台FlagEval Debate&#xff0c;旨在通过引入模型辩论这一竞争机制对大语言模型能力评估提供新的度量标尺。该平台是智源模型对战评测服务FlagEval大模型角斗场的延展&#xff0c;将有助于甄别大语言模型的能力差异。 F…

vector中push_back和emplace_back的区别

push_back 在引入右值引用&#xff0c;转移构造函数&#xff0c;转移复制运算符之前&#xff0c;通常使用push_back()向容器中加入一个右值元素&#xff08;临时对象&#xff09;的时候&#xff0c;首先会调用构造函数构造这个临时对象&#xff0c;然后需要调用拷贝构造函数将…

Redis入门第一步:认识Redis与快速安装配置

认识Redis与快速安装配置&#x1f343; Redis是什么&#x1f432; 1.Redis的背景&#x1f38d; Redis&#xff08;Remote Dictionary Server&#xff09;译为"远程字典服务"&#xff0c;它是一款基于内存实现的键值型 NoSQL 数据库&#xff0c; 通常也被称为数据结…

pytorch线性/非线性回归拟合

一、线性回归 1. 导入依赖库 import numpy as np import matplotlib.pyplot as plt import torch from torch import nn, optim from torch.autograd import Variable numpy&#xff1a;用来构建数据matplotlib.pyplot&#xff1a; 将构建好的数据可视化torch.nn&#xff1a…

2024还在拼多多赚钱的,无不满足这几个条件

拼多多只是我棋盘上的一小步&#xff0c;整个棋局几人看懂了&#xff1f; 如果我说我做拼多多&#xff0c;其实是另有目的&#xff0c;拼多多只是我棋局里的一小步&#xff0c;你们信吗&#xff1f;认真看文章&#xff0c;后面会为大家揭秘&#xff01; 先来客观公正的回答下…

Queued Synchronous Peripheral Interface (QSPI)

文章目录 1. 介绍2. Feature List3. 概述3.1 QSPI框图3.2 操作模式3.3 三线模式3.4 时钟极性和时钟相位 4. Master模式4.1 状态机4.2 采样点4.3 波特率4.4 通信模式4.4.1 短数据模式4.4.2 长数据模式4.4.3 短连续模式4.4.4 长连续模式4.4.5 单配置多帧模式4.4.6 XXL模式4.4.7 M…

选择国企eHR人事管理系统的时候,应该注意什么?

近年来&#xff0c;中国正步入高速发展的黄金时期&#xff0c;国有企业&#xff08;国企&#xff09;在追求效率和管理水平提升方面迈出了重要步伐。为了进一步实现数字化、流程化和科学化管理&#xff0c;越来越多的国企选择引进eHR&#xff08;电子人力资源管理&#xff09;系…

【Diffusion分割】MedSegDiff-v2:Diffusion模型进行医学图像分割

MedSegDiff-V2: Diffusion-Based Medical Image Segmentation with Transformer 摘要&#xff1a; 最近的研究揭示了 DPM 在医学图像分析领域的实用性&#xff0c;医学图像分割模型在各种任务中表现出的出色性能就证明了这一点。尽管这些模型最初是以 UNet 架构为基础的&…

opencv实战项目(三十):使用傅里叶变换进行图像边缘检测

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一&#xff0c;什么是傅立叶变换&#xff1f;二&#xff0c;图像处理中的傅立叶变换&#xff1a;三&#xff0c;傅里叶变换进行边缘检测&#xff1a; 一&#xff0c…

13个大V出文需要准确把握的重要因素

推文作为全球最大的社交平台之一&#xff0c;吸引了很多大V&#xff08;即具有巨大粉丝团的影响力和的账户&#xff09;的关注。那些大V常常运用推文发布相关各种各样热点的营销推广信息&#xff0c;以吸引更多人的关注参与。推文的发布时间段是V在宣传推广过程中需要准确把握的…