2018年6月4日 星期一

Verilog - 7段顯示器(SEG7)

----a-----
|            |
f           b
|            |
----g-----
|            |
e          c
|            |
----d-----




 當7段顯示器 燈號 active LOW

 ex. 0 => a,b,c,d,e,f = 0 , g = 1

module SEG7_LUT (
   input [3:0] iDIG,
   output reg [6:0] oSEG
);
 
always@(iDIG) begin
  case(iDIG)
    4'h1: oSEG = 7'b1111001;  // ---a----
    4'h2: oSEG = 7'b0100100;  // |      |
    4'h3: oSEG = 7'b0110000;  // f      b
    4'h4: oSEG = 7'b0011001;  // |      |
    4'h5: oSEG = 7'b0010010;  // ---g----
    4'h6: oSEG = 7'b0000010;  // |      |
    4'h7: oSEG = 7'b1111000;  // e      c
    4'h8: oSEG = 7'b0000000;  // |      |
    4'h9: oSEG = 7'b0011000;  // ---d----
    4'ha: oSEG = 7'b0001000;
    4'hb: oSEG = 7'b0000011;
    4'hc: oSEG = 7'b1000110;
    4'hd: oSEG = 7'b0100001;
    4'he: oSEG = 7'b0000110;
    4'hf: oSEG = 7'b0001110;
    4'h0: oSEG = 7'b1000000;
  endcase
end
endmodule

2018年6月2日 星期六

Cryptography

何謂密碼學?


密碼學為一種利用數學方法來對資料加密和解密的科學。密碼系統是由明文、加密演算法、金鑰、解密演算法及密文組合而成。


明文(Plaintext)  →加密前的原始資料,為加密演算法的輸入,解密演算法的輸出。

密文(Ciphertext) →加密之後的資料,為加密演算法的輸出,解密演算法的輸入。

加密演演算法(Encryption Algorithm)
       利用密鑰對明文進行加密的編碼動作的演算法。
解密演算法(Decryption Algorithm)
      利用金鑰對密文進行解密的解碼動作的演算法。
解密(Decipher)
      將密文還原為明文的過程。
密碼破解(Cryptanalysis)
      不需經由加密金鑰或使用偽造金鑰即能夠將密文解原還為明文稱之。





※加密技術的強度指的是密碼破解所需要花費的時間與資源。加密技術強度的高低通常牽涉到下列的因素:

(1)演算法強度
(2)金鑰保護機制
(3)金鑰的長度

※密碼系統的安全與否的衡量標準在於破解者需要花費多少時間以及多少成本才能夠破解。
(1)破解所需要的成本高於該訊息的價值
(2)破解所需要的時間超過該金鑰的壽命

※密碼破解技術分為下列幾種:

(1)只知密文破解(Ciphertext Only Attack)
破解者藉由蒐集所有可能的密文以找出明文或金鑰。
(2)已知明文破解(Known Plaintext Attack)
破解者藉由已知的明文與其相對應的密文以找出金鑰。
(3)選擇明文破解(Chosen Plaintext Attack)
攻擊者利用特殊方法將明文發送給傳送端,再由傳送者取得加密後的密文(即破解者可以控制明文與其相對應的密文) ,以找出加密金鑰。
(4)選擇密文破解(Chosen Ciphertext Attack)
攻擊者利用特殊方法將密文發送給接收端,再由接收者取得解密後的明文(即破解者可以控制密文與其相對應的明文) ,以找出加密金鑰。
(5)暴力破解法(Brute-Force Attack)
破解者嘗試所有可能的私密金鑰來攻擊密碼系統。



※非技術破解

(1)   社交工程(Social Engineering)
利用人性的弱點達到密碼騙取。
(2)   身旁側視(Shoulder Surfing)
在身旁看使用者輸入密碼,成功機率很高。


密碼學系統通常可以根據三種不同的觀點來分類:


一、將明文轉換為密文所使用運算方法上的差異:
(1)取代(substitution)
(2)置換(transposition)
(3)相乘(product)

二、使用金鑰個數的差異:
(1)私密鑰匙(secret-key),或傳統加密系統
(2)非對稱性或公開鑰匙加密系統
(3)雜湊(HASH)

三、處理明文方法上的差異:
(1)資料區段加密法(block cipher)
(2)資料流加密法(stream cipher)


第一大類-運算方法上的差異
(1)取代(substitution)
取代指的是明文中的每一個元素都被對應到另一個元素。
(2)置換(transposition)
置換是將明文中的元素重新排列。
(3)相乘(Product)
以取代與置換為基礎構成的複雜組合,以達到更複雜的相乘效果。

第二大類-金鑰個數的差異
(1)對稱性密碼學
加密與解密使用同一把金鑰稱之,又稱為單一或私密鑰匙(secret-key),或傳統加密系統。
(2)非對稱性或公開鑰匙加密系統
加密與解密使用一對金鑰稱之
(3)不需要金鑰的加密技術稱為雜湊(HASH)

第三大類-處理明文方法的差異
(1)資料區段加密法(block cipher)
將明文分成數個n個字元或位元的區段,並且對每一個區段資料應用相同的演算法則和鑰匙,數學式表示為(M為明文,分割成M1M2 Mn區段)
E(M,K)=E(M1,K)E(M2,K) ..E(Mn,K)

(2)資料流加密法(stream cipher)
資料流加密並不會將明文切分為區段,而是一次加密資料流的一個位元或是位元組。常見的作法是將較短的加密鑰匙延展成為無限長、近似亂碼的一長
串金鑰串流(keystream),再將金鑰串流和原始資料(plain text)經過XOR運算後,產生密文資料(cipher text)。


比較對稱性密碼學與非對稱性密碼學

對稱性密碼學又稱為傳統或秘密金鑰(Symmetric Encryption)
(1)訊息的加密和解密採用相同的金鑰
(2)需要傳送和接收雙方均擁有相同的一把金鑰

優點:
1.較快速
2.如果使用足夠大的金鑰,將難以破解。
缺點:
1.需要有一個安全性機制將金鑰安全性的分送至交易的雙方。
2.提供私密性(Confidential)的安全性能力,無法提供不可否認的能力

非對稱性密碼學(Asymmetric Encryption)
每個使用者擁有一對金鑰-公開金鑰和私密金鑰(public keyand a private key),訊息由其中一把金鑰加密後,必需由另一把金鑰予以解密,公開金鑰可以被廣泛的發佈,而私密金鑰必需隱密的加以保存。

優點:
1.公開鑰匙可以公開分送
2.提供私密性、驗證與不可否認性等服務
缺點:
1.效率較差