軟體安全技術

2021-04-29 22:08:20 字數 4455 閱讀 1566

在高度保證企業應用程式安全的過程中我們不免會考慮到如下的安全需求,然後我們針對這些安全需求提出各種安全技術:

1、    完整性驗證(integrity verification)。也就是以防止我們需要的內容不被篡改,仍然不吃其真實性。

2、    機密性保持(confidentiality preservation)。通俗的說就是防止內容被別人讀懂。

3、    認證和訪問授權(authenticity permission)。通俗的說就是對來訪者提供的資訊進行分析和判斷,從而確定來訪者身份。然後根據身份決定該來訪者具有什麼許可權。

4、    不可抵賴的證據(nonrepudiation evidence)。舉個很簡單的例子,如果在網上進行相應的支付操作。如果我已經給他們錢了,但他們仍然說我沒給他們怎麼辦?好了,這裡你只要明白我們後面的介紹的技術會解決這個問題的。

5、    審計證據(auditing evidence)。對一些安全性十分重要的資料操作進行紀錄和觀察。

加密技術是其它安全服務技術的基礎,他們的穿插使用相當廣泛。所以在學習軟體安全技術之前了解各種加密技術是相當重要的。

加密技術的分類

1、訊息摘要

訊息摘要主要用於保持資料的完整性,我們經常聽到的校驗和就是訊息摘要的乙個特例。它的演算法是乙個單項函式。也就是直接將輸入的資料進行訊息摘要提取,但絕不能從訊息摘要生成原資料。訊息摘要的演算法分為如下幾類(最常用的是md5和sha-1):

md2:是乙個速度很慢但相當安全的演算法,它產生128位的摘要值。

md4:速度很快,但安全性下降。同樣產生128位的摘要值。

md5:是md4的乙個更安全的版本,同時速度更快。也產生128位的摘要值。

sha:安全雜湊演算法,產生乙個160位的摘要值。

sha-1:在克服sha的一些缺陷基礎上形成的雜湊演算法。

sha-256、sha-383 和 sha-512 提供更長的指紋,大小分別是 256 位、383 位和 512 位。

mac:訊息認證碼,使用秘密金鑰和訊息摘要演算法來建立訊息摘要。我們可能經常會疑問,我們有了訊息摘要為什麼還要認證碼呢?聽我給你舉個例子,前面的提到的訊息摘要,只要有明文和演算法,誰都可以生成同樣的訊息摘要,但有時為了特殊的目的我們需要只有特定的人才能生成這個摘要。好了,那怎麼辦?通過在生成訊息摘要的過程中加入相應的金鑰,從而使生成的訊息摘要在沒有金鑰的情況下難以生成。

2、對稱金鑰(私鑰加密)

對稱金鑰應該是相當強壯的資訊加密演算法。這和我們生活中的鑰匙極為相像。例如你家的門鎖可以有好幾把鑰匙,並且這些鑰匙都相同。在現實生活中,你可以將做好的鑰匙收遞手交給你的親人,但在網路中就變了,你要通過網路來傳遞這把鑰匙。所以對鑰匙的保護又需要相應的加密技術。好了,通過這個通俗的例子,你應該知道對稱金鑰幹什麼?它的弱點在**?等問題的答案了吧。下面是一些最普通的對稱金鑰演算法:

des:des(資料加密標準)是由 ibm 於上世紀 70 年代發明的,美國**將其採納為標準,使用56位的金鑰。

3-des(tripledes):該演算法被用來解決使用 des 技術的 56 位時金鑰日益減弱的強度,其方法是:使用兩個金鑰對明文執行 des 演算法三次,從而得到 112 位有效金鑰強度。tripledes 有時稱為 desede(表示加密、解密和加密這三個階段)。

rc2和rc4:可以使用2048位的金鑰並且提供了乙個十分安全的演算法。他們都來自於領先的加密安全性公司 rsa security。

rc5:使用了一種可配置的金鑰大小。也來自領先的加密安全性公司 rsa security。

aes:aes(高階加密標準)取代 des 成為美國標準。它是由 joan daemen 和 vincent rijmen 發明的,也被稱為 rinjdael 演算法。它是 128 位分組密碼,金鑰長度為 128 位、192 位或 256 位。

blowfish:這種演算法是由 bruce schneier 開發的,它是一種具有從 32 位到 448 位(都是 8 的整數倍)可變金鑰長度的分組密碼,被設計用於在軟體中有效實現微處理器。

pbe。pbe(基於密碼的加密)可以與多種訊息摘要和私鑰演算法結合使用。

3、非對稱金鑰(公共金鑰)

我們在介紹對稱金鑰的時候舉了乙個例子,提到了金鑰傳輸的安全問題。並且在網路中的傳輸雙方並不是我們現實中的「親人」關係。那麼公鑰正好解決了這個問題。我這裡舉個通俗的例子,例如你有個信箱(物理信箱),開著乙個縫隙(公鑰),大家都能往裡塞東西,但是一旦賽進取,那可不是大家都能取到的,只有擁有信箱鑰匙(私鑰)才能得到。哈哈!就這樣。公鑰就這樣,不要擔心它多難理解。當然當我們反過來理解的時候就有些和信箱不同的地方。也就是用私鑰加密的東西只有對應的公鑰才能進行解密,這種演算法經常被應用在數字簽名上。其實在現實中你可以將公鑰技術和私鑰技術結合起來完成資訊保密,因為公鑰的計算速度相當慢,比私鑰慢大約100-1000倍。下面是一些非對稱金鑰演算法列表:

rsa:這個演算法是最流行的公鑰密碼演算法,使用長度可以變化的金鑰。

diffie-hellman:技術上將這種演算法稱為金鑰協定演算法。它不能用於加密,但可以用來允許雙方通過在公用通道上共享資訊來派生出秘鑰。然後這個金鑰可以用於私鑰加密。

需要注意的是私鑰和金鑰是成對的,並且不能用乙個生成另外乙個,特別是不能用公鑰生成私鑰,否則就麻煩了。

我們經常在論壇中中見到管理員、斑竹等身份標識,並且我們更明白擁有不同的身份它們的許可權也同樣有差別。但我們很想擁有管理員的許可權,我們的突破口應該在**呢?當然是獲得乙個管理員的賬號,這樣就可以被系統的認證系統識別。通俗的說就是要讓系統的認證識別器確認你是管理員身份就可以了。呵呵,沒那麼容易,因為各個系統都具有嚴密的認證體系,不象一些小朋友做的認證邏輯處在sql語句邏輯上那麼簡單。

認證的實現方法多種多樣,真的,我以前做**的時候總是想當然地進行使用者認證。但其基礎技術有如下列表:

基於口令的身份認證

基於令牌的物理標識和認證

基於生物測定學的認證

基於證書的認證

下面就分別將這些認證做一介紹:

1,基於口令的身份認證

太熟悉了,不是嗎?這裡只很想告訴口令暴露的過程以及保護的過程。我們通常見到的口令認證方式是在傳輸過程中口令完全暴露,並且在伺服器端的口令儲存上也完全是明文的形式,造成的後果是口令完全被暴露,很容易被監聽。那麼如何保護這些過程中的口令呢?暫時的思路是:建立在安全傳輸層的基礎上,內部口令不以明文形式出現。

2,基於令牌的物理標識和認證

功能我們不用說,當然是非常強大,但代價昂貴。你見過這樣的認證嗎?呵呵,很少的話,就了解一下就行了。

3,基於生物測定學的認證

想想就知道了,你的指紋、眼睛視網膜等可真是獨一無二啊。呵呵,其複雜性也是很大的。我都不知道^^

4,基於證書的認證

近年來相當流行的認證技術應該是基於證書的認證。證書的概念和我們現實中的畢業證書、學位證書等沒有多大差別。上面可以記載一些事實資訊(特別是某一實體),那當然差別主要體現在數字技術的特殊需要上。其實證書就是乙個資料塊,主要包括公開金鑰、主體相關的資訊、證書有效的日期、證書發行者的資訊和證書發行者生成的簽名。

不是「親人」那我們就得搞清楚對方是什麼?不然的話,我們怎麼能把「她」的東西拿來用呢?或者怎麼能把咱們的東西給「她」呢?「她」得拿出個什麼憑據吧?呵呵,那當然。這無可非議,可能現在你更急切的就是想知道這個證書的簽發和應用過程吧?好了。我們繼續。

我們前面已經談過將公鑰技術反過來可以應用於數字簽名。但這種前面誰都可以籤的,數字簽名僅僅能解決****真是你擁有公鑰的主人,但並不能說明該主人就是乙個多麼「可愛」的傢伙。哎!完了,沒法確定她是否「可愛」了。但我倒有個主意,我們去找乙個特別了解此人的人(當然要權威了)問問看此人是否信得過。哈哈,就是這樣,我們經常說的ca機構就是幹這事情的。爽!那麼整個過程如何呢?

其實整個過程很簡單,我就認為是二次數字簽名就是了。第一次首先需要證書的實體將自己的資訊和公鑰提交給ca,ca確認該組織的可信賴之後,就用自己的金鑰對該實體的資訊和公鑰進行簽名。最後被簽名的資訊會就叫證書。站在使用者的角度,使用者首先接到乙個證書,當然會根據ca(可信)提供的公鑰進行解密,如果能解密,當然就可以獲得可信賴的資訊和實體公鑰。然後由實體公鑰再進行前面我們介紹的數字簽名解密步驟。呵呵,就這樣,由介紹完了。

安全套接字層(ssl)和取代它的傳輸層安全性(tls)是用於在客戶機和伺服器之間構建安全的通訊通道的協議。它也用來為客戶機認證伺服器,以及(不太常用的)為伺服器認證客戶機。該協議在瀏覽器應用程式中比較常見,瀏覽器視窗底部的鎖表明 ssl/tls 有效。

tls 1.0 和 ssl 3.1 一樣。

ssl/tls 使用本教程中已經討論過的三種密碼術構件的混合體,但這一切都是對使用者透明的。以下是該協議的簡化版本:

・    當使用 ssl/tls(通常使用 https:// url)向站點進行請求時,從伺服器向客戶機傳送乙個證書。客戶機使用已安裝的公共 ca 證書通過這個證書驗證伺服器的身份,然後檢查 ip 名稱(機器名)與客戶機連線的機器是否匹配。

・    客戶機生成一些可以用來生成對話的私鑰(稱為會話金鑰)的隨機資訊,然後用伺服器的公鑰對它加密並將它傳送到伺服器。伺服器用自己的私鑰解密訊息,然後用該隨機資訊派生出和客戶機一樣的私有會話金鑰。通常在這個階段使用 rsa 公鑰演算法。

・    然後,客戶機和伺服器使用私有會話金鑰和私鑰演算法(通常是 rc4)進行通訊。使用另乙個金鑰的訊息認證碼來確保訊息的完整性。

軟體測試技術 安全性測試

安全性測試是一項迫切需要進行的測試,測試人員需要像黑客一樣攻擊軟體系統,找到軟體系統包含的安全漏洞。1 網頁安全漏洞檢測 一些設計不當的 系統可能包含很多可以被利用的安全漏洞,這些安全漏洞如同給遠端攻擊者開了乙個後門,讓攻擊者可以方便地進行某些惡意的攻擊。例如,公共漏洞和披露 cve commonv...

金山再發免費安全軟體 引入專業防毒技術

繼金山衛士之後,金山安全公司日前發布第二款免費安全軟體 金山網盾 金山網盾 定位於使用者的上網安全防護,提供了 修復 首頁鎖定 漏洞免疫等功能,在安全輔助軟體中引入了專業病毒查殺技術。金山安全公司發言人強調,金山網盾產品將永久免費。在金山網盾的發布會上,金山安全公司指出,以上網保護為代表的安全輔助應...

資訊保安技術

最近參加了學校的網路資訊保安大賽,一不小心代表學校參加全省的比賽,以前大一的時候的那份激情都被歲月這把無情的刻刀給磨滅了,現在想拾也沒有力氣了。怎麼辦捏?只有自己重新再學一遍,畢竟這樣的比賽是代表學校去參加,將來找工作也是比較方便的,起碼有了網路實戰的經驗。網路資訊保安決賽主要是搞網路攻防站,需要用...