Page 494 - 《软件学报》2024年第4期
P. 494
2072 软件学报 2024 年第 35 卷第 4 期
开发者基于代码规范对参数加入敏感数据标识, HiLog 可以识别敏感数据标识进行数据遮蔽, 在不影响性能的前
提下提供日志安全能力. 图 15 展示了使用示例和输出结果. 使用示例如代码 2–9 行所示, 在参数 name 和 pass 的
格式化占位符中加入{private}, 参数 errorcode 的格式化占位符加入{public}. 输出结果如代码 11–14 行所示, 在开
启数据安全能力的情况下 errorcode 的值正常写入, name 和 pass 的值被替换为了“<private>”, 避免相关信息在后
续的日志分析中被获取和利用; 在关闭数据安全能力的情况下, 则相应参数值均可以被正常记录.
表 5 HiLog 和 Log 的设备兼容性比较
开发板名称 CPU 内存 存储 HiLog版本 Log兼容性
润和HH-SCDAYU200 四核 @ 2.0 GHz 2 GB 32 GB+扩展 标准 可兼容
HiSpark Hi3861V100 单核 @ 160 MHz 352 KB 2 048 KB 轻量 不兼容
BearPi-HM_Nano 单核 @ 160 MHz 352 KB 2 048 KB 轻量 不兼容
旗点科技GD32F303 单核 @ 120 MHz 96 KB 256 KB 轻量 不兼容
1. ----------------------------------------------- Source Code --------------------------------------------------------------------
2. std::string name = GetUsernameFromInput();
3. std::string pass = GetPasswordFromInput();
4. int errorcode = TryToLogin(name, pass);
5. if(errorcode){
6. OHOS::HiviewDFX::HiLog::Info(LABEL,
7. “HiLog private log test: Username=%{private}s, Password=%{private}s, Errorcode=%{public}d”,
8. name,pass, errorcode);
9. }
10. ------------------------------------------------- Outputs -------------------------------------------------------------------------
11. With data protection on>>> “HiLog private log test: Username=<private>, Password=<private>, Errorcode=403”
12. With data protection off>>> “HiLog private log test: Username=Zhangsan, Password=123abc, Errorcode=403”
图 15 HiLog 日志敏感数据安全能力使用示例
为了考量 HiLog 数据安全能力的轻量化程度, 本文测试了 HiLog 数据安全能力对写日志代码执行时间的影
响. 相关结果如图 16 所示, 可以看出在打开/关闭数据安全能力时, 写日志代码的平均执行时间 T fun 没有明显变
c
化. 可以说明 HiLog 的数据安全能力是一种轻量化的日志安全保护方法, 不会对日志系统和操作系统的性能造成
影响. 据统计在 OpenHarmony 系统代码中, 总共有了 418 145 条 HiLog 写日志代码, 其中 48 999 条写日志代码使
用了 HiLog 数据安全能力, 占比 11.7%. HiLog 的日志数据安全能力已在 OpenHarmony 主线系统代码中逐渐得到
推广和应用.
{private}(on) {public}(on)
30 {private}(off) {public}(off)
None
T func (μs) 20
10
0
DAYU200 Hi3516 RPI3B
图 16 HiLog 日志敏感数据安全能力对写日志函数执行时间的影响