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

2018/05/31

[Cryptography] RSA private key & public key PEM之解析和驗證

這次要動手來驗證RSA的理論與實際操作Openssl產生的key pair是否一致。

2014/08/22

[OpenSSL]利用PEM_write_bio_RSAPrivateKey()來把DER格式轉換成PEM

上一篇([OpenSSL] 利用PEM_write_bio_X509()來把DER格式轉PEM格式)利用程式碼把Certificate轉乘PEM的格式,而這篇則是要把Private Key來轉換成PEM格式。

首先,把PEM的格式先轉換成DER。
openssl rsa -inform PEM -in private_key.pem -outform DER -out private_key.bin

[OpenSSL] 利用PEM_write_bio_X509()來把DER格式轉PEM格式

Certificate及Key pairs檔案有很多種格式,有興趣可以參考這篇

這篇的目的是,格式上的轉換,除了用OpenSSL的指令來轉換之外,也可以用C函式來轉換,底下是用PEM_write_bio_X509()來把Certificate從DER格式轉換成PEM格式。

2014/03/01

[OpenSSL] RSA非對稱型加解密演算法

RSA為目前在電子商業網路上很常用的加解密演算法,其安全性依靠因數分解,因為對極大整數做因數分解是很困難且花時間的,一般都會採用RSA numbers來產生公鑰(Public Key)和私鑰(Private Key),目前大多採用1024bits2048bits

公鑰和私鑰的產生
1.      隨意選擇兩個大的質數pqp不等於q,計算N=p*q
2.      根據歐拉函式,求得r= φ(N) = φ(p)φ(q) = (p-1)*(q-1)
3.      選擇一個小於r的整數e,且與r互質。
4.      用以下公式計算d : d*e1 (mod(p-1)*(q-1))
5.      (N, e)為私鑰,(N, d)則為公鑰。

2013/11/07

[OpenSSL] Encrypted Digest加密摘要計算

在數位簽章的傳輸架構下,傳送方必須傳送檔案的明文以及Encrypted Digest(加密摘要)給接收方,接收方得到檔案之後,會用plaintext(明文)來計算的摘要訊息,以及用RSA公鑰來解密Encrypted Digest,進而比較兩者之間是否有不同,來確認檔案是否有被改寫過。底下為整個架構圖,UserA會把plaintext利用hash()計算出message digest,然後使用private key加密之後變成encrypted digest;接著把plaintext和encrypted digest傳送給UserB,UserB接收到之後,會把encrypted digest使用UserA的public key作解密,和接收到的plaintext代進hash()計算出來的message digest做比較,看看檔案是否有遭到竄改或者接收錯誤。




OpenSSL是怎麼來計算Encrypted Digest呢?做法是把驗證屬性(Authenticate Attributes)的部分,不包含格式前面的OID,然後把第一個byte改成0x31帶進去,利用RSA私鑰加密,就可以得到Encrypted Digest。也就是說,會影響Encrypted Digest結果的包含了contentsigning time以及message digest

2013/11/06

[OpenSSL] S/MIME數位簽章範例

使用OpenSSL的S/MIME來做數位簽章,得到三個不同簽章格式的結果(SMIME、PEM和DER)。
OpenSSL網站參考http://www.openssl.org/

舉例如下:
簽章檔案
Sign.txt
------------------------------檔案內容-----------------------------------
Content-type: text/plain

Test OpenSSL Signed Content
------------------------------檔案內容-----------------------------------


[OpenSSL] 數位簽章格式(SMIME, PEM and DER)

基於X.509和PKCS#7之下的數位簽章檔案有三個格式,分別是SMIME(Secure Multipurpose Internet Mail Extensions)、PEM(Privacy Enhanced Mail)和DER三種格式,SMIME會把整個簽章檔案內容以及簽章base64編碼的數據做為輸出內容;而PEM則是只有base64編碼的部分。
什麼是base64呢?簡單來說,在MIME格式的email中,將binary轉成ASCII的一種方法,把原本的二進制取6個bit為一個單位,用大寫字母(26個)、小寫字母(26個)、0~9(10個)和加除號"+ /"(2個),總共64個(26+26+10+2=64),基於這64個字元的編碼方式,可以簡單地做文字的加密。


2013/10/22

[OpenSSL] Linux下S/MIME範例教學

在網路的世界中,資料來來往往的傳遞,就會存在著資料是誰送來的,或者,資料安全性的問題。因此就有所謂的SSL(Secure Sockets Layer)的機制,在OSI七層架構的屬於表現層(Presentation Layer)之下的應用。

在OpenSSL的官網上可以載到最新的Library。
http://www.openssl.org/