Cryptosystems,Signature

cryptosystems(密碼學)
依金鑰異同可分為
symmetric cryptosystems
asymmetric cryptosystems

cryptanalysis(密碼分析)
破解密碼的技術,可分為
unconditionally secure(無條件安全),
不管截獲多少密文或任何方法仍然沒有足夠資訊導出明文資料 ex:one-time pad
computationally secure(計算安全),
以目前或未來預測之科技,在合理資源設備下,要破解密碼系統要一段很長的時間

…………………………. 

symmetric encryption(對稱式加密)
也稱symmetric cryptosystems(對稱式密碼系統),one-key cryptosystems
屬傳統加密
規格如下
 KEY數量:1把,加解密用同一把KEY
 參與物件:P=明文,C=密文,key金鑰
 加解密架構:C=key(P),P=key(C)
優點:速度快 
缺點:管理key不易,只提供保密性與某種程度確認性
ps:
增強防禦:提高金鑰強度,提高加密演算法複雜度
the avalanche effect(崩塌效應):明文或鑰匙細微變動會造成密文的重大變化


加密技巧:
a.取代Substitution(將字元用符號代替)
 caesar加密法:每個字母用後面第三個取代
 monoalphabetic加密法:每個訊息採用一種對應方式
 playfair:將雙字元明文視為單一元素,再將其轉成雙字元密文
 hill:將連續的m個明文字元代換成m個密文字元
 polyalphabetic:處理明文訊息時同時使用好幾個不同的monoalphabetic取代法
b.置換Transposition(重新排列)
 rail fence(柵欄法):將明文寫成一連串的對角線形式,再一列一列地讀出
 Simple Columnar Transposition(簡單分欄換位技術):將明文放入矩陣中,在隨機確定各欄輸出次序,即產生密文 
 one-time pad:與訊息等長的隨機鑰匙,不重覆使用,絕對地安全

one-time pad(一次性密碼)
加解密金鑰用過一次就丟掉
優點:可達到unconditionally secure無法被破解,且加解密速度快
缺點:實作上有困難
無法破解的原因:密文和明文之間無任何統計上關係
ex:S/Key
………………………

加密原理:
block cipher(區段加密法):每次加解密以區塊為單位 
將一段明文分成多個大小相同的block(通常為64bit),一次對一個block加密,
運作模式分為以下
 ECB(electronic codebook mode,電子書模式):或稱ECM,分成區塊後大小不足則補滿,在將各別區塊加密
 CBC(cipher block chaining,密文塊串連模式):若相同區塊重覆,可產生不同密文塊
 CFB(ciphertext feedback,密文反饋模式):可當串流加密器用,便能以較少位元數加密
 OFB(output feedback,輸出反饋模式):可當串流加密器用,使用輸出做反饋值而不是密文,較不安全
stream cipher(資料流加密法):每次加解密以bit或byte為單位 
一次加密資料流中的一個位元或位元組,可用來做即時加密,但可能遭到鍵值流重複使用攻擊


使用block ciper的有以下:
feistel:區段加密法,對64位元區段加密,執行16回合,以shannon加密法的取代重排為基礎
DES(data encryption standard,資料加密標準):56 bits key,64bits block size,16回合
triple DES:用3把鑰匙是168bits key,用2把鑰匙是112bits key,64bits block size,48回合,且架構為EDE加密解密加密
AES(進階加密標準):128,192,256bits key,小於128bit可變block size,10,12,14回合,NIST選rijndael演算法做為AES,快速簡單
CAST-128:128位元key
IDEA(國際資料加密演算法):128bits key,64bit block size,8回合,很好但有專利,應用在pgp
blowfish:可變key<448bit,64bits block size,16回合,快速,小巧,簡單,可變安全性,對64位元區段加密
RC5:可變key<2048bit,128-256bits key,64bits block size,小於255可變回合,區段加密法,快速簡單,記憶體消耗少,採移位輪轉circular bit shifts,有專利
twofish:128,192,256bits key,123bits block size,非常強,廣為使用

使用stream cipher有以下:
RC4:1994外洩,快速簡單,可變鑰匙長度8-2048,用在SSL/TSL,WEP

PS:
保密性策略
link encryption(連線加密):從起點到終點的每個連線及整個封包都須加密,每段連線兩端節點共用一把key,且key每段不同
 缺點:經過節點時需解密讀封包標頭,無法確保節點安全,訊息則失去防禦能力
 traffic padding(附加訊息法):減少被流量分析攻擊的機會
end-to-end encryption(點對點加密):在收發端加密,兩端共用一把key,只能加密使用者資料,標頭仍為明文
 缺點:因封包標頭是公開無法保證整個封包安全
 同時用點對點加密及連線加密:最安全
 
…………………………………………………………………………

asymmetric encryption(非對稱式加密):
也稱asymmetric cryptsystems(非對稱式密碼系統),public-key cryptography(公開鑰匙密碼學)
規格如下
 KEY數量:2把,一把用於加密,另一把用於解密,補充說明:pubilckey和privatekey會成對,任一把皆可加解密
 參與物件:C=密文,P=明文,ekey=公鑰,dkey=私鑰,S=簽章,M=訊息
 加解密架構:C=ekey(P),P=dkey(C) ,補充說明:用那個publickey加密就用那個privatekey解密
 簽章架構:S=dkey(M),M=ekey(S) ,補充說明:用privatekey加密能產生不可否認性,且publickey皆可開
優點:可解決傳遞金鑰問題,可做數位簽章 
缺點:計算量大,速度慢
ps:
加密確認(鑰匙交換):結合加解密+確認技術,可保證不被竊聽,及保證由誰送出
trap-door one-way function(具有後門的單向寒式)

加密技巧:
number theory(數論)

常見加密法
RSA(rivest-shamir-adleman):區段加密法,用指數運算
ECC(elliptic curve cryptography,橢圓曲線法):1993,使用位元比RSA少,可信度無RSA高
knapsack algorithm(背包演算法):1978,ralph merkle,己遭破解

diffie-hellman:交換鑰匙演算法,功效取決於計算不連續對數的困難度
 RSA的前身,最古老的公鑰加密演算法,但可能遭man-in-the attack(中間人攻擊法)欺騙
elgamal演算法:1985,可加密的diffie-hellman,基於計算離散對數的困難而提供其安全性,可提供數位簽署
schnorr數位簽署:1989
DSA數位簽章演算法:Schnorr和ElGamal簽名算法的變種

………………….

確認性技術
用途:確保訊息的integrity(完整性),避免訊息遭篡改
有以下幾種方法
 將訊息加密:用對稱式加密或公開鑰匙加密將訊息加密,可提供基本的確認性
 MAC(訊息確認碼):由訊息及私鑰產生MAC並附在訊息後,驗證則看訊息及私鑰運算結果是否和MAC一致,雙方需用同key
 hash function(雜湊函數):可不用key,接受不固長度的訊息m做為輸入,然後輸出一個固定長度的訊息認證值h(m)

message digest(訊息摘要)
將message透過one-way hash function(單向雜湊函數)運算後的特徵值,即為message digest

one-way hash function(單向雜湊函數)
執行速度比傳統加密法快
常見的有以下:
 MD4:較MD5簡潔,快
 MD5:rivest1992,較MD4複雜,慢,128位元摘要長度,處理512bit區塊單位,可處理無限長度訊息
 SHA-1(secure hash algorithm,安全雜湊演算法):1993,160位元摘要長度,處理512bit區塊單位,可處理小於263bit長度訊息
 RIPEMD-160:160位元摘要長度,處理512bit區塊單位,可處理無限長度訊息,結構和sha-1類似
 HMAC:雜湊函數+訊息確認碼

……………………..

數位簽章
將訊息摘要用私鑰加密後,該資料便具有認證性、整體性及不可否認性。具有與傳統簽名文件相同的特性
需符合3條件:
 1接收端能驗證發送端的身份,兩端間需彼此認證
 2發送端不能在後來否認訊息內容,也叫不可否認性
 3接收端不能自己編造訊息,保護客戶端
方法:
 對稱鍵值簽章:藉由可信任的集中授權機構,使用者和機構同享有共同的秘密鍵值
   可能問題:授權機構可讀取所有簽章訊息,使用者需相信授權機構
 公共鍵值簽章:
  RSA:業界標準,許多安全控管產品皆採用此演算法
  DSS(digital signature standard,數位簽章標準):1991NIST提出,使用sha,以及DSA數位簽章演算法,Key長在512~1024位元間
  EES(Escrowed Encryption Standard,信託加密標準):1994提供了個人與機構在金鑰管理過程中所必須面對的秘密金鑰遺失時的解決方案
 訊息摘要:只提供認證但不提供保密性,ex:MD5,SHA-1
 特殊數位簽章:含不可否認簽章、盲目簽章,與代理簽章

undeniable signature(不可否認簽章):Chaum & Antwerpen於1989年所提出,驗證簽章時需要原簽署者參與
blind signature(盲目簽章):Chaum於1982年所提出的方法
Signer用Private Key加密後再交由User使用,而當這些Message收回後,Signer僅可知道這些Message是由自己發出,而無法確定User是誰。
特色是unlinkable,也就是說Signer並無法明確的知道使用者的行蹤,因此可以確保使用者的隱密性。
可以運用在Electric Voting(不記名投票),Digital Cash(商家不必和銀行連線,僅需依據儲值而予以交易),犯罪通報系統等。
同時,由於Blind  Signature可以是off-line的,因此雖不能降低Server端的load,卻也對Client端的負荷有所助益。
因Blind Signature是untraceable,故若是被歹徒用在不好的方面,如洗錢,或者是負贖金,可能會導致這些錢的來源無法確定,而使得檢查機關無線索可循。因此想要有隱私和安全並存,就必須要有類似認證的機關來負責雙方的交易。

盲簽章的種類:
門檻式盲簽章
 應用群體導向簽章觀念所設計的盲簽章
局部盲簽章
 簽章者在簽章中加入一些訊息c,如時戳,而c是不可偽造的
 簽章者產生S(x, c, B(m, r))
 欲得簽章者計算得最後之簽章S(x, c, m)
公平盲簽章
 加入一個公證人負責追蹤有問題的簽章

proxy signature(代理簽章):Mambo,Usuda,&Okamoto,於1996年提出
參與角色包含original signer(原始簽署者)、proxy signer(代理簽署者)與驗證者,代理簽署者在原始簽署者的授權下,可以代表原始簽署者執行簽署任務。授權可區分三種類型:
 full delegation(完全授權):代理簽署者握有與原始簽署者相同的私鑰,其產生的代理簽章與原始簽署者的簽章相同。
 partial delegation(部份授權):代理簽署者所持有的私鑰是由原始簽署者依自己的私鑰計算而得,代理簽署者的私鑰並不可以推導出原始簽署者的私鑰,故代理簽署者與原始簽署者所簽署的簽章是有所不同。此類簽章又區分成兩種類型:
  proxy-unprotected(無保護代理的代理簽章)除原始簽署者及代理簽署者以外,無任何第三者可以產生出代理簽署者的有效代理簽章
  proxy-protected(保護代理的代理簽章)只有代理簽署者能產生出自己的有效代理簽章。
 delegation by warrant(授權書授權):由原始簽署者簽署一份授權書以證明該代理簽署者確實是在原始簽署者的授權之下執行簽署工作。