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  日志敏感数据安全能力对写日志函数执行时间的影响
   489   490   491   492   493   494   495   496   497   498   499