# 位置隐私量化研究设计文档
# 一、需求分析
因数据挖掘以及移动端各种技术的发展,大量保存在用户端、服务端的用户隐私信息很有可能会被窃取,人们开始担心自己的信息会泄露。而且近5年来信息泄露的事件时有发生。比如,2014年黑客入侵多家存在漏洞的快递网站,导致网上大量个人信息以图片的形式泄露出去,上面详细显示了姓名、电话号码、住址等个人信息;又比如,2016年,网络黑客窃取了美国有线电视公司时代华纳,公司旗下近32万用户的邮件及密码信息。这些种种的信息泄露事件引起了各方的重视,而信息泄露的途径有很多,近些年来兴起的基于位置的服务方便了人们的生活,但也伴随着位置信息等个人信息泄露的危险。
随着智能手机和平板电脑等移动设备的普及,基于位置的服务(LBS)变得越来越流行,人们通过网络进行查询时虽然能够使用服务获取自己想要的信息,但却将自己的位置信息暴露给了LBS提供商。个人通信设备的使用尽管为其所有者提供了便利,但仍然留下了不可擦除的痕迹,并且这些痕迹不仅是地图上的一组位置,根据它们追踪到的背景信息可以说明个人的习惯、兴趣、活动和关系等。它还可以揭示他们的个人或公司机密。这就可能使用户遭受不必要的广告和基于位置的垃圾邮件或诈骗,造成社会声誉或经济上的损失,并使他们成为勒索甚至身体暴力的受害者。此外,信息披露打破了知情实体和披露此信息的实体之间的力量平衡。
因此LBS需要有较好的保护措施来维护用户的隐私,然而用户却不知道自己的隐私被保护到了什么样的程度,位置隐私保护这一模块基本上对用户是透明的,而提供LBS的供应商不可能将自己的保护算法公开出来,否则就起不到保护作用了。因此,我们需要一个准确的测定方法来测量用户被保护的隐私程度。
不同的用户对自己的隐私保密程度的要求各不相同,我们的测定方法能够让用户知道自己的隐私被保护到何种程度,用户也无需拥有太多位置保护这方面的知识就能大体地知道自己的隐私保密程度,这也是我们设计该位置隐私量化程序的目的。
# 二、概要设计
我们设计的程序模拟一些应用在使用过程中位置轨迹的暴露情况,对轨迹进行一定程度的暴露处理,然后将轨迹交给可信第三方,运行算法对轨迹进行保护,生成经过保护算法处理后的轨迹以及密钥文件(二进制文件),再让攻击方针对经过保护的轨迹进行攻击并生成攻击后的轨迹(在攻击之前需要事先构造先验知识),然后再根据实际轨迹和攻击后生成的轨迹对用户的位置隐私水平进行一定程度的度量。另外,我们的程序还模拟了服务提供方收到保护后的轨迹,根据密钥文件对用户原来的轨迹进行还原。
整个位置隐私量化度量框架由6个部分组成:
① 攻击方学习轨迹和用户实际轨迹的生成;
② 攻击方的知识构造;
③ 用户实际轨迹暴露处理;
④ 对经过暴露后的轨迹进行保护处理:
⑤ 攻击方针对经过保护后的轨迹进行攻击:
⑥ 根据攻击方生成的预测轨迹和用户的实际轨迹进行度量
![](https://www.writebug.com/myres/static/uploads/2022/4/5/add307f0ce398b44441eacb85005aa87.writebug)
图2-1
具体步骤如图2-1所示,我们采用马尔可夫链模型,知识构造使用的是概率转移矩阵。
### 文件格式:
关于文件格式,我们有两种轨迹文件,一种是只有3列的,一种是有4列的:
3列的轨迹文件(actual.trace和exposed.trace)从左到右分别代表:用户戳、时间戳、位置戳;4列的轨迹文件(其他轨迹文件)从左到右分别代表:用户戳、时间戳、位置戳、暴露情况(0为未暴露,1为已暴露)
PS:用户一定要设计好下面这4个范围参数,否则程序运行可能出错
两种轨迹文件第一行均为4个范围参数:
[最小用户戳,最大用户戳],[最小时间戳,最大时间戳],[最小位置戳,最大位置戳],[区域行数,区域列数]
![](https://www.writebug.com/myres/static/uploads/2022/4/5/90ff424bf9aeb9e0740b80fe06f10168.writebug)
图1-1
![](https://www.writebug.com/myres/static/uploads/2022/4/5/6c89c81ce2aeba998e683466b6cb1395.writebug)
图1-2
图1-1为3列的轨迹文件,图1-2为4列的轨迹文件
### 类图:
![](https://www.writebug.com/myres/static/uploads/2022/4/5/74b9d620569afb419b49d21995ab4292.writebug)
# 三、详细设计
## 3.1 暴露处理算法
暴露算法需要用到两个函数,一个是随机数生成函数,另外一个就是取随机数确定对特定记录是否进行暴露处理的函数,具体实现代码如下:
```c++
//从0到num随机生成数字,并放入ranlist向量的不同位置
void Random_Num(vector<int> &ranlist, int num)
{
srand(time(NULL));
int *d = new int[num];
for (int i = 0; i < num; i++) //数组d用来置数,数组ranlist用来取不重复的随机数,特别的我想更随机一些,所以将5的倍数和6的倍数的数字再生成随机数
{
d[i] = i;
}
for (int i = 0; i < num; i++)
{
int index = rand() % (num - i);
ranlist[i] = d[index];
d[index] = d[num - 1 - i];
if (i % 5 == 0 || i % 6 == 0) ranlist[i] = rand() % (num * 5);
}
}
//通过ranlist中的数取模,判断是否暴露,暴露取1,没暴露取0
void Get_isExposed(vector<int> ranlist, TraceSet &a,double percent)
{
srand(time(NULL));
int target=a.trace[0].size()*percent;
//先全部置0
for (int i = 0; i < a.trace.size(); i++)
{
for (int j = 0; j < a.trace[i].size(); j++)
{
a.trace[i][j].isExposed = 0;
}
}
//然后统计isExposed为1的记录数
for (int i = 0; i < a.trace.size(); i++)
{
int count=0;
for (int j = 0; count<target; j++)//确保每个用户的暴露记录数一定
{
if (ranlist[rand() % ranlist.size()] % 3 == 0 || ranlist[rand() % ranlist.size()] % 5 == 0)
{
if(a.trace[i][j%a.trace[i].size()].isExposed==0) count++;
a.trace[i][j%a.trace[i].size()].isExposed = 1;
}
}
}
}
```
我们利用Random_Num生成一定范围内不重复的随机数,然后在生成出来的随机数里选取一些,看是否能取模为0,由此决定某条记录是否会暴露,这里我们会让用户输入暴露记录比(即可能会暴露百分之多少的轨迹记录),因此暴露出来的记录数是有固定比例的。
## 3.2 位置保护算法
**1.位置扰动**:将暴露的位置进行一系列加密数学运算,生成一个虚假的位置暴露给攻击方,另生成一个解密文件,供服务方对加密后的轨迹进行解密,以便提供服务,这里我只给出加密的具体代码如下:
```c++
void encrypt(TraceSet &a, ull &n, Key &kk)
{
n ^= kk.key;//异或一下
while (n < a.minLocationStamp || n > a.maxLocationStamp)
{
if (n > a.maxLocationStamp)
{
n -= a.maxLocationStamp;
kk.key_minus++;
}
else if (n < a.minLocationStamp)
{
n += a.minLocationStamp;
kk.key_plus++;
}
}
}
```
这里的位置密钥文件是一种结构,这个结构记录的是位置戳进行异或以后需要进行加减minLocationStamp和maxLocationStamp的次数
**2.** **假位置注入(降�
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++实现位置隐私量化应用程序(一个简单的模拟器)【100012044】
共37个文件
trace:12个
cpp:4个
h:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 84 浏览量
2023-04-28
14:00:57
上传
评论
收藏 21.72MB ZIP 举报
温馨提示
关于文件格式,我们有不同类型的文件,一种是只有3列的,一种是有4列的 3列的左从右分别代表:用户、左右、位置 4列的分别代表:从用户到出现情况、右为位置、显示显示(未显示,1为左已泄露) 推荐第一行4个[最小用户精选用户精选],[范围最大,最佳类型], [最小位置,最大位置热门],[区域行数,区域列数]
资源推荐
资源详情
资源评论
收起资源包目录
100012044-基于C++实现位置隐私量化应用程序(一个简单的模拟器).zip (37个子文件)
location-privacy
设计文档.docx 2.15MB
LICENSE 1KB
位置隐私量化模拟器(可运行程序).exe 44.88MB
wzys
painter.cpp 4KB
mainwindow.h 1KB
painter.h 314B
mainwindow.cpp 62KB
painter.ui 379B
main.cpp 172B
wzys.pro.user 23KB
wzys.pro 1KB
mainwindow.ui 21KB
head.cpp 44KB
head.h 6KB
README.txt 3KB
16计科1班_李俊祺_2016355988966_SRP个人总结.doc 2.1MB
类图.vsdx 66KB
用户手册.docx 345KB
测试用例
Position25
attack.trace 687B
actual.trace 539B
Position8
attack.trace 682B
protect1.trace 682B
protect3.trace 652B
restore2.trace 682B
exposed.trace 682B
protect4.trace 2KB
restore.trace 682B
Knowledge 457B
actual.trace 538B
Key 964B
TruePosition1 964B
PointProbability 77B
TruePosition2 964B
protect2.trace 805B
Kmap 20B
learning.trace 4KB
README.md 34KB
共 37 条
- 1
资源评论
神仙别闹
- 粉丝: 2704
- 资源: 7645
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功