Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
ca5ad8c5
authored
2026-06-24 16:30:52 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
调整报告生成样式
1 parent
fcaf8f28
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
109 additions
and
82 deletions
.env.development
src/views/data_anonymization/anonResultReportView.vue
src/views/data_anonymization/anonTaskCreate.vue
src/views/data_anonymization/components/anonResultAnalysis.vue
.env.development
View file @
ca5ad8c
...
...
@@ -4,7 +4,8 @@ VITE_APP_TITLE = 可信数据服务平台
# VITE_API_BASEURL = https://www.zgsjzc.com/api
# VITE_API_BASEURL = https://swzl-test.csbr.cn/api
# VITE_API_BASEURL = http://localhost:9000
VITE_API_BASEURL = https://daop-zcgl-test.zgsjzc.com/
# VITE_API_BASEURL = https://daop-zcgl-test.zgsjzc.com/
VITE_API_BASEURL = http://10.4.82.1:58052/
VITE_IDASS_BASEURL = https://daop-test.zgsjzc.com/portalLogin
...
...
src/views/data_anonymization/anonResultReportView.vue
View file @
ca5ad8c
...
...
@@ -131,7 +131,7 @@ const getAnalysisResultPageData = (isFull = false) => {
});
obj
[
'equivalenceClassNum'
]
=
changeNum
(
d
.
equivalenceClassNum
||
0
,
0
);
obj
[
'reIdentifyRisk'
]
=
changeNum
(
d
.
reIdentifyRisk
||
0
,
2
);
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
;
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
===
'Y'
?
'是取值为1'
:
'否取值为0'
;
fullResultData
.
value
.
push
(
obj
);
});
resultData
.
value
=
fullResultData
.
value
.
slice
(
0
,
pageInfo
.
value
.
limit
);
...
...
@@ -145,7 +145,7 @@ const getAnalysisResultPageData = (isFull = false) => {
});
obj
[
'equivalenceClassNum'
]
=
changeNum
(
d
.
equivalenceClassNum
||
0
,
0
);
obj
[
'reIdentifyRisk'
]
=
changeNum
(
d
.
reIdentifyRisk
||
0
,
2
);
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
;
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
===
'Y'
?
'是取值为1'
:
'否取值为0'
;
resultData
.
value
.
push
(
obj
);
});
pageInfo
.
value
.
rows
=
res
.
data
?.
totalRows
??
0
;
...
...
@@ -212,8 +212,23 @@ const downloadWord = () => {
resultDataLoading
.
value
=
true
;
loadingText
.
value
=
`评测报告正在
${
route
.
query
.
dataOwner
==
'1'
?
'发送'
:
'下载'
}
中,请勿关闭浏览器...`
;
downPromise
.
value
=
convertHtml2Img
(
report
,
dom
).
then
(()
=>
{
const
htmlContent
=
getHTML
(
dom
.
innerHTML
);
const
pageBreakRegex
=
/<br
\s[^
>
]
*>/gi
;
const
match
=
htmlContent
.
match
(
pageBreakRegex
);
let
htmlOverview
=
htmlContent
;
let
htmlContentPart
=
''
;
if
(
match
&&
match
.
length
>=
1
)
{
const
secondBr
=
match
[
0
];
const
index
=
htmlContent
.
indexOf
(
secondBr
);
if
(
index
!==
-
1
)
{
htmlOverview
=
htmlContent
.
substring
(
0
,
index
+
secondBr
.
length
);
htmlContentPart
=
htmlContent
.
substring
(
index
+
secondBr
.
length
);
}
}
if
(
route
.
query
.
dataOwner
==
'1'
)
{
sendAnonReport
({
taskGuid
:
taskGuid
.
value
,
title
:
`
${
analysisResultInfo
.
value
.
tenantName
}
持有的“
${
oldAnonTaskValueInfo
.
value
.
taskName
}
”`
,
evaluationDate
:
analysisResultInfo
.
value
.
execTime
?
analysisResultInfo
.
value
.
execTime
.
substring
(
0
,
10
)
:
''
,
deIdentProcessorName
:
userData
.
tenantName
,
html
:
encodeURIComponent
(
`<div>
${
getHTML
(
dom
.
innerHTML
)
}
</div>`
)
}).
then
((
res
:
any
)
=>
{
sendAnonReport
({
taskGuid
:
taskGuid
.
value
,
title
:
`
${
analysisResultInfo
.
value
.
tenantName
}
持有的“
${
oldAnonTaskValueInfo
.
value
.
taskName
}
”`
,
evaluationDate
:
analysisResultInfo
.
value
.
execTime
?
analysisResultInfo
.
value
.
execTime
.
substring
(
0
,
10
)
:
''
,
deIdentProcessorName
:
userData
.
tenantName
,
html
Overview
:
encodeURIComponent
(
`<div>
${
htmlOverview
}
</div>`
),
htmlContent
:
encodeURIComponent
(
`<div>
${
htmlContentPart
}
</div>`
)
}).
then
((
res
:
any
)
=>
{
downPromise
.
value
=
null
loadingText
.
value
=
''
;
resultDataLoading
.
value
=
false
;
...
...
@@ -224,7 +239,7 @@ const downloadWord = () => {
}
})
}
else
{
downloadAnonReport
({
taskGuid
:
taskGuid
.
value
,
title
:
`
${
analysisResultInfo
.
value
.
tenantName
}
持有的“
${
oldAnonTaskValueInfo
.
value
.
taskName
}
”`
,
evaluationDate
:
analysisResultInfo
.
value
.
execTime
?
analysisResultInfo
.
value
.
execTime
.
substring
(
0
,
10
)
:
''
,
deIdentProcessorName
:
userData
.
tenantName
,
html
:
encodeURIComponent
(
`<div>
${
getHTML
(
dom
.
innerHTML
)
}
</div>`
)
}).
then
((
res
:
any
)
=>
{
downloadAnonReport
({
taskGuid
:
taskGuid
.
value
,
title
:
`
${
analysisResultInfo
.
value
.
tenantName
}
持有的“
${
oldAnonTaskValueInfo
.
value
.
taskName
}
”`
,
evaluationDate
:
analysisResultInfo
.
value
.
execTime
?
analysisResultInfo
.
value
.
execTime
.
substring
(
0
,
10
)
:
''
,
deIdentProcessorName
:
userData
.
tenantName
,
html
Overview
:
encodeURIComponent
(
`<div>
${
htmlOverview
}
</div>`
),
htmlContent
:
encodeURIComponent
(
`<div>
${
htmlContentPart
}
</div>`
)
}).
then
((
res
:
any
)
=>
{
downPromise
.
value
=
null
loadingText
.
value
=
''
;
resultDataLoading
.
value
=
false
;
...
...
src/views/data_anonymization/anonTaskCreate.vue
View file @
ca5ad8c
...
...
@@ -2138,7 +2138,7 @@ const getAnalysisResultPageData = (isFull = false) => {
});
obj
[
'equivalenceClassNum'
]
=
changeNum
(
d
.
equivalenceClassNum
||
0
,
0
);
obj
[
'reIdentifyRisk'
]
=
changeNum
(
d
.
reIdentifyRisk
||
0
,
2
);
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
;
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
===
'Y'
?
'是取值为1'
:
'否取值为0'
;
fullResultData
.
value
.
push
(
obj
);
});
resultData
.
value
=
fullResultData
.
value
.
slice
(
0
,
pageInfo
.
value
.
limit
);
...
...
@@ -2152,7 +2152,7 @@ const getAnalysisResultPageData = (isFull = false) => {
});
obj
[
'equivalenceClassNum'
]
=
changeNum
(
d
.
equivalenceClassNum
||
0
,
0
);
obj
[
'reIdentifyRisk'
]
=
changeNum
(
d
.
reIdentifyRisk
||
0
,
2
);
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
;
obj
[
'isGtThreshold'
]
=
d
.
isGtThreshold
===
'Y'
?
'是取值为1'
:
'否取值为0'
;
resultData
.
value
.
push
(
obj
);
});
pageInfo
.
value
.
rows
=
res
.
data
?.
totalRows
??
0
;
...
...
@@ -2221,6 +2221,7 @@ const downloadWord = () => {
dom
.
innerHTML
=
report
?.
innerHTML
;
loadingText
.
value
=
'报告正在下载中,请勿关闭浏览器...'
;
downloadLoading
.
value
=
true
;
downPromise
.
value
=
convertHtml2Img
(
report
,
dom
).
then
(()
=>
{
downloadAnonReport
({
taskGuid
:
oldAnonTaskValueInfo
.
value
.
guid
,
title
:
`
${
analysisResultInfo
.
value
.
tenantName
}
持有的“
${
oldAnonTaskValueInfo
.
value
.
taskName
}
”`
,
evaluationDate
:
analysisResultInfo
.
value
.
execTime
?
analysisResultInfo
.
value
.
execTime
.
substring
(
0
,
10
)
:
''
,
deIdentProcessorName
:
userData
.
tenantName
,
html
:
encodeURIComponent
(
`<div>
${
getHTML
(
dom
.
innerHTML
)}
</div>`
)
}).
then
((
res
:
any
)
=>
{
...
...
src/views/data_anonymization/components/anonResultAnalysis.vue
View file @
ca5ad8c
...
...
@@ -123,16 +123,14 @@
show
-
overflow
-
tooltip
><
/el-table-column
>
<
el
-
table
-
column
label
=
"重标识风险"
prop
=
"reIdentifyRisk"
width
=
"96"
align
=
"right"
fixed
=
"right"
show
-
overflow
-
tooltip
><
/el-table-column
>
<
el
-
table
-
column
label
=
"判断重风险是否大于门限阈值"
prop
=
"isGtThreshold"
width
=
"1
3
0"
align
=
"left"
fixed
=
"right"
<
el
-
table
-
column
label
=
"判断重风险是否大于门限阈值"
prop
=
"isGtThreshold"
width
=
"1
5
0"
align
=
"left"
fixed
=
"right"
show
-
overflow
-
tooltip
><
/el-table-column
>
<
/el-table
>
<
div
v
-
show
=
"!analysisResultTableFields.length"
class
=
"empty-content"
>
<
img
src
=
"../../../assets/images/empty-data.png"
:
style
=
"
{
width
:
'168px'
,
height
:
'96px'
}
" />
<div class="
empty
-
text
">暂无数据</div>
</div>
<div v-show="
analysisResultTableFields
.
length
" class="
result
-
table
-
desc
">门限阈值的取值:完全公开共享数据发布,取值
1/20;受控公开共享数据发布,取值
1/5;领地公开共享数据发布,取值 1/3</div>
<div v-show="
analysisResultTableFields
.
length
" class="
result
-
table
-
desc
">门限阈值的取值:完全公开共享数据发布,取值1/20;受控公开共享数据发布,取值1/5;领地公开共享数据发布,取值1/3</div>
<PageNav v-show="
analysisResultTableFields
.
length
" :class="
[
pageInfo
.
type
]
" :pageInfo="
pageInfo
"
@pageChange="
pageChange
" />
<div class="
row
-
two
-
main
" style="
margin
-
top
:
12
px
;
">
...
...
@@ -199,62 +197,58 @@
<
/div
>
<
div
v
-
show
=
"isWordStyle"
class
=
"analysis-result-main report-main"
ref
=
"report"
>
<!--
报告总览
-->
<
h1
style
=
"font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;"
>
报告总览
<
/h1
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 一、评价对象:${analysisResultInfo.tenantName
}
2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName
}
,该数据集包含1张表,字段总数量共计${changeNum(analysisResultInfo.fieldNum || 0)
}
个,记录总数量共计${changeNum(analysisResultInfo.dataSetRecord || 0)
}
条,数据元素总量为${changeNum(analysisResultInfo.dataTotal || 0)
}
个 。`
}}
<
/p
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 二、评价方法:基于匿名化评估国家标准GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》,以及《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》相关法律法规,采用“定性分析”与“定量计算”相结合的综合评估方法。`
}}
<
/p
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 三、评估结论:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName
}
的匿名化效果评定为${analysisResultInfo.rating
}
级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''
}
。${`
需要对准标识符
$
{
analysisResultInfo
.
qualifiedIdentifier
?.
map
(
f
=>
f
.
chName
)?.
join
(
'、'
)
}做有效的泛化和抑制,满足
k
-
匿名要求(设定
k
≥
10
),从而使得该数据集适用于受控环境下进行跨机构流通。
`
}
。`
}}
<
/p
>
<
div
style
=
"page-break-after: always;"
>
<
span
style
=
"display: none;"
>&
nbsp
;
<
/span
>
<
/div
>
<!--
1
.
评估基本信息
-->
<
h1
style
=
"font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;"
>
一、评估基本信息
<
/h1
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 评估项目名称:${oldAnonTaskValueInfo.taskName
}
匿名化效果评估`
}}
<
/p
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 评估对象:${analysisResultInfo.tenantName
}
2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName
}
(共计${changeNum(analysisResultInfo.dataSetRecord || 0)
}
条记录)`
}}
<
/p
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 评估依据:GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》、《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》。`
}}
<
/p
>
<
p
style
=
"font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
` 评估日期:${analysisResultInfo.execTime ? analysisResultInfo.execTime.substring(0, 10) : ''
}
`
}}
<
/p
>
<
h1
class
=
"MsoHeading1"
style
=
"text-align: left;margin-top: 10px;margin-bottom: 10px;"
>
报告总览
<
/h1
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`一、评价对象:${analysisResultInfo.tenantName
}
2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName
}
,该数据集包含1张表,字段总数量共计${changeNum(analysisResultInfo.fieldNum || 0)
}
个,记录总数量共计${changeNum(analysisResultInfo.dataSetRecord || 0)
}
条,数据元素总量为${changeNum(analysisResultInfo.dataTotal || 0)
}
个 。`
}}
<
/p
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`二、评价方法:基于匿名化评估国家标准GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》,以及《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》相关法律法规,采用“定性分析”与“定量计算”相结合的综合评估方法。`
}}
<
/p
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`三、评估结论:综合定性与定量评估结果,根据GB/T 42460-2023的分级标准,该${oldAnonTaskValueInfo.taskName
}
的匿名化效果评定为${analysisResultInfo.rating
}
级${analysisResultInfo.rating <=2 ? '(重标识风险较高)' : ''
}
。${`
需要对准标识符
$
{
analysisResultInfo
.
qualifiedIdentifier
?.
map
(
f
=>
f
.
chName
)?.
join
(
'、'
)
}做有效的泛化和抑制,满足
k
-
匿名要求(设定
k
≥
10
),从而使得该数据集适用于受控环境下进行跨机构流通。
`
}
`
}}
<
/p
>
<
br
clear
=
"all"
style
=
"page-break-before:always;mso-break-type:section-break"
>
<
h1
class
=
"MsoHeading1"
style
=
"text-align: left;margin-top: 10px;margin-bottom: 10px;"
>
一、评估基本信息
<
/h1
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`评估项目名称:${oldAnonTaskValueInfo.taskName
}
匿名化效果评估`
}}
<
/p
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`评估对象:${analysisResultInfo.tenantName
}
2025年1月1日至2025年12月31日的${oldAnonTaskValueInfo.taskName
}
(共计${changeNum(analysisResultInfo.dataSetRecord || 0)
}
条记录)`
}}
<
/p
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`评估依据:GB/T 42460-2023《信息安全技术 个人信息去标识化效果评估指南》、GB/T 37964-2019《信息安全技术 个人信息去标识化指南》、《中华人民共和国个人信息保护法》、《中华人民共和国数据安全法》、《中华人民共和国网络安全法》、《面向数据流通的匿名化效果实施指南 草案》、《面向数据流通的匿名化效果评估指南 草案》和《数据安全技术 个人信息匿名化处理指南及评价方法 征求意见稿》。`
}}
<
/p
>
<
p
style
=
"margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`评估日期:${analysisResultInfo.execTime ? analysisResultInfo.execTime.substring(0, 10) : ''
}
`
}}
<
/p
>
<!--
2
.
评估准备
-->
<
h1
style
=
"font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121
;"
>
二、评估准备
<
/h1
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
数据集与环境确认:待评估数据集包含${analysisResultInfo?.column?.slice(0, 4)?.map(f => f.chName).join('、')
}
${analysisResultInfo?.column?.length > 4 ? '等字段' : ''
}
。数据将用于跨机构的科学研究,处于半开放网络环境。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
风险阈值设定:结合科研数据共享需求,设定可接受的重标识风险阈值为0.05(即5%)。`
}}
<
/p
>
<
h1
class
=
"MsoHeading1"
style
=
"text-align: left;margin-top: 10px;margin-bottom: 10px
;"
>
二、评估准备
<
/h1
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
数据集与环境确认:待评估数据集包含${analysisResultInfo?.column?.slice(0, 4)?.map(f => f.chName).join('、')
}
${analysisResultInfo?.column?.length > 4 ? '等字段' : ''
}
。数据将用于跨机构的科学研究,处于半开放网络环境。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
风险阈值设定:结合科研数据共享需求,设定可接受的重标识风险阈值为0.05(即5%)。`
}}
<
/p
>
<!--
3
.
定性评估
-->
<
h1
style
=
"
font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121
;"
>
三、定性评估
<
/h1
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
依据GB/T 37964标准,对数据集中的标识符进行了识别与分类处理:`
}}
<
/p
>
<
h1
style
=
"
text-align: left;margin-top: 10px;margin-bottom: 10px
;"
>
三、定性评估
<
/h1
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
依据GB/T 37964标准,对数据集中的标识符进行了识别与分类处理:`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;"
>
{{
`
1.直接标识符处理`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
识别字段:姓名、身份证号、手机号、住院号、家庭详细住址等。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
'
处理措施:采用完全删除技术。'
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
评估结果:数据集中已完全消除直接标识符,无法通过单一字段直接识别特定患者。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;"
>
{{
`
2.准标识符处理`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
识别字段:性别、年龄、职业、入院日期、出院日期、出生日期、婚姻、受教育水平等。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
'
处理措施:'
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
时间泛化:将精确的“入院日期”、“出院日期”泛化为“年份”或住院天数、“年龄”泛化为“年龄段”(如将年龄转换为[40-50]区间)。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
对准标识符的泛化确保同一属性组合(相同的准标识符)下的记录数满足k-匿名要求(设定k≥10)。比如性别为男、年龄[40-50]、职业为其他、入院时间为2025年11月,出院时间为2025年11月的记录数满足10条以上。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
评估结果:数据集中未对准标识符进行有效地泛化和抑制处理。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;font-weight: 700;margin: 8px 0px;text-indent: 2em;"
>
{{
`
1.直接标识符处理`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
识别字段:姓名、身份证号、手机号、住院号、家庭详细住址等。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
'
处理措施:采用完全删除技术。'
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
评估结果:数据集中已完全消除直接标识符,无法通过单一字段直接识别特定患者。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;font-weight: 700;margin: 8px 0px;text-indent: 2em;"
>
{{
`
2.准标识符处理`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
识别字段:性别、年龄、职业、入院日期、出院日期、出生日期、婚姻、受教育水平等。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
'
处理措施:'
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
时间泛化:将精确的“入院日期”、“出院日期”泛化为“年份”或住院天数、“年龄”泛化为“年龄段”(如将年龄转换为[40-50]区间)。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
对准标识符的泛化确保同一属性组合(相同的准标识符)下的记录数满足k-匿名要求(设定k≥10)。比如性别为男、年龄[40-50]、职业为其他、入院时间为2025年11月,出院时间为2025年11月的记录数满足10条以上。`
}}
<
/p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
评估结果:数据集中未对准标识符进行有效地泛化和抑制处理。`
}}
<
/p
>
<!--
4
.
定量评估(重标识风险计算)
-->
<
h1
style
=
"
font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121
;"
>
四、定量评估(重标识风险计算)
<
/h1
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
>
{{
`
依据GB/T 42460-2023《信息安全技术个人信息去标识化效果评估指南》附录D,对去标识化以后的数据集基于K匿名模型进行去标识化效果的评估。总体方案为先对所有的数据进行直接标识符识别,判断无直接标识符内容后,再计算数据集每行记录、整体数据集的重标识风险,进而计算环境重标识攻击概率,最后再结合环境重标识攻击概率计算整个数据集的重标识整体风险。`
}}
<
/p
>
<
h1
style
=
"
text-align: left;margin-top: 10px;margin-bottom: 10px
;"
>
四、定量评估(重标识风险计算)
<
/h1
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
>
{{
`
依据GB/T 42460-2023《信息安全技术个人信息去标识化效果评估指南》附录D,对去标识化以后的数据集基于K匿名模型进行去标识化效果的评估。总体方案为先对所有的数据进行直接标识符识别,判断无直接标识符内容后,再计算数据集每行记录、整体数据集的重标识风险,进而计算环境重标识攻击概率,最后再结合环境重标识攻击概率计算整个数据集的重标识整体风险。`
}}
<
/p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
><
strong
>
{{
`
直接标识符:`
}}
<
/strong>{{ '经扫描数据集的内容,比如现病史、既往史等长文本字段进行扫描,未发现直接标识符内容。'
}}
</
p
>
<
p
style
=
"
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"
><
strong
>
{{
`
重标识风险总体风险:`
}}
<
/strong>{{ `准标识符${analysisResultInfo.rating > 2
?
'' : '并未'
}
进行有效泛化,计算的重标识符总体风险为${analysisResultInfo.reIdentifyOverallRisk != null
?
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
><
strong
>
{{
`
直接标识符:`
}}
<
/strong>{{ '经扫描数据集的内容,比如现病史、既往史等长文本字段进行扫描,未发现直接标识符内容。'
}}
</
p
>
<
p
style
=
"
margin: 0px;white-space: pre-wrap;text-indent: 2em;"
><
strong
>
{{
`
重标识风险总体风险:`
}}
<
/strong>{{ `准标识符${analysisResultInfo.rating > 2
?
'' : '并未'
}
进行有效泛化,计算的重标识符总体风险为${analysisResultInfo.reIdentifyOverallRisk != null
?
(
analysisResultInfo
.
reIdentifyOverallRisk
||
0
)
*
100
:
'--'
}
$
{
analysisResultInfo
.
reIdentifyOverallRisk
?
'%'
:
''
};
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ `
重标识风险最大值:
`
}}
</strong>{{ `
计算数据集中重标识风险最高的记录所对应的风险值。经计算,该数据集最大重标识风险值为
$
{
analysisResultInfo
.
reIdentifyRiskRb
!=
null
?
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `
重标识风险最大值:
`
}}
</strong>{{ `
计算数据集中重标识风险最高的记录所对应的风险值。经计算,该数据集最大重标识风险值为
$
{
analysisResultInfo
.
reIdentifyRiskRb
!=
null
?
(
analysisResultInfo
.
reIdentifyRiskRb
||
0
)
:
'--'
}
$
{
analysisResultInfo
.
reIdentifyRiskRb
?
`(即${analysisResultInfo.reIdentifyRiskRb*100
}
%)`
:
''
}。
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ `
重标识风险平均值:
`
}}
</strong>{{ `
模拟攻击者随机抽取一条记录并尝试重标识的平均风险。经计算,该数据集重标识风险的平均值为
$
{
analysisResultInfo
.
reIdentifyRiskRc
!=
null
?
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `
重标识风险平均值:
`
}}
</strong>{{ `
模拟攻击者随机抽取一条记录并尝试重标识的平均风险。经计算,该数据集重标识风险的平均值为
$
{
analysisResultInfo
.
reIdentifyRiskRc
!=
null
?
(
analysisResultInfo
.
reIdentifyRiskRc
||
0
)
:
'--'
}
$
{
analysisResultInfo
.
reIdentifyRiskRc
?
`(即${analysisResultInfo.reIdentifyRiskRc * 100
}
%)`
:
''
}。
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;"><strong>{{ `
环境重标识攻击概率:
`
}}
</strong>{{ oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? `
$
{
oldAnonTaskValueInfo
.
dataSharingTypeName
}的数据集,攻击者对数据集进行环境重标识攻击的概率为
1
。即该数据集的攻击概率为
$
{
analysisResultInfo
.
envReAttackPr
!=
null
?
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;"><strong>{{ `
环境重标识攻击概率:
`
}}
</strong>{{ oldAnonTaskValueInfo.dataSharingTypeCode == '01' ? `
$
{
oldAnonTaskValueInfo
.
dataSharingTypeName
}的数据集,攻击者对数据集进行环境重标识攻击的概率为
1
。即该数据集的攻击概率为
$
{
analysisResultInfo
.
envReAttackPr
!=
null
?
(
analysisResultInfo
.
envReAttackPr
||
0
)
:
'--'
}
$
{
analysisResultInfo
.
envReAttackPr
?
`(即${analysisResultInfo.envReAttackPr * 100
}
%)`
:
''
}。
` :
`
$
{
oldAnonTaskValueInfo
.
dataSharingTypeName
}的数据集,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值,经计算,该数据集的攻击概率为
$
{
analysisResultInfo
.
envReAttackPr
!=
null
?
(
analysisResultInfo
.
envReAttackPr
||
0
)
:
'--'
}
$
{
analysisResultInfo
.
envReAttackPr
?
`(即${analysisResultInfo.envReAttackPr * 100
}
%)`
:
''
}。
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ '
具体计算指标如下:'
}}
</p>
<p style="
margin: 8px 0px 4px;white-space: pre-wrap;font-weight: 700;text-indent: 2em;">{{ '
具体计算指标如下:'
}}
</p>
<!-- 1. 重标识风险表 -->
<
div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ ' 1. 重标识风险表'
}}
</div
>
<
div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;margin-bottom: 4px;white-space: pre-wrap;">{{ `
门限阈值的取值:该数据集为
$
{
oldAnonTaskValueInfo
.
dataSharingTypeName
}数据,门限阈值为
$
{
oldAnonTaskValueInfo
.
dataSharingTypeCode
==
'01'
?
'1/20'
:
(
oldAnonTaskValueInfo
.
dataSharingTypeCode
==
'02'
?
'1/5'
:
'1/3'
)
}
。
`
}}
</div
>
<
p style="display: block;white-space: pre-wrap;font-weight: 700;margin: 8px 0px 4px;text-indent: 2em;">{{ '1. 重标识风险表'
}}
</p
>
<
p style="display: block;margin-bottom: 4px;white-space: pre-wrap;text-indent: 2em;">{{ `
门限阈值的取值:该数据集为
$
{
oldAnonTaskValueInfo
.
dataSharingTypeName
}数据,门限阈值为
$
{
oldAnonTaskValueInfo
.
dataSharingTypeCode
==
'01'
?
'1/20'
:
(
oldAnonTaskValueInfo
.
dataSharingTypeCode
==
'02'
?
'1/5'
:
'1/3'
)
}
。
`
}}
</p
>
<table border="0" cellspacing="0"
style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121">
<thead>
...
...
@@ -277,9 +271,9 @@
</table>
<!-- 2. 内部故意攻击概率 -->
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;white-space: pre-wrap;color: #212121;font-weight: 700;margin: 8px 0px 4px;">{{ ' 2. 内部故意攻击概率'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;margin-bottom: 4px;white-space: pre-wrap;">{{ ' 重标识数据的动机和能力为低,从重标识攻击可能性分析表可得出在内部攻击方面,重标识攻击概率的取值为0.05。'
}}
</div
>
<table v-show
="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" border="0" cellspacing="0"
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;font-weight: 700;margin: 8px 0px 4px;text-indent: 2em;">{{ '2. 内部故意攻击概率'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;margin-bottom: 4px;white-space: pre-wrap;text-indent: 2em;">{{ '重标识数据的动机和能力为低,从重标识攻击可能性分析表可得出在内部攻击方面,重标识攻击概率的取值为0.05。'
}}
</p
>
<table v-if
="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" border="0" cellspacing="0"
style="width:100%;word-break: break-all;margin: 0 auto;text-align: center;border-collapse: collapse;color: #212121;">
<thead>
<tr>
...
...
@@ -291,7 +285,7 @@
<tbody>
<tr v-for="(recordItem, j) in innerResultData" :key="j">
<template v-for="(columnItem, i) in innerResultFields" :key="i">
<td :rowspan="i == 0 ? 3 : 1" v-
show
="!(j % 3 != 0 && i == 0)"
<td :rowspan="i == 0 ? 3 : 1" v-
if
="!(j % 3 != 0 && i == 0)"
:style="{ border: '0.5px solid #d9d9d9', 'text-align': <any>(columnItem.align ?? 'left')
}
">
<span :style="{ 'word-break': 'break-all'
}
">
{{ recordItem[columnItem.field]
}}
...
...
@@ -303,25 +297,25 @@
</table>
<!-- 3. 数据集包含熟人概率 -->
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 3. 数据集包含熟人概率'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;text-align: center; display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700">pr=1-(1-p)^m</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap
;">
{{ `
数据集包含熟人概率可通过以上公式计算,
$
{
new
Date
().
getFullYear
()
}年我国最新的人口统计为
$
{
analysisResultInfo
?.
allPerson
||
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '3. 数据集包含熟人概率'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="text-align: center; display: block;font-weight: 700">pr=1-(1-p)^m</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em
;">
{{ `
数据集包含熟人概率可通过以上公式计算,
$
{
new
Date
().
getFullYear
()
}年我国最新的人口统计为
$
{
analysisResultInfo
?.
allPerson
||
0
}亿人,其中该数据集的容量为
$
{
analysisResultInfo
?.
dataSetNum
||
0
}万,占总人口的比例为
$
{
analysisResultInfo
.
patientPopulationRate
||
0
}
%
,
m
值取推荐值
150
,数据集包含熟人的概率为
$
{
analysisResultInfo
.
randomAcquaintancePr
||
0
}。
`
}}
</
div
>
</
p
>
<!-- 4. 数据泄露概率 -->
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 4. 数据泄露概率'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为低的情况,推荐将数据泄露概率设定为0.55。'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为中的情况,推荐将数据泄露概率设定为0.27。'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ ' 对于安全和隐私控制能力评估为高的情况,推荐将数据泄露概率设定为0.14。'
}}
</div
>
<
div v-show="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;white-space: pre-wrap;">{{ `
数据接收方的安全和隐私控制能力为高,按照推荐值将数据泄露概率设定为
$
{
analysisResultInfo
.
dataBreachPr
||
0
}。
`
}}
</div
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '4. 数据泄露概率'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为低的情况,推荐将数据泄露概率设定为0.55。'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为中的情况,推荐将数据泄露概率设定为0.27。'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ '对于安全和隐私控制能力评估为高的情况,推荐将数据泄露概率设定为0.14。'
}}
</p
>
<
p v-if="oldAnonTaskValueInfo.dataSharingTypeCode != '01'" style="display: block;white-space: pre-wrap;text-indent: 2em;">{{ `
数据接收方的安全和隐私控制能力为高,按照推荐值将数据泄露概率设定为
$
{
analysisResultInfo
.
dataBreachPr
||
0
}。
`
}}
</p
>
<!-- 对抗性测试 (评级>=3时展示) -->
<
div v-show="analysisResultInfo.rating >= 3" style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ oldAnonTaskValueInfo.dataSharingTypeCode != '01' ? ' 5. 对抗性测试' : ' 2. 对抗性测试'
}}
</div
>
<p v-
show="analysisResultInfo.rating >= 3" style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
依据《数据安全技术个人信息匿名化处理指南及评价方法(征求意见稿)》4.2,去标识化的数据集达到3级可展开对数据级的对抗性测试和不可复原性核验。对抗性测试关键变量如下表:'
}}
</p>
<table border="0" cellspacing="0" v-
show
="analysisResultInfo.rating >= 3" style="width:100%;word-break: break-all;margin: 4px auto 0px auto;text-align: center;border-collapse: collapse;color: #212121;">
<
p v-if="analysisResultInfo.rating >= 3" style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ oldAnonTaskValueInfo.dataSharingTypeCode != '01' ? '5. 对抗性测试' : '2. 对抗性测试'
}}
</p
>
<p v-
if="analysisResultInfo.rating >= 3" style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
依据《数据安全技术个人信息匿名化处理指南及评价方法(征求意见稿)》4.2,去标识化的数据集达到3级可展开对数据级的对抗性测试和不可复原性核验。对抗性测试关键变量如下表:'
}}
</p>
<table border="0" cellspacing="0" v-
if
="analysisResultInfo.rating >= 3" style="width:100%;word-break: break-all;margin: 4px auto 0px auto;text-align: center;border-collapse: collapse;color: #212121;">
<thead>
<tr>
<th v-for="(item, index) in adversarialTestFields" :key="index" style="border: 0.5px solid #d9d9d9">
...
...
@@ -339,26 +333,27 @@
</tr>
</tbody>
</table>
<p v-
show="analysisResultInfo.rating >= 3" style="font-family: simsun;margin: 4px 0px 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
通过识别关键变量,选择标识度高于0.5的属性作为攻击测试的关键变量,在攻击测试中,涉及到的攻击场景,其重标识概率均远小于所接受的风险水平0.05。另外,未发现任何其它可能的安全性问题。'
}}
</p>
<p v-
if="analysisResultInfo.rating >= 3" style="margin: 4px 0px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
通过识别关键变量,选择标识度高于0.5的属性作为攻击测试的关键变量,在攻击测试中,涉及到的攻击场景,其重标识概率均远小于所接受的风险水平0.05。另外,未发现任何其它可能的安全性问题。'
}}
</p>
<!-- 指标说明 -->
<
div style="font-family: simsun;display: block;line-height: 21px;font-size: 14px;color: #212121;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;">{{ ' 指标说明:'
}}
</div
>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;margin-top: 8px;white-space: pre-wrap;">{{ '
重标识风险最大值:所有等价类的重标识风险最大值;'
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
重标识风险平均值:所有等价类的重标识风险平均值;'
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
环境重标识攻击概率:完全公开共享数据发布,攻击者对数据集进行环境重标识攻击的概率为1。领地公开共享与受控公开共享数据发布,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值;'
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
等价类门限风险:完全公开共享数据发布,门限阈值取值1/20;受控公开共享数据发布,门限阈值取值1/5;领地公开共享数据发布,门限阈值取值1/3;等价类门限风险为:等价类的重标识风险大于门限阈值为1,小于等于为0,求和后除以等价类个数;'
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
重标识风险总体风险:完全公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险最大值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。'
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;color: #212121;white-space: pre-wrap;">{{ '
受控公开共享和领地公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险平均值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。'
}}
</p>
<
p style="display: block;font-weight: 700;margin: 8px 0px;white-space: pre-wrap;text-indent: 2em;">{{ '指标说明:'
}}
</p
>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
重标识风险最大值:所有等价类的重标识风险最大值;'
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
重标识风险平均值:所有等价类的重标识风险平均值;'
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
环境重标识攻击概率:完全公开共享数据发布,攻击者对数据集进行环境重标识攻击的概率为1。领地公开共享与受控公开共享数据发布,环境重标识攻击概率为内部故意攻击概率、数据集包含熟人概率和数据泄露概率三者的最大值;'
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
等价类门限风险:完全公开共享数据发布,门限阈值取值1/20;受控公开共享数据发布,门限阈值取值1/5;领地公开共享数据发布,门限阈值取值1/3;等价类门限风险为:等价类的重标识风险大于门限阈值为1,小于等于为0,求和后除以等价类个数;'
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
重标识风险总体风险:完全公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险最大值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。'
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ '
受控公开共享和领地公开共享,当等价类门限风险=0时,重标识风险总体风险公式为等价类重标识风险平均值*环境重标识攻击概率;当等价类门限风险!=0时,重标识风险总体风险为1。'
}}
</p>
<!-- 5. 评估结论与分级 -->
<h1 style="
font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121
;">五、评估结论与分级</h1>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ `
定性评估结论:
$
{
analysisResultInfo
.
rating
==
2
?
'数据集已消除所有直接标识符,但未对准标识符进行了有效的泛化与抑制处理。'
:
(
analysisResultInfo
.
rating
==
4
?
'数据集无任何的直接标识符和准标识符。'
:
'数据集已消除所有直接标识符,并对准标识符进行了有效的泛化与抑制处理。'
)
}
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ `
定量评估结论:
$
{
analysisResultInfo
.
rating
==
2
?
'数据集的重标识风险总体风险(1)大于预设的可接受风险阈值(0.05)。'
:
(
analysisResultInfo
.
rating
==
4
?
'数据集重标识风险总体风险为0。'
:
'数据集的重标识风险总体风险(1)小于等于预设的可接受风险阈值(0.05)。'
)
}
`
}}
</p>
<p style="
font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ `
最终评级:综合定性与定量评估结果,根据
GB
/
T
42460
-
2023
的分级标准,该
$
{
oldAnonTaskValueInfo
.
taskName
}的匿名化效果评定为
$
{
analysisResultInfo
.
rating
}级
$
{
analysisResultInfo
.
rating
<=
2
?
'(重标识风险较高)'
:
''
}。
`
}}
</p>
<h1 style="
text-align: left;margin-top: 10px;margin-bottom: 10px
;">五、评估结论与分级</h1>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `
定性评估结论:
$
{
analysisResultInfo
.
rating
==
2
?
'数据集已消除所有直接标识符,但未对准标识符进行了有效的泛化与抑制处理。'
:
(
analysisResultInfo
.
rating
==
4
?
'数据集无任何的直接标识符和准标识符。'
:
'数据集已消除所有直接标识符,并对准标识符进行了有效的泛化与抑制处理。'
)
}
`
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `
定量评估结论:
$
{
analysisResultInfo
.
rating
==
2
?
'数据集的重标识风险总体风险(1)大于预设的可接受风险阈值(0.05)。'
:
(
analysisResultInfo
.
rating
==
4
?
'数据集重标识风险总体风险为0。'
:
'数据集的重标识风险总体风险(1)小于等于预设的可接受风险阈值(0.05)。'
)
}
`
}}
</p>
<p style="
margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `
最终评级:综合定性与定量评估结果,根据
GB
/
T
42460
-
2023
的分级标准,该
$
{
oldAnonTaskValueInfo
.
taskName
}的匿名化效果评定为
$
{
analysisResultInfo
.
rating
}级
$
{
analysisResultInfo
.
rating
<=
2
?
'(重标识风险较高)'
:
''
}。
`
}}
</p>
<!-- 6. 建议与改进 -->
<h1 v-show="analysisResultInfo.rating <= 2" style="font-family: simsun;font-size: 18px;font-weight: 700;text-align: left;margin-top: 10px;margin-bottom: 10px;color: #212121;">六、建议与改进</h1>
<p v-show="analysisResultInfo.rating <= 2" style="font-family: simsun;margin: 0px;font-size: 14px;line-height: 21px;white-space: pre-wrap;color: #212121;">{{ `
需要对准标识符
$
{
analysisResultInfo
.
qualifiedIdentifier
?.
map
(
f
=>
f
.
chName
)?.
join
(
'、'
)
}做有效的泛化和抑制,满足
k
-
匿名要求(设定
k
≥
10
),从而使得该数据集适用于受控环境下进行跨机构流通。
`
}}
</p>
<h1 v-if="analysisResultInfo.rating <= 2" style="text-align: left;margin-top: 10px;margin-bottom: 10px;">六、建议与改进</h1>
<p v-if="analysisResultInfo.rating <= 2" style="margin: 0px;white-space: pre-wrap;text-indent: 2em;">{{ `
需要对准标识符
$
{
analysisResultInfo
.
qualifiedIdentifier
?.
map
(
f
=>
f
.
chName
)?.
join
(
'、'
)
}做有效的泛化和抑制,满足
k
-
匿名要求(设定
k
≥
10
),从而使得该数据集适用于受控环境下进行跨机构流通。
`
}}
</p>
<br clear="all" style="page-break-before:always;mso-break-type:section-break">
</div>
</div>
</template>
...
...
@@ -801,4 +796,19 @@ defineExpose({
}
}
}
p {
font-family: simsun;
font-size: 14px;
line-height: 21px;
color: #212121;
}
h1 {
font-family: simsun;
font-size: 18px;
font-weight: 700;
color: #212121;
text-align: left; margin-top: 10px; margin-bottom: 10px;
}
</style>
\ No newline at end of file
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment