顯示具有 CISSP 標籤的文章。 顯示所有文章
顯示具有 CISSP 標籤的文章。 顯示所有文章

2009年9月6日 星期日

K書筆記本-Physical/Environmental Security(01)

實體安全,那不就是保安囉!保安!保安~~!這個不是周星馳的電影,實體安全是資訊安全防止竊取等等的事件,
可能在實際環境上會發生的問題,進而威脅到資訊安全,因此在於實體安全是一個相當重要的議題
那麼在安全的金三角中可以說A.I.C.是三者並重,但是…在實體安全之上有一個特別的規範那個叫做”People first”(人命關天)
因此有關威脅到人命的問題,都必須以人為最先安全,例如機房著火,不可能叫管理人員去滅火
警衛可能會有遇到帶槍的入侵者,因此最好有防彈的設備或設施。

那麼做實體安全上的主要目的有那些呢?deter(威嚇)、delay(延遲)、detect(偵查)、assess(評估)、Respond(回應)
deter(威嚇):主要是讓攻擊者或入侵者打消意念。
delay(延遲):增加偵查的時間及增加回應的時間和機會。
detect(偵查):偵測雖然是推測攻擊者的意圖,但我們不可能一直延遲攻擊者去做任何攻擊的動作,偵測必須更加有效且即時。
assess(評估):是比較舊的說法,指第一份的回報一般而言都是警告,第一次偵測時,往往需要時間去評估次回攻擊的方法。
Respond(回應):這個動作是指在發生任何事件(event)時,在它成為事故前應涵蓋在事故回應計劃之內。

那麼實體安全上又有那些威脅,從最大的範圍一路到中心核心,最大的範圍像是自然的環境,次之則是工具系統
再來就是人為的問題了…
Natural/Environmental(自然環境):像是考慮大自然的問題,例如水災、颱風、地震,在整個環境之前,
應先針對所在的地點問題加以防範,例如:台灣地處於地震帶,又是容易有颱風及海洋型氣侯,那麼在選擇機房設置時
當然要特別設計,若將機房設置在地下室,如果到時侯因為颱風淹水時呢?再來,海洋型氣侯空氣較為鹽濕
那麼備份的磁帶應該要置放於更好的保存環境,再來因為地震發生的問題,像是921,台北不少地方都有崩塌
那麼在選擇工作處所時,是否要考慮一下建築物的防震系數。
Utility Systems(工具系統):這個是相當容易理解的,像是水電、空調(HVAC),考慮到有可能因為供電的問題造成電力全失
因此在選擇電力進入配電盤時,應該選擇兩個不同的變電所所提供的電源,而UPS的配置也應該要考慮有所備援
甚至連伺服器所用的雙入電源,也應該選擇兩個不同的電力主線,以免機房電力問題而造成服務中斷,空調的部份
也應考慮到其溼度、溫度(溼度太高設備會鏽蝕、太低會有靜電),畢竟是給機器散熱用而非給人員使用
因此機房的HVAC不應該讓任何人員都可以操作,而也應該要將人員操作的環境和機房分隔,
以避免影響人員的健康問題
Human-made/Political Events(人為或是政治事件):像是爆炸、故意破壞、偷竊、恐佈攻擊、暴動…等等問題
據IDC的統計,所有的資安事件有80%是人為的因素,例如像誤觸電源、拔錯線…等等問題
此類問題應該建立好的事故回應計劃和好的預防(Preventative)計劃

那麼會有那一些惡意的行為威脅到安全的對策?
Theft(偷竊):針對偷竊的對稱包涵有電子門禁系統(EAC)、入侵偵測(IDS)、門上鎖、鑰匙的控制還有入侵陷阱。
Espionage(商業間碟):商業間碟一定是有特定的目標,最佳的處理方式可以由進入公司的背景確認(background check)、職務輪調(job rotations)。
Dumpster Diving(廢棄物處理):公司內的機密文件的廢棄作法與一般文件應該要有所不同,若以相同的方式,可能對手直接買通清潔公司
將要廢棄的文件直接運往對手那邊,因此在廢棄的重要文件應該要有其廢棄的policy和procedure,例如軍方的做法,銷毀要有監銷官。
Social Engineering and shoulder surfing(社交工程及肩窺):這些問題可以透過教育訓練及其它的相關抽查方法,來驗證是不是有效的教育。
HVAC;Heating, Ventilation and Air Conditioning Access(熱對流及空調存取):如上所提的,機器使用的HVAC應與人員使用的分隔
尤其是針對那些特別的區域應該有良好的控制原則。

經過以上的基本幾項實體環境安全的問題的解說,大家是不是有體會到實體安全不只是只有周星馳電影中的保安問題,更多的議題是在人的問題
因此這些問題都必須透過好的管理規則並且落實,這樣一來,資安不會因為做而做,而變成型式上的空談…

K書筆記本-Cryptography(09)

法律問題…
上篇提到密碼學的應用會有法律上的問題,見鬼了,用應用密碼會有什麼問題呀,其實密碼學的應用是為了隱藏不想讓別人知道的秘密
若今天黑道份子在傳遞一些交易訊息時,利用了密碼系統將這段訊息重重的加密,並且用的是較高階的密碼系統
那麼…情治單位真的拿他們沒辦法了,因此在密碼學法律問題常就有三個議題類型:輸出控制、輸入控制及國內使用控制。
輸出控制是希望將國內較嚴僅、用於情治使用的密碼系統或密碼系統產品流出,以避免被他國的情治單位取得而加以破密分析。
輸入控制則是降低由國外輸入較高階的密碼系統,以避免滲透的情治人員利用這些密碼系統穿透了國安系統。
國內使用控制較為廣義,泛指所有使用國內密碼系統的人應該要加以控制。

密碼系統的應用上,確實帶給我們很好的機密的資訊隱藏,本義是很好的東西,但是就怕利用的人心懷不軌,因此在法律上的議題
除了國際間的相互合作外,很難有其它更好的方法來抵制密碼系統應用於壞的用途,其中國際間現在共有的一些規範
也有針對軍方使用的一些合約協定,像Wassenaar Arrangement(瓦聖納協定)主要是針對一些較不安全的國家,將較敏感的高科技技術輸入
例如像是中國、北韓、伊拉克等等的條文,現在簽署的國家已超過四十個。
還有像是歐洲防制網際網路犯罪委員會(Council of Europe Convention on Cybercrime),雖然名為歐洲,但是會議的觀查員都是來自於其它國家
當然,歐盟本身針對他們所使用的密碼系統,也加以聯合統一管理,針對破密分析工具則不會輸出給其它國家
法律上的本質是以限制,原因是被一旦遭到洩漏,可能造成的傷害會超過於國家經濟的收入,但是於學派立場,則是希望開放密碼系統的輸出入
如此一來,各國或是其它學術機關就可以針對其它密碼系統的強項,來補足自已的密碼系統不足的地方,這個是很兩極的議題
至今仍然是被置於天平的兩端之上。光是一個密碼系統,不管是加密還是破密分析,都一再的強調對經濟、國安上的衝擊
若是貿然的進行,當然會造成相當大的傷害,因此對於此部份,也只能交給時間來處理了。

破密分析
破密分析是研究密碼系統或是演算法強度的一種挑戰,其中,到底那些面向要考慮的呢?
Key Space:到底有多少的支key可以被拿來應用。
key size:可用的key的長度為多少,雖然不是愈長就愈強,但是在破密的分析中,差1bit就天南地北了。
演算法本身:開發一個密碼演算法,是必須達到一定的強度,預防破密分析快速的找到演算的規範。
正確完成:太多的問題是與密碼完成時沒有選擇對的架構就產出這個產品,其中包含key management, Social engineering,亂數產生的掌握
不夠的配對組合,很容易就被找到問題的所在。
當然,在破密分析上面會針對一些密碼系統的幾個方向來找問題,也是密碼系統的幾個常見的弱點,其實與上面所提到的內容差異不大…
不好的key management:可使用的Key太少,不夠隨機,或者是key的加密與資料的加密是同一把key。
Malleability(延展性):一個密碼系統的若在演算明文產生為密文的過程中而附加上次的資訊可能讓明文與密文產生某種連結的關係,
而容易使Chosen-ciphertext attack成功的破密。
不好的亂數產生及過度的發散或造成混亂,這些都有可能成為破密分析中得分的那一球,破密分析不一定是要做某種數或是值的取出
更深層的意義是告訴我們應該使用更安全的密碼系統,一個封閉的演算法並不一定是安全的,接受大眾公開的驗證並且修改到可接受的範圍
這樣的心態才能正確的使密碼系統更加安全,例如選用標準的解決方法(FIPS140、Common criteria evaluation)、
高工作因素的(例如:破密的過程與取出的內容效益與時間比不成正比的),再來就是上面所提到的,選擇接受公開驗證的密碼演算法。

那麼到底破密分析有那一些目標呢?其實,有人認為,破密是一門科學藝術,因為它所投入的往往是一場耗費多時只有一點點進度的比賽
但一但找到關鍵點,則會找出讓人覺的不可思議的問題,基本上破密分析共有:
Attacking the Key, Algorithm, Implementation, Data (ciphertext or plaintext), People(Social Engineering),
一位很有名的駭客說的:往往Social engineering是最有效的破密方法,我直接取得key,也直接取得密碼演算系統,我的目的只是它傳遞的訊息
當然,破密的技術又有那一些呢?
Brute-force attack:大家應該不默生吧,這個叫做暴力破解,但暴力破解可不是猜密碼給系統去演算對或不對喲…,
幾乎任何加密系統沒有暴力破解解不開的,根據摩爾定律(每隔18個月,處理器的速度加倍提升),但是暴力破解還是有條件的
它必須先取得密文,接下來就是時間與密碼系統的竸賽了。

破密攻擊
常見的攻擊就以明文(Plaintext)與密文(Ciphertext)來區分,當然各別的破密攻擊的作用和需求就完全不同了
在明文的攻擊方面(主要是為了取出key或是演算法的內容)
known-Plaintext attack(已知明文攻擊):這個並不是只有取得明文喲,是連密文都知道的,透過這個組合去了解演算法的內容和key。
Chosen Plaintext attacks(選擇明文攻擊):是指一次丟好幾組的明文到演算法中,去觀查其密文的變化進而找到key。
Adaptive chosen plaintext attacks(適合的選擇明文攻擊):以選擇某一組明文並且修改去觀查密文的變化,也是用來找到以密文反推明文方法。

在密文的攻擊方面(主要是為了知道其明文的內容)
Ciphertext-only attack(僅有密文攻擊):利一堆密文希望可以還原出明文來,此類型的攻擊現代密碼學幾乎是不可能成功了。
Chose-Ciphertext attack(選擇密文攻擊):已經知道密文轉回明文的方法,以自選的一組密文來推出明文是什麼。
Adaptive Chosen Ciphertext attack(適合的選擇密文攻擊)與Adaptive chosen plaintext attacks相反,精選的密文來測試演算法。

在上述的破密攻擊中,只有know plaintext attack是已取得一組密文和密文的組合,其它都是只有取得密文或明文
其它的還有幾種基礎的攻擊,像是:
Meet-in-the-middle attack(中途攻擊):是成攻的破解DDES的分析法,藉以取明文與密文之間的變化去取得演算法的內容,屬於know plaintext attack。
silde attack:以觀查key schedules的重覆、具體的使用去推演出下一個key。
Main-in-the Middle attack(中間人攻擊):又稱為雙面人攻擊,即是attacker對Jason偽冒Silvia,對Silvia偽冒Jason,任何傳遞的資訊都被attacker看光了。
Side Channel attacks:這個就難解釋了,是一種透過觀查其周邊的洩露出來的訊息做攻擊,例如演算RSA時用掉的電量、時間、時頻…等等周邊的
資源的消耗來試圖推算出金鑰,但是…這個方法不需要使用任何的密碼系統露洞,就可以進行分析,雖然有學者稱為欺騙
但破密分析最終就是要找到KEY。

另外,針對不同的Ciphers,不論是以Stream或是block的特性不同,也有不同的應對攻擊:
Stream(串流):Frequency(頻率)分析及Statistical(統計)攻擊,如果IV, keystream不夠random,則容易受到這兩種攻擊而解出key.
Block(區段):linear(線性)破密分析、Differential(差分)破密分析, linear-Differential(線性差分), Algebraic(代數)攻擊、frequency(頻率)攻擊。
以上的分析或是攻擊法都在前面的章節中有說明,在此就不再特別說明了。

而hash functions也有兩個基礎理論的攻擊法,Dictonary(字典) attacks以及Birthday(生日) attacks,這兩種攻擊都有個別的特性:
Dictionary attacks:是以找到特定文字的hash組合,一般是用來猜password的功能,另外最近常見的是Rainbow table
需預先去產生所需的text-digest pairs資料庫,也是屬於Dictionary的一種。
Birthday attacks:是基於一種一個班級的學生有23人生日是同一天的機率高到50%,若人數達到60個人,則機率更達到99%,同理,在有限的長度之下
要產生一組hash有可能重覆的機率就大幅的提升。

以上的攻擊都是屬於科技端、數學理論的攻擊,當然也會有非科技型態的攻擊,其中最好用的就是Social Engineering
最好的方法就是針對未有資安概念的實員進行攻擊,尤其是在整個開發的過程隨即攻擊相關人員,預先取得密碼演算方法或是key。
另外…在國外的影集常常出現的,偷竊是建構在實體安全之上的,雖然資料被經過加密,但若我連設備和加密工具一起偷竊走,那麼即使是再強的
密碼演算系統,恐怕…也沒有太大的用處了…

Steganography(隱匿法)
這是一種將資訊隱匿起來的一種密碼方法,一般是使用在於儲存圖片的資訊,以每一個區段中的最後一個bit裡面,因此可以隱藏一些資訊,
也可以說是一種cover channel,在這種方法之上,就容量上來看似乎沒有差別,在肉眼的看來,也沒有啥差異,但是…透過MD5 Hash value中
可發現兩張圖片就很大的差異…實作的部份可以透過像s-tools來達成。

接下來像是數位浮水印(digital watermarking)、數位權利管理(Digital Right Management),數位浮水印是將一個數位的資訊、版權簽入
屬於一種隱匿法,一般又分為可見和不可見的分類,可見的是像一般的浮水印一樣,崁在檔案中,而不可見則是將檔案做小符度修改
使用者並不會有太大的查覺,但是透過修改時則無法被存入,這除非有所有人的授權,否則是無法將浮水印移除抹滅的。
DRM則是則是將數位浮水印的技術延伸去用來保護數位媒體,它結合了硬體及軟體的框架,當然DRM也是一種隱匿法
如果一個具有DRM的檔案移轉到另一台電腦上去使用,因該台電腦並沒有取得DRM的授權,則無法使用這個檔案,也會被禁止使用。

密碼學這個領域雖然組合了密碼系統及演算法,但是更重要的是著重在訊息完整訊控縐,而數位簽章及憑證的應用也加強了訊息的安全強度
最後,跟大家討論破密分析及密碼的應用,尤其是一些資訊隱匿的方法,都是密碼的實際應用,希望這章節可以給大家帶來一些實際應用的想法。

K書筆記本-Cryptography(08)

密碼學是一門這麼複雜的應用數學,但是應用在資安領域中,重點不只是只有在於機密性,更重要的是確保了完整性
很多人往往都只有把密碼學定義在機密性,但等等所看到的內容,全部都與完整性佔了相當大的關係
使用密碼系統大致有下列幾項應用:資料儲存的安全(Data storage)、E-mail、網路協定(Network Protocols)
那麼依照其動作的內容有幾項基本的目的:確保訊息完整性(message integrity)、確保訊息機密訊(message confidentiality)
訊息可信賴性(message authenticity)、 傳送者及接收者的驗證(sender/recipient authentication)、傳送者及接收者的不可否認性
(sender/recipient Non-repudiation)

當然,提到了應用,就不可能只用一種加密系統來運作,一定是混合多種的密碼系統最大的強度就是混合各項安全控制
混合有對稱(Symmetric)、非對稱(Asymmetric)及訊息完整控制(MICs),等等的各種混合系統的作法
下圖流程為數位信封(Digital Envelop),key用於加密為encrypting key(≠ encrypting)
image
當然,上圖所示的,僅僅是混合了兩種的密碼系統,極緻的混合式密碼系統,則如下圖所示:
image
1.訊息以Symmetric key加密,再將Symmetric key以接放者的public key加密傳遞給接收者。
2.訊息加密後,再以hash function產出digiest再以發送者的private key加密配合訊息的密文傳遞給接收者。
3.接收者收到symmetric key的密文後,以接收者的private key解密後,再將訊息的數位簽章內容與訊息密文以Symmetric key解密。
4.接收者再以發送者的public key將收到訊息的數位簽章解密取出digest。
5.接收者將訊息經過hash function取出digest與由數位簽章的digest比對,若比對的內容是相同、並且正確則完成訊息的傳遞及傳送者不可否認性。
6.接下來接收者再將digest以接收者的private key加密傳遞給發送者。
7.發送者收到由接收者送出的數位簽章後,以接收者的public key將digest解開,與自已發送出去的digest比對正確則完成接收者的不可否認性。

較常應用的密碥系統最常應用於mail的傳遞(首重於訊息完整性及加密服務,但有幾個加入了金鑰管理及不可否認性)
而幾個常見的安全郵件協定有:
MSP;Message Security Protocol:支援訊息標示及數位簽章的接收。
Privacy Enhanced Mail(PEM):設計時是以PKI為基礎,包含了支援X.509憑證及它使用了DES以CBC mode
亦可選擇使用ECB mode或是3DES-EDE2做為金鑰管理,但不相容於MIME。
MIME Object Security Service(MOSS):是以MIME為基礎並取代PEM的協定,PEM則是一種封閉的組合及標準的PKI架構。
Pretty Good Privacy(PGP):保護訊息的機密性及完整性,訊息的加密是使用亂數選擇的對稱式session key加密,pgp是一種額外的保護,
可以選擇以RSA, DH及EIGamal的非稱式金鑰加密,及x.509公開金鑰憑證,相容於CA-Based任賴模式
可以相容支j援MIME、S/MIME或PGP/MIME為基礎的MOSS等。預設值為IDEA加密,數位簽章用RSA,MICs是MD5。
S/MIME:是由RSA三者開發,是一個實際的標準,是以公開金鑰加密標準(PKCS)為基礎,使用RSA非對稱金鑰加密,以DES做為對稱加密金鑰
以及以SHA-1為Digest的演算方法。傳送者以數位簽章後再用收件者的公鑰加密。

而常用的安全網路協定則有:S-HTTP(Application layer),SSH;Secure Shell(Transport Layer),SSL;Secure Socket Layer(BetweenTransport and Application)
TLS;Transport layer security(Transport Layer),WPA;WiFi Protected Access、WPA2;802.11i Wireless Lan…等等(於Telecommunications and Network Security)
再詳加說明,本篇著重於密碼的應用,其實後續還有法律相關的問題及破密分析、資訊隱藏的部份,應該於近日可以與各位分享我的心得,謝謝~

2009年9月5日 星期六

K書筆記本-Cryptography(07)

密碼學中不斷的提到了金鑰(KEY)這一個字詞,KEY的產生是一個重大的議題,然而…對於KEY的管理才是密加碼密最大的重點
各位想想,本來買了一個七八十萬的保險櫃,用了最難開的鎖,但是鑰匙卻放在一個大家隨手可得的地方
那麼,這個保險櫃等於買沒也沒買,因此,在金鑰的管理(Key Management)成了整個密碼學的重要核心,key不小心流失了
任何再安全的作法都沒有任何作用了,在金鑰管理中最重要的幾個議題,例如:key的建立及推衍、key的散發及更新
確認金鑰的可信、金鑰專有的儲存及廢棄、回復或廢止遺失的金鑰、管理應用程式的金鑰長度…這一些都是在金鑰管理的各項議題。

Key derivation Functions;金鑰推衍函數(KDFs):是一種以金鑰推衍函數去產生多個非同步金鑰以供分享解開秘密內容
即是以一現存的Secret key去產生一把新的Session keys 的技術。並且結合了三種不同的值(hash function;MD5或SHA1, key;
可能是密碼或是其它的值, salt;可以說就是IV,亂數產生以附加到key上去防止攻擊並且達成更大的差異性)去產生key
接下來依照上述的方法去執行產生可用的key。

Key Agreement:在這個部份有三種常見的key agreement schemes(Diffie-Hellman, Unified Diffied-Hellman又稱為DH2,
MQV(Menezes-Qu-Vanstone))DH設計了非同步金鑰,而DH是屬於PKI同步金鑰
而且透過數學的方法使Privet key不會在網路上傳遞,並且能達到key的excahange DH只有一對key pair
而DH2則是屬於兩把key pair的演算法,最後MQV則是利用了很短暫的時間產生出private key及public key
並且信賴的每一把靜態的Key去分享秘密的的金鑰

Diffie-Hellman key Agreement的運作是很數學理論的,而且,在整個金鑰交換的遇程之中,並沒有讓雙方的私鑰流露出來
例如:Jason 和Silvia要分享一張很私密照片,而雙方的資訊構通要以DH做金鑰傳遞,首先:
1.Jason和Silvia共同選擇了Y的X次方乘上(Mod P),Y和P各別是11及13,這個公式則變成11的X次方(Mod 13)
2.接下來Jason和Silvia各別選擇一個秘密的號碼,Jason選擇2,Silvia選擇5,這個時侯雙方的私鑰就定好了
3.Jason將這個秘密套入公式,則是121(mod 13) = 4,Silvia將這個秘密套入公式則是161,051(mod 13) = 7。
4.演算之後將這兩個數字分別傳給對方,Jason告訴Silvia算出來的數字是4,Silvia告訴Jason算出來的數字是7
5.接下來各別再把取得的這個數字重新的套入公式中
Jason將7套入49(mod 13) = 10,Silvia將4套入公式1024(mod 13) = 10。
6.這個時侯,同步金鑰就選定以10做為雙方的secret key。
由上例指出,Jason和Silvia雙方並沒有將私密數字流露在雙方的傳遞上,只有選擇了公式的演算和演算的結果
因此確保了秘密金鑰的內容

確認金鑰的可信性是整個議題中最重要的議題之一,如何信任,和信任模式又有什麼內容(如何知道那些key是可以信的
如何知道那些金鑰的使用是人還是機器),還有兩個信任模型(網路的信任模型;web of trust model,階層式的信任模型)
憑證建立的可信度(馮證提供了基本的可信公鑰;PKI - Public key infrastructure,PKI也可以說是可信賴的人、物:托管單位)

PKI是一種延伸給各項其它服務彼此間具有信任的模式,它提供了幾種信任的方式
它建立了個人、實體的公鑰(與各別的人有實際的連結) ,可證明公鑰是由數位憑證所發出
並且各個不同的CA之間的信任是可提供個別不同的CA發出的憑證相互信賴(Cross-Certification)
憑證(Certificate)的是由憑證管理中心(CA;Certificate Authority)所發出,CA是具有公信力的第三方單位
KDC則是金鑰的發散中心 ,KDC提供了共通的金鑰,但是,所有散發出來的金鑰都是由KDC的私鑰所推衍出來的
因此若KDC的私鑰被取得,那麼KDC則沒任何安全可言,相對的,CA的抵禦就相對的強,入侵者即使成功的入侵了CA
還是無法得知CA的私密金鑰,因此無法偽造金鑰 ,CA對於個人及機關提供認證及憑證簽發的服務
以建立具有機密性、鑑別、完整性及不可否認性的存取控制及可用性的資訊流通安全環境與機制。

數位憑證是參照x509標準所產生的,下面是v3版本的數位憑證組成圖:
image
另外,一定有不少人有疑問,數位簽章也好,數位憑證也罷,到底屬於那一種加密,是非對稱式還是對稱式呢?
其實,在數位簽章的內容中,只是將加密的憑證發出的單位和憑證的編號傳遞給接收者
接收者只需要將收到的憑證相關訊息向CA進行驗證,CA回查內容若屬相同,則該憑證是有效的
若憑證的內容與CA查詢出來的不同,那麼這個憑證是有問題的了,整個憑證的的關係中並沒有私鑰,因公鑰是由CA所持有
因此對於憑證的相關應用應屬於非對稱式的加密。

呼~~~!這一篇跟大家分了有關金鑰管理及相關的應用,下一篇會跟大家一起來討論密碼系統的應用
密碼系統是密碼學應用至我們保護的資訊上,因此在於這應用之下,鐵定比上幾篇來的有趣了許多,那麼晚上見囉!

K書筆記本-Cryptography(06)

訊息完整性控制(Message Integrity Controls)是密碼學精髓中的精髓,加密過後的文字畢竟已經被加密了
那我們怎麼確認收到的已加訊息沒有因為傳輸問題造成移漏?因此,雖然訊息已經被加密了
但是我們還是可以透過訊息完整性控制則可以達成訊息的確認,以保障傳遞的內容是完整無誤的
因此,密碼學中,即有一篇是專門針對各種可能造成封包、訊息本身受損的控制措施

那麼訊息控制怎麼做到的,如何達成的呢?為何可以達成偵測訊息內容是否已遭到無意或有意的修改呢?
訊息控制是透過附加一些相當特殊的值到訊息本體上,而這個特殊的值是可以拿來與內容驗證的
因此當演算過後就可以得知那一些值是有經過修改,其中,有一個密碼學的分支就是以這種概念
來開發One-Way Functions。

那麼,在討論這個部份時,我們先來探一下,訊息控制的分類,大致上,它分類為無意的變更及有惡意的篡改
無意的修改像是網路設備在傳遞訊息時,可能造成一些訊息的遺失而造成的,可以透過parity, Hash function, Checksum…等
而惡意的篡改,像是以其它的破解技術強迫去修改訊息的內容,可以透過像是digital signature, keyed hash HMAC, CBC-MAC…等
達成偵測、控制訊息的一致性,下面是MICs(Message Integrity Controls)的分類示意圖:
image
以上這兩種層級的差別就在於,防止意外的運作中,並不會有所謂的key產生,而在下者,則是有key的概念
而且,這個概是可透過公證單位進行驗證,因此確保了防止惡意的篡改的可能性。

防止意外的變更
Parity:為兩個值做XOR演算後以避免lost掉其中一個值時所做的MIC,代表作是RAID3以上的概念。
Hash Founctions:確保資料傳遞過程中因為各種恩素造成訊息問題,因此提供hash供接收者確認訊息完整性
例如:在下載檔案時有提供MD5的Hash value等下載完成以hash founction驗證內容是否正確。
CheckSum:每個傳遞的資訊中,會針對二進位值的1做總合,在傳遞完成一個訊息時,可供確認傳遞的遇程中是否有遺漏。

防止惡意的篡改
Digital Signature:屬於hash Functions的一個分支,透過簽章的動作在訊息上以憑證簽署,因此可以確保傳遞的過程中是否遭到篡改。
Keyed Hash HMAC:先以Secret key演算出一把Secret key,再使用一個標準的hash function將訊息hash過程加入Secret key加以演算。
若要驗證加密的區段過程,必須先將Secret key解密後,才能驗證
另一種計算方法則更加複雜,將列照常計算後,再使用對稱式加密加務散列,若要認證散列,則必須先對它解密。
CBC-MAC:CBC-MAC是使用DES的CBC mode以Secret Key產生一個64bit的輸出值的share key,以驗證訊息未被篡改。
在此一提,HMAC運作的執行速度遠比CBC-MAC來的快,但CBC-MAC也比HMAC來的安全許多
另外,Digital Signature僅針對訊息加簽,只能確保其不可否認性(non-repudiation),以確保全完整性確認
然而keyed hash則不確保不可否認性,在此keyed hash運作的也比Digital Signature快,因為Keyed hash不需要對PKI做驗證。

在此提到了hash,到底hash與加密有何差別呢? hash是利用訊息的內容切段的值產生出來的一組等長度的值,並且能抵抗生日攻擊
屬於一種one-way Function,但hash與one-way function並不是畫上等號的喲!
由於one-way Function不論多長的message都會演算出一組同長度的值,因此有可能產生不同長度的明文會產生相同的密文
而這個現象就稱為hash collision,整個找出hash collision的理論則是Pigeon hole principle(鴿籠理論-是一種假設理論
當每個籠子只能塞兩隻鴿子,當籠子只有二十個,但有四十一隻鴿子時,一定會有一隻鴿子被擠出來)
hash collision示意圖:
image
且產生出來的值與原message不會有直接的線性關係(non-linear relationship between hases),
意指,當msg1及msg2一起做hash產生的值,不會等於一個訊息中包含有msg1及msg2的hash value
線性關係示意圖:
image

常見的hash Functions
MD(Message Digest)系列(MD2/MD4/MD5),是由Ron Rivest所發佈,其中這個家族有個特性
MD2:運作的速度太慢了(等到天荒地老了還算不完…)
MD4:運作的速度太快了,快也是一種錯嗎?因為…演算快就代表要破解所花費的時間也很快喲~,所以算的太快也是一種錯
MD5:由MD4再做調整將速度調整至可以接受的範圍,因此速度的比例就是MD4>MD5>MD2
MD系列中所有的Hash value長度都是128bit

SHA(Secure Hash Algorithm)
SHA-1於1994年發佈,在SHA的系列中,前幾個是SHA1、SHA2,這兩個都是屬於160bit的長度
接下來新的SHA版本則是加大的Key Space及加強適合較大型的訊息內容
SHA-256則是將Key的長度增加到256bit, SHA-384及SHA-512則分別是384bit,512bit.

各種Hash function
Hash Function的運作過程中,即是將訊息在傳遞之前將訊息經過hash演算出Digest,把Digest和訊息一起傳送給接收者
接收者在收到訊息後,把digest與訊息拆開,並且將訊息以相同的hash function演算出Digest
再把算出來的digest與接收到的digest比對。下圖是hash function的運作方式:
image

key-Hashed MAC主要是保護了hash本身的完整性,而這種function主要是保護Shared Secret key
且這把shared key只有原來hash值的一半長度。
CBC-MAC:則是使用同步金鑰獨立在特殊的DES CBC mode去產生出來源檔案修補長度的表述
CBC-MAC的運作過程與Hash function僅差別在多了一個程序,在把digest附加在訊息上前,再以shared key將digest產出keyed hash
接收者在收到這個訊息時,把訊息與keyed hash與訊息拆開後再以shared key解出digest,再拿來與原訊息的hash產生的digest比對
image

Digital Signatures:它確保了傳送者的驗證確認及具有不可否認性的特性,它是使用非同步加密,傳輸者的私鑰是用來把hash的值加密
接收者則以傳輸者的公鑰去確認簽章的有效性,下列是數位簽章的運作方式:
image

其實,整個確認訊息完整性的運作過程相當的有趣,任何一個步驟都一再的確認訊息的內容是正確的
很多人在對於公鑰、私鑰一直分不清楚,其實有一個很簡單的方法來記,在銀行領錢、簽合約…等等必須要保證的事情
我們是拿私章來蓋,而領錢或者是辦理業務變更時,業務員會拿你存放在銀行的印章卡出來比對印章,存放在銀行的印章卡就是公鑰
希望以上的說明能幫大家記起公開金鑰和私密金鑰的方法。

下一篇的內容我們會著重在金鑰管理、密碼的使用,以及破密分析及資訊隱藏的科技等等…,先來去洗個澡休息一下…呼~

K書筆記本-Cryptography(05)

上一篇提到的是對稱式加密(又稱為私密金鑰加密系統),而對稱式加密雖然速度快,但是在於確保安全的部份則顯示較為軟弱
非對稱式加密則是大大的提升了安全性的部份,而不止是在於機密性的保護,對於內容傳遞的保護則更加的嚴僅
公開金鑰的概念是在1976年由Diffie及Hellman兩人共同提出的,所使用到的有私鑰和公鑰兩種概念
而私鑰和公鑰之間是有絕對關聯,私鑰保有了私密性(Secret)、公鑰則是提供予發散用於加解密使用(distribute)

當然有公開金鑰演算法主要是確保傳遞者的資料機密性(Confidentiality)及證明傳遞,傳遞者以接收者的公鑰將訊息加密後傳遞給接收者
接收者再以私鑰解開,傳遞的過程中因為傳遞者是以接收者的公鑰加密,因此只有接收者的私鑰能解開
加強了其保密性。下圖為確保confidentiality示意圖:
image

證明傳遞則是以傳送者的私鑰加密訊息,接收者以傳遞者的公鑰解密,使用者在解密的過程中,若是金鑰無法解密
則代表訊息傳遞的來源是有問題的,下者為Proof of origin示意圖:
image

當將此二者結合,則同時可以兼具確認來源及確保機密性,下圖為其運作示意圖:
image

於非對稱式加密來說,由於對稱的流程並沒有像非稱式這麼複雜,非對稱式加密的嚴僅度比較夠,當然在運作上面就比起對稱來的慢
也比較不適合用於大容量的資料加密,非稱式加密還有一個特性,舉例說明像是6的k次方是1296,要推算k是很容易的,
但是3的k次方是3乘mod 13,則k的值會有4、7、10.3,這種特性就稱為hard problems,也叫做one-way trapdoor
明文加密成為密文簡單,但反推難。符合這一類的加密法有:RSA(Rivest-Shamir-Adleman), EI-Gamal, Diffie-Hellman,
ECC(Elliptic-Curve Cryptography), DSA(Digital Signature Algorithm)

RSA(Rivest-Shamir-Adleman):是公開金鑰加密系統的代表作,在金鑰的散發是源自於對稱加密,並且具有數位簽章服務的架構
開發者共有三位Ron Rivest, Adi Shamir及Leonard Adleman在1997年開發出來的加密法,預設值是1024bits,
若要安全一點,可把key sizes調整至2048bits~4096bits之間,這種加秷法是以數學上所稱的取冪模組(Modular exponentiation)為基礎的運作方式。

Diffie-Hellman:是世界上的第一套公開金鑰加密系統,於1976年設計出來,使用兩把不同的金鑰達成key exchange
使敏感的訊息得以安全的傳遞,並且保有私鑰,使加密的key不會流露在網路上。

EI-Gamal:於1984年第一次發佈出來,後續包含在PGP之中,成為一種在後端將不安全的訊息傳遞做為後續補強的利器,
並且EIGamal中包含有DSA,且加密的方式類似RSA,Key 的流通則類似Diffie-Hellman.

ECC;橢圓曲線加密法:能用於Key的流通,資料加密及數位簽章上,這種加密法非常的快速,而且key的size相當的小,
用一個比較明確的例子,1024-bit RSA = 160-bit ECC,非常的適合用於資源不足的應用程式
最有名的應用像是微軟的序號演算就是個最好的例子

而非對稱式加密,即然比較複雜以外,月什麼優缺點呢?
優點:
Confidentiality/Privacy;維持了機密性、私密性 (資料不能被非正確的私鑰解密)
Access Control;達成存取控制 (私鑰僅能用於一個個人使用)
Authentication可驗證 (可證實識別是傳輸者)
Integrity確保完整性 (資料不能被篡改)
Non-repudiation不可否認性 (傳送者無法否認曾傳遞過的資料)
缺點:
Computationally Intensive;演算過於密集
Slow太慢 (比起對稱式加密還要慢了約1000倍)

這個章節中,我們討論到了非對稱式加密的幾種常見的加密演算法,也有討論到相關的優缺點
下一篇再跟大家一起討論有關訊息完整性控制的部份,密碼學的部份除了機密性以外,最重要的就是完整性才是真正密碼學的精髓

2009年9月2日 星期三

K書筆記本-Cryptography(04)

前一篇文章特別有提到symmetric key運作方式有分為stream ciphers及block ciphers,也有提到兩種的差別
其中Stream的運作方式對於一般的統計法,是很難找出其邏輯,並且產生出來的ciphertext是絕對的公正
在Stream cipher運作中,最重要的一個元素就是Keystream,它是用來作用於加密過程,以XOR來建立密文的程序
而Keystream的代表作就是RC4更重要的是它是非常適合裝載在硬體上及網路通訊上使用。
下圖是Keystream的運作示意圖

image

而block ciphers則是以相同的大小切段(例如以8bits;ASCII 或16bits;Unicode),也是以XOR演算後產出密文
相當適合用於較大型的資料,並且對於所有的後續的處理比起strame更加的有效率。下圖是block ciphers運作方式…
image

以上是兩種對稱式加密的基本模式,但是,提到對稱式加密就不得不提DES(Data Encryption Standard;資料加密標準)
身世之謎是來自於1960年由IBM所設計發展,後來被美國國家標準局及美國國家標準協會承認,在DES家族相當的龐大
光是DES本身就包含了相當多種的運作模式,不過,這個設計之下,Block size是64bit,key的size是56bit及8bits Parity
總共演算16rounds,DES的運作模式共有五種,以Block Modes及Stream Modes來區分如下:
Block Modes:Electronic Code Book(ECB)、Cipher Block Chaining(CBC)
Stream Modes:Cipher Feed Back(CFB)、Output Feed Back(OFB)、Counter(CTR)

ECB Mode;電子密碼書模式:平行運作,並且具有較高的容錯性,相當的節省處理的時間,ECB只適合用於短訊息的內容,因此相同的明文內容
會產生相同的密文內容,雖然無法直接以暴力破解法來解開,但是透過Separately attack就可以輕易的分析出來。
下圖為ECB的運作方式:
image

CBC Mode密文區段連續模式:它的運作方式就比較複雜了一些,第一個明文的block先以XOR與IV演算,
接下來的每一個明文都先與前一段密文加上IV後再與金鑰加密。非常的適合用於較長的訊息,而且可容錯,
適合用於IPsec, SSH, VPN, Datastorage。但每一個運作的回合之下,都必須耗費較多的資源去演算
因為它必須作用於full sized blocks且每一個運作都是連續的。下圖為CBC Mode的運作模式:
image

CFB Mode;密文反饋模式:與CBC相當的相似,但是CFB將IV加密後加入與下一段明文做演算。適用於較長的訊息,亦具有容錯的能力
它每一個運作都必須是連續的,當發生錯誤時會擴散至其後的block中,雖然它比CBC發生的錯誤的機率還低,是最常用的Stream mode。
下圖為CFB Mode的運作模式:
image

OFB Mode;輸出反饋模式:其運作模式相當接近於CFB,但不同的是它先把IV加密後加入爾後的每一個金鑰中,再經過加密加入訊息演算中
非常適合用於較長的訊息中,某些的運作是平行的,接送雙方必須保持同步,必須透過一些回復機制來確保雙方是同步的
否則當發生錯誤時是可能造成串聯的。下列是OFB的運作模式:
image

CTR Mode;計數器模式:與OFB類似,但是加秷的是計數器的內容而不是反饋出來的資料。因為是平行處理因此效率相當的好
必須確保不會重用到key或count內容值,否則還是會被破解,即使它的安全性與其它的模式相同的安全,被拿來做為無線網路的標準
及後來成為AES(Advanced Encryption Standard)的Key演算概念。下圖為CTR的運作模式:

image

以上的五種模式是DES的運作的主要模式,下表為以上五種模式的比較表:

Mode

Block / Stream Mode

Long / Short Messages

Serial / Parallel operation possible

Effect of an error

Work that can be done in advance

ECB

Block

Short

Fully parallel

Contained

Keys

CBC

Block

Long

Fully serial

Contained

Keys and IV

CFB

Stream

Long

Fully serial

Contained

Keys and IV

OFB

Stream

Long, but errors are a problem

Partially serial and parallel

Cascades

Most encryption

CTR

Stream

Long

Fully parallel

Contained

Most encryption

有了上面的這張表,大家知道怎麼去選擇合適的模式了吧!

當然DES並不是只有一種,還有Double DES及Triple DES,一樣都是以56bits為基礎的金鑰長度
Double DES的金鑰長度就是112bits以兩把key做加密演算,而Double DES(DDS)一出來隨即被Meet-in-the-middle破解
不是man-in-the-middle喔!這種Meet-in-the-middle就是以「已知明文」的方法來找出key及演算的過程順利的破解了DDES
下圖是DDES的運作示意圖
image


下圖則為Meet-in-the-middle的運作示意圖:
image

而對於 triple DES則又分為有兩把金鑰及三把金鑰的差別
2把金鑰:DES-EEE2(也叫2TDES-EEE), DES-EDE2(也叫2TDES-EDE)
3把金鑰:DES-EEE3(也叫3TDES-EEE), DES-EDE3(也叫3TDES-EDE)
其中EDE Mode是比EEE Mode來的更強,不論是三把金鑰或是兩把金鑰都是為了加強其運作的強度
3TDES的Block長度是64bits, key的長度是168bits,其它與DES相同,2TDES則是與DDES雷同,
只是Bock是切割為三次演算。但DES是一種早就被破解的私鑰加密系統。

下面是幾個常見的Symmetric Key Cryptography:
IDEA(International Data Encryption Algorithm ):於1991年發佈,是參照DES而來Block size是64bit,128bit key,跑8rounds
AES(Advanced Encryption Standard又稱為Rijndael):於1998年發佈block size可介於128~256bits,Key則可選擇128、192、265
並且可自定運作演算次數。其組合由4個步驟AddRoundKey, SubBytes, ShiftRow, MixColumn
RC5:於1994年發佈Block可以有32, 64, 128 bits, key的長度更可提升至2040bits,最多可跑255個rounds
RC6:Based on RC5。
Blowfish: 於1993年發佈,block為64bit, key介於32~448bits。
Twofish:block size 128bits, key最高可到256bits,相同以128bit的key比AES來得慢。

Symmetric key的優點
非常的快Very fast
破解密文非常難(Very difficult to break cipher text)
演算法及工具可以免費取得(Algorithms and tools are freely available)
Stream ciphers確保了極高效率(Stream ciphers ensure highly-efficient)
Block ciphers也有多種modes可供使用(Block ciphers offer multiple modes)

Symmetric key的缺點
key的交換及散發可能是個問題(Key Negotiation / Exchange / Distribution)
延展性差(Poor Scalability)
維持了最基本的安全(Limited Security)

曾經有人問過Jason,到底同步與非同步金鑰那個比較安全,其實,在這裡的比較我們可以看到,同步金鑰比非同步快
這個是唯一被明確點出來的,而至於那個安全呢??非同步被破解的也是不少呀,而簡單的多跑個幾次還是會安全的嘛!
所以,兩者相較,並沒有話一定是同步或非同步就比較安全喲,以上提供給大家參考。

K書筆記本-Cryptography(03)

密碼學的基礎中,密碼系統(Cryptosystems)並不是非常的安全,主要的原因除了以語言特性分析的問題以外,
簡單又容易的找到有問題的字元,這種類型的問題,其實與很多的破密分析中,解除與明文長度相同的加密
幾乎都能順利的找到明文內容也是很容易的,一個好的演算法必須要能在明文若改變1bit而密碼的改變高達50%以上
才是好的演算法,這種就被稱為Strict avalnche criterion;完全崩塌準則,當這樣的演算法才能避免以語言特性的破密法

再者,同一種演算法,在不同的兩把key對相同的明文進行演算時,也要能達成兩個不同key所演算後的密文內容
達到50%以上的改變,否則對於明文被重排時,還是可以比對出演算法的內容差異,
這個也是密碼系統在設計時必須考量到的問題。

基本的重排演算中,又可以被稱為substitution boxes或者叫做S-Boxes,在此指出的S-boxes中的”S”指的就是substitution
另外Transposition(更換) or Permutation(排列)也是屬於此法中常見的特徵,Compression(擠壓)則是hash的精神所在了,
把所有的內容值不論長短,均演算成為相同長度,此時若較長的字串則會受到擠壓了,那麼有由長的變成短的,
當然也會有短的明文Expansion(擴張)為較長的密文,在這個部份又因為key或是subkey的使用而擴大了
這個擴大的過程就稱為padding(補齊)亦指加入額外的資材在明文被加密為密文之後
也增加了因為訊息是被加密的過程中以foil traffic analysis(破列傳遞分析)可找到更多演算法的弱點

key mixing則是在加強了密碼的強度,不論在加密過程中使用了以key schedule的方式加強了key本身的安全性及key的可用性
key schedule又稱為key space,下圖即為key schedule的示意圖:
image
Initialization Vectors (IV):是決定了在整個密碼的加密過程中,增加了亂數的演算層度,有了IV的加入,使用密文更加的Random
在此我們提出一個例子,有一個很有名的加密法叫做RC4他是一種相當的Random的演算法,應用在WEP上
後為何變的如此的容易解開,原因發生在IV,這個加入亂數的IV是由User自行設定的share key,當share key常年不改的狀況之下
即使再random的演算法,只要蒐集到一定的封包量,要解開其內容就變的相當的容易
因此IV產出夠不夠Random也變成相當的重要。

Exclusive-OR(XOR)中文叫做反或閘,是一種數位電子運算的基礎,當兩個二進位的數串經過XOR演算
取出來的值就變的相當的複雜,例如有兩個不同的值分別是11100101及10101111經過XOR演算之後成了01001010
只要有其中一個值再度加入XOR演算就可以得到原另一值,是一種可以拿來做演算或是拿來驗證加密的內容的方法。

Symmetric key cryptography(對稱式金鑰密碼學)中包含的相當多的演算法,是整個密碼系統產生的始祖
Pre-Share key也是其中一種對稱式加密,其中包含:
single shared key又稱為private key/ single key/ secret key,不論是發送者或者是接收者都是使用同一把金鑰進行加密。
many algorithms: 它是眾多種公開標準的密碼演算法的基礎。
two main classes:因使用的方法不同,又分為兩種類別Stream Ciphers(串流加密)及black ciphers(分段加密)
stream是以時間區隔以不同的金鑰加密,因此相同明文可達到不同密文的效果,black ciphers則是以區段做區隔
因此同明文則密文亦會相同。下列是同步金鑰演算的過程:整個演算的過程只用到一把金鑰。

image

接下來,再與大家討論有關Symmetric key的各項議題,包括各種標準的運作原理。先給jason起來運動運動,不然屁股快跟椅子合體了…

K書筆記本-Cryptography(02)

密碼學中領域是離不開數學的,正所謂數學乃科學之母是一點也錯不了的,
從進位制、到網路傳遞都是經過數學的計算後,才真正得以正確的達成電腦的目的,
上個章節只能說是暖暖身,抖抖手腳,今天開始的分享才是真正講起沒有啥人聽的懂的話。

在基本的密碼系統之下,大致上分為:Code(密碼)、Substitution(替換)、Transposition(換置、重排)、
Polyalphabetic Substitution Cipher(多套字母替換)、Running Key(金鑰)、one-time pads(一次性密碼)

code:指的是將一串明文的被經過處理的文字串,以簡單的換置、替換…方法維持了基本的完整性及機密性。

Transposition:將原本的字串重新的排列將順序重新排列,有多重的方法去確保了明文的內容有效性。詳見下圖
我們將this is an example of transposition排列到下列表格中

T H I S I
S A N E X
A M P L E
O F T R A
N S P O S
I T I O N

橫的來看,還是原來的字串,但是將字串改變成為直的運作TSAONI HAMFST INPTPI SELROO IXEASN
以這樣的方式將原本的型態都是以明文做傳遞,以打散重排(Rearranging)的方式來保障字串原本的意義。

Substitution:以取代的方式將文字做順序的位移,當文字的變成另一個文字時就保護了真正的明文意義,
但這種方法只要以frequency analysis(語言特性分析)即可破解,例如英文中常見的組合er、qu則容易算出之間的文字差距,
因此容易被解開。
以上例為例:


1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

重排

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

this is an example of substitution經過重排後移4個字元,則變成了wklv lv hadpos ri vxevwlwxlrq,可以說是用了最基本的加密方式來達成隱碼的作用。

Polyalphabetic Substitution:以Substitution為基礎的一組多重重排的運算法,也就是說,除了以一種的重排理論來運作以外,還以不同的重排方法來加深加密的難度
在此以Frequency analysis就較難從中解出真正的文字意義了。
下列以四組重排字表來示範,以上面的例子做重排,第一個字為T重排為T,第二個字為H重排為K,第三個字為I重排為O,第四個字為S重排為B以此類推。


1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

1

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

2

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

3

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

4

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

Running Key:與特定的字表加密將其順序打亂,並重新選字排列,與Polyalphabetic substitution雷同,但是,其複雜程度又與重排再難上許多
將欲加密的文字選定一個字多,並將其順序依照字碼的字重新選字,例如明文為 Jason so handsome,Key為man我們先將字串轉換為字碼再從字表選字

下表為字表

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

下表為字串內容及字碼(字碼大於26則必須減去26),算好後字串就成了Chlhu lh ougklhty

J

A

S

O

N

S

O

H

A

N

D

S

O

M

E

字碼

10

1

19

15

14

19

15

8

1

14

4

19

15

13

5

M

A

N

M

A

N

M

A

N

M

A

N

M

A

N

字碼

13

1

14

13

1

14

13

1

14

13

1

14

13

1

14

AND

23

2

33

28

15

33

28

9

15

27

5

33

28

14

19

選字

C

H

L

H

U

L

H

O

U

G

K

L

H

T

Y

另外一種running key又稱為share book,意指雙方有一本相同的書,我們只需要傳輸第本書的第幾頁
第幾個字,這種方法即使密碼被取走了,沒有密碼書,還是解不開。

OTP:是目前最夯的一種密碼使用法,符合Some thing you have的精神,比起單純的some thing you know來說,強多了
OTP使用不管是傳送端、接收端都有很特殊的Key值,每一個key也只能使用一次,是一種只能不容易破解的演算法
它有幾個優點,不管是任種一種OTP在產生Key時是真正的random,沒有key會被重覆的使用,所有的pad安全的
即使是被惡意的拔開,也是無法被再次的使用了。

所有的密碼系統都離不開上列幾種,每種密碼系統特性在現在都還是看的到其踨影,下一段再跟大家一起來討論密碼學的部份囉!

2009年8月13日 星期四

K書筆記本-Cryptography(01)

密碼學…天啊…這種看了會讓人真接趴倒在馬路上的東西怎麼k的下去,如果你即將面臨失業(老闆經營不善)
我想,你應該很有精神k的下去(就跟偶一樣啦!!!),密碼學是整個資訊安全的A.I.C.中一看就知道非C莫屬
但是…把密碼演算更重要的是維持訊息的完整性,而非只有保持訊息的機密性而以。

那密碼學在資安領域中又扮演什麼角色呢??各位還記得嗎??機密性所維持的是『避免有意或無意的洩露資訊』
那麼密碼學有那些基本目標呢?
1.確保敏感資訊的機密性(加密演算法)
2.確保資訊的完整性(digest)
3.確認通訊驗證(SSL, CA)
4.提供支援不可否認性的有效性(digital signature)
5.提供安全存取控制的基礎
6.對選擇昂貴的或是費時的調整(花錢或Free)

在密碼學這個領域中呢,有三個很關鍵的用詞,這三個用詞常常在我們的生活中出現,但是…大家統稱叫加密或密碼學
但是在老外的眼中可有著大大的不同~~!
Cryptography(密碼學;密碼使用法):針對文字密碼學為基礎的演算,是用來保護資訊傳遞的方法。
Cryptanalysis(密碼分析):密碼分析主要是用來分析密碼學的強度,不論是讀取、變更訊息的完整或是驗證密碼、演算法弱點問題。
※也可稱為破密分析(是我國國人最弱的技術)
Cryptology(密碼術):指研究密碼學或是密碼分析。

另外,在整個密碼的產出或是使用的過程中也有特定的關鍵用詞:
Plaintext/Cleartext(明文;明碼):也就是最原始的訊息內容。
Ciphertext/Cryptogram(密文;密碼):經過演算過後的訊息內容。
Encipher/Encrypt/Encode(加密;編碼):指的是將明文演算成為密文的過程。
Decipher/Decrypt/Decode(解密;解碼):指的是將密文演算回復明文的過程。

還有一些必須要再提出來的關鍵用詞:
Cryptographic Algorithm(密碼演算法):指著是數學方法的密碼演算操作。
Cryptosystem(密碼系統):是指裝置或處理使用在加密或解密操作的系統。
Cryptovariable;key(密碼變數;金鑰;):用於密碼演算中左右演算的可變因素。
key space(金鑰可用量):指的是key可用的總數,供選擇使用來做為密碼系統。

要把密碼學說的簡單一點程序就像下面的流程:


明 密碼系統 密

-> (演算法) ->
文 文

密碼學中很多文字其實都是有著相同意思,但是其深層的意涵又有著不同的用法和作法
因密碼學這個領域其廣度及深度是相當的廣大,要把整個密碼學一口氣說完,實在是難呀!!!

接下來再跟大家一起討論同步加密、非同步加密、訊息完整性控制、金鑰管理、
密碼學的使用、破密分析最後是資訊隱藏技術。

2009年8月12日 星期三

K書筆記本-Access controls(07)

要測試存取控制有沒有做好最好的方法就是進行測試,但是在測試的階段最怕的,就是造成正在運作的系統因測試而掛點,
一般用來測試存取控制有沒有最好的就是Penetration Testing(滲透測試),不論選用何種的測試攻擊均是為了找出系統的弱點,
找出根本原因再加以修補,避免在發生事情之前先找到弱點的存在。

所謂的滲透測試指的就是請有技術能力的人來做入侵的行為,這種執行入侵的人一般稱為道德駭客(Ethical hack),
透過界定要測試的範圍(包含測試的區域、工具、測試內容…)來執行測試,必須要指定測試的方法及測試的程序,
來確保系統不會因測試的過程影響其可用性,最後在找到弱點時經過授權時才能進行更進一步可能危害系統的步驟。

在界定測試範圍時可以有程式的安全、阻斷服務的可能性、透過遠端撥接入侵、或是找到未授權的無線網路、社交工程及大眾電信系統等等
每一項都是測試入侵的路徑,當然,在進行測試的時侯,亦可依照整個入侵的層度及所獲得的資訊做入侵。

基本上滲透測試分為外部滲透及內部滲透,若是希望可以找出真正的弱點,當然最好的就是外部滲透,若是要找出未有效管理的系統,
則可透過內部滲透找到問題的原因,在外部滲透的部份又可分為Zero-knowledge(又稱為黑箱測試)、
Partial-knowledge(依照了解的內容層度可分為灰箱或白箱),而在內部測試則可分為Full-Knowledge(又稱為白箱測試)、
Targeted(鎖定特定攻擊)、Blind(僅有少部份的資訊,且資訊安全人員是在不知情的狀況下進行測試,
可以測試出安全人員的反應及回報機制)及Double-blind(與blind不同處則是在入侵的過程中,是受到安全人員的監視之下攻擊。)

基本上來說,滲透測試與實際入侵無異,只是與入侵不同的是找到弱點後呈報,非利用,
測試步驟共分為四大步驟:Discovery(找出資訊;host scan)、Enumeration(列舉攻擊主機;Port scan)、Vulnerability Mapping(弱點對映;test)、Exploiting(達成攻擊)。
每一個步驟當發現任何弱點會問題時,若要再進一步的測試,則必需重新取得授權後才可以執行測試 。

當找弱點的過程中一定會遇到一些突發狀況,應該要予以避免,例如:應用程式發生失敗、系統crash掉…等等,若在已知的問題下,應該予以避免
萬一要測試的弱點不知道會有任何的問題產生,則必須在取得授權後才可以再進行更進一步的測試,若有利益問題則必須要求切核切結書,以釐清責任問題
當然整個測試的過程應要達成文件化,像已找到的弱點和可能存在的問題(保有need to know原則),保存IDS/IPS的Log(有攻擊軌跡),並且避免被未經授權的人存取log
最後針對整個滲透結果提出建議及執行教育訓練,以加強人員各項技能。

存取控制是整個安全管控的核心,任何一件事情、物件都必須有人管理,有人負責,以避免可能因為人的問題而威脅到企業本身的權益,並降低各項安全問題的發生。
這個才是做資安的王道呀!

K書筆記本-Access controls(06)

存取控制是透過使用者的存取過程必須被管理,那麼,有沒有更加有效的管理方式呢?
當然有,再利害的駭客,你給他的輸入界面只能輸入0~9、enter和backspace的鍵盤(Physically constrained user interfaces)
他還能有辦法在鍵盤上輸入數字以外的攻擊手法嗎???

資安首重於人,管人就必須有效的管理使用者行為,其中限制使用者的操作界面是最常見的做法
例如透過Menu,依照使用者所登入的權限不同,僅開放給予使用的選單及資源,那麼減少了與敏感、機密資料接觸的機會
自然要發生未經授權的存取資料也不容易發生。
資料庫的部份透過db views的功能(又稱為VBAC;View based access control)這種限制方式是當使用者必須存取資料庫
僅給使用者看一些與工作內容有關聯的動態資料時可以提供least privilege的限制,僅給最少可以使用的資源來完成他的工作。
如果再不行,還有加密這一條路,當使用者要存取讀取的資料時,所有的資訊均被指定的使用者將資料加密了
那麼,使用者將無法存取較機密的資料。

講到了存取控制難免有因為架構劃分為集中式及分散式架構,在集中式架構中不乏有3A(Authentication, Authorization, Accounting)架構的各項存取控制技術
像是RADIUS(使用UDP傳遞,僅支援同步驗證), TACACS+(由Cisco發展,為確保遠端存取控制系統,且支援多重驗證,使用者可以自行更變密碼,
以TCP傳遞做為基礎), Diameter(使用UDP支援PPP…等連線方式,支援手持設備,由SUN開發),分散式則不適合各地分公司的方式,且無法提供一次性認證
因此,在本項架構中,為使維護便利,多數均採用集中式管理,但必須做好職務輪調及職責分工。

為了避免有違反完整性的問題產生,多數會採用IDS(Intrusion Detection Systems)來做為偵查、IPS(Intrusion Prevention Systems)做為系統保護
導入IDS的效益是可永確保入侵管理控制,避免風險被擴大,偵測其它安全機器可能有未防護或違反的事項,更準確的掌握問題避免攻擊者的入侵,
更可產生文件供企業去分析威脅,確保取得的證據以供爾後法庭上對已攻擊成功的證據。

當然IDS目前的形態很多,但若要拿來細分又分為三類,在此提醒各位,IDS是入侵偵測系統,重點是在於存取控制中的七大類型的偵測,而非預防
其中IDS又分為有Network-based IDS(NIDS)、Host-based IDS(HIDS)及Application-bassed IDS
NIDS是分析及監視網路封包內容,但所謂的NIDS僅能分析到網路第三層的封包,因此對於第七層的攻擊,則無法分析出來,而且對於已加密的封包也是束手無策。
HIDS是分析單一台電腦它並不是建構在HIDS之上的IDS,是一種另外類型的IDS,他可以偵測到主機上是否安全的傳遞資料,
包含已加密的資料亦可被檢查的出來是否包含有害的資訊,並且找出帶有惡意程式呼叫的指令。
AIDS不是愛滋病,是指HIDS的一種子分類,它是可以應用在在定應用程式使用的傳遞log的分析,
他能偵測已授權使用者,是否正在利用可用的資料或應用程式做惡意的行為,進而監看使用者使用程式的入侵行為,
它亦可以掌握加密的資訊,並而找出終端的所在位址,是一種能偵測木馬或是軟體惡意的篡改。

IPS則是兩項分類Host based IPS(HIPS)及Network based IPS(NIPS),HIPS與HIDS最大的差別就在於IPS是執行保護已知的攻擊行為,
NIPS則又叫做在線式的IDS或者是閘道式IDS,也有人稱它是防火牆,但它與防火牆最大的不同在於,防火牆是採用ACLs做為資源應用的規則,
而IPS則可依照兩種分類技術來達成保護的作用:Content-based, rate-based。
Content-based利用所分析出來的協定特徵,去比對偵測到的封包是否包含惡意內容。
Rate-based不像Content-based,主要是觀注在傳輸流上不正常的封包傳遞的內容,監視傳送的過程中去統計違規的內容值,
當在短時間之內傳遞了大量的有害資訊,則會被終止連線,但…此比率則必須視所定義的門檻值多高而定,低一點的,即使連慢速度的攻擊也會被偵查到
但是有可能造成誤判。

以上不管是IPS/IDS都是經過分析來找出有問題的封包,然而分析引擎就決定了它的效率及能力,Analysis engine methods共分為:Pattern (Signature) Based、
Anomaly based、Heuristic Scanning,其中Pattern based又分為pattern matching及stateful matching,Pattern matching是利用掃描封包的內容去偵測,
如果有連續的封包有特定的內容,與特徵內容相同的攻擊則可認定為有害的內容。Stateful Matching則是檢視連結的封包中,找出跨多個封包中在傳的資料流中
有更多符合的特徵資料庫中的惡意資訊,因此pattern是針對已知的攻擊。
Anomaly Based是由Statistical(統計)、traffic(傳遞)、protocol(協定)所組成,經由統計非正常的傳遞動作來找出未知的攻擊行為,
而傳遞則可識別任何一種不可接受的訊號,以偵測出未知的攻擊及詐欺。協定則是透過標準的協定規範去識別出攻擊者有違反的資訊,
本項則無使用特徵性的特點。
最後,配合上Heuristic scanning(啟發式掃描),適用以上各種偵測及防設,更勝於上列的幾種分析引擎,以上的觀念應用於防毒軟體上,
亦是現在的各廠商極力的研發防堵未發現的病毒類型也可以在第一時間即時的攔截到。最後IDS/IPS是為了保護網路的安全及防護,不論是異常的內容、回應的機制,甚至警報的類型都是需要被7X24的管理,有好的監控才有好的安全環境。

存取控制還必須保證些什麼呢?稽核軌跡及評估的工具,在資安中最重要的一個Life cycle就是PDCA,如果沒有做稽核,那麼資安只是為了做而做,
透過更多的評估工具及稽核去找出被入侵的記錄及相關所需的證據,更重要的是關於安全的Clipping level(門檻值),
仔細的稽核各項防護的資訊及各項變更是否有留下變更的記錄。

K書筆記本-Access controls(05)

識別管理是為了讓系統驗證並授權使用者使用系統,但存取資料呢?!存取資料是否也有存取控制
說到這個就睡了一大半了,因為…它確實很無趣,不就只是放權限嘛!那有這麼難
其實,整個放權限的過程中依照放權限的規則不同,有不同的存取控制

講到存取控制,大家最常見的就是DAC, MAC, RBAC, non-DAC…等等的資料存取控制
MAC(Mandatory Access Control; 強制存取控制):MAC源自已Orange Book(TCSEC)是一個以敏感等級做為區隔標示的存取架構,存取的過程受到規則(Rules)的限制,適用於介定組織公開及保護機密的資料,最典型的存取控制模型就是Bell-LaPaDdula,資料的owner確保 ”need to know”原則,依照人員所在的機密等級給予權限。
但在強制存取控制的模式下,並非所有的文件都是機密不可洩露,最大的恩素在於時間(time based isolation),基於time base access control之下,它確保了實體的資料安全,依照其機密分類等級及其設置的保密時間,並結合Role based access control,使在保持有機密的時間內只有特定的角色可以存取。(例如:軍方的機密文件只有陸軍參謀可以存取,那麼在機密的保護時間內,任何一個擔任陸軍參謀的人,都可以存取這份文件)

DAC(Discretionary Access Control;自主存取控制):源自於Orange Book(TCSEC)是一種自主可以選擇取存資料的模式,由最小管存取基礎來設定資料可被存取的廣度,包含need to know,是由資料的所有者自已決定要把資料給予誰來存取,因此onwer或是委托管理者都可決定授權給誰來存取。
在CISSP CBK中訂義了下列存取控制屬於DAC…若是對該部份有疑問者可以大家一起提出來討論。
ACLs(Access Control Lists;存取控制清單):ACLs確保了較簡單的模式來列出使用清單的存取object。ACLs可以決定使用者或群組去存可以或不可以存取受到保護的物件,最常見的像是防火牆,正向表列+負向表列,這種觀念即是來自已ACLs。
Assess Control Matrix;存取控制陣列:以ACLs為基礎,這種存取控制以subject為列,object為欄,交織出的權限表,去檢視那個subject有權存取object。
Rule Based Access Control;規則基礎存取控制:列出規則的管理存取模式,由系統的owner去建立或驗證使用者的身份及權限(讀、寫、執行…)。
RBAC(Role Based Access Control;角色基礎存取控制):這個控存取控制列在DAC恐怕有不少人會有意見,但在CBK所上述的,MAC是以Rule為基礎的存取控制,但RBAC確是屬於以Role為基礎的存取控制,一定有人會問,那rule呢,怎麼會是DAC,其實Jason查了很久,也跟恩師討論過,結論是RuleBAC是由system owner做存取控制,但MAC是由規則為基礎(像制定policy來規範),因此被歸類為DAC,而RBAC則是以Job function來給予存取的權限,隨著工作角色不同,經由初始化程序來做管理role的同時去附予其角色應有的權限,適用於企業組織中的存取控制方式。
Capability Tables;能力表:延伸來自於access control Matrix之中,是屬於以存取能力為基礎的系統,存取object時隨著附予的能力不同,則有不同的權限。

Non-DAC(非自主式存取控制):自主與強制不是已經很明確的告訴我們要嘛就是我自已管,要嘛就是別人管,那怎麼會出現一個Non-DAC呢?
其實Non-DAC不等於MAC,Non-DAC也有其特質,最常見的就是用來做為作業系統的保護,例如像木馬程式,最常使用的手法就是依照使用者的權限,可以去做變更保護的模式去存取未被控制的資料,Non-DAC是透過Security administrator做控制,由SecAdmin去確保敏感/機密檔案做寫入保護去確保其完整性及可辨視性,只給有授權的使用者確保基機密性,也觀注在確保的系統安全,由於安全管控是交由SecAdmin來全權負責,當然透過這一層的管理一定是比DAC安全多了,也與MAC有所差異。

安全的存取是企業中追求的目標,但落實安全存取,就必須知道存取控制中所包含的內容,以上所述的內容中,不論是以角色為基礎、存取清單…等等,都在我們的身邊可以找到其縱影,包含連小孩子誰可以玩什麼玩具,小孩們自有的規則,也不難看出誰比較強勢,大家也可以想想,自已所使用的網芳分享出去的資料是不是安全的被存取呢?以上供大家參考。

2009年8月11日 星期二

K書筆記本-Access controls(04)

識別管理一直是被認定為確保一致性的前置步驟,但在現在的社會中也如同上一個章節中所討論到的有著相當多的挑戰
如何正確的識別出使用者是『對的』使用者,一直以來就是被受注目的,Jason之前在做一個專案時
客戶即有要求,要做識別管理,當時來找Jason的場商也有現在最夯的靜脈認證(掌靜脈、指靜脈…等等)
都是為了確認『對的』人,但是確認的過程中也遇到不少的挑戰,只要有控制就要管理

識別管理過程中,最常遇到的問題共有三類(主要的類型、識別資料的類型、識別生命週期)
主要的類型(types of principals):主要又分為內部(包括有雇員、勞動約定者)及外部(顧客、合作伙伴、供應商),隨著類型的不同,有不同的系統、資料必須加以管理規範。
識別資料的類型(types of identity data):雖然是不同類型的資料供主要的識別管理,其中包含有個人(姓名、連絡資訊…)、法律上(有法定關係介於企業及主要類型的資料)、存取控制的資訊(ID, passworde, PKI, Tokens, biometrics…)。

做識別管理要訂義這麼多東西,那麼有什麼好處呢??不然幹嘛做它呢?!
精簡人力(headcount reduction):每個安全管理者以往花了35%以上的時間在處理使用者帳號密碼問題,舉凡忘了密碼、密碼強度不足…等等,集中式管理後,把此部份的問題所消耗掉的金錢、人力都節省了。
提升生產力(Productivity increase):當管理人力被節省了,當然就有更多的時間做更多,以後end users能自已rest自已的密碼,不用再麻煩管理員人,更多的使用者藉由SSO達成系統的使用彈性,識別管理系統確實擴大了人力效益,也提升了生產力。
風險管理(risk management):往往紙上作業的驗證是不能被用於稽核,但這個問題現在可以被控制了,更延伸的使用好的密碼、好的驗證及安全的系統,當組織在一般支援在多重資料處理中心時,必須將資料快速的複寫,集中使用者資料庫更可導入BCP中。

當然,要做識別管理,有那些科技可以support
目錄(directories):目錄是使用於集中化管理的技術,可用來儲存各種資料及需要可用的的資訊,兼俱有可用性及延展性,且是屬於標準協定,像是LDAP(light-weight directory access protocol)或是X.500.
網站存取管理(Web access management;WAM):使用WAM可以用來管理使用者識別、驗證、授權資料,WAM掌握了簽入處理,Web應用程式使用了plug-in結合了前台web,使用者授權後可以操作其應用程式來管理前台資料,進而去完成存取管理及導入SSO的應用。
密碼管理(password management):很遺憾的,使用者們所使用來登入系統的ID及密碼,不止好猜,還一組用久久,甚至連密碼都沒有換過,導入了密碼管理系統,除了可以訂義密碼的有效性、複雜性、不可逆…等等,加強了使用者使用ID、PASSWORD的強度。
帳戶管理(account management):帳戶管理是應用於各系統中的帳號,例如像網路系統的維護、ERP應用程式、資料庫伺服器…等等,有帳戶應用的系統之中,系統只被內部管理者進行管理,一個集中式帳戶管理的概念必須自動的同步散發各個系統之中,,不論是變更、移除、甚至是系統資源的存取都是建構在這個基礎之上,例如人力資源系統或是管理目錄…等等。
簡介更新(profile update):使用者視別包含有個人資訊,所有的變更應該設計的更簡單,更容易去管理,重點在於自動的參照系統的內容,管理目錄或是系統者的登入,例如像是CRM系統,WAM等等…更容易的讓使用者自行的去管理變更非過於隱私的個人資訊。
單一簽入(SSO):導入單一簽入,end users只需要記憶一組帳號密碼或是一組可供識別的資料,而其管理也只需要針對一項內容管理,大大的減少了管理的成本,但…若SSO系統遇到DoS,那麼…每一個系統的可用性就會受到損害。 目前有Kerberos及SESAME,Kerboeros大家不漠生,是由麻省理工所開發出來的SSO,而SESAME(Security European System for Applications in a Multi-Vendor Environment)則是由歐盟所開發,主要也針對Kerberos的弱點做補強。
安全領域(Security Domains):存取控制結構使用分割的位址空間,去區隔每一個subjects、各個敏感等級的objects及每個存取控制subjects權限等級,想到security domain就必須關聯到每個分割、獨立開的保護個別的資源。

PS. NO1.什麼是SSO?
整個識別管理中,不斷的提到SSO,似乎SSO是最好的解決方案了嗎?那SSO的處理流程又為何呢?有沒有其它的問題呢?
整個SSO大致上分為四個流程:
1.使用者輸入ID、PASSWORD
2.使用者輸入的ID及PASSWORD傳輸到驗證伺服器中去驗證
3.驗證伺服器確立了識別的資料
4.驗證伺服器授權存取所需的資源。

PS. NO2. 什麼是Kerberos?
Kerberos是由麻省理工學院所研發的SSO技術,它的組成有KDC(Key Distribution Center; 又分為AS(Authentication Server;驗證伺服器)、TGS(Ticket Granting Server;票據授權伺服器))及SS(SS;伺服器)TGT(Ticket Granting Ticket;票據授權票據)
其處理流程如下圖:
Kerberos



PS. NO3.Kerberos有什麼問題存在呢?
1.Kerberos有單點失效(Single point of failure)的問題當驗證伺服器發生問題時,那麼所有的驗證機制都將會失效。可用HA架構來補救。
2.Kerberos必須通訊的時鐘同步,因為票據有一定的有效期,因此如果時鐘不同步那麼認證會失敗,而預設值是不得誤差十分鐘。可用NTP來防止。
3.因為SSO是一組帳密通五關,因此…若有管理者的密碼被洩露,則會造成默大的損失。可以用職責分工來補救。

2009年8月1日 星期六

K書筆記本-Access controls(03)

存取控制主要是達成Integrity(一致性),在上一篇中討論的存取控制類型及種類,是讓管理者思考在各個面象可有納入管理中
那麼,存取了系統代表可以存取資料嗎?這個答案很肯定的是錯的,有權限連入系統,不代表你可以看、修改、刪除資料
那麼要進入系統我們如何來進行存取控制呢?這個部份就以Identification, Authentication, Authorization, Accountability四個步驟。

Identification(識別):一般而言,使用者在進入系統前,必須由使用者以提供可識別的資訊給系統。
Authentication(驗證):由系統對使用者所提出的可識別資訊加以驗證。
Authorization(授權):使用者身份被驗證後,授予其應有的權限、身份…等。
Accountability(可規責):當使用者登入系統成功後,對於使用者的動作必須達成可規責,完整的記錄使用者行為。

那麼在上敘的四項步驟中,各別就這麼簡單,沒有其它的議題了?
當然不可能,提到識別,除了選擇系統要以何種方式做識別呢?UserID?帳號編號?還是PIN(Personal Identifiaction Number)?
還是選擇以生物認證做為實體存取控制的機制呢?這一些都是在實體端及科技端所需考量的問題!

那麼系統以何種做驗證,也就是依照識別時所選擇的內容來供驗證囉!
例如:你選擇以帳號名稱為識別,那麼密碼就是你的驗證基礎,以PIN為識別,可以用Token或是指紋做為驗證…等等
在驗證又分為三種方法:Knowledge(Something you know), Ownership( you have), Characteristics (you are / you do)。
在knowledge的部份,當然是你知道一些什麼事情囉,例如:password(密碼),問題設計…等等方式來達成。
那麼在Ownership的部份呢?!你所持有些什麼?像是Tokens, Smartcards, Memory Cards…等等。
光是一個token就又分為有Asynchronous(非同步), synchronous(同步)
在非同步基礎下,又稱為Challenge-Response,使用者在登入電腦時,必須透過手持設備將看到的Challenge & PIN輸入進行驗證
此時非同步驗證時,就可以得知,你手上所持有正確的Token,因此透過兩種不同的傳輸管道來達成驗證的目的。
那麼同步的部份呢?又分為有even-based及time-based,event-based是指,每一次按一下token都會產生一個PIN碼
這個PIN碼的有效性是在你輸入完後,下次一要再登入系統時才會重新產生。
time-based則是依照時間間隔來判斷了,當時間間隔為10分鐘,那麼在此10分鐘內,你所產生的PIN碼都會是相同的。
因此event based可說是每次輸入才變,而time based即是每間隔就改變
像在網路上常見的圖形驗證,就是屬於event based。

smart Cards是目前使用最廣也是便宜的驗證物件,分為接觸性及非接觸性
在接觸性的基礎像信用卡的磁條,沒有接觸到就讀不到
而像是RFID就屬於非接觸性的物件,在卡上含有micro process,可自動演算,可儲存資料供驗證使用
只要有讀取器,在不接觸到卡片,依然可以存取卡片上的資料。
memory cards較常見的就是磁條卡,將資料存放在磁條上,必須持卡人提供卡片供讀取才可使用。

近來爭議最大的Characteristic就是利用生物的特徵,以供做為驗證用
在此也會有一種迷思,那麼生物認證(Biometrics)到底是identification還是Authentication呢?
其實,兩者都算,如果把生物驗證拿來當作身份以供識別就是實體的identfication ;簡稱BIP
拿來當作驗證就是邏輯的Authentication ;簡稱BAL
生物認證是目前各種機制中,被認定為最佳的選擇,但是因有個資敏感性的問題,這也是一種相當難以處理的議題
一般而言,生物認證分成實體的(Physiological)及特徵的(Behavioral)
所謂的實體像是指紋(fingerprints), 虹膜(Iris), 視網膜(Retina), 面紋(facial looks), 掌型(hand geometry)…等等。
而特微的就像是聲紋(Voice inflections), 鍵擊(Keyboard strokes), 簽名特徵(Signature motions)
那麼在生物認證中,總有一個精準度的評斷吧,不然我們如何採購正確驗證設備呢?
在整個生物認證中,被拿來做為評比的重要的三個指標:
FRR(False Reject Rate),FAR(FalseAccept Rate) ,CER(Crossover Error Rate)
FRR:錯誤拒絕率,把對的驗證為錯誤的屬於Type I error
FAR:錯誤接受率,把錯誤的驗證為對的屬於Type II error
CER:交叉錯誤率,集合FRR及FAR兩個曲線的交叉點。
基本上來說FRR是安全的,安全愈過,愈容易被誤判拒絕,變成使用者的不便利,要多試幾次。而FAR則是要命的數字
一般是10萬分之1到百萬分之1為可接受範圍,因此,生物認證,最好的就是CER及FAR愈低的愈好
image

在生物認證中,即然有實體的、有特徵的,當然依照其屬性來分也分有靜態的及動態的;
靜態的是與生俱來,不容易改變的像指紋、虹膜…等等,動態的就像是擊鍵、聲紋…。
較理論的方面向分為:Consistency(各地一致)、Reliability(可信任)、Usability(使用性)、Efficiency(效率性)及Scalability(擴充性)
綜合兩種以上的驗證基礎(something you know, something you have)叫做two-factor authentication
而三種以上的驗證(something you know, something you have, something you are;do )就稱為Multi-factor又叫Storng authentication。

畢竟在安全控制中不可能只把驗證基礎只拿來做為門禁系統,那麼檔案存取呢?系統存取呢?或者是其它的存取控制所需要的管理機制
這一些只是存取控制中,供識別使用者是「正確」的使用者,當然不管是生物認證,還是其它的驗證方式,都有管理的需求
隨著科技進步愈來愈快,韓國女子用假指紋貼布順利通關美國,像是知名小說改編的電影「天使與魔鬼」中
以虹膜做為辨識的裝置,而造成劇中角色被挖掉眼睛或是砍掉手指以供辨識,都是目前所遇到的問題及挑戰。

2009年7月30日 星期四

K書筆記本-Access controls(02)

資訊安全的存取控制可以說是決定了整個資訊安全的完整度及強度!當未經授權的人取存了極敏感的資料,是否會產生更大的安全衝擊?
而資安存取控制中,共分為三大類型及七大控制種類,每一類型中均可以七大控制種類來進行存取控制。資安的目標是做到事事有人管
而如何管、怎麼管…等,有相當多的建議做法(ISO-27002),但每一項算是何種控制種類,可能就比較難以分清楚。
在類型中共分為有:Administrative(行政面)、Technical; Logical(科技面、邏輯面)及Physical(實體面),
那七大控制種類又有那幾七種呢?
Preventive(預防):依照資訊資產的價值及其功能,預先預防可能發生的問題,而加以控制,例如:防撞立柱(Bollards)
Directive(管理):依照訂定下來的規範告知使用者,並且做有效的管理,例如:資安條例(IS Policy)
Deterrent(嚇阻):以告誡使用者違範規定的事項可能會受到的懲處,例如:內有惡犬(Beware of Dog)
Detective(偵測):當未經授權的狀況要發生前,必須要能夠被記錄下來,例如:閉路電視(CCTV)
Corrective(矯正):當已經發生風險,要做的控制措施,例如:滅火器(Fire Extinguisher)
Recovery(回復):在處置好已發生的風險後,必須將其狀態回復至預期可用的狀況,例如:重建(Reconstruct; DRP)
Compensating(補償):為了避免再次發生同樣的問題,必須針對現有的控制再次補強,例如:重深防禦(layered defenses)
以上的七項控制措施中,Detective與Corrective是相互搭配的,例如CCTV偵測到人員入侵時,馬上派出警衛前往處理以避免事端擴展。

以上的七大控制,Jason背訟的方法是:
意外要「預防」、事物要「管理」
放狗「嚇阻」他、雷達「偵測」到
派員去「矯正」、「回復」可用性
「補償」免發生。

而根據CISSP CBK中所舉的例中子,下表是各項控制種類及存取類型的綜合表,可供大家參考:

Controls

Administrative

Technical

Physical

Preventative

User Registration

Passwords, Tokens, IPS

Fences, Bollards

Directive

Policy

Violation Report

Security Guard

Deterrent

Demotion

Warning Banner

‘Beware of Dog’

Detective

Report Reviews

Audit Logs, IDS

Sensors, CCTV

Corrective

Employee Termination

Connection Management

Fire Extinguisher

Recovery

DRP

Backups

Reconstruct, Rebuild

Compensating

Supervision, Job Rotation

Keystroke Logging

Layered Defenses

當然,落實這一些安全控制並不是萬無一失了,各項安全存取控制一定也還有相關的感脅
我們即然已經做了這些安全存取主要就是希望在整個資訊資產的A.I.C.都能面面俱到,但是還是會受到感脅,常見的威脅如下:
DoS:我們對網路已經有做好了所有的控制,但是當你遇到DoS(Denial of Service)時,你該如何處理呢?
畢竟我們做的安全控制是由內而外,但DoS確是由外而內的造成你的服務不可用。
Password crackers:雖然我們訂義了登入密碼的長度、複雜度,但是你確躲不掉使用者以John來暴力的取出密碼,或是L0phtCrack、Brutis等等的威脅。
Spoofing/Masquerading:Spoofing(欺騙)是一種主動的攻擊手法,透過已有的可信機制,將以假的資料遞送給其它設備
使其它設備誤以為假系統所發出的資料是真系統,以取得較敏感的資訊。Masquerading(偽裝):則是直接像其它用戶端進行攻擊,使其它用戶端誤以為假系統是真系統,而去存取假系統。
Sniffers:是一種非主動式的攻擊,透過網路上的封包傳遞的過程中,將各種封包收集至一定程度之後,進行分析出所收集到的封包中
有那一些可用的資訊是明碼傳遞,其中成有網管人員進行網路效能除錯的功能,因此雙面刃看用於殺人或救人了。
Shoulder surfing:此種攻擊方式是屬於惡意的監看有用的資訊,這種攻擊手法像是當你在提款機前輸入密碼時,從背後窺視你的PIN碼,
用在電腦中就像是帳號密碼記錄器,這種攻擊手法稱為「肩窺」。
Dumpster Diving:是一種實體威脅,顧名思義,當對手收買走我們公司的廢棄物處理廠商,而將屬於較機密的廢棄文件給取走,間接的將敏感資訊洩露於其它人,當敏感的資訊沒有監銷程序時,就容易產生,雖然有做粉碎的動作,但…若有心人人都辦的到重組文件的可能性。

其它的威脅像是有: Buffer Overflow(緩衝溢位)、 Mobile code(行動碼)、 Malware(惡意軟體)、 Eavesdroppers( 竊取)、 Emanations(列舉)、 Tapping(掛線)、 Data Remanence(資料殘餘)、 Unauthorized Data Mining(未授權的資料採礦)、 Back Door/Trap Door(後門/活門)…等等,都是常見的存取控制的威脅。


2009年4月30日 星期四

K書筆記本-Access controls(01)

Access controls(存取控制)是整個資訊安全中極重要的領域,資訊的交流、不同機密等級問題,甚至人員的進出
不管是從人、事、物,都應該有不同的資訊機密等級,因此在判斷何者可做那種資訊的讀取
或是其它人員對這個人員是不是會造成資訊外洩的問題,是否都是一個必須列入存取控制的的措施

前一個domain不斷的提到人是最大的資訊安全主因,在整個資訊安全的事件發生中,人為的錯誤佔80%
因此好的access controls是可以降低天然、自然、非人為的問題發生,但是人為的問題必須透過好的管理來降低
access controls有幾個基本的要求:Security(安全)、Relability(可信賴)、transparency(通透)、Scalability(可延展)。
Security:在思考每一個控制項目時,必須考量是不是真的有達到安全的需求,若只是增加流程而沒有達成安全只是在虛耗整個企業的資源。
Relability:建構了一個安全管控的系統,但是它本身是不安全的,或者是可用性不高時,那麼就不能被信賴,這樣的控制也是等於沒做。
Transparency:任何一種控制項目應該要達成無阻礙,並且讓導入的衝擊降到最低,不能因為導入控制措施而使業務停擺。
Scalability:在設計存取控制時應該要先考量到系統可能變更、相容的範圍,進而使系統不因變更的因素而造成系統停擺。

那麼在存取控制有幾個重要的概念:Separation of duties(職責分工), Least privilege(最小權限), Need-to-know(僅知原則)。
Separation of duties:意指將一個重要的工作或職責分散給多個人做保管,以防止這個重要資訊被洩露出去,即使被攻擊只有取得部份的資訊。
Least privilege:最小權限是指完成一件任務時,所需要的使用到的人、事、物有那些,那麼只需要開放完成工作所需的權限時可。
Need-to-know:僅知原則,字如其意呀,完成一件任務所需要知道的內容及所需要知道的流程,僅給予完成工作的最少量的應知事項即可。

即然…人、事、物都應該分級,那麼最重要的資訊載體是不是也應該要有所分類呢?
因此在information classification(資訊分類)的部份則有那些議題:
Objectives(目標):以商業風險關係鑑別資訊保護需求,確保敏感或是機密資訊避免未經授權的揭露,以較低的成本來保護某此等級的所有資訊,並且告知授權的所有者去保護所應負責的資產安全。
Benefits(好處):資訊有被分類出其機密、敏感等級後,依照其分別配予適當(Commensurate)具有成本效益的控制措施,並且可以針對不同等級資產的所有者來加強保護已分類好的重要資訊資產。
Compartmentalized information(區隔資訊):這個部份是需要被管理的,當有特殊需求經授權的使用者必須存取已分類的資產,透過控制措施,只需附予完成工作所需要最少量的應知事項。

那麼資訊分類的程序又有那一些呢?透過Scope(定義範圍)、Process(處理流程)、Marking and labing(標示及識別)、Assurance(確保),來執行達成資訊分類的目標。
Scope: Risk Analysis(風險分析)及BIA;Business impact analyses(商務衝擊分析)都必須要完成,必須掌握組織內所有經過分析的資料,並且可以有效的去管理敏感、機密的資產。
process: 基於風險及商務衝擊分析所產生,必須依照資訊分類的等級做資訊及標準化的控制存取,資安政策及程序必須與資訊分類取密的結合,且資產的Owner有責任去完成資訊分類,主要的目的是為了去建立完整的資訊分類的流程,包含建立資訊分類教育訓練機制,當然Owner也有責任去確保覆核資訊分類的正確。不止是分類的過程,處理過程必須著重於可信度(Responsibility)及解密處理(Declassification)的程序。
Marking and labeling: 完成分類的流程後接下來就必須依其機密、敏感級給予標示及識別包含不論正資訊資產、磁性或光學媒體或是文件,均需明確的標示其等級,文件則必須明確的標示於文件中,並以明確的顏色或是底圖來確保機密文件能被注意到,避免被惡意的複製、散播。
Assurance: 整個分類處理的過程必須要確保公正、客觀,不可因外力來影響分類的程序或是分類資訊資產的政策。

資訊分類是相當多業務安全的基礎,包括要做存取控制、BCM、RM必須完成資訊分類才能找出極敏感、機密的資訊資產或是重要的商務流程。因此做好資訊分類的標準,才能做好資訊安全。

2009年4月29日 星期三

K書筆記本-Information Security & Risk Management (07)

做完了風險的識別、資產的評估,那選擇何種保護措施才是對的呢?其實沒有對錯,重點在於Owner的想法
舉個很簡單的例子,有一個資訊資產可能產生的風險是會對它造成極大的損傷,但是導入一個風險控制措施
只需要費資訊資產本身千分之一不到的費用,您要不要導入呀??

續前題,但是,假設導入的控制措施所需花費的費用和風險所造成的損失是相同的,那麼要不要導入呢???
看Owner怎麼去評估,不過,如果站在可用性的角度來看,這個重要資訊資產若受到這個風險可能會停擺
會讓企業蒙受極大的損失,那麼Owner則必須去選擇是要選擇可用性,還是選擇接受損失
這個部與BCM(Business Continuity Management)有相關的關係,所以這個議題就待到BCM時再來跟大家討論。

即然已經知道了資產可能的風險,那麼應該如何降低這些風險(Risk Mitigation)呢?
Risk Acceptance(接受風險):風險也不一定都是很大不了的事情,當風險發生時可能對資訊資產的衝擊非常的低,而且是可以接受的範圍。
Risk Reduction(減少風險):選擇一項控制措施可以去降低曝露因子或是減少損失,並且將風險降低至可以接受的範圍。
Risk Transference(風險轉嫁):將風險轉移給其它公司去負責,例如:買保險、簽署維護合約。
Risk Avoidance(規避風險):當風險是企業無法再持續下去的的流程或是處理底線時,可以選擇退出這個市場或是退出本項資產來規避風險。
Risk Ignorance(未清楚風險):這個項目看起來很像是一個很吸引企業的控制,但它並不是一個接受降低風險的政策,一般來說它是個現像,
可能太過於依賴現有的風險管理做法,而造成風險未被識別的,然而等於未做保護的資產。

安全不是閉門造車,不是有風險都非得要完全消滅,但是一個對的安全管理措施應該要考慮到Cost及value之間的平衡
在選擇制措施前必須先考量的就是cost effective(成本效益),因此第一步就是cost/benefit analysis(金錢利益分析),計算出保護措施的總價值
Accountability(可歸責性):每個控制措施必須至少有一個專人負責,結合直接與效能的覆核。
Absence of Design Secrecy(缺乏安全設計):雖然已經選擇了一個控制措施但是缺乏信賴,例如警衛的共謀,是一種安全控制,但是沒有控制到更深層的安全。
Audit Capability(稽核能力):必須有能力測試,包含有稽核在設計及履行的能力。

風險的來源最多的問題來自於人為、硬體問題,因此在風險管理的部份對於人的控制應該要擺在第一要點,並且要能保證當風險發生時,受到風險脅的資產能夠達到安全的管控,並且得到高階主管的支持,這個才是整個資訊安全最重要的一個環結

K書筆記本-Information Security & Risk Management (06)

Risk Management(風險管理)是資訊安全最重要的環結之一,每種Access Control(存取控制)者必須依照風險管理、BIA(商業衝擊分析)…等
來決定資訊資產需要何種保護、需要何種機密性保護,因此在風險管理可以說是左右著資訊資產的各項存取措施。

在風險管理當然也有各種標準、建議做法…等,不乏有NIST SP 800-30、OCTAVE、ANZ4360…等

風險管理可以協助管理者視別及簡化總風險,並且選擇可以減輕風險的策略,並且預設好可接受的殘餘風險等級,
並且在企業內導入完整的風險管理處理流程,並持續的運作及改善,將企業引導至向上向善發展的途徑上。

風險管理中每一個Owners擁有價值(Value)的資產(Assets),資產會有弱點(Vulnerabilities),有弱點就有可能有潛在的威脅(Threat Agents),
當潛在的威脅成為威脅(Threat),威脅利用資產的弱點對資產成風險(Risk),擁有者為了保護資產導入控制風險的措施(Safeguards)
控制措施保護了有弱點的資產降低了資產的風險,風險成為了residual risk(殘餘風險),但是風險不可能為零,只能降低到可以接受的範圍。
RM

ISO-27001中也明確的規範出針對資訊資產必須要經由風險評估(Risk Assessment)、風險分析(Risk Analysis),進而得知資訊資產的價值及其風險承受的脆弱度
在SP 800-30規範之中,將風險評鑑分為9個步驟:
1. System Characterization(系統描述):針對風險評估定義其範圍;硬體、軟體、人員…等。
2.Threat Identification(威脅的視別):目的是每個資訊資產可能的威脅來源。
3.Vulnerability Identification(弱點的視別):目的是列出可能被威脅利用的弱點。
4.Control Analysis(控制分析):置入分析後的控剄或是計劃,將可能拿來控制弱點產生的威脅。
5.Likeilhood determination(可能性測定):將分析出的弱點並給予威脅一個大略可能造成衝擊的值(低、中、高)。
6.Impact Anlysis(衝擊分析):針對每個不同機密、敏感等級的資產,分別依照衝擊的等級透過Quantitative(數值、定性分析)或是Qualitative(數量、定量分析) 來分析出資產的價值及可能對企業造成的衝擊。
7.Risk Determination(風險測定):針對衝擊分析給予資產定義IT系統的風險等級。
8.Control Recommendations(建議控制項):針對各風險等級提出合理的控制項,必須以Cost effective(成本效益)為主要考量。
9.Results Documentation(產出文件):將風險評估出的結果產出為文件,並且應將本文件交由高階主管以協助各項風險任務的管理。
risk assessment activites

在風險評估中最重要的一環是風險分析的方法Quantitative(數量、定量)及Qualitative,Quantitative是針對資產給予一個很明確的價值,能很明確的量化,但是像商譽、商標、專利…等,可能很難給予一個很明確的價值,而Qualitative(數值、定性)則是給予資產一個大概的值(極低、低、中、高、極高),在這兩種分析之下單純的Quantitative數量分析是不可能的。

Quantitative(數量、定量)分析中必須先訂義出AV;Asset Value(資產價值),及EF;Exposure Factor%(曝露因子;可能對資產造成損失的比例)
將兩者相乘即得到SLA;Single loss expectancy(單一損失期望值),接下來針對該風險可能發生的機率求出ARO;Annual rate of occurrence(年發生概率)
將SLE乘上ARO即得到ALE;Annual loss expectancy(年損常期望值),這麼說太學理了,下面是一個例子,希望可以給大家有比較明確的概念:
有一個資訊資產價值100萬,它置放於地下室,當發生水災時可以對它造成約70%的損失,但要造成這樣的水災,十年只會發生一次
那麼SLA就是100萬X70%=70萬
ARO則是十年發生一次,所以一年只有10%的發生可能性
ALE就是70萬X10%=7萬

Qualitative(數值、定性)分析則是將資產分級,並且針對可能發生的威脅等級對映,以找出可能對資產的威脅層度。
ANZ4360 standard (Australian/New zealand)中即有基本的規範如下:

Consequence:

Insignificant

Minor

Moderate

Major

Catastrophic

Likelihood:

1 2 3 4 5

A (almost certain)

H H E E E

B (likely)

M H H E E

C (possible)

L M H E E

D (unlikely)

L L M H E

E (rare)

L L M H H

E

Extreme Risk: Immediate action required to mitigate the risk or decide to not proceed

H

High Risk: Action should be taken to compensate for the risk

M

Moderate Risk: Action should be taken to monitor the risk

L

Low Risk: Routine acceptance of the risk

參考文件:

完成風險分析後,就這樣了嗎?當然不是,接下來還要討論到降低風險的方法、及正確的風險控制準則…等等
待續…