色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

密碼密鑰硬編碼檢查

科技怪授 ? 來源:科技怪授 ? 作者:科技怪授 ? 2022-10-13 09:06 ? 次閱讀

1. 密鑰的重要性

1.1. 看風

我們還是先說故事。話說2006年有一個柳云龍的電視連續劇《暗算》分為三部曲《聽風》、《看風》、《捕風》。很有意思的是三個故事里都有個“風”字。你看過風嗎?我沒看到,只看見樹葉飄動,才知道風來過。風,來無影,去無蹤,無孔不入,又無處不在。三部曲分別對應:偵聽、破譯和諜報。故事描述了老一輩情報人員(一群與風打交道的人),與敵斗智斗勇的故事,信仰的力量讓他們無所畏懼、勇往直前,看得人蕩氣回腸,催人淚下。

由于平時很少看電視,去年正在為一個算法發愁,偶然看到這個劇,感同身受,便一口氣看完了,里面一些對加密算法邏輯的一些看法,還是給了當時的我很大的啟發,讓我完成了當時的算法,還特意發了微博紀念。個人比較喜歡《看風》破譯密碼這個章節,里面有句經典的臺詞:風是看不見的,破譯密碼就是看見了風,密碼是兵器,是兵器中的暗器。

1.2. 保密通信模型

· 保密通信模型image.png

密碼學有一個重要的產物——密鑰。密鑰作為信息在傳播時用來加密的工具起著非常重要的作用。主流的六種密碼技術,就是圍繞密鑰展開的:對稱密碼、非對稱密碼、單向散列函數、消息認證碼、數字簽名、偽隨機數生成器。

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)》

使用偷竊的信用憑證、利用員工誤發送、員工誤配置是數據泄露的主要威脅。內部員工操作不規范、沒有養成良好的工作行為習慣以及疏忽大意等,已成為多起嚴重網絡安全事件發生的根本原因。image.png

《2021數據泄露調查報告(DBIR)》

61%的數據泄露涉及憑證數據,憑證的泄露是信息泄露的主要途徑,防止憑證泄露對信息保護有著重要的作用。image.png

《2022數據泄露調查報告(DBIR)》

憑證是發起攻擊的最重要的手段。image.png

憑證和個人數據是黑客最喜歡獲取的兩類數據

報告指出:我們長期以來一直認為,憑證是犯罪分子最喜歡的數據類型,因為它們對于偽裝成系統上的合法用戶非常有用。就像諺語中披著羊皮的狼一樣,它們的行為在攻擊之前顯得無害。

image.png

image.png

o

2. 密碼密鑰硬編碼的檢查

接下來我們看下如何防范密碼密鑰在帶碼中由于硬編碼導致的泄露。

先來看些如何鑒別密碼密鑰。

2.1. 香農熵(Shannon entropy)

密鑰的長度決定了密鑰空間(keyspace),通常以位為單位。密鑰空間越大,密鑰被攻破的難度就越大。

密鑰是由密鑰空間的隨機值構成。對于任意一個隨機變量X,它的熵定義如下:

H(X) = - \\sum_{x=1}^nP(x_i)log_2[P(x_i)]∑ x =1n? P (xi?)log2?[ P (xi?)]

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

· P(x_i) P (x**i?) : 指的是單個樣本變量所屬的變量種類的個數占據所有變量個數的比例。

舉例 :數據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 pi = new **HashMap();

** **// 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 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. 工具的檢查邏輯

對于密碼密鑰的硬編碼檢查可以采用靜態分析工具來完成。工具的檢查過程通常包含四個過程:輸入文件準備、檢查、過濾和報告輸出。image.png

2.2.1. 輸入文件轉換

· 輸入文件分類

我們需要檢查的文本文件進行分類,通常包括以下幾種類型:

o 程序語言:C、C++JavaPython、Go、Js等;

o 有統一格式的文件:屬性文件、yaml、csv、json、xml等;

o 文本文件:沒有固定格式的文本文件。

分類的目的是為了更好的識別文件中的字符串常量,充分利用字符串常量的上下文關聯,以便在分析中最大程度的減少誤報。

· 輸入文件轉換

o 程序語言:通過各語言的語法解析器,解析成抽象語法樹,提取語法樹中的等于字符串的常量,以及對應的變量名;

o 有統一格式的文件:照格式轉換成變量名和字符串常量值;

o 文本文件:采用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. 報告輸出

將經過過濾后的結果,輸出告警,給出可能泄露的文件名和變量或可能為密碼密鑰的常量字符串位置,便于人工的排查。
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6041

    瀏覽量

    136124
  • 編碼
    +關注

    關注

    6

    文章

    946

    瀏覽量

    54869
  • 密鑰
    +關注

    關注

    1

    文章

    139

    瀏覽量

    19780
收藏 人收藏

    評論

    相關推薦

    艾體寶洞察 一文讀懂最新密碼存儲方法,揭秘密碼存儲常見誤區!

    本篇文章將引入并介紹密碼存儲中的基石,關于密碼哈希、鹽加密(Salting)、密鑰派生函數(KDF)的原理及其應用,揭示密碼存儲中的常見誤區,并分享一系列安全實踐。
    的頭像 發表于 09-14 17:37 ?380次閱讀
    艾體寶洞察 一文讀懂最新<b class='flag-5'>密碼</b>存儲方法,揭秘<b class='flag-5'>密碼</b>存儲常見誤區!

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 獲取密鑰屬性ArkTS

    HUKS提供了接口供業務獲取指定密鑰的相關屬性。在獲取指定密鑰屬性前,需要確保已在HUKS中生成或導入持久化存儲的密鑰
    的頭像 發表于 07-17 10:46 ?318次閱讀

    ESP是否可以接受ASCII十六進制的安全密鑰來連接到AP,而不是密碼

    ESP 是否可以接受 ASCII 十六進制的安全密鑰來連接到 AP,而不是密碼? 如果沒有,可以將其添加到固件中嗎?
    發表于 07-16 06:29

    鴻蒙開發:Universal Keystore Kit密鑰管理服務 密鑰派生介紹及算法規格

    密碼學中,密鑰派生函數(Key derivation function,KDF)使用偽隨機函數從諸如主密碼密碼的秘密值中派生出一個或多個密鑰
    的頭像 發表于 07-11 16:30 ?344次閱讀

    鴻蒙開發:Universal Keystore Kit密鑰管理服務 密鑰派生C、C++

    以HKDF256密鑰為例,完成密鑰派生。具體的場景介紹及支持的算法規格,請參考[密鑰生成支持的算法]。
    的頭像 發表于 07-11 14:28 ?307次閱讀
    鴻蒙開發:Universal Keystore Kit<b class='flag-5'>密鑰</b>管理服務 <b class='flag-5'>密鑰</b>派生C、C++

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 密鑰協商 C、C++

    以協商密鑰類型為ECDH,并密鑰僅在HUKS內使用為例,完成密鑰協商。具體的場景介紹及支持的算法規格,請參考[密鑰生成支持的算法]。
    的頭像 發表于 07-10 14:27 ?373次閱讀
    鴻蒙開發:Universal Keystore Kit <b class='flag-5'>密鑰</b>管理服務 <b class='flag-5'>密鑰</b>協商 C、C++

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 密鑰協商ArkTS

    以協商密鑰類型為X25519 256,并密鑰僅在HUKS內使用為例,完成密鑰協商。
    的頭像 發表于 07-10 09:22 ?343次閱讀
    鴻蒙開發:Universal Keystore Kit <b class='flag-5'>密鑰</b>管理服務 <b class='flag-5'>密鑰</b>協商ArkTS

    鴻蒙開發:Universal Keystore Kit密鑰管理服務 加密導入密鑰C、C++

    以加密導入ECDH密鑰對為例,涉及業務側加密密鑰的[密鑰生成]、[協商]等操作不在本示例中體現。
    的頭像 發表于 07-08 15:26 ?369次閱讀
    鴻蒙開發:Universal Keystore Kit<b class='flag-5'>密鑰</b>管理服務 加密導入<b class='flag-5'>密鑰</b>C、C++

    鴻蒙開發:Universal Keystore Kit 密鑰管理服務 加密導入密鑰 ArkTS

    以加密導入ECDH密鑰對為例,涉及業務側加密密鑰的[密鑰生成]、[協商])等操作不在本示例中體現。
    的頭像 發表于 07-08 14:22 ?375次閱讀
    鴻蒙開發:Universal Keystore Kit <b class='flag-5'>密鑰</b>管理服務 加密導入<b class='flag-5'>密鑰</b> ArkTS

    鴻蒙開發:Universal Keystore Kit密鑰管理服務簡介

    Universal Keystore Kit(密鑰管理服務,下述簡稱為HUKS)向業務/應用提供各類密鑰的統一安全操作能力,包括密鑰管理(密鑰生成/銷毀、
    的頭像 發表于 07-04 14:20 ?474次閱讀
    鴻蒙開發:Universal Keystore Kit<b class='flag-5'>密鑰</b>管理服務簡介

    abb機器人系統密鑰在哪

    、ABB機器人系統密鑰的定義 ABB機器人系統密鑰是一種特殊的密碼,用于保護ABB機器人系統中的軟件、硬件和數據等資源。它通常由一串字符組成,包括字母、數字和特殊符號等。通過使用密鑰
    的頭像 發表于 06-17 09:45 ?1381次閱讀

    鴻蒙開發接口安全:【@ohos.security.huks (通用密鑰庫系統)】

    向應用提供密鑰庫能力,包括密鑰管理及密鑰密碼學操作等功能。 HUKS所管理的密鑰可以由應用導入或者由應用調用HUKS接口生成。
    的頭像 發表于 06-05 17:40 ?1338次閱讀
    鴻蒙開發接口安全:【@ohos.security.huks (通用<b class='flag-5'>密鑰</b>庫系統)】

    怎么用SSH密鑰登陸vps?

    使用SSH密鑰登錄VPS(Virtual Private Server)是一種更安全和方便的方式,相比使用密碼,SSH密鑰更難被破解。以下是在Linux系統上使用SSH密鑰登錄VPS的
    的頭像 發表于 02-20 16:29 ?1184次閱讀

    手機與BLE配對PIN密碼如何指定為固定的,而不是動態生成?

    手機與BLE配對時的PIN 6位密碼是BLE自己產生的,如何代碼里指定此密鑰?類似于藍牙耳機和音箱的 1234、8888這樣的PIN配對密碼。不甚感激解答
    發表于 02-19 06:38

    密鑰分層管理體制

    密鑰用于加密密鑰交換密鑰和數據密鑰作本地存儲。
    的頭像 發表于 01-24 10:05 ?815次閱讀
    <b class='flag-5'>密鑰</b>分層管理體制
    主站蜘蛛池模板: 涩涩999| 日韩国产精品欧美一区二区| 欧美黑人经典片免费观看| 午夜一级视频| 高清毛片一区二区三区| 漂亮的av女演员| h片下载地址| 年轻的女职工在线观看| 97色伦图片97色伦图影院久久| 久久麻豆亚洲AV成人无码国产| 亚洲色欲色欲WWW在线丝| 好姑娘BD高清在线观看免费| 亚洲 日本 欧美 中文字幕| 国产嫩草在线观看| 性XXXXX搡XXXXX搡景甜| 国产视频这里只有精品| 亚州视频一区| 久草精品在线| 中文字幕偷乱免费视频在线| 老师湿乎乎两半嫩| 亚洲精品久久久久中文字幕二区| 国产欧美一区二区三区免费| 亚洲精品电影天堂网| 久久er国产免费精品| 4k岛国精品午夜高清在线观看| 男人的天堂色| 闺蜜扒开我尿口使劲揉| 小SB几天没做SAO死了H| 久久99国产视频| 最新国产成人综合在线观看| 妺妺窝人体色WWW偷窥女厕| 抽插的日日液液H| 性啪啪chinese东北女人| 久久福利影院| xx顶级欧美熟妞xxhd| 无码国产精品高潮久久9| 国偷自产AV一区二区三区健身房| 亚洲色无码播放| 欧美激情一区二区三区视频| 国产成人久久AV免费看澳门| 亚洲精品高清中文字幕完整版|