数据安全_数据安全等级 - CSDN
数据安全 订阅
国际标准化组织(ISO)对计算机系统安全的定义是:为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件和数据不因偶然和恶意的原因遭到破坏、更改和泄露。由此计算机网络的安全可以理解为:通过采用各种技术和管理措施,使网络系统正常运行,从而确保网络数据的可用性、完整性和保密性。所以,建立网络安全保护措施的目的是确保经过网络传输和交换的数据不会发生增加、修改、丢失和泄露等。 展开全文
国际标准化组织(ISO)对计算机系统安全的定义是:为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件和数据不因偶然和恶意的原因遭到破坏、更改和泄露。由此计算机网络的安全可以理解为:通过采用各种技术和管理措施,使网络系统正常运行,从而确保网络数据的可用性、完整性和保密性。所以,建立网络安全保护措施的目的是确保经过网络传输和交换的数据不会发生增加、修改、丢失和泄露等。
信息
外文名
data security
领    域
信息科学
中文名
数据安全
数据安全含义
信息安全或数据安全有对立的两方面的含义:一是数据本身的安全,主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等,二是数据防护的安全,主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段保证数据的安全,数据安全是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种。数据处理的安全是指如何有效的防止数据在录入、处理、统计或打印中由于硬件故障、断电、死机、人为的误操作、程序缺陷、病毒或黑客等造成的数据库损坏或数据丢失现象,某些敏感或保密的数据可能不具备资格的人员或操作员阅读,而造成数据泄密等后果。而数据存储的安全是指数据库在系统运行之外的可读性。一旦数据库被盗,即使没有原来的系统程序,照样可以另外编写程序对盗取的数据库进行查看或修改。从这个角度说,不加密的数据库是不安全的,容易造成商业泄密,所以便衍生出数据防泄密这一概念,这就涉及了计算机网络通信的保密、安全及软件保护等问题。
收起全文
精华内容
参与话题
  • 数据安全解决方案

    2020-07-28 20:14:01
    数据安全技术主要建立在保密性(Confidentiality)、完整性(Integrity)和可用性(Availability)三个安全原则基础之上。实际上,数据面临着严重的威胁(如下图所示),主要受到通信因素、存储因素、身份认证、访问控制、...
  • 数据安全设计

    千次阅读 2019-05-15 20:34:04
    引言:在 web 程序中,数据加密非常重要,对于不用解密的数据,如密码等,一般使用 md5 的加密技术,对于需要解密的数据,我们常用 AES 加密,现在我们来讨论下如何提高数据安全性。 一、对私钥用公钥加密,然后...

    引言:在 web 程序中,数据加密非常重要,对于不用解密的数据,如密码等,一般使用 md5 的加密技术,对于需要解密的数据,我们常用 AES 加密,现在我们来讨论下如何提高数据的安全性。

    一、对私钥用公钥加密,然后数据进行多次对称加密
    我觉得,数据的加首先双方约定一个
    公钥:ABCDEFGHIJKLMNOP
    签名:QWERTYHJKDLOFJSK
    数据加密次数:n

    • 加密随机密钥

      首先对公钥进行MD5加密,转大写并截取 16 位作为newKey;

      然后随机生成 16 位的随机密钥 randomKey,对randomKey 进行 AES 标准加密(偏移量和私钥一样,加密方式为为:“AES/CBC/PKCS5Padding”)得到加密的秘钥realKey;

    • 双方约定数据封装形式+签名-> data,然后对其 MD5 加密转大写成为newSign;

      再对上面的随机秘钥 randomKey 进行 MD5 加密,截取 16 位作为数据传输的 json 进行 AES 标准进行加密,json 一般都是需要传输的数据+newSign;(这里 AES 根据约定进行轮换 n 次)

      下面给出流程示例
      加密示例

    下面贴出代码

    package com.dao.xu;
    
    
    import com.alibaba.fastjson.JSON;
    import org.apache.commons.codec.digest.DigestUtils;
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.util.*;
    /**
     *  安全设计
     *
     * @author 阿导
     * @CopyRight 万物皆导
     * @Created 2019/5/15 20:26:00
     */
    public class WWJD {
        /**
         * 加密公钥
         */
        private final static String COMMON_KEY = "wwjdwwjdwwjdwwjdwwjdwwjdwwjdwwjd";
        /**
         * 签名秘钥
         */
        private final static String SIGN_KEY = "wwjdwwjdwwjdwwjdwwjdwwjdwwjdwwjd";
        /**
         * 约定次数
         */
        private final static Integer N = 10;
        /**
         * SIGN
         */
        private final static String SIGN = "sign";
        /**
         * 随机秘钥集合
         */
        private final static String KEYS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz*$";
        /**
         * 默认字符集
         */
        private final static String DEFAULT_CODE = "UTF-8";
        /**
         * 零
         */
        private final static Integer ZERO = Integer.valueOf(0);
        /**
         * 引号
         */
        public static final String QUOTES = "\"";
        /**
         * 逗号
         */
        public static final String COMMA = ",";
        /**
         * 冒号
         */
        public static final String COLON = ":";
        /**
         * 左大括号
         */
        public static final String BRACES_LEFT = "{";
        /**
         * 右大括号
         */
        public static final String BRACES_RIGHT = "}";
    
        /**
         * 将字符串MD5加码 生成32位md5码
         *
         * @param inStr
         * @return java.lang.String
         * @author 阿导
         * @time 2019/5/15 20:23:00
         */
        private static String md5(String inStr) {
            try {
                return DigestUtils.md5Hex(inStr.getBytes(DEFAULT_CODE));
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("MD5签名过程中出现错误");
            }
        }
    
    
        /**
         * AES加密
         *
         * @param cleartext
         * @param rKey
         * @return java.lang.String
         * @author 阿导
         * @time 2019/5/15 20:24:00
         */
        private static String encrypt(String cleartext, String rKey) {
            //加密方式: AES128(CBC/PKCS5Padding) + Base64, 私钥:rKey
            try {
                IvParameterSpec zeroIv = new IvParameterSpec(rKey.getBytes());
                //两个参数,第一个为私钥字节数组, 第二个为加密方式 AES或者DES
    
                SecretKeySpec key = new SecretKeySpec(rKey.getBytes(), "AES");
    
                //实例化加密类,参数为加密方式,要写全
                Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
                //PKCS5Padding比PKCS7Padding效率高,PKCS7Padding可支持IOS加解密
    
                //初始化,此方法可以采用三种方式,按加密算法要求来添加。(1)无第三个参数(2)第三个参数为SecureRandom random = new SecureRandom();中random对象,随机数。(AES不可采用这种方法)(3)采用此代码中的IVParameterSpec
                cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
    
                //加密操作,返回加密后的字节数组,然后需要编码。主要编解码方式有Base64, HEX, UUE,7bit等等。此处看服务器需要什么编码方式
                byte[] encryptedData = cipher.doFinal(cleartext.getBytes(DEFAULT_CODE));
    
                return new BASE64Encoder().encode(encryptedData);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        
        /**
         * AES 解密
         * @author 阿导
         * @time 2019/5/15 20:24:00
         * @param encrypted
         * @param rKey
         * @return java.lang.String
         */
        private static String decrypt(String encrypted, String rKey) {
        
            try {
                byte[] byteMi = new BASE64Decoder().decodeBuffer(encrypted);
                IvParameterSpec zeroIv = new IvParameterSpec(rKey.getBytes());
                SecretKeySpec key = new SecretKeySpec(rKey.getBytes(), "AES");
                Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
                //与加密时不同MODE:Cipher.DECRYPT_MODE
                cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
                byte[] decryptedData = cipher.doFinal(byteMi);
                return new String(decryptedData, DEFAULT_CODE);
            } catch (Exception e) {
                e.printStackTrace();
                return "";
            }
        }
    
        /**
         * 获取随机秘钥
         *
         * @author 阿导
         * @time 2019/5/15 20:25:00
         * @param num
         * @return java.lang.String
         */
        private static String getRKey(Integer num) {
            String rs = new String();
            for (int pox = ZERO; pox < num; pox++) {
                rs += KEYS.toCharArray()[new Random().nextInt(KEYS.length())];
            }
            return rs;
        }
    
        public static Map<String, String> getEncryptionData(Map<String, String> map) {
            //存储realKey和realData
            Map<String, String> rsMap = new HashMap<>(16);
            String randomKey = getRKey(16);
            rsMap.put("realKey", URLEncoder.encode(encrypt(randomKey, md5(COMMON_KEY).substring(ZERO, 16).toUpperCase())));
            String realData = getJsonString(map);
    
            for (int i = ZERO; i < N; i++) {
                realData = encrypt(realData, randomKey);
            }
            rsMap.put("realData", URLEncoder.encode(realData));
            return rsMap;
        }
    
    
        /**
         * 处理数据
         * 
         * @author 阿导
         * @time 2019/5/15 20:26:00
         * @param params
         * @return java.lang.String
         */
        private static String dealData(Map<String, Object> params) {
            StringBuilder sign = new StringBuilder();
            Map<String, Object> sortParams = new TreeMap<String, Object>(params);
            Set<Map.Entry<String, Object>> entrys = sortParams.entrySet();
            int count = ZERO;
            for (Map.Entry<String, Object> entry : entrys) {
                if (entry.getValue() != null) {
                    if (count++ != ZERO) {
                        sign.append(COMMA);
                    }
                    sign.append(QUOTES)
                            .append(entry.getKey())
                            .append(COLON)
                            .append(entry.getValue())
                            .append(QUOTES);
                }
            }
    
            sign.append(QUOTES)
                    .append(SIGN)
                    .append(COLON)
                    .append(SIGN_KEY)
                    .append(QUOTES);
    
            return md5(sign.toString()).toUpperCase();
        }
    
        /**
         * 获取 json 数据
         * 
         * @author 阿导
         * @time 2019/5/15 20:26:00
         * @param params
         * @return java.lang.String
         */
        private static String getJsonString(Map<String, String> params) {
            StringBuilder json = new StringBuilder();
            // 将参数以参数名的字典升序排序
            Map<String, String> sortParams = new TreeMap<String, String>(params);
            Set<Map.Entry<String, String>> entrys = sortParams.entrySet();
            String sign = dealData(new HashMap<>(params));
            json.append(BRACES_LEFT);
            int count = ZERO;
            for (Map.Entry<String, String> entry : entrys) {
                if (entry.getValue() != null) {
                    if (count++ != ZERO) {
                        json.append(COMMA);
                    }
                    json.append(QUOTES)
                            .append(entry.getKey())
                            .append(QUOTES)
                            .append(COLON)
                            .append(QUOTES)
                            .append(entry.getValue())
                            .append(QUOTES);
                }
            }
            json.append(COMMA)
                    .append(QUOTES)
                    .append(SIGN)
                    .append(QUOTES)
                    .append(COLON)
                    .append(QUOTES)
                    .append(sign)
                    .append(QUOTES)
                    .append(BRACES_RIGHT);
    
            return json.toString();
        }
    
        /**
         * 获取解密数据
         * 
         * @author 阿导
         * @time 2019/5/15 20:27:00
         * @param map
         * @return java.lang.Object
         */
        private static Object getDecryptData(Map<String, String> map) {
            try {
                String randomKey = decrypt(URLDecoder.decode(map.get("realKey")), md5(COMMON_KEY).substring(0, 16).toUpperCase());
                String rsData = URLDecoder.decode(map.get("realData").toString());
                for (int i = ZERO; i < N; i++) {
                    rsData = decrypt(rsData, randomKey);
                }
                Map<String, Object> rsMap = JSON.parseObject(rsData);
                String sign = (String) rsMap.get("sign");
                if (sign == null || "".equals(sign)) {
                    return "SIGN_NULL";
                }
                rsMap.remove("sign");
                if (sign.equals(dealData(rsMap))) {
                    return rsMap;
                } else {
                    return "SIGN_ERROR";
                }
            } catch (Exception e) {
                return "KEY_ERROR";
            }
    
        }
    
        public static void main(String[] args) {
            Map<String, String> map = new HashMap<String, String>();
            map.put("name", "小明");
            map.put("sex", "男");
            Map<String, String> map1 = getEncryptionData(map);
            Object map2 = getDecryptData(map1);
            System.err.println(map2);
        }
    
    }
    
    
    
    

    皎月

    哎!最近阿导诸事不利,广告还是打起来:

    需要云服务器的不要错过优惠

    阿里云低价购买云服务,值得一看

    展开全文
  • WHAT何为数据安全? 数据安全指的是用技术手段识别网络上的文件、数据库、帐户信息等各类数据集的相对重要性、敏感性、合规性等,并采取适当的安全控制措施对其实施保护等过程。 与边界安全、文件安全、用户行为...

    WHAT何为数据安全?

    数据安全指的是用技术手段识别网络上的文件、数据库、帐户信息等各类数据集的相对重要性、敏感性、合规性等,并采取适当的安全控制措施对其实施保护等过程。

    与边界安全、文件安全、用户行为安全等其他安全问题相同,数据安全并非是唯一一种能提升信息系统安全性的技术手段,也不是一种能全面保障信息系统安全的技术手段。它就是一种能够合理评估及减少由数据存储所带来的安全风险的技术方式。

    为什么需要数据安全?

    如果数据安全流程只是构建单位信息安全体系的众多技术手段之一,那么,与其他技术手段相比,它的优点何在?

    从广义上讲,大多数其他安全技术手段都是以用户为中心的,它们关注的是以下这些问题:

    某用户是否能够访问某数据?

    某用户是否有权加入某网络?

    某用户是否在滥用系统资源?

    对于保障信息系统安全而言,上述这些都是非常重要的工作,但在真实信息系统的安全建设过程中,上述问题的解决却可能遭遇到大量的现实问题。例如,在一个有上百甚至上千台服务器的大型单位网络中,实际情况往往是,服务器使用权限设置随意、大量过期用户身份存在,要想掌握用户对资源的访问情况更是不可思议。

    而以数据为中心的安全模型则是换一个角度解决上述安全问题的方法。
    人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,有兴趣的朋友,可以查阅多智时代,在此为你推荐几篇优质好文:
    1.在学习大数据之前,需要具备什么基础
    http://www.duozhishidai.com/article-12916-1.html
    2.大数据工程师培训,需要学习的有哪些课程?
    http://www.duozhishidai.com/article-15081-1.html
    3.大数据的特点是什么,大数据与Hadoop有什么关系?
    http://www.duozhishidai.com/article-13276-1.html


    多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

    多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
    展开全文
  • 如何保证数据安全性?【讨论】

    千次阅读 2017-10-19 14:26:54
    一、数据安全有对立的两方面的含义: 1、是数据本身的安全。  主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等; 2、是数据防护的安全。  主要是采用现代信息存储手段对...

    一、数据安全有对立的两方面的含义:

    1、是数据本身的安全。  

             主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等;

    2、是数据防护的安全。

            主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段保证数据的安全,数据安全是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种。

    二、如何保证数据安全性?

            可以从三个层面入手:操作系统;应用系统;数据库;比较常用的是:应用系统和数据库层面的安全保障措施。

    1、操作系统层面:

            防火墙的设置。如:设置成端口8080只有自己的电脑能访问。

    2、应用系统层面:

            如:登陆拦截;拦截访问请求
           登陆拦截{
                       使用过滤器过滤所有请求【form请求和ajax请求】,
               若没登录不管输入什么访问路径请求,都跳转到登录页面。
           }
           登录权限分配{
                   普通用户:登录以后,不能够通过访问路径进入管理员的特有页面。
           管理员:
           VIP用户:控制到按钮级别的功能。有些功能普通用户有,但是不能使用。
           }   
          
           密码不能是【明文】,必须加密;加密算法必须是不可逆的,不需要知道客户的密码。
           密码的加密算法{
              1>  MD5--不安全,可被破解。
                     需要把MD5的32位字符串再次加密(次数只有你自己知道),不容易破解;
              2>  加密多次之后,登录时忘记密码,只能重置密码,
                     它不会告诉你原密码,因为管理员也不知道。
           }
          一般金融项目会对敏感数据信息(如:身份证号,照片)进行加密。
          三监会(保监会,银监会,证监会)、银行等特殊机构,有的必须插入专用的U盾才能输入密码登录。

    3、数据库层面:

          oracle数据库{
                 本地硬盘的数据本身就是加密的。
                【JNDI】加密算法,一种针对数据库连接池的加密。
                  别人拿到数据库密码,看到的也只是JNDI加密的名字。
           }

    展开全文
  • 数据安全

    千次阅读 2018-08-09 10:36:30
    近年来,数据安全形势越发严峻,各种数据安全事件层出不穷。在当前形势下,互联网公司也基本达成了一个共识:虽然无法完全阻止攻击,但底线是敏感数据不能泄漏。也即是说,服务器可以被挂马,但敏感数据不能被拖走。...

    近年来,数据安全形势越发严峻,各种数据安全事件层出不穷。在当前形势下,互联网公司也基本达成了一个共识:虽然无法完全阻止攻击,但底线是敏感数据不能泄漏。也即是说,服务器可以被挂马,但敏感数据不能被拖走。服务器对于互联网公司来说,是可以接受的损失,但敏感数据泄漏,则会对公司产生重大声誉、经济影响。

    在互联网公司的数据安全领域,无论是传统理论提出的数据安全生命周期,还是安全厂商提供的解决方案,都面临着落地困难的问题。其核心点在于对海量数据、复杂应用环境下的可操作性不佳。

    例如数据安全生命周期提出,首先要对数据进行分类分级,然后才是保护。但互联网公司基本上都是野蛮生长,发展壮大以后才发现数据安全的问题。但存量数据已经形成,日以万计的数据表在增长,这种情况下如何实现数据分类分级?人工梳理显然不现实,梳理的速度赶不上数据增长速度。

    再例如安全厂商提供的数据审计解决方案,也都是基于传统关系型数据库的硬件盒子。Hadoop环境下的数据审计方案是什么?面对海量数据,很多厂商也买不起这么多硬件盒子啊。

    因此,互联网公司迫切需要一些符合自身特点的手段,来进行数据安全保障。为此,美团点评信息安全中心进行了一些具体层面的探索。这些探索映射到IT的层面,主要包括应用系统和数据仓库,接下来我们分别阐述。

    一、应用系统

    应用系统分为两块,一是对抗外部攻击,是多数公司都有的安全意识,但意识不等于能力,这是一个负责任企业的基本功。传统问题包括越权、遍历、SQL注入、安全配置、低版本漏洞等,这一类在OWASP的Top10风险都有提到,在实践中主要考虑SDL、安全运维、红蓝对抗等手段,且以产品化的形式来解决主要问题。这里不做重点介绍。

    1.1 扫号及爬虫

    新的形势下,还面临扫号、爬虫问题。扫号是指撞库或弱口令:撞库是用已经泄漏的账号密码来试探,成功后轻则窃取用户数据,重则盗取用户资金;弱口令则是简单密码问题。对于这类问题,业界不断的探索新方法,包括设备指纹技术、复杂验证码、人机识别、IP信誉度,试图多管齐下来缓解,但黑产也在不断升级对抗技术,包括一键新机、模拟器、IP代理、人类行为模仿,因此这是个不断的对抗过程。

    举个例子,有公司在用户登录时,判断加速等传感器的变化,因为用户在手机屏幕点击时,必然会带来角度、重力的变化。如果用户点击过程中这些传感器没有任何变化,则有使用脚本的嫌疑。再加上一个维度去判断用户近期电量变化,就可以确认这是一台人类在用的手机,还是黑产工作室的手机。黑产在对抗中发现公司用了这一类的策略,则很轻易的进行了化解,一切数据都可以伪造出来,在某宝上可以看到大量的此类技术工具在出售。

    爬虫对抗则是另一个新问题,之前有文章说,某些公司的数据访问流量75%以上都是爬虫。爬虫不带来任何业务价值,而且还要为此付出大量资源,同时还面临数据泄漏的问题。

    在互联网金融兴起后,爬虫又产生了新的变化,从原来的未授权爬取数据,变成了用户授权爬取数据。举例来说,小张缺钱,在互联网金融公司网站申请小额贷款,而互联网金融公司并不知道小张能不能贷,还款能力如何,因此要求小张提供在购物网站、邮箱或其他应用的账号密码,爬取小张的日常消费数据,作为信用评分参考。小张为了获取贷款,提供了账号密码,则构成了授权爬取。这和以往的未授权爬取产生了很大的变化,互联网金融公司可以进来获取更多敏感信息,不但加重了资源负担,还存在用户密码泄漏的可能。

    这里写图片描述

    对爬虫的对抗,也是一个综合课题,不存在一个技术解决所有问题的方案。解决思路上除了之前的设备指纹、IP信誉等手段之外,还包括了各种机器学习的算法模型,以区分出正常行为和异常行为,也可以从关联模型等方向入手。但这也是个对抗过程,黑产也在逐渐摸索试探,从而模拟出人类行为。未来会形成机器与机器的对抗,而决定输赢的,则是成本。

    1.2 水印

    近年来业界也出现了一些将内部敏感文件,截图外发的事件。有些事件引起了媒体的炒作,对公司造成了舆论影响,这就需要能够对这种外发行为进行溯源。而水印在技术上要解决的抗鲁棒性问题,针对图片的水印技术包括空间滤波、傅立叶变换、几何变形等,简单的说是将信息经过变换,在恶劣条件下还原的技术。

    1.3 数据蜜罐

    是指制作一个假的数据集合,来捕获访问者,从而发现攻击行为。国外已经有公司做出了对应的产品,其实现可以粗暴地理解为,在一个数据文件上加入了一个“木马”,所有的访问者再打开后,会把对应记录发回服务器。通过这个“木马”,可以追踪到攻击者细节信息。我们也曾做过类似的事情,遗憾的是,这个数据文件放在那里很久,都无人访问。无人访问和我我们对蜜罐的定位有关,现阶段我们更愿意把它作为一个实验性的小玩意,而不是大规模采用,因为“木马”本身,可能带有一定的风险。

    1.4 大数据行为审计

    大数据的出现,为关联审计提供了更多的可能性,可以通过各种数据关联起来分析异常行为。这方面,传统安全审计厂商做了一些尝试,但从客观的角度来看,还比较基础,无法应对大型互联网公司复杂情况下的行为审计,当然这不能苛求传统安全审计厂商,这与生意有关,生意是要追求利润的。这种情况下,互联网公司就要自己做更多的事情。

    例如防范内鬼,可以通过多种数据关联分析,通过“与坏人共用过一个设备”规则,来发现内鬼。举一反三,则可以通过信息流、物流、资金流等几个大的方向衍生出更多符合自身数据特点的抓内鬼规则。

    除此之外,还可以通过UEBA(用户与实体行为分析)来发现异常,这需要在各个环节去埋点采集数据,后端则需要对应的规则引擎系统、数据平台、算法平台来支撑。

    例如常见的聚类算法:某些人与大多数人行为不一致,则这些人可能有异常。具体场景可以是:正常用户行为首先是打开页面,选择产品,然后才是登录、下单。而异常行为可以是:先登录,然后修改密码,最后下单选了一个新开的店,使用了一个大额优惠券。这里每一个数据字段,都可以衍生出各种变量,通过这些变量,最后可以有一个异常判断。

    再例如关联模型,一个坏人团伙,通常是有联系的。这些维度可以包括IP、设备、WiFi MAC地址、GPS位置、物流地址、资金流等若干维度,再结合自己的其他数据,可以关联出一个团伙。而团伙中如果有一个人标记为黑,则关系圈则会根据关系强弱进行信誉打分降级。
    这里写图片描述
    UEBA的基础是有足够的数据支撑,数据可以是外部的数据供应商。例如腾讯、阿里都提供一些对外数据服务,包括对IP信誉的判断等,使用这些数据,可以起到联防联控的效果。也可以是内部的,互联网公司总会有若干条业务线服务一个客户,这就要看安全人员的数据敏感度了,哪些数据能为自己所用。

    1.5 数据脱敏

    在应用系统中,总会有很多用户敏感数据。应用系统分为对内和对外,对外的系统脱敏,主要是防止撞号和爬虫。对内的系统脱敏,主要是防止内部人员泄漏信息。

    对外系统的脱敏保护,可以分层来对待。默认情况下,对于银行卡号、身份证、手机号、地址等关键信息,强制脱敏,以**替换关键位置,这样即使被撞库或者爬虫,也获取不到相关信息,从而保护用户数据安全。但总有客户需要看到自己或修改自己的完整信息,这时就需要分层保护,主要是根据常用设备来判断,如果是常用设备,则可以无障碍的点击后显示。如果非常用设备,则推送一个强验证。

    在日常业务中,美团点评还有一个特点。外卖骑手与买家的联系,骑手可能找不到具体位置,需要和买家进行沟通,这时至少包括了地址、手机号两条信息暴露。而对于买家信息的保护,我们也进行了摸索试探。手机号码信息,我们通过一个“小号”的机制来解决,骑手得到的是一个临时中转号码,用这个号码与买家联系,而真实号码则是不可见的。地址信息,我们在系统中使用了图片显示,在订单完成之后,地址信息则不可见。

    对内系统的脱敏保护,实践中可以分为几个步骤走。首先是检测内部系统中的敏感信息,这里可以选择从Log中获取,或者从JS前端获取,两个方案各有优劣。从Log中获取,要看公司整体上对日志的规范,不然每个系统一种日志,对接周期长工作量大。从前端JS获取,方案比较轻量化,但要考虑性能对业务的影响。

    检测的目的是持续发现敏感信息变化,因为在内部复杂环境中,系统会不断的改造升级,如果缺少持续监控的手段,会变成运动式工程,无法保证持续性。

    检测之后要做的事情,则是进行脱敏处理。脱敏过程需要与业务方沟通明确好,哪些字段必须强制完全脱敏,哪些是半脱敏。应用系统权限建设比较规范的情况下,可以考虑基于角色进行脱敏,例如风控案件人员,是一定需要用户的银行卡完整信息的,这时候可以根据角色赋予免疫权限。但客服人员则不需要查看完整信息,则进行强制脱敏。在免疫和脱敏之间,还有一层叫做半脱敏,是指在需要的时候,可以点击查看完整号码,点击动作则会被记录。

    就脱敏整体而言,应该有一个全局视图。每天有多少用户敏感信息被访问到,有多少信息脱敏,未脱敏的原因是什么。这样可以整体追踪变化,目标是不断降低敏感信息访问率,当视图出现异常波动,则代表业务产生了变化,需要追踪事件原因。

    二、数据仓库

    数据仓库是公司数据的核心,这里出了问题则面临巨大风险。而数据仓库的治理,是一个长期渐进的建设过程,其中安全环节只是其中一小部分,更多的则是数据治理层面。本文主要谈及安全环节中的一些工具性建设,包括数据脱敏、隐私保护、大数据行为审计、资产地图、数据扫描器。

    2.1 数据脱敏

    数据仓库的脱敏是指对敏感数据进行变形,从而起到保护敏感数据的目的,主要用于数据分析人员和开发人员对未知数据进行探索。脱敏在实践过程中有若干种形式,包括对数据的混淆、替换,在不改变数据本身表述的情况下进行数据使用。但数据混淆也好,替换也好,实际上都是有成本的,在大型互联网公司的海量数据情况下,这种数据混淆替换代价非常高昂,
    实践中常用的方式,则是较为简单的部分遮盖,例如对手机号的遮盖,139**0011来展示,这种方法规则简单,能起到一定程度上的保护效果。

    但有些场景下,简单的遮盖是不能满足业务要求的,这时就需要考虑其他手段,例如针对信用卡号码的的Tokenization,针对范围数据的分段,针对病例的多样性,甚至针对图片的base64遮盖。因此需要根据不同场景提供不同服务,是成本、效率和使用的考量结果,

    数据遮盖要考虑原始表和脱敏后的表。原始数据一定要有一份,在这个基础上是另外复制出一张脱敏表还是在原始数据上做视觉脱敏,是两种不同成本的方案。另外复制一张表脱敏,是比较彻底的方式,但等于每张敏感数据表都要复制出来一份,对存储是个成本问题。而视觉脱敏,则是通过规则,动态的对数据展现进行脱敏,可以较低成本的实现脱敏效果,但存在被绕过的可能性。

    2.2 隐私保护

    隐私保护上学术界也提出了一些方法,包括K匿名、边匿名、差分隐私等方法,其目的是解决数据聚合情况下的隐私保护。例如有的公司,拿出来一部分去除敏感信息后的数据公开,进行算法比赛。这个时候就要考虑不同的数据聚合后,可以关联出某个人的个人标志。目前看到业界在生产上应用的是Google的DLP API,但其使用也较为复杂,针对场景比较单一。隐私保护的方法,关键是要能够进行大规模工程化,在大数据时代的背景下,这些还都是新课题,目前并不存在一个完整的方法来解决隐私保护所有对抗问题。

    2.3 大数据资产地图

    是指对大数据平台的数据资产进行分析、数据可视化展现的平台。最常见的诉求是,A部门申请B部门的数据,B作为数据的Owner,当然想知道数据给到A以后,他是怎么用的,有没有再传给其他人使用。这时候则需要有一个资产地图,能够跟踪数据资产的流向、使用情况。换个角度,对于安全部门来说,需要知道当前数据平台上有哪些高敏感数据资产,资产的使用情况,以及平台上哪些人拥有什么权限。因此,通过元数据、血缘关系、操作日志,形成了一个可视化的资产地图。形成地图并不够,延伸下来,还需要能够及时预警、回收权限等干预措施。

    2.4 数据库扫描器

    是指对大数据平台的数据扫描,其意义在于发现大数据平台上的敏感数据,从而进行对应的保护机制。一个大型互联网公司的数据表,每天可能直接产生多达几万张,通过这些表衍生出来更多的表。按照传统数据安全的定义,数据安全第一步是要分类分级,但这一步就很难进行下去。在海量存量表的情况下,该怎样进行分类分级?人工梳理显然是不现实的,梳理的速度还赶不上新增的速度。这时候就需要一些自动化的工具来对数据进行打标定级。因此,数据库扫描器可以通过正则表达式,发现一些基础的高敏感数据,例如手机号、银行卡等这些规整字段。对于非规整字段,则需要通过机器学习+人工标签的方法来确认。

    综上,数据安全在业务发展到一定程度后,其重要性越发突出。微观层面的工具建设是一个支撑,在尽量减少对业务的打扰同时提高效率。宏观层面,除了自身体系内的数据安全,合作方、投资后的公司、物流、骑手、商家、外包等各类组织的数据安全情况,也会影响到自身安全,可谓“唇亡齿寒”。而在当前各类组织安全水平参差不齐的情况下,就要求已经发展起来的互联网公司承担更多的责任,帮助合作方提高安全水平,联防共建。

    原文地址: https://tech.meituan.com/Data_Security_Protection_New_Exploration.html

    展开全文
  • 数据安全体系概述

    2019-07-17 15:31:48
    1,数据访问安全: ①服务认证:保证各个角色之间的合法性,可以有效防止身份伪装。服务之间的安全管理 ②授权管理:管理人操作的权限。人和服务的安全管理 2,数据脱敏安全: 针对数据内容的安全方案。他需要一个...
  • 数据安全的基本知识

    2019-12-15 20:14:23
    互联网技术的进步改变了人类的生活方式。从人们通过社交媒体到改善工作场所的...但是,采用安全技术也可以防止网络攻击。 在过去的几年里,网络攻击已经影响了一些全球规模最大的跨国公司。例如,黑客攻击索尼公司...
  • 数据安全架构

    2019-06-17 18:31:24
    数据库资料包含了用户的手机、密码、邮箱、×××、住址、家庭成员信息、消费记录(这个比较敏感),他们感到鸭梨很大,所以得此机会,为他们的几千万用户设计数据安全方案; 了解骇客Web 漏洞-> Web...
  • 安全多方计算是什么 为了了解安全多方计算,让我们先看两个场景例子 (1)Alice认为她的了某种遗传疾病,想验证自己的想法。正好她知道Bob有一个关于疾病的DNA模型的数据库。如果她把自己的DNA样品寄给Bob,那么...
  • 大数据安全保护思考

    千次阅读 2019-03-01 11:13:35
    大数据安全保护思考 ...因此在新的形势下,一是在工具层面要有新的手段支撑,包括完整的敏感数据视图、高风险场景识别、数据违规/滥用预警、数据安全事件的发现检测和阻止等。二是目前企业也存...
  • 数据安全之用户权限

    万次阅读 2020-05-08 11:46:03
    当我们在做多用户系统时,对于用户的编辑删除操作,一定需要主要对用户ID进行权限判断再进行删除处理.避免出现漏洞造成数据丢失
  • web服务器的时候,登录的时候出现“此计算机上的安全设置禁止访问其他域的数据源”的错误,是ie浏览器的安全设置的问题,工具-->Internet选项-->安全-->自定义级别-->找到“通过域访问数据源”-->选择“启用”。
  • 一、数据中心的安全现状 数据中心是现代社会的信息资源库,能够提供各项数据服务,它通过互联网与外界进行信息交互,响应服务请求。由于互联网的高度开放性,使得数据中心也成为了互联网上的一个组成节点,同样也...
  • 安全隔离网闸简介

    万次阅读 2012-07-26 21:51:14
     安全隔离网闸,又名“网闸”、“物理隔离网闸”,用以实现不同安全级别网络之间的安全隔离,并提供适度可控的数据交换的软硬件系统。安全数据交换单元不同时与内外网处理单元连接,为2+1的主机架构。隔离网闸采用...
  • android应用安全——数据安全

    万次阅读 多人点赞 2013-07-09 17:38:39
    数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM数据(内部存储)安全。 android中操作数据库可使用SQLiteOpenHelper或ContentProvider的方式。使用SQLiteOpenHelper操作数据库时,数据库存放在data/...
  • 区块链如何解决数据安全问题?

    千次阅读 2018-08-21 14:20:48
     我们身处大数据和互联网时代,只要你上网浏览,就会产生数据信息,用户数据是互联网企业的宝藏。有了如此多的敏感信息和私人信息在网上被传输和存储,严格的隐私和安全对于每个人来说都至关重要。尽管如此,随着你...
  • 如何解决CF安全数据上报异常 16-2

    千次阅读 2020-06-18 18:34:23
    如何解决CF安全数据上报异常 16-2 问题: 最近换了台电脑,自己将原来电脑的机械硬盘装到新的电脑上,我想,换了台电脑,不玩点游戏好像对不起自己,所以下载了CF,但是玩了两局个人竞技+一局人机(还不到1个小时)...
  • 五类安全服务包括认证(鉴别)服务、访问控制服务、数据保密性服务、数据完整性服务和抗否认性服务。 认证(鉴别)服务:在网络交互过程中,对收发双方的身份及数据来源进行验证。 访问控制服务:防止未授权用户...
  • Hadoop退出安全模式

    万次阅读 2015-01-13 12:57:04
    hadoop为了防止数据丢失,启动了“安全模式”的设置,每次启动hadoop后一段时间内集群处于安全模式,该模式下集群会检查各节点文件块的记录,如果数据块中满足replication设置值的数据块的数量在总数据块数量中所占...
  • Java多线程——什么是线程安全和线程不安全

    万次阅读 多人点赞 2018-12-04 23:19:46
    1.可以这样理解,加锁的就是安全的,不加锁的就是不安全的(感觉比较生动,不知道对不对,望指出)     线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能...
1 2 3 4 5 ... 20
收藏数 2,041,069
精华内容 816,427
关键字:

数据安全