CN109684856B - 一种针对MapReduce计算的数据保密方法及系统 - Google Patents

一种针对MapReduce计算的数据保密方法及系统 Download PDF

Info

Publication number
CN109684856B
CN109684856B CN201811548683.9A CN201811548683A CN109684856B CN 109684856 B CN109684856 B CN 109684856B CN 201811548683 A CN201811548683 A CN 201811548683A CN 109684856 B CN109684856 B CN 109684856B
Authority
CN
China
Prior art keywords
value
reduce
data
stage
reduce1
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811548683.9A
Other languages
English (en)
Other versions
CN109684856A (zh
Inventor
王永智
沈玉龙
马佳文
张小宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201811548683.9A priority Critical patent/CN109684856B/zh
Publication of CN109684856A publication Critical patent/CN109684856A/zh
Application granted granted Critical
Publication of CN109684856B publication Critical patent/CN109684856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种针对MapReduce计算的数据保密方法及系统,包括:在MapReduce的标准reduce阶段reduce2前添加另一reduce阶段reduce1;在map阶段的函数中写入随机分配函数将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,或者,在键值对数据中添加假键值对数据后分别发送;对数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。本发明实现了云计算平台中MapReduce作业数据的机密性保护。

Description

一种针对MapReduce计算的数据保密方法及系统
技术领域
本发明涉及云计算数据保密技术领域,特别是一种针对MapReduce计算的数据保密方法及系统,保护了远程执行环境场景下基于MapReduce框架的数据和隐私,避免了应用程序的数据隐私被恶意观察者获取。
背景技术
MapReduce是一种并行编程模型,用于大规模数据集的并行计算,具有函数式编程语言和矢量编程语言里的特性,具有数据划分和计算任务调度、系统优化、出错检测和恢复的功能,因此,使得MapReduce适用于日志分析、机器学习、分布排序等应用程序。一个MapReduce作业是一个用户希望被执行的工作单元:它包括输入数据,MapReduce程序和配置信息。MapReduce通过把作业分成tasks(任务)的形式来运行该作业。任务分为map任务(map task)和reduce任务(reduce task)两种。参见图1所示,多reduce任务的标准MapReduce的数据流是由分片、Map、Reduce等阶段构成。MapReduce中的每个map任务可以细分为4个阶段:record read(用于数据分割)、map、combine(用于数据聚合,该阶段可省去)、partition(用于数据拆分)。Hadoop中的每个reduce任务可以细分为4个阶段:shuffle(混排)、sort(排序)、reduce和output format(输出格式)。
Hadoop是MapReduce框架的一种实现。它是开发和运行处理大规模数据的软件平台,是Apache用java语言实现的开源软件框架,实现由大量计算机组成的集群对海量数据进行分布式计算。Hadoop具有高效率、成本低、扩容能力强和可靠性的优点。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
SGX技术全称Intel Software Guard Extensions,是一组x86-64ISA扩展,可以设置受保护的执行环境(称为Enclave),除了处理器和用户放置在其包围区内的代码之外,不需要任何信任。一旦软件和数据位于Enclave中,即便操作系统或者VMM(Hypervisor)也无法影响Enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。Enclave受到处理器的保护:处理器控制对Enclave内存的访问。试图从Enclave外部读取或写入正在运行的Enclave的存储器的指令都将失败。Enclave缓存行在写入内存(RAM)之前经过加密和完整性保护。可以通过类似于Intel x86架构中的一种call gate调用机制从不受信任的代码调用Enclave代码,该机制将控制转移到Enclave内的用户定义的入口点。SGX支持远程认证,它使远程系统能够以加密方式验证特定软件是否已在安全区Enclave内加载,并建立端到端的加密通道共享机密。
云计算是网格计算、分布式处理、并行处理的发展,可看作是这些计算机科学概念上的商业服务模式的实现,是一片用于计算的、能提供超大规模计算资源的服务器集群。作为基于网络计算的商业服务模式,云计算的用户可以按自己需求获取存储空间、计算能力、软件服务等,将计算任务分布在由大量计算机构成的资源池,使得用户的计算能力不再受自身的资源限制,而将负载较大的计算任务外包给云以完成高代价的计算。
虽然云计算具有虚拟化、按需服务、高可扩展性等较多优点,但用户将应用、数据等放于云端服务器,必然会面临一定的风险,可以预料到依赖云计算提供商来处理敏感数据将带来隐私泄露的风险。云服务提供商的可信性问题将严重影响用户对云服务的有效使用。
使用公共云基础设施来存储和处理大型数据集引发了新的安全问题。当前的解决方案建议加密所有数据,并且仅在安全硬件内以明文访问它。例如微软公司研究的VC3系统,该系统依靠SGX保护本地map任务和reduce任务的运行,可以调整流行的Hadoop框架保证完整性和保密性。所有数据都经过系统AES-GCM加密。
即使是在用安全环境保护的VC3系统中,大量数据的分布式处理仍然涉及不同处理和网络存储单元之间密集的加密通信,并且这些通信模式可能泄漏敏感信息。仅保护分布式计算的各个单元(例如,map和reduce单元),不可避免的暴露给攻击者了几个重要信息的泄漏通道。map和reduce作业的数据量对云提供者是可见的,并且在较小程度上对其他用户可见,观察和关联每个map和每个reduce之间交换的一系列中间键值对,由数据量大小可以学习到敏感信息。
对于以上问题,在微软的研究论文Olga等人的Observing and preventingleakage in MapReduce中提出了两种方案,SHUFFLE-IN-THE-MIDDLE方案,通过安全的将所有map生成交给所有Reduce使用的所有键值对进行改组操作来阻止对作业的中间流量分析。但是,攻击者仍然会观察每个map任务生成的记录数和加密密钥的分布情况。SHUFFLE&BALANCE方案,将此预处理拆分为离线和在线阶段,离线阶段随机化输入记录的顺序,保证所有map产生相同的键值对分布。在线阶段对输入数据采样,收集map生成的键值的统计信息,用于在reduce之间平衡,并估计每个映射器发送给每个reduce的键值对数量的上限。从而实现将每个map任务发送的中间流量均匀分配到每个reduce任务来满足更高的安全定义。但实际上该方案离线阶段随机化输入记录的顺序,使得大小相同的两组输入数据集在运行过程中key值分布的最高值相等。这个随机化记录的过程耗时是不可预估的。
发明内容
本发明的主要目的在于克服现有技术中的上述缺陷,提出一种针对MapReduce计算的数据保密方法及系统,以实现对在云计算平台中的用户作业进行数据保密。
本发明采用如下技术方案:
一方面,本发明是一种针对MapReduce计算的数据保密方法,包括:
Reduce添加步骤,在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
map阶段处理步骤,在所述MapReduce的map阶段的partition函数中写入随机分配函数将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;
reduce1阶段处理步骤,将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
reduce2阶段处理步骤,对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
一实施方式之中,所述map阶段处理步骤,具体包括:
在所述MapReduce的map阶段的partition函数中写入随机分配函数random();其中,random()生成的数符合0到1上的均匀分布∪(0,1);
通过函数getPartition()获得ID=random()×R,则每个map任务的|D|/M条键值对得到的ID符合概率分布∪(0,R),reduce1阶段的每个reduce任务将得到|D|/R条记录;其中,D表示用户提交作业所使用的数据集输入,|D|表示输入数据大小,M表示map任务的数量,R表示reduce1中reduce任务的数量及reduce2中reduce任务的数量;
使用combiner函数将每个map任务对应每个reduce任务的记录进行预处理,根据key值进行合并,最终每个reduce任务中将包含K条key值记录,表示为k1,…,kK
一实施方式之中,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,…,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,…,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对为<k1,valuei1>,…,<kK,valueiK>;将这K个键值对向每个reduceR+i发送一次,一共发送R次。
所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<k1,valueiK>,…,<kK,valuei1>,…,<kK,valueiK>;每一个reduceR+i中的这组数据相当于所有reduce1中reducei键值对数据的集合;
reduceR+i对所有键值对数据进行检查,判断hash(<kx,valuey>)mod R是否等于R+i,如果不等于,丢弃对应的键值对数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’};
一实施方式之中,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,…,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,…,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合为Ti={<k1,valuei1>,…,<kK,valueiK>};
在每个reducei中写入假数据集合Fi={<kK+1,valuef,i1>,…,<kK+ωRK,valuef,in>};根据map到reduce1的数据处理时添加的随机分配函数random(),以一定概率ω添加,假数据添加总个数为ω×R×K;
令Xi=Ti∪Fi;使用getPartition():hash(<kx,valuey>)mod R对x∈Xi取得ID,发送给reduce2中的reducerR+i;其中,kx∈{k1,k2,...kK,kK+1,...kK+ωRK},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<kK,valueiK>,…,<kK+ωRK,valuef,K+ωRK>;
reduceR+i对所有键值对数据进行检查,判断<kx,valuey>是否为Fi数据集中的写入的假数据,如果是,丢弃对应的假数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
一实施方式之中,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,…,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,…,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合为Ti={<k1,valuei1>,…,<kK,valueiK>};
在每个reducei中写入假数据集合Fi={<kf1,valuef,i1>,…,<kfK’,valuef,iK’>};这些假数据的key值随机产生并且在hash(<kx,valuey>)mod R运算后符合∪(0,R);其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’};
令Xi=Ti∪Fi;使用getPartition():hash(<kx,valuey>))mod R对x∈Xi取得ID,发送给reduce2中的reducerR+i;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<kK,valueiK>,…,<kK+K′,valueK+K′>;
reduceR+i对所有键值对数据进行检查,判断<kx,valuey>是否为Fi数据集中的写入的假数据,如果是,丢弃对应的假数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
一实施方式之中,所述MapReduce的框架运行在安全的执行环境,且不在安全执行环境中处理的数据均进行加密处理。
第二方面,本发明一种针对MapReduce计算的数据保密系统,包括:
Reduce添加模块,用于在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
map阶段处理模块,用于在所述MapReduce的map阶段的partition函数中写入随机分配函数以将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;
reduce1阶段处理模块,用于将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
reduce2阶段处理模块,用于对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:
(1)本发明一种针对MapReduce计算的数据保密方法及系统,在partition函数中写入特定的随机分配函数,该分配将map任务中数据平均分给reduce任务,所有map任务输出数据的量和大小相等,使得数据量大小与输入数据统计学分布关系不明确,使攻击方不能通过跟踪每个map任务到reduce任务的流量来推测数据,即攻击者通过观察输入无法分辨相同数据大小的输入的输出对应关系,从而实现map输出的不可分辨性;
(2)本发明一种针对MapReduce计算的数据保密方法及系统,每个reduce任务接收的数据量大小相等,或虽不相等但经过随机添加和标记,不具有统计后推测意义,防止攻击者多次使用不同数据跟踪map任务到reduce任务的对应关系,从而实现reduce输入的不可分辨性。
上述说明仅是本发明技术方案的概述,为了能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下列举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述及其他目的、优点和特征。
附图说明
图1为现有技术的多reduce任务的标准MapReduce的数据流图;
图2本发明实施例的针对MapReduce计算的数据保密方法流程图;
图3为本发明实施例的数据保密方案一执行流程图;
图4为本发明实施例的数据保密方案二执行流程图;
图5为本发明实施例的数据保密方案三执行流程图;
图6为本发明实施例的针对MapReduce计算的数据保密系统结构框图。
具体实施方式
以下通过具体实施方式对本发明作进一步的描述。
需要说明的是,本发明具体实施方式中涉及到的步骤标识,仅是为了使文件看起来更加清晰,具体实施时,步骤的顺序可以相应调整。
参见图2所示,一方面,本发明一种针对MapReduce计算的数据保密方法,包括:
S201,Reduce添加步骤,在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
S202,map阶段处理步骤,在所述MapReduce的map阶段的partition函数中写入随机分配函数将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;
S203,reduce1阶段处理步骤,将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
S204,reduce2阶段处理步骤,对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
具体实施时,使用本发明方法进行MapReduce计算的数据保密之前,需要对MapReduce的数据进行加密操作。具体的,数据加密建立在MapReduce框架运行在安全的执行环境的基础上。所述安全的执行环境具体实施中可采用可信执行环境(TrustedExecution Envionrment(TEE))技术,如Intel SGX。MapReduce通常把job(作业)分解成tasks(任务,分为map任务(map task)和reduce任务(reduce task)两种),由集群中的节点分别运行。本发明将每个任务部署在可信执行环境中进行执行,因此实现任务运行时保密,但数据在不同任务之间进行传输时仍需保护。本发明对任务间数据进行加密传输。
由于安全执行环境中仅包含MapReduce中每个task处理数据的代码,例如标准MapReduce的map任务和reduce任务,而其余的Hadoop分布式基础架构则不需要信任,加密处理后数据的明文不会在运行阶段被攻击方直接获取。
尽管对数据进行加密操作后能够保证数据明文不会在运行阶段被攻击方直接获取和修改。但上述处理后,恶意观察者仍然可以记录加密数据的交换,例如MapReduce系统中每个节点之间的数据交换(网络流量分析)或每个节点和存储之间的数据交换(存储流量分析),交换的数据量包括字节、页、分组或记录等。观察者在先验统计学知识上得到输入数据的统计学分布,从而通过观察map任务与reduce任务之间的流量进行分析,得到数据中的敏感信息,导致隐私泄露。
本发明的数据保密方法将从map输出的不可分辨性和reduce输入的不可分辨性两方面对数据进行保密:
map输出的不可分辨性:在partition函数中写入特定的随机分配函数,该分配将map任务中数据平均分给reduce任务,所有map任务输出数据的量和大小相等,使得数据量大小与输入数据统计学分布关系不明确,使攻击方不能通过跟踪每个map任务到reduce任务的流量来推测数据,即攻击者通过观察输入无法分辨相同数据大小的输入的输出对应关系。
reduce输入的不可分辨性:每个reduce任务接收的数据量大小相等,或虽不相等但经过随机添加和标记,不具有统计后推测意义,防止攻击者多次使用不同数据跟踪map任务到reduce任务的对应关系。
具体的,为实现从map输出的不可分辨性和reduce输入的不可分辨性两方面对数据进行保密,本发明将通过如下三种实施方式实现。
实施方式一
参见图3所示,对比标准MapReduce过程,本实施方式主要在改写MapReduce执行流程中修改了map阶段的partition函数并且添加了另一个reduce阶段。在标准reduce前添加的另一个reduce阶段称为reduce1,标准reduce经过改写在本发明中称为reduce2。对MapReduce改写后符合map输出的不可分辨性,符合reduce端输入的不可分辨性的每个reduce任务接收的数据量大小相等。
设用户提交作业所使用的数据集输入为D,|D|表示输入数据大小,M表示map任务的数量,R表示reduce1中reduce任务的数量和reduce2中reduce任务的数量(即reduce1和reduce2中的reduce任务数量相等)。如下分别对map阶段的处理、reduce1阶段的处理和reduce2阶段的处理方法进行说明。
map阶段:设di∈D为map任务的输入记录,通过函数getPartition()得到ID,ID=random()×R,random()生成的数符合0到1上的均匀分布∪(0,1),则每个map任务的|D|/M条键值对得到的ID符合概率分布∪(0,R)。获得的ID与记录中内容无关。每个reduce1得到|D|/R条记录。之后将每个map任务对应于每个reduce任务的记录经过combiner函数预处理,根据key值进行合并,即最后每个reduce任务中将包含K(key值种类)条记录,这些key值表示为k1,…,kK
reduce1阶段:首先reduce1进行与标准reduce相同的排序与合并。设reduce1和reduce2中的reduce任务分别为reducei∈{reduce1,…,reduceR},reduceR+i∈{reduceR+1,…,reduce2R}。reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对为<k1,valuei1>,…,<kK,valueiK>,将这K个键值对向每个reduceR+i发送一次,一共发送R次,即每个reducei向任意一个reduceR+i传输的流量大小均为K。保证了reduce1到reduce2阶段中reduce1输出的各路径流量相等,以及reduce2输入的各路径流量的相等。
reduce2阶段:reduce2中的reducerR+i所有收到的数据<k1,valuei1>,…,<k1,valueiK>,…,<kK,valuei1>,…,<kK,valueiK>,每一个reduceR+i中的这组数据相当于所有reduce1中reducei数据的集合。首先reduceR+i对所有数据进行检查操作,将hash(<kx,valuey>)mod R==R+i不为真的数据丢弃。留下的数据进行排序和合并计算,输出结果。其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’};
具体的,本实施方式在实际中可以以两个并行的job(一个mapreduce任务称为job)实现。本实施方式利用重复传输的方式来保密了数据,同时保护了不同key数量不被泄露。在两个大小相同的不同数据库运行该方案上时,map的输出、reduce1的输入、reduce1的输出和reduce2的输入这几个会被观察者监视的过程中流量均相等。
实施方式二
本实施方式利用加入假数据的方式来实现对数据的保密,同时对key值的种类数K进行保护。本实施方式对MapReduce改写后符合map输出的不可分辨性,符合reduce端输入的不可分辨性的虽不相等但经过随机添加和标记,不具有统计后推测意义。
参见图4所示,对比标准MapReduce过程,本实施方式主要在改写MapReduce执行流程中修改了map阶段的partition函数并且添加了另一个reduce阶段。在标准reduce前添加的另一个reduce阶段称为reduce1,标准reduce经过改写在本发明中称为reduce2。
设用户提交作业所使用的数据集输入为D,|D|表示输入数据大小,M表示map任务的数量,R表示reduce1中reduce任务的数量和reduce2中reduce任务的数量(即reduce1和reduce2中的reduce任务数量相等)。如下分别对map阶段的处理、reduce1阶段的处理和reduce2阶段的处理方法进行说明。
map阶段:设di∈D为map任务的输入记录,通过函数getPartition()得到ID,ID=random()×R,random()生成的数符合0到1上的均匀分布∪(0,1),则每个map任务的|D|/M条键值对得到的ID符合概率分布∪(0,R)。获得的ID与记录中内容无关。每个reduce1得到|D|/R条记录。之后将每个map任务对应于每个reduce任务的记录经过combiner函数预处理,根据key值进行合并,即最后每个reduce任务中将包含K(key值种类)条记录,这些key值表示为k1,…,kK
reduce1阶段:reduce1进行与标准reduce相同的排序与合并。设reduce1和reduce2中的reduce任务分别为reducei∈{reduce1,…,reduceR},reduceR+i∈{reduceR+1,…,reduce2R}。reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合Ti={<k1,valuei1>,…,<kK,valueiK>}。
每个reducei写入假数据<kK+1,valuef,i1>,…,<kK+ωRK,valuef,in>,称为集合Fi。根据map到reduce1的数据处理时添加函数random(),以一定概率ω添加,假数据添加总个数为ω×R×K。本实施方式中假数据是reduce1的处理数据的ω倍,与R存在依赖关系。但在系数ω不被泄露的情况下,自行调节ω来控制假数据的数量,该依赖关系不足以泄露流量中的隐私。
设Xi=Ti∪Fi,使用getPartition():hash(<kx,valuey>)mod R对x∈Xi取得ID,并向reduce2进行传输;其中kx∈{k1,k2,...kK,kK+1,...kK+ωRK},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
reduce2阶段:reduce2中的reducerR+i所有收到的键值对数据<k1,valuei1>,…,<kK,valueiK>,…,<kK+ωRK,valuef,K+ωRK>,首先reduceR+i对所有数据进行检查操作,判断<kx,valuey>是否为Fi数据集中写入的假数据,即将<kx,valuey>==dummy(dummy为假数据)为真的数据丢弃,留下的数据进行排序和合并计算,输出结果。其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
本实施方式在实际中是以两个并行的job实现。job1保留完整的mapreduce过程,job2的map只是简单的复制过程,利用在reduce1到reduce2的传输过程中加入假数据来实现对数据的保密,保护了不同key数量不被泄露。在两个大小相同的不同数据库运行该方案上时,map的输出依旧是完全相等的。
本实施方式中,reduce1的输入、reduce1的输出、reduce2的输入因为加入了假数据使得观察者得到的流量虽不满足每个reducei输出相等,也不满足每个reduceR+i输入相等,但中间网络因加入了随机假数据使得其并不和标准mapreduce运行中流量对应,从而实现了数据的保密。
实施方式三
本实施方式利用加入假数据的方式来实现数据保密,同时对key值的种类数K进行保护。本实施方式对MapReduce改写后符合map输出的不可分辨性,符合reduce端输入的不可分辨性的每个reduce任务接收的数据量大小相等。
参见图5所示,对比标准MapReduce过程,本实施方式主要在改写MapReduce执行流程中修改了map阶段的partition函数并且添加了另一个reduce阶段。在标准reduce前添加的另一个reduce阶段称为reduce1,标准reduce经过改写在本发明中称为reduce2。
设用户提交作业所使用的数据集输入为D,|D|表示输入数据大小,M表示map任务的数量,R表示reduce1中reduce任务的数量和reduce2中reduce任务的数量(即reduce1和reduce2中的reduce任务数量相等)。如下分别对map阶段的处理、reduce1阶段的处理和reduce2阶段的处理方法进行说明。
map阶段:设di∈D为map任务的输入记录,通过函数getPartition()得到ID,ID=random()×R,random()生成的数符合0到1上的均匀分布∪(0,1),则每个map任务的|D|/M条键值对得到的ID符合概率分布∪(0,R)。获得的ID与记录中内容无关。每个reduce1得到|D|/R条记录。之后将每个map任务对应于每个reduce任务的记录经过combiner函数预处理,根据key值进行合并,即最后每个reduce任务中将包含K(key值种类)条记录,这些key值表示为k1,…,kK
reduce1阶段:reduce1进行与标准reduce相同的排序与合并。设reduce1和reduce2中的reduce分别为reducei∈{reduce1,…,reduceR},reduceR+i∈{reduceR+1,…,reduce2R}。reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合Ti={<k1,valuei1>,…,<kK,valueiK>}。
每个reducei中经过结点内合并处理后有键值对K条。reduce1中写入的假数据表示为<kf1,valuef,i1>,…,<kfn,valuef,in>,称为集合Fi。具体来说,在reduce1运行前每个reducei随机添加K′条假数据<kf1,valuef,i1>,…,<kfK’,valuef,iK’>。这些假数据的key值随机产生并且在hash(<kx,valuey>)运算后符合∪(0,R);其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,...,valuef,i1,...valuef,iK’}。
设Xi=Ti∪Fi。此时每个reduce1阶段中的中间键值对有K+K′条。使用getPartition():hash(<kx,valuey>)mod R对x∈Xi取得ID,并向reduce2进行传输;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef, i1x...valuef,iK’}。Ti和Fi所取得的ID均符合∪(0,R),即取得ID1到IDR的集合如下表1所示。
表1
Figure BDA0001910047290000111
reduce2阶段:reduce2中的reducerR+i所有收到的数据进行合并后表示为<k1,value1>,…,<kK,
valueK>,<kf1,valuef,i1>…,<kfK’,valuef,iK’>,首先reduceR+i对所有数据进行检查操作,将<kx,valuey>==dummy为真的数据丢弃,即丢弃掉添加的假数据,留下的数据进行排序和合并计算,输出结果。其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’};
本实施方式也是以两个并行的job实现。job1保留完整的mapreduce过程,job2的map只是简单的复制过程,该方案利用在reduce1到reduce2的传输过程中加入假数据来实现数据保密,保护了不同key数量不被泄露。在两个大小相同的不同数据库运行该方案上时,map的输出、reduce1的输入、reduce1的输出和reduce2的输入依旧是完全相等的。在本实施方式中,加入假数据为常量K′。本实施方式中加入的假数据与原始数据在getPartition中可以得到很好的分配,使得reduce1到reduce2的每一条路径上的流量都相等。
参见图6所示,第二方面,本发明一种针对MapReduce计算的数据保密系统,包括:
Reduce添加模块601,用于在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
map阶段处理模块602,用于在所述MapReduce的map阶段的partition函数中写入随机分配函数以将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;
reduce1阶段处理模块603,用于将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
reduce2阶段处理模块604,用于对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
上述各模块具体的实现方法参见针对MapReduce计算的数据保密方法中的三个具体实施方式,此处不再重复说明。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种针对MapReduce计算的数据保密方法,其特征在于,包括:
Reduce添加步骤,在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
map阶段处理步骤,在所述MapReduce的map阶段的partition函数中写入随机分配函数将map阶段每个map任务中的数据平均随机发送给reduce1阶段的每个reduce任务;
reduce1阶段处理步骤,将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
reduce2阶段处理步骤,对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
2.根据权利要求1所述的针对MapReduce计算的数据保密方法,其特征在于,所述map阶段处理步骤,具体包括:
在所述MapReduce的map阶段的partition函数中写入随机分配函数random();其中,random()生成的数符合0到1上的均匀分布∪(0,1);
通过函数getPartition()获得ID=random()×R,则每个map任务的|D|/M条键值对得到的ID符合概率分布∪(0,R),reduce1阶段的每个reduce任务将得到|D|/R条记录;其中,D表示用户提交作业所使用的数据集输入,|D|表示输入数据大小,M表示map任务的数量,R表示reduce1中reduce任务的数量及reduce2中reduce任务的数量;
使用combiner函数将每个map任务对应每个reduce任务的记录进行预处理,根据key值进行合并,最终每个reduce任务中将包含K条key值记录,表示为k1,…,kK
3.根据权利要求2所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,…,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,…,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对为<k1,valuei1>,…,<kK,valueiK>;将这K个键值对向每个reduceR+i发送一次,一共发送R次。
4.根据权利要求3所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<k1,valueiK>,…,<kK,valuei1>,…,<kK,valueiK>;每一个reduceR+i中的这组数据相当于所有reduce1中reducei键值对数据的集合;
reduceR+i对所有键值对数据进行检查,判断hash(<kx,valuey>)mod R是否等于R+i,如果不等于,丢弃对应的键值对数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,...valuef,i1,...valuef,iK’}。
5.根据权利要求2所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,...,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,...,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合为Ti={<k1,valuei1>,…,<kK,valueiK>};
在每个reducei中写入假数据集合Fi={<kK+1,valuef,i1>,…,<kK+ωRK,valuef,in>};根据map到reduce1的数据处理时添加的随机分配函数random(),以概率ω添加,假数据添加总个数为ω×R×K;
令Xi=Ti∪Fi;使用getPartition():hash(<kx,valuey>)mod R对x∈Xi取得ID,发送给reduce2中的reducerR+I;其中,kx∈{k1,k2,...kK,kK+1,...kK+ωRK},valuey∈{valuei1,valuei2,...valueiK,...valuef,i1,...valuef,iK’}。
6.根据权利要求5所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<kK,valueiK>,...,<kK+ωRK,valuef,K+ωRK>;
reduceR+i对所有键值对数据进行检查,判断<kx,valuey>是否为Fi数据集中的写入的假数据,如果是,丢弃对应的假数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
7.根据权利要求2所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce1阶段处理步骤,具体包括:
令reduce1中的reduce任务为reducei∈{reduce1,...,reduceR};reduce2中的reduce任务为reduceR+i∈{reduceR+1,...,reduce2R};reducei将该reduce任务上的键值对根据key合并后,每个reducei中的键值对集合为Ti={<k1,valuei1>,…,<kK,valueiK>};在每个reducei中写入假数据集合Fi={<kf1,valuef,i1>,…,<kfK’,valuef,iK’>};这些假数据的key值随机产生并且在hash(<kx,valuey>)mod R运算后符合∪(0,R);其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’};
令Xi=Ti∪Fi;使用getPartition():hash(<kx,valuey>)mod R对x∈Xi取得ID,发送给reduce2中的reducerR+i;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
8.根据权利要求7所述的针对MapReduce计算的数据保密方法,其特征在于,所述reduce2阶段处理步骤,具体包括:
reduce2中的reducerR+i接收reduce1发送的键值对数据<k1,valuei1>,…,<kK,valueiK>,...,<kK+K′,valueK+K′>;
reduceR+i对所有键值对数据进行检查,判断<kx,valuey>是否为Fi数据集中的写入的假数据,如果是,丢弃对应的假数据;其中,kx∈{k1,k2,...kK,kf1,...kfK’},valuey∈{valuei1,valuei2,...valueiK,..valuef,i1,...valuef,iK’}。
9.根据权利要求1所述的针对MapReduce计算的数据保密方法,其特征在于,所述MapReduce运行在安全的执行环境,且不在安全执行环境中处理及传输的数据均进行加密处理。
10.一种针对MapReduce计算的数据保密方法系统,其特征在于,包括:
Reduce添加模块,用于在MapReduce框架的标准reduce阶段前添加另一reduce阶段;添加的另一reduce阶段称为reduce1阶段,所述标准reduce阶段称为reduce2阶段;
map阶段处理模块,用于在所述MapReduce的map阶段的partition函数中写入随机分配函数以将map阶段每个map任务中的数据平均发送给reduce1阶段的每个reduce任务;
reduce1阶段处理模块,用于将reduce1阶段每个reduce任务合并的键值对数据分别发送给reduce2阶段的每个reduce任务,以使reduce2阶段的每个reduce任务输入的数据量大小相等,或者,在reduce1阶段每个reduce任务合并的键值对数据中添加若干假键值对数据后分别发送给reduce2阶段的每个reduce任务;
reduce2阶段处理模块,用于对reduce2阶段的每个reduce任务接收到的数据进行处理,丢弃不属于reduce1阶段各个reduce任务合并的键值对数据。
CN201811548683.9A 2018-12-18 2018-12-18 一种针对MapReduce计算的数据保密方法及系统 Active CN109684856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811548683.9A CN109684856B (zh) 2018-12-18 2018-12-18 一种针对MapReduce计算的数据保密方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811548683.9A CN109684856B (zh) 2018-12-18 2018-12-18 一种针对MapReduce计算的数据保密方法及系统

Publications (2)

Publication Number Publication Date
CN109684856A CN109684856A (zh) 2019-04-26
CN109684856B true CN109684856B (zh) 2021-05-07

Family

ID=66186232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811548683.9A Active CN109684856B (zh) 2018-12-18 2018-12-18 一种针对MapReduce计算的数据保密方法及系统

Country Status (1)

Country Link
CN (1) CN109684856B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111163056B (zh) * 2019-12-06 2021-08-31 西安电子科技大学 一种针对MapReduce计算的数据保密方法及系统
CN112231650B (zh) * 2020-09-29 2021-06-29 北京瑞莱智慧科技有限公司 一种数据隐私保护协议的分析方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379114A (zh) * 2012-04-28 2013-10-30 国际商业机器公司 用于在MapReduce系统中保护隐私数据的方法和装置
CN104239529A (zh) * 2014-09-19 2014-12-24 浪潮(北京)电子信息产业有限公司 防止Hive数据倾斜的方法和装置
CN107886135A (zh) * 2017-12-01 2018-04-06 江苏蓝深远望科技股份有限公司 一种处理不平衡大数据的并行随机森林算法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798782B2 (en) * 2014-06-05 2017-10-24 International Business Machines Corporation Re-sizing data partitions for ensemble models in a mapreduce framework

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379114A (zh) * 2012-04-28 2013-10-30 国际商业机器公司 用于在MapReduce系统中保护隐私数据的方法和装置
CN104239529A (zh) * 2014-09-19 2014-12-24 浪潮(北京)电子信息产业有限公司 防止Hive数据倾斜的方法和装置
CN107886135A (zh) * 2017-12-01 2018-04-06 江苏蓝深远望科技股份有限公司 一种处理不平衡大数据的并行随机森林算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MapReduce在线抽样分区负载均衡研究;陶永才等;《小型微型计算机系统》;20170228;第38卷(第2期);238-242 *

Also Published As

Publication number Publication date
CN109684856A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
US11196541B2 (en) Secure machine learning analytics using homomorphic encryption
US10171432B2 (en) Systems to implement security in computer systems
Ohrimenko et al. Observing and preventing leakage in MapReduce
Bates et al. Trustworthy {Whole-System} provenance for the linux kernel
Holtz et al. Building scalable distributed intrusion detection systems based on the mapreduce framework
Durga Devi et al. RETRACTED ARTICLE: Modified adaptive neuro fuzzy inference system based load balancing for virtual machine with security in cloud computing environment
CN109684856B (zh) 一种针对MapReduce计算的数据保密方法及系统
Liu et al. Lightning-fast and privacy-preserving outsourced computation in the cloud
Yang et al. An effective and scalable VM migration strategy to mitigate cross-VM side-channel attacks in cloud
Aditham et al. A novel framework for mitigating insider attacks in big data systems
Wu et al. Exploring dynamic task loading in SGX-based distributed computing
Guan et al. Hadoop-based secure storage solution for big data in cloud computing environment
Ashalatha et al. Network virtualization system for security in cloud computing
Bakro et al. Performance analysis of cloud computing encryption algorithms
Jayapandian Cloud dynamic scheduling for multimedia data encryption using tabu search algorithm
Kaci et al. Toward a big data approach for indexing encrypted data in cloud computing
CN104639313B (zh) 一种密码算法的检测方法
Ke et al. Parallel incremental attribute-based encryption for mobile cloud data storage and sharing
CN111163056B (zh) 一种针对MapReduce计算的数据保密方法及系统
Wu et al. Differentially oblivious data analysis with Intel SGX: Design, optimization, and evaluation
Saxena et al. Collaborative approach for data integrity verification in cloud computing
Mahapatra et al. Security model for preserving privacy of image in cloud
Martis et al. Comprehensive survey on hadoop security
Bobde et al. An approach for securing data on Cloud using data slicing and cryptography
Guster et al. Pitfalls of devising a security policy in virtualized hosts

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant