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

Ka-bi̍t Kái-bi̍t Ê Kán-kài

加密解密的簡介

佇 cable modem 佮 MTA 的環境,為著欲保護傳送的資料莫(mài)予人偷聽,會使用加密這个技術。毋過,毋是凊凊彩彩就會使使用這个技術,
參咱人仝款,若是欲共祕密的資訊傳予別人,愛先認予清楚,對方敢會用得信認。佇 cable modem 佮 MTA 遮,是利用數位憑證(sòo-uī pîn-tsìng)
digital certificate 來判斷對方的身份。

因為按呢,咱就愛佇設備內底安裝 certificate,若是咧做實驗的時陣,有可能閣愛換另外一組 certificate。真濟人予這幾張 certificate 舞甲花嗄嗄(sà)
出問題的時陣,毋知欲按怎掠蟲,我咧(teh)想,這是因為無了解到底啥物是 certificate 造成的。

欲了解 certificate ,愛對加密的方式講起,根據我過去的經驗,見擺若是講著數學,逐家就聽甲霧嗄嗄,所以這篇就無欲講數學,直接舉例來講。

DOCSIS BPI 解密 - 取得 TEK



簡介


DOCSIS 1.0 BPI 加密使用的是 DES,為了能解開封包內容必須先取得 TEK (raffic Encryption Key)。取得 TEK 是透過 BPKM (Baseline Privacy Key Management) Protocol。
BPKM 的過程中 CMTS 會使用 RSA 加密 Auth Key,CM 解開 Auth Key 後算出 KEK (Key Encryption Key),接著再用 KEK 解開 TEK,之後就能用 TEK 進行加密。

OpenSSL 操作筆記 - 產生 RSA 金鑰

Certificate 的目的就是用來發布 public key, 在 public key 上加入各種屬性讓人知道這張 certificate 的作用是什麼, 再加上一段 CA 的簽名,增加這隻 public key 的可靠性
在 DOCSIS 1.0 的時候, 跑 bpi 時, CM 直接丟 public key 與頭端溝通, DOCSIS 1.1 之後 bpi 變成 bpi+ , 這時候 CM 丟的就是 certificate 了, CMTS 可以用它已知的 CA 去檢查 CM certificate 是否為正確的
作 certificate 第一步就是製作 key, 目前我用到的都是用 RSA

openssl 產生 RSA key 有多種方式,有專門產生 key 的, 和順便產生 key 的

OpenSSL 操作筆記 - 檔案格式轉換

格式簡介

Certificate 和 key 可以存成多種格式, 常見的有 DER , PEM , PFX



  • DER


  • 將 certificate 或 key 用 DER ASN.1 編碼的原始格式, certificate 就是依照X.509的方式編碼, key 則是又能分為PKCS#1 和PKCS#8



  • PEM


  • 把 DER 格式的 certificate 或 key 使用 base64-encoded 編碼後在頭尾補上資料標明檔案類型

    RSA非對稱加密演算法 (五) PKCS#1 v1.5 padding

    之前所記錄的RSA演算法的運作都只是在做數學運算,在用於資料的加解密時可以把資料切割,內容看成是一個大的整數,資料要切多細則是看key是多少bits
    之前的key為例,這是1024 bits的key,所指的是n有1024 bits。當我們要加密資料時可以切成多個小於1024 bits的區塊去計算。而在實際的應用上,因為RSA
    演算法的速度比較慢,不設合用來傳資料,我目前看到的實際應用是用在certificate上,用private key簽名,public key驗證,時寄傳送的資料不長。

    資料長度不夠的話會容易被破解,再加上這個演算法沒有加入亂數,當出現重重複性的資料時也會降低安全性,因此導入padding的機制來加強安全性
    RSA有多種padding的方式,這邊只記錄最常用的PKCS#1 v1.5

    RSA非對稱加密演算法 (四) 利用中國剩餘定理加速



    使用RSA演算法在解密的計算時會需要較多時間,這時可以利用中國剩餘定理來加速
    假設現在有一組金鑰,是由質數\(p,q\)生成,其中公鑰\((e,n)\),私鑰\((d,n)\),\(n=pq\)
    在生成RSA金鑰的步驟中,最後一步是把\(p,q\)銷毀,但是在擁有私鑰的這一方若保留這兩個數則可以加快運算時間

    假設收到一筆加密資料\(C\)

    原本要計算的是
    \(m= C^d \mod n =C^d \mod (pq)\)

    把它轉換成中國剩餘定理的題型
    \(\left\{ \begin{matrix} x \equiv m_1 \pmod{p} \\ x \equiv m_2 \pmod{q} \end{matrix} \right.\)
    \(m_1=C^d \mod p \\ m_2=C^d \mod q\)
    \(x\)的最小正整數解就是\(C^d\)

    中國剩餘定理 Chinese remainder theorem

    RSA演算法的解碼方法是\(C^d \mod N\),\(d\) 是一個很大的數,要算這個值比較辛苦,可以利用中國剩餘定理來簡化。
    中國剩餘定理處理的問題就是韓信點兵這種題目
    兵不知其數,三三數之剩二,五五數之剩三,七七數之剩二
    寫成數學式就是
    \(\left\{ \begin{matrix} x \equiv 2 \pmod{3} \\ x \equiv 3 \pmod{5} \\x \equiv 2 \pmod{7} \end{matrix} \right.\)

    RSA非對稱加密演算法 (三) 演算法證明


    根據上一篇的數學理論,可以證明RSA演算法的解密是正確的

    先把RSA產生key的過程再寫一次

    1.`選擇兩相異質數p,q,求得N=pq`
    2.`\phi(N)=(p-1)(q-1)`
    3.`選一數e當公鑰1 <= e < \phi(N),求出模反原數,ed -= 1 ( mod \phi(N))` 接下來就能加解密了 訊息為`m` 加密後為`C`,`C=m^e mod N` 解密方法 `C^d mod N` 也就是要證明 `m^(ed) -= m (mod N)`

    RSA非對稱加密演算法 (二) 數學理論

    這篇紀錄一些RSA運算時要用到的數學定理和我比較能夠理解的證明

    同餘理論


    定義
    對於整數 a,b,若正整數 m 能整除 a-b ,以符號表示就是 m | (a-b) ,則稱為 a,b 對於模 m 同餘,可以寫成
    `a-=b(mod m)`

    由此定義可以推導出
    `a-=b (mod m) <=> a mod m = b mod m`

    RSA非對稱加密演算法 (一) 運作方式


    這是一種非對稱加密的演算法,非對稱加密就是指加密和解密使用不同的key
    利用這種方式,再加上公正第三者就形成數位簽章的架構

    以cable modem 的secure firmware upgrade為例
    1.最頂層的人DOCSIS,大家都信任他,並保存它散佈出來的public key
    2.今天有個叫MCA的公司要出一版image,他就產生一對key,private key留著,public key丟出來,
    再加上一些屬性描述丟給DOCSIS簽名(*1),取得CVC,之後再把CVC,image,以及MCA對這個image的簽
    名包成CM可以吃的格式丟出來
    3.CM收到這一堆東西後就可以開始驗證簽名(*2),確認簽名是對的才會進行下一步,開始更新image(*3)