【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用开发安全(含闯关习题)

本文主要是介绍【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用开发安全(含闯关习题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
学完时间:2024年8月23日
学完排名:第1748名

一、安全设计理念

以硬件TCB作为安全信任基础,软硬结合的安全设计
在这里插入图片描述
HarmonyOS系统安全设计基础:

  • 基于最小的可信计算基础TCB;硬件主密钥,加解密引擎
  • 关键安全组件基于TEE可信运行环境;TEE(Trusted execution environment,可信执行环境)
  • 基于强安全模块传递信任链到弱安全模块(TCB->TEE)-> OS Kernel -> User Process)
  • 基于PKI基础设施保护关键模块的完整性保护

二、隐私保护

1、概述

隐私保护是尊重个人权利、增加用户信任、确保个人信息安全的重要措施,也是法律法规的要求。

隐私是用户的基本权利,HarmonyOS非常重视用户的隐私。通过隐私保护措施,可以降低个人信息遭到滥用的风险,保护用户的财产和利益。实施良好的隐私保护措施不仅有助于建立良好的用户关系,还有助于保护用户和企业的利益。

2、隐私保护的原则

应用开发者在产品设计阶段就需要考虑用户隐私的保护,提高应用的安全性。HarmonyOS应用开发需要遵从隐私保护规则,在应用上架应用市场时,应用市场会根据规则进行校验,如不满足条件则无法上架。我们应遵循一套以控制力、透明度和数据最小化为核心的隐私保护的设计原则:

  • 数据收集及使用公开透明。
    应用采集个人数据时,应清晰、明确地告知用户,并确保告知用户的个人信息将被如何使用。

  • 数据收集和使用最小化。
    应用个人数据收集应与数据处理目的相关,且是适当、必要的。开发者应尽可能对个人数据进行匿名或化名,降低对数据主体的风险。仅可收集和处理与特定目的相关且必需的个人数据,不能进行与特定目的不相关的进一步处理。

  • 数据处理选择和控制。
    对个人数据处理必须要征得用户的同意,用户对其个人数据要有充分的控制权。

  • 数据安全。
    从技术上保证数据处理活动的安全性,包括个人数据的加密存储、安全传输等安全机制,系统应默认开启或采取安全保护措施。

  • 本地化处理。
    应用开发的数据优先在本地进行处理,对于本地无法处理的数据上传云服务时要满足最小化的原则,不能默认选择上传云服务。

  • 未成年人数据保护要求。
    如果应用是针对未成年人设计的,或者应用通过收集的用户年龄数据识别出用户是未成年人,开发者应该结合目标市场国家的相关法律,专门分析未成年人个人数据保护的问题。收集未成年人数据前需要征得监护人的同意。

3、隐私保护常用方法

  • 使用隐私声明获取用户同意。
  • 减少应用的位置信息访问权限。
  • 减少使用存储权限。
  • 动态申请敏感权限。
  • 数据加密处理。

三、应用数据安全

1、概念

应用数据安全是指保护应用程序中存储、处理和传输的数据,防止数据被未授权访问、泄露、篡改、破坏或丢失的一系列措施和策略。它是信息安全的重要组成部分,尤其在当今数字化时代,数据安全变得至关重要。以下是应用数据安全的几个关键方面:

  1. 数据保密性:确保数据只能被授权的用户或系统访问,防止敏感信息泄露给未授权的个体或组织。
  2. 数据完整性:保护数据不被未授权修改或破坏,确保数据的准确性和可靠性。
  3. 数据可用性:确保授权用户在需要时能够访问到数据,防止由于系统故障、攻击或其他原因导致的数据不可用。
  4. 访问控制:通过身份验证、授权和访问权限管理来控制对数据的访问。
  5. 加密:使用加密算法对数据进行加密,确保数据在传输和存储过程中的安全。
  6. 数据备份与恢复:定期备份数据,以便在数据丢失或损坏时能够恢复。
  7. 安全审计:记录和监控对数据的访问和操作,以便在发生安全事件时进行分析和调查。
  8. 合规性:遵守相关的数据保护法规和标准,如GDPR(欧盟通用数据保护条例)、HIPAA(健康保险便携与责任法案)等。
  9. 应用程序安全:确保应用程序本身没有安全漏洞,防止通过应用程序攻击来获取数据。
  10. 物理安全:保护存储数据的物理设备,防止设备被盗或损坏。
    应用数据安全的实现涉及多个层面,包括技术措施、管理政策和员工培训等。随着技术的发展,应用数据安全面临的挑战也在不断变化,因此需要持续地评估和更新安全策略以应对新的威胁。

2、HarmonyOS安全概述

HarmonyOS提供了系统安全、IDE/工具安全以及应用安全生态等三个层面的安全能力。

  • 在系统安全层面,为了保护应用能够运行在安全、可靠的系统上,保证其自身业务的安全可靠(例如安全支付、安全登录、安全聊天等)。HarmonyOS通过完整性保护、漏洞防利用、安全可信环境等安全防护技术,从架构上支持了应用的安全运行。
  • 在IDE/工具层面,生态开发者的应用来自不同的开发者和不同用途, 除了好的生态应用以外,也存在恶意利用生态开放进行牟利的黑产、诈骗应用、恶意营销广告推广(恶意弹框)等各种风险应用,为了生态的应用安全纯净可控, HarmonyOS将以端到端的安全可控的生态模式进行构建。
  • 在应用安全生态层面HarmonyOS通过各种软硬件基础设施支持应用的安全性。具体来说通过下列方案实现对敏感数据存储和用户隐私保护:
    • 敏感数据等级划分。通过设备等级划分和数据的敏感分级保护用户的数据安全,并使分布式设备间数据按分级正确流动。
    • 文件分级保护。应用根据其自身需求,按照数据的安全等级,把数据保存到系统相应的加密目录,由系统保证数据的安全性。
    • 关键资产数据加密保护。针对关键敏感数据,为用户提供基于底层TEE级别系统安全保护;提供关键敏感数据管理API,开发者无需关注底层具体安全实现。

3、风险等级划分

HarmonyOS安全能力是以分级安全为架构思想的基础安全底座,面向业务场景构建HarmonyOS安全的应用生态。其中的分级分为两个维度:

  • 一是设备的安全等级划分,
  • 二是数据的安全等级划分。

设备的安全等级划分的常用业务场景中分布式是一个非常重要的业务场景。在分布式里面最大问题是不同的设备的安全等级不一样,比如A设备为手机,手机的安全等级通常较高,B设备为手表,手表的安全等级较低,如果数据要在A设备和B设备之间互相流动,那么需要先对设备进行分级,以保证数据在跨设备之间流动的安全性。
另一方面,对流动的数据也需要进行分级,比如说数据能不能流动到普通的设备上,敏感程度不同的数据对流动的限制也不一样。这些需要系统在系统层面决定,而不是在应用层面去划分。如果在应用层面去划分数据等级且应用开发者对数据的处理如果没有等级的概念,那会导致整个系统的数据的泄露非常严重。

四、总结与回顾

随着信息技术的不断发展,数据的价值和重要性日益凸显,因此保护数据安全已成为应用开发中的重要课题。数据安全保护需要综合考虑分析评估和设计开发两个阶段的工作:

  • 对应用中涉及的各类数据进行全面的风险评估和分类分析,根据数据的敏感程度和重要性确定相应的安全保护策略。
  • 采用分级数据保护和合适的加密算法规格 ,避免敏感数据泄露。

本文中,针对体检报表中的数据将其进行安全等级划分后,根据定义的的等级采取了对应的加密。

  • 数据安全分级是一种基于数据重要性和敏感程度的分类保护方法。通过对数据进行分类,根据其重要性和敏感程度采取相应的安全措施,以确保数据的安全性。在实际应用中,开发人员应根据实际业务场景,选择合适的数据分级保护策略,从而降低数据管理的复杂度,并提高数据的安全性。例如,对于一些敏感的个人隐私数据,可以采取严格的访问控制策略,以防止未经授权的访问和泄露。
  • 数据加密是一种常用的数据安全技术,通过对数据进行加密处理,使得未经授权的用户无法直接获取和理解数据内容,从而保障数据的机密性。在应用开发中,合理选择加密算法和规格对数据进行加密处理非常关键。开发人员需要平衡加密数据的安全性和计算复杂度,以确保在保障数据安全的同时不影响用户的正常使用体验。此外,还需要考虑数据的传输加密和存储加密,以全面保护数据的安全。

在实际应用开发中,开发者要重视数据安全工作,不断完善数据安全保护措施,为用户的数据安全和隐私保护提供更加可靠的保障。

五、闯关习题

判断题

1.TEE是Trusted execution environment的缩写:

答案:正确(True)

2.OS Kernel(操作系统内核)的安全性要强于TEE:

答案:错误(False)

单选题

1.以下哪个不是HarmonyOS安全设计理念要素?

答案:B. 高效性

2.下列哪个不是设备端侧证书

答案:C. CBG根证书。

多选题

1.以下哪些是HarmonyOS生态安全的内容:

答案:全选

A. 开发者实名。

B. 设备受限调试。

C. 上架检测与审核。

D. 应用代码签名与加密。

E. 应用运行时保护与检测。

这篇关于【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用开发安全(含闯关习题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102182

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<