百吉财经 > 股票 > 密码密钥硬编码检查

密码密钥硬编码检查

2024-03-29 12:50:20股票

现在大家所能做的是就是丰富自己的脑海,不断的吸收知识。在不经意间体现自己的彩画,创造出属于自己的价值。接下来,百吉财经将介绍股票通信密码是什么,希望可以让你在这方面有更深入的认识和了解。

摘要:本文重点讲述通过静态检查工具有效的防止密码密钥的泄露。

Verizon《2022数据泄露调查报告(DBIR)》指出,61%的数据泄露涉及凭证数据,凭证是犯罪分子最喜欢的数据类型,就像披着羊皮的狼一样,它们的行为在攻击之前显得无害。凭证的泄露是信息泄露的主要途径,内部员工操作不规范、没有养成良好的工作行为习惯以及疏忽大意等已成为多起严重网络安全事件发生的根本原因。本文重点讲述通过静态检查工具有效的防止密码密钥的泄露。

1. 密钥的重要性

1.1. 看风

我们还是先说故事。话说2006年有一个柳云龙的电视连续剧《暗算》分为三部曲《听风》、《看风》、《捕风》。很有意思的是三个故事里都有个“风”字。你看过风吗?我没看到,只看见树叶飘动,才知道风来过。风,来无影,去无踪,无孔不入,又无处不在。三部曲分别对应:侦听、破译和谍报。故事描述了老一辈情报人员(一群与风打交道的人),与敌斗智斗勇的故事,信仰的力量让他们无所畏惧、勇往直前,看得人荡气回肠,催人泪下。

由于平时很少看电视,去年正在为一个算法发愁,偶然看到这个剧,感同身受,便一口气看完了,里面一些对加密算法逻辑的一些看法,还是给了当时的我很大的启发,让我完成了当时的算法,还特意发了微博纪念。 个人比较喜欢《看风》破译密码这个章节,里面有句经典的台词:风是看不见的,破译密码就是看见了风,密码是兵器,是兵器中的暗器。

1.2. 保密通信模型

保密通信模型

密码学有一个重要的产物——密钥。密钥作为信息在传播时用来加密的工具起着非常重要的作用。主流的六种密码技术,就是围绕密钥展开的:对称密码、非对称密码、单向散列函数、消息认证码、数字签名、伪随机数生成器。

1.3. 密钥的重要性

古典密码学(1949年之前)数据的安全主要是基于算法的保密。

送你一首小诗:

我画蓝江水悠悠,

爱晚亭上枫叶愁。

秋月溶溶照佛寺,

香烟袅袅绕经楼。

如果不告诉你这是首藏头诗,你还真的很难猜到唐伯虎对秋香的表白:“我爱秋香”。 藏头诗就是加密算法的一种。

由于西方文字是由字母组成,字母又是有序的字符集。所以在对文字加密时,密码算法很容易想到采用:替代密码、置换密码或替代与置换密码的组合,来完成完成信息的加密。公元前1世纪古罗马的凯撒密码,就是对文字中的字母,采用它在字母表中之后的第k个字母来代换。从而变成密文。在解密时,反向再移动k个字母进行还原。

这个时代将密码发展到巅峰的,要算二战时期德军用机械实现的转轮机(RotorMachine)ENIGMA密码,很多的谍战片都是围绕这个机器展开的。

这个时期的密码存在很多的问题:

不适合大规模生产不适合较大的或者人员变动较大的组织用户无法了解算法的安全性

奥古斯特·柯克霍夫在19世纪提出了密码学上的柯克霍夫原则(Kerckhoffs’s principle)由:即使密码系统的任何细节已为人悉知,只要密匙(key,又称密钥或秘钥)未泄漏,它也应是安全的。 这个原则指导了以后的密码学算法的发展。

近代密码学(1949-1975)数据的安全基于密钥,而不是算法的保密。

香农在20世纪40年代末发表的一系列论文,特别是1949年的《保密系统通信理论》,把密码学推向了基于信息论的科学轨道。

这阶段的发展主要是对称加密算法。对称加密是发送方使用某种公开的算法使用密钥对明文进行加密,接收方使用之前发送方给予的密钥对密文进行解密得到明文。近代密码发展中一个重要突破是“数据加密标准”(DES)的出现。

现代密码学(1976-)

公钥密码使得发送端和接收端无密钥传输的保密通信成为可能。

1976 年 Diffie 和 Hellman 的公钥密码的思想提出,标志着现代密码学的诞生。这是密码学发展史上具有里程碑意义的大事件,自此提出了许多种公钥密码体制 ,如基于分解大整数的困难性的密码体制——RSA 密码体制及其变种、基于离散对数问题的公钥密码体制。

1.4. 密钥泄露的危害

影响密码系统安全性的基本因素:密码算法复杂度、密钥机密性、密钥长度。其中密钥机密性与主要与密钥的管理相关。如何保护好密钥的安全就成了信息安全的非常重要的一个部分。

在现在的应用系统中,密码、密钥往往被作为一种访问密钥(access key)或凭证(Credentials),用于系统之间建立链接,避免了用户密码的明文传输。很多时候访问密钥等同于密码。

例如我们熟悉的GitHub的访问密钥。当我们获得Github某个库的地址访问密钥,就可以在Windows的凭证管理或本地Git的凭证管理里添加这个访问密钥,本地git和远端的访问库地址就建立了信任链接,不再需要每次都输入密码。

但密钥本地化,也会导致密钥分散在代码、配置文件中。一旦缺乏对密钥的统一管理, 就容易导致密钥泄露。员工不慎将密钥泄漏到开源网站导致重要数据丢失事件时有发生。

2018年某酒店集团共140G约5亿条个人信息遭泄露,被发现泄露的信息在境外黑市中售卖。究其原因,是该集团对员工的安全意识缺乏足够的教育培训,导致开发人员在无意识的情况下将公司测试平台的账号密码发到 GitHub上,使得黑客下载了整个数据。

我们从Verizon(美国最大的有线通信和语音通信提供商),每年发布的《数据泄露调查报告(Data Breach Investigations Report(DBIR))》,来看下密码密钥在信息泄露中被黑客利用的情况。

《2020数据泄露调查报告(DBIR)》使用偷窃的信用凭证、利用员工误发送、员工误配置是数据泄露的主要威胁。内部员工操作不规范、没有养成良好的工作行为习惯以及疏忽大意等已成为多起严重网络安全事件发生的根本原因。

《2021数据泄露调查报告(DBIR)》61%的数据泄露涉及凭证数据,凭证的泄露是信息泄露的主要途径,防止凭证泄露对信息保护有着重要的作用。

《2022数据泄露调查报告(DBIR)》凭证是发起攻击的最重要的手段。

凭证和个人数据是黑客最喜欢获取的两类数据报告指出:我们长期以来一直认为,凭证是犯罪分子最喜欢的数据类型,因为它们对于伪装成系统上的合法用户非常有用。就像谚语中披着羊皮的狼一样,它们的行为在攻击之前显得无害。

2. 密码密钥硬编码的检查

接下来我们看下如何防范密码密钥在带码中由于硬编码导致的泄露。

先来看些如何鉴别密码密钥。

2.1. 香农熵(Shannon entropy)

密钥的长度决定了密钥空间(keyspace),通常以位为单位。密钥空间越大,密钥被攻破的难度就越大。

密钥是由密钥空间的随机值构成。对于任意一个随机变量 X,它的熵定义如下:

变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。

P(x_i)

P

(

xi

) : 指的是单个样本变量所属的变量种类的个数占据所有变量个数的比例。

举例:数据data有六个值,分为别为:[a,b,c,a,b,a];

样本总个数是6,变量种类数3;分别为[a:3, b:2, c:1]

所以对应的pi分别为[a:1/2, b:1/3, c:1/6]

公式计算log以2为底数的pi的对数值,然后再乘以pi的负数,再计算其加和,得到的便是香农熵的值:1.4591479170272448。

/** * Base on shannon entropy return bits of entropy represented in string. * * @param str input string * @return entropy */ public static double getShannonEntropy(String str) { int num = 0; Map<Character, Integer> pi = new HashMap<Character, Integer>(); // count char in string char cx; for (int l = 0; l < str.length(); l) { cx = str.charAt(l); if (pi.containsKey(cx)) { pi.put(cx, pi.get(cx) 1); } else { pi.put(cx, 1); } num = num 1; } double entropy = 0.0; for (Map.Entry<Character, Integer> entry : pi.entrySet()) { cx = entry.getKey(); double p = (double) entry.getValue() / num; entropy = entropy p * (Math.log(p) / Math.log(2)); } return -entropy; }

同等长度的字符串,通常密钥的熵值更高密钥为避免彩虹攻击,在取值上更加的离散,会尽量采用不重复的字符。就像我们为了增加密码的复杂性,要求长度不小于8,必须包含大小写、特殊字符、以及数字一样的道理。所以密钥的熵值会比一般的文本要高的多。我们就是利用这点来识别字符串是否是密钥。

2.2. 工具的检查逻辑

对于密码密钥的硬编码检查可以采用静态分析工具来完成。工具的检查过程通常包含四个过程:输入文件准备、检查、过滤和报告输出。

2.2.1. 输入文件转换

输入文件分类我们需要检查的文本文件进行分类,通常包括以下几种类型:程序语言:C、C 、Java、Python、Go、Js等;有统一格式的文件:属性文件、yaml、csv、json、xml等;文本文件:没有固定格式的文本文件。

分类的目的是为了更好的识别文件中的字符串常量,充分利用字符串常量的上下文关联,以便在分析中最大程度的减少误报。

输入文件转换程序语言:通过各语言的语法解析器,解析成抽象语法树,提取语法树中的等于字符串的常量,以及对应的变量名;有统一格式的文件:照格式转换成变量名和字符串常量值;文本文件:采用token的方式分割成一个个的token,变成一个各的字符串常量。

2.2.2. 密码密钥检查

在我们得到大量的变量名和字符串常量后,主要通过正则表达式匹配的方式完成目标的筛选。

由于检查密码密钥的种类和类型不同,可以通过配置文件来提高检查能力的可扩展性。

检查配置选项主要包括以下内容:

信息

描述

选项

检查类型

可分为:变量名、字符串常量、或两个都检查

必选

密码密钥的类型

用于区分不同类型的密码密钥;同时用于告警时区分具体检测到的密码密钥类型

必选

正则表达式

主要设定匹配的长度,每个字符的可选类型

必选

熵值的阈值

用于精确的识别密码密钥的类型,降低误报

可选

例如:

检查硬编码的口令:检查变量名中包含:password、passwd、pwd的变量,且变量等于字符串常量;正则表达式可以设置成为:".*(password|passwd|pwd)$"。检查GitHub的个人凭证:检查字符串常量;这个凭证是以"ghp_"开头的,跟随长度为36的字符串,且每个字符可以为数字和字母;正则表达式可以设置成为:“ghp_[0-9a-zA-Z]{36}”。

2.2.3. 密码密钥过滤

静态分析能很大程度上减少了人工审核的工作量,但由于检查模式的不确定性,也会带来不少的误报。误报会给用户在审核过程中带来很大的负面情绪,从而不愿继续使用工具。为了进一步降低误报,我们可以通过下面的方式来降低误报:

密码密钥熵值的计算前面讨论过密码密钥的特点,可以通过检测密码密钥的信息熵的方式来降低误报。有些密码密钥设定了最低的阈值,但还是有很多密码密钥并未给出具体的阈值,这个就需要通过经验积累来设定,目前业界也有通过机器学习来完善这个阈值的设定。污点分析在代码中,对于口令的变量的取名上,很多并不会遵守可读性和可维护性来设定变量名,通过前面正则表达式的方式来查找硬编码密码的方式,会造成很多的漏报。这里还可以通过污点分析的方法,来推导出密码是否采用了硬编码。例如检查jdbc连接的密码参数,查看该参数是否为字符串常量。

2.2.4. 报告输出

将经过过滤后的结果,输出告警,给出可能泄露的文件名和变量或可能为密码密钥的常量字符串位置,便于人工的排查。

2.2.5. 参考工具

华为云代码检查 CodeCheck:https://www.huaweicloud.com/product/codecheck.html

3. 参考

柯克霍夫原则: https://en.wikipedia.org/wiki/Kerckhoffs's_principle香农信息熵:https://en.wikipedia.org/wiki/Entropy_(information_theory)Verizon 2022年数据泄露报告:https://www.verizon.com/business/resources/reports/dbir/2022/master-guide/Verizon 2021年数据泄露报告: https://www.verizon.com/business/resources/reports/dbir/2021/master-guide/Verizon 2020年数据泄露报告: https://www.verizon.com/business/resources/reports/dbir/2020/master-guide/GitHub 秘密扫描:https://docs.github.com/cn/code-security/secret-scanning/about-secret-scanning)

点击下方,第一时间了解华为云新鲜技术~

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

明白密码密钥硬编码检查的一些要点,希望可以给你的生活带来些许便利,如果想要了解其他内容,欢迎点击百吉财经的其他栏目。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息储存空间服务,不拥有所有权,不承担相关法律责任。如有发现本站涉嫌抄袭侵权/违法违规的内容,请发送邮件,一经查实,本站将立刻删除。

猜你喜欢

  • 舌尖上的股票股票

    舌尖上的股票

    口腔行业的投资机会口腔行业一直以来备受关注,而随着人们对口腔健康的重视程度不断提高,口腔医疗市场也呈现出蓬勃发展的态势。在这个行业中,口...

    2024-03-28 173
  • 股票内外盘是什么意思——股票中内外盘是什么意思?股票

    股票内外盘是什么意思——股票中内外盘是什么

    股票中内外盘是什么意思?优质回答外盘又称主动性买盘,即以卖出价成交的累积成交量;内盘又称主动性卖盘,即以买入价成交的累积成交量。委托以卖...

    2024-03-28 150
  • 2015年5月挂牌上市新股股票

    2015年5月挂牌上市新股

    2015年5月挂牌上市新股最佳答案登陆南方财富网,南方财富网 > 数据 > 行业数据 > 正文即可显示:2015年5月44支新股发行上市情况一览表。从《公司法...

    2024-03-28 143
  • 平安银行股票怎么修改手机号码-个人股票开户具体流程?股票

    平安银行股票怎么修改手机号码-个人股票开户具

    个人股票开户具体流程?答证券市场分上海、深圳,一般先办理两个交易所的证券帐户,任意一个合法的券商都办,费用一般90元左右;然后在自己满意的...

    2024-03-28 155
  • 新三板股票都有哪些龙头股股票

    新三板股票都有哪些龙头股

    新三板概念股有哪些最佳答案参股新三板概念市值龙头为广汽集团【市值1993亿】,2021股价涨幅龙头联络互动【股价涨幅396.5%】,每股净资产龙头长春高新...

    2024-03-28 169
  • 基金是理财还是股票—理财是基金好还是股票好股票

    基金是理财还是股票—理财是基金好还是股票好

    基金理财和股票哪个好?最佳答案股票是一种有价证券,是股份公司发行的所有权凭证。一只股票的背后是一个上市公司,选择投资股票就是选择投资这家...

    2024-03-28 144
  • 股票重组停牌是好是坏!重组股票一般停牌多久股票

    股票重组停牌是好是坏!重组股票一般停牌多久

    股票重组停牌时间规定优质回答股票重组停牌时间原则上不超过3个月。《上市公司筹划重大事项停复牌业务指引》中指出,筹划重大资产重组的,停牌时间...

    2024-03-28 56
  • 新三板股票有哪些风险?股票

    新三板股票有哪些风险?

    新三板股票有哪些风险?优质回答简单来说,新三板就是一个场外市场。在整个世界的经济都比较不理想的大背景下,国家需要经济改革,新三板其实就是...

    2024-03-28 187
  • 银行开股票户:我可以到中国银行直接开股票账户吗股票

    银行开股票户:我可以到中国银行直接开股票账户

    我可以到中国银行直接开股票账户吗1、境内客户中国银行可提供四种服务开通方式,包括预指定开户(也称为“双边开户”)、证券单边开户、银行单边开...

    2024-03-28 139
  • 可转债a的股票股票

    可转债a的股票

    A股可转换公司债券是什么意思可转换公司债券是一种被赋予可转换股份权利的公司债券。也称为“可转换债券”。发行公司事先规定,债权人可以根据发行...

    2024-03-28 153
  • 工商银行股票多少钱合适股票

    工商银行股票多少钱合适

    工商银行这只股票多少钱买进比较合适如果你看好的话,最后在3.5元以下进比较合适宁夏恒力 小盘,低价,历史上长期无人问津,庄家易于建仓,边疆少...

    2024-03-28 52
  • 港口概念基金股票

    港口概念基金

    重配港口,大基建,航运的基金有哪些答1、天津港[600717]所属板块包括天津板块、港口水运板块、融资融券板块,经营范围主要有商品储存;中转联运、汽...

    2024-03-28 194
  • 哪些值得推荐的股票公众号?股票

    哪些值得推荐的股票公众号?

    哪些值得推荐的股票公众号?如下:1、姜超宏观债券研究    16年的新财富第一,新出炉的宏观数据的评析都有,见解独树一帜,喜欢拿数据说话。...

    2024-03-28 183
  • 长信股票型基金净值--长信基金519975股票

    长信股票型基金净值--长信基金519975

    长信基金可靠吗答长信基金可靠。根据长信基金官方网站,长信基金管理有限责任公司是一家由长江证券股份有限公司、上海海欣集团股份有限公司、武汉...

    2024-03-28 76
  • 股票涨跌钱去哪了!股票涨跌的钱是谁收股票

    股票涨跌钱去哪了!股票涨跌的钱是谁收

    股票下跌了,哪钱到哪里去了?最佳答案股票下跌,钱被前期上涨时的股民赚走了, 还有一些是被政府、券商赚走了。简介:股市,一般都是指二级市场上...

    2024-03-28 144
  • 股票数字秘密—股票买卖数字密码股票

    股票数字秘密—股票买卖数字密码

    股票交易密码几位数最佳答案股票账户密码为6位数,股票账户一共有两个密码,登录密码和资金密码,登录密码是指登录证券账户的密码,资金密码是指银...

    2024-03-28 133
  • 头寸在股票、股票头寸是什么意思股票

    头寸在股票、股票头寸是什么意思

    股票头寸是什么意思优质回答头寸指投资者拥有或借用的资金数量。头寸,也称”头衬“,就是”款项“的意思。头寸是金融行业常用到的一个词。如果银...

    2024-03-28 167
  • 利群股票股票

    利群股票

    介绍利群股票是指在股票市场上表现优秀,获得投资者青睐的股票。投资者在选择股票时,往往会考虑公司的盈利能力、发展前景、行业竞争力等因素。持...

    2024-03-28 144
  • 2016年减持股票一览表股票

    2016年减持股票一览表

    78家退市名单一览表1)*ST百特(002323)2019-12-04停一年,躲过了,报复反弹后还有机会,不能用价值定价.2)*ST海润(600401)3)*ST上普(600680)4)*ST碳烯(...

    2024-03-28 70
  • 股票指数什么单位~香港恒生股票指数股票

    股票指数什么单位~香港恒生股票指数

    恒生各指数都有哪些?优质回答1. 恒生各指数包括恒生指数、恒生国企指数、恒生综合指数、恒生红筹指数等。2. 这些指数是根据不同的标准和要求来衡量...

    2024-03-28 143