日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【信管1.15】安全(二)加解密技術(shù)

 硬核項目經(jīng)理 2022-11-14 發(fā)布于湖南

安全(二)加解密技術(shù)

上一篇課程中我們了解到的是很多關(guān)于信息系統(tǒng)安全的概念、等級、分類等內(nèi)容,今天的部分則更偏向于具體實現(xiàn)的技術(shù)。

為了保證信息的安全性(即秘密性、完整性和可用性)需要采用信息加密技術(shù)對信息進行偽裝,使得信息非法竊取者無法理解信息的真實含義;需要采用加密算法提取信息的特征碼(校驗碼)或特征矢量,并與有關(guān)信息封裝在一起,信息的合法擁有者可以利用特征碼對信息的完整性進行校驗;需要采用加密算法對信息使用者的身份進行認證、識別和確認,以對信息的使用進行控制。

其實說白了,就是三件事,一個加密混淆讓別人看不懂,另一個加密解密雙方能看懂,最后一個權(quán)限控制不讓別人看。從這三件事可以看出,加解密技術(shù)是非常關(guān)鍵的內(nèi)容。加密就是把明文內(nèi)容弄成一堆亂七八糟正常人看不懂的數(shù)據(jù),然后解密就是把這堆東西再還原回數(shù)據(jù)明文的過程。在這個過程中,就會牽涉到一系列的算法問題。我們接下來就來看一下比較常見的那些加解密方式,最后我們也會提到一些權(quán)限控制方面的內(nèi)容。

對稱加密

對稱加密采用了對稱密碼編碼技術(shù),特點是文件加密和解密使用相同的密鑰,即加密密鑰是可以當做解密密鑰來使用的。這個和我們下面要說的 非對稱加密 都會有一個 密鑰 的概念,密鑰是一個加密算法中的控制部分,能夠控制加密算法最后生成的密文結(jié)果,而且往往在解密中也扮演重要的角色。比如說這個對稱加密,不管加還是解,都是使用同一套密鑰的,如果密鑰不對,解密的結(jié)果也不會正確。

由于密鑰固定,算法簡單,對稱加密的效率比較高、速度也比較快,但是相對來說可能是不太安全的,因為把解密密鑰交給客戶終端實際上也等于是將加密密鑰給了客戶。在這種情況下,很容易通過反編譯等手段獲得客戶端代碼中的密鑰信息,非常不安全。而且,在下發(fā)也就是客戶第一次獲取密鑰的過程中,也可能會有中途被竊取的可能性。

對稱加密比較出名的包括:AES、DES、3DES、RC-5、IDEA等算法。相信 AES 和 DES 還是非常普及的,使用過的同學應(yīng)該也是比較多的,各個編程語言也都有非常簡單地實現(xiàn)函數(shù)。

非對稱加密

上面對稱加密我們知道是加密方和解密方都持有的是相同的一個密鑰用于加解密。那么其實非對稱加密你也能夠猜到,就是雙方持有的是不同的密鑰?;舅枷胧菍鹘y(tǒng)密碼的密鑰一分為二,也就是我們經(jīng)常會見到的 公鑰 和 私鑰 。通常,我們會用公鑰加密數(shù)據(jù),然后用私鑰來解密數(shù)據(jù),公鑰我們會發(fā)送給客戶,然后他們傳送給我們的信息就是用我們的公鑰加密的,只有我們自己能解開并獲得明文原文。同樣,我們要發(fā)給客戶的數(shù)據(jù),也使用客戶給我們的公鑰來進行加密,數(shù)據(jù)發(fā)送給他們之后,他們也會使用他們自己的私鑰來解密。如果我們使用的不是他們的公鑰,那么數(shù)據(jù)也是無法被他們自己的私鑰解密的。

非對稱加密是不是感覺非常美好?但是,這個算法優(yōu)秀的安全性也是由代價換來的,它的計算量大,破解很難,相對的,效率也會比較差,完全無法和對稱加密的速度相媲美。

非對稱加密最常見的,也是現(xiàn)在基本已經(jīng)成為事實標準的,就是 RSA 算法。它是一種基于 大合數(shù)因子分解困難性 的原理而生成公開密鑰密碼的方式。我們?nèi)粘J褂玫?OpenSSL 生產(chǎn)的公私鑰,Linux/Github 的安全公鑰登錄,還有現(xiàn)在已經(jīng)完全普及的 HTTPS 等等應(yīng)用,都是基于 RSA 。

Hash

哈希算法(Hash)將任意長度報文 M 映射為定長的 Hash 碼 h ,也叫做 散列算法 。它的目的主要是生成指定數(shù)據(jù)、文件或數(shù)據(jù)塊的“系統(tǒng)”,也就是我們的 h 哈希碼。最常見的就是 MD5 和 SHA1 這兩種算法。這個算法是一種單向算法,也就是說,我們可以加密,但是無法解密。當然,現(xiàn)在有彩虹表這種半人工的 Hash 數(shù)據(jù)庫可以用做 Hash 解密,但只要我們在加密數(shù)據(jù)的時候略加變化,這個解密就非常難實現(xiàn)了。

哈希算法應(yīng)用最最常見的場景就是用戶密碼的加密。這個加密最好還不只是一次簡單的 MD5 ,最后還能多套幾次 MD5 并且加 SALT 值。嗯,說得可能比較專業(yè),開發(fā)同學可能都會明白什么意思,如果您不是開發(fā)同學,那這一段不用管它。

數(shù)字簽名

簽名,就是證明當事人的身份和數(shù)據(jù)真實性的一種信息。這個東西我們在很多下載網(wǎng)站都會看到。當你下載某個軟件的時候,這個下載頁面都會有一個 MD5 校驗碼,然后你下載的軟件可以使用一些 MD5 校驗軟件獲得校驗碼,如果是一樣的,就證明你下載的軟件是沒有問題的,而且也是完整的,和網(wǎng)站上的是同一款軟件。在這個過程中,這個 MD5 校驗碼其實就是一個雙方需要對應(yīng)的簽名。

同理,在信息傳輸?shù)倪^程中,如何確保對方和你所接收的數(shù)據(jù)都沒有問題呢?加一個數(shù)字簽名唄。這個數(shù)字簽名可以是 MD5 的哈希串,也可以是 RSA 的加密數(shù)據(jù),這都沒有問題,但目的只有一個,就是你和你通信的對方,你們兩個對這個簽名可以達成共識。因此,這個數(shù)字簽名有保證信息傳輸?shù)耐暾?、提供發(fā)送者的身份驗證以及防止交易中的抵賴情況發(fā)生的作用。

完整的數(shù)字簽名需要滿足三個條件,分別是:簽名者事后不能抵賴自己的簽名;任何其他人不能偽造簽名;有公正的仲裁解決真?zhèn)螁栴}。

數(shù)字信封

在講數(shù)字簽名時,往往還有一個更重要的內(nèi)容是我們不能錯過的,那就是 數(shù)字信封 技術(shù)。它是將對稱密鑰通過非對稱加密(即:有公鑰和私鑰兩個)的結(jié)果分發(fā)對稱密鑰的方法。什么意思呢?其實它就是結(jié)合上面我們學習過的對稱和非對稱加密兩種加密方式的特點而形成的一種獨特的數(shù)據(jù)安全傳輸?shù)姆绞健?/p>

前面我們提到過,對稱加密速度快,但是不安全,因為密鑰在傳輸過程中以及在對端不可控都會帶來安全隱患。但是,這里需要注意一點,這個對稱密鑰是我們控制的呀,而且往往這個對稱密鑰都不會太長,一般會是一些隨機的字符串,取 8、16、32、64 位長度的字符串就夠了。那么,我們可以用非對稱加密來加密這個字符串。非對稱加密的特點是安全性高但速度慢,如果數(shù)據(jù)內(nèi)容非常少的話,其實它的計算效率還是可以接受的,即使是 128、256、512 個字符的對稱密鑰其實使用非對稱加密速度也是很快的。這樣,我們就形成了下圖這樣一個流程。

  • 首先,發(fā)送方將 明文 數(shù)據(jù)通過 對稱密鑰 進行加密,變成 密文 數(shù)據(jù)。

  • 然后,來到左圖的下方,將 對稱密鑰 使用 對方的公鑰 進行加密,變成一個 被加密過的密鑰 。

  • 接著將 密文  被加密的密鑰 一起發(fā)送給接收方。

  • 接收方首先通過 自己的私鑰 解密 被加密的密鑰 ,這樣就獲得了 對稱密鑰 。

  • 最后,使用解密出來的 對稱密鑰 來解密 密文 獲得原始的 明文 數(shù)據(jù)。

上面這個過程務(wù)必要弄清楚,因為它也是我們今天最重要的內(nèi)容。類似于我們真實的普通信封寄信,普通信封在法律的約束下保證只有收信人才能閱讀信的內(nèi)容;數(shù)字信封則采用密碼技術(shù)保證了只有規(guī)定的接收人才能閱讀信息的內(nèi)容。

同樣的,如果接收方想要給發(fā)送方發(fā)送信息,只需要調(diào)換它們的位置就好,也就是接收方變成發(fā)送方,中間的步驟還是完全一樣的。雙方都要持有對方的公鑰證書,說到這個問題,正好引出我們下面的內(nèi)容,那就是公鑰證書體系。

PKI公鑰體系

公鑰基礎(chǔ)設(shè)施 PKI(Public Key Infrastucture,公開密鑰基礎(chǔ)設(shè)施)是以不對稱密鑰加密技術(shù)為基礎(chǔ),以數(shù)據(jù)機密性、完整性、身份認證和行為不可抵賴性為安全目的,來實施和提供安全服務(wù)的具有普適性的安全基礎(chǔ)設(shè)施。它包括 數(shù)字證書、不對稱密鑰密碼技術(shù)、認證中心、證書和密鑰的管理、安全代理軟件、不可否認性服務(wù)、時間郵戳服務(wù)、相關(guān)信息標準、操作規(guī)范等。

PKI 可以實現(xiàn) CA 和證書的管理,密鑰的備份與恢復,證書、加密密鑰和簽名密鑰的分割,支持對數(shù)字簽名的不可抵賴性,密鑰歷史的管理等功能。其中,CA 就是 Certification Authority 認證中心的簡寫。配置過網(wǎng)站 HTTPS 的同學對這個東西一定不會陌生的。前面說過,HTTPS 的基礎(chǔ)就是 OpenSSL 生成的加密公私鑰,那么我們自己生成的證書為什么不能直接使用配置到我們的網(wǎng)站上呢?其實是可以的,不信你可以試試,但是,我們的瀏覽器不認啊。你的生成的證書是沒有問題,但是我們沒有辦法相信你,各個瀏覽器廠商需要有一些中間機構(gòu),并且是有信譽資質(zhì)的中間機構(gòu)來提供擔保,這些機構(gòu)其實就是實現(xiàn)了 PKI 的公司。而我們在各個域名注冊商購買的證書也都是由它們生成的,并且它們還有公鑰管理系統(tǒng)負責分配給客戶端的公鑰。這樣,就實現(xiàn)了一個包括第三方認證并且可以做仲裁方的“公證人”機構(gòu)。

PKI 一般是通過數(shù)字證書的方式向客戶端或者對端發(fā)送公私鑰。數(shù)字證書其實可以看成是又一層加密的數(shù)據(jù),根據(jù)證書規(guī)則及相關(guān)的設(shè)置可以從證書中提取出主體信息、證書序號、有效期、密碼算法標識、公私鑰信息等內(nèi)容。常見的證書格式有 X.509系列、PKCS系列、DER、PEM 等,這一塊做過開發(fā)的同學也不會陌生。

數(shù)字認證

認證(Authentication),又稱為鑒別、確認,它是證實某事是否名副其實或者是否有效的一個過程。認證這個東西也是我們非常常見的,比如說你登錄各個網(wǎng)站或者 App 的賬號,你的網(wǎng)游賬號等等,在這些賬號體系中,都會有認證授權(quán)功能的存在。比如說,為什么你登錄進淘寶看到的是你自己的購物訂單,而看不到別人的購物訂單。這就是因為你的賬號通過了屬于你的身份的認證,而沒有其他人的身份認證,當然就不能看到別人的訂單啦,如果要是能看到那才真是亂了套了。

認證系統(tǒng)常用的參數(shù)有口令、標識符、密鑰、信物、智能卡、指紋、視網(wǎng)紋等。它與數(shù)字簽名的區(qū)別主要有:

  • 認證總是基于某種收發(fā)雙方共享的保密數(shù)據(jù)來認證被鑒別對象的真實性,而數(shù)字簽名中用于驗證簽名的數(shù)據(jù)是公開的。

  • 認證允許收發(fā)雙方互相驗證其真實性,不準許第三者驗證,而數(shù)字簽名允許收發(fā)雙方和第三者都能驗證。

  • 數(shù)字簽名具有發(fā)送方不能抵賴、接收方不能偽造和具有在公證人前解決糾紛的能力,而認證則不一定具備。

訪問控制

對于訪問控制來說,一定是跟登錄有關(guān)的,如果沒有登錄過程,那么就無法知道你這個用戶應(yīng)該是有哪些權(quán)限,也就無法通過這些權(quán)限信息來進行訪問的控制。在登錄之后,我們常見的網(wǎng)絡(luò)授權(quán)方案包括以下 4 種:

  • DAC(Discretionary Access Control)自主訪問控制方式:該模型針對每個用戶指明能夠訪問的資源,對于不在指定的資源列表中的對象不允許訪問。

  • ACL(Access Control List)訪問控制列表:該模型是目前應(yīng)用最多的方式。目標資源擁有訪問權(quán)限列表,指明允許哪些用戶訪問。如果某個用戶不在訪問控制列表中,則不允許該用戶訪問這個資源。

  • MAC(Mandatory Access Control)自主訪問控制方式:該模型在軍事和安全部門中應(yīng)用較多,目標具有一個包含等級的安全標簽(如:不保密、限制、秘密、機密、絕密);訪問者擁有包含等級列表的許可,其中定義了可以訪問哪個級別的目標,例如允許訪問秘密級信息,這時秘密級、限制級和不保密級的信息是允許訪問的,但機密和絕密級信息不允許訪問。

  • RBAC(Role-Based Access Control)基于角色的訪問控制方式:該模型首先定義一些組織內(nèi)的角色,如局長、科長、職員,再根據(jù)管理規(guī)定給這些角色分配相應(yīng)的權(quán)限,最后對組織內(nèi)的每個人根據(jù)具體業(yè)務(wù)和職位分配一個或多個角色。

其實不用我多說,現(xiàn)在大部分的比較復雜一點的后臺管理系統(tǒng)基本都是 RBAC 為主的,而一些小的比如說小網(wǎng)站、官方網(wǎng)站之類的后臺,直接使用 ACL 就可以了(就是用戶和目錄對應(yīng)上,哪些用戶有哪些目錄就在右邊目錄菜單就只展示這些目錄這種最簡單的權(quán)限管理功能)。

總結(jié)

總算到結(jié)尾了,你以為惡夢結(jié)束了?不不不,今天的內(nèi)容基本都是重點。特別是對稱和非對稱加密、數(shù)字信封、PKI 和 訪問控制 這四個部分。如果你沒有接觸過開發(fā),那么這一篇估計是很崩潰的,一點也不亞于之前我們學習的計算機網(wǎng)絡(luò)相關(guān)的內(nèi)容。即使很多做開發(fā)的同學,如果沒有接觸過類似的加解密以及相關(guān)安全網(wǎng)絡(luò)傳輸?shù)臉I(yè)務(wù),估計也會有一點慒圈。就和其它的知識一樣,光加解密技術(shù)就可以寫一本厚厚的書,更不用說整個信息安全體系了。所以,我們這才只是入個門,沾了點信息安全的皮毛而已,還是那句話,不管你是考試還是當做談資,記下來多少還是會有好處的。

如果你有開發(fā)經(jīng)驗,可以看一下我之前的 PHP 加解密 相關(guān)的系列文章:https://www./t/加解密

參考資料:

《信息系統(tǒng)項目管理師教程》

《某機構(gòu)培訓資料》

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多