<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 5945|回復: 0
    打印 上一主題 下一主題

    HotC51共產兒童團第十四課:HotWC3密碼設計原理及其“天地巧合”

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2009-4-2 22:38:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 兒童團 , 密碼 , 設計 , 天地巧合 , 原理
    HotC51共產兒童團第十四課:HotWC3密碼設計原理及其“天地巧合”

    先祝大家節日愉快~~~

    開課:(此課比較暈)

    HotWC3密碼是由星期(Week)算法、循環冗余碼(CRC)、三角(Triangle)密碼這三部分基本元素構成。

    故簡稱WC3密碼。

    由于此密碼算法依據菜農自己推導的菜農星期公式、群魔亂舞的CRC密碼和原創
    三角密碼作為算法之根基,故自稱為HotWC3密碼。

    1. HotWC3密碼強度。

    基本的HotWC3密碼為BCD碼格式的萬年歷日期表達式,占用四個字節。
    由于400年為20871周,故10000年=20871*25*7=521775*7=3652425

    大約為2^22不到。就認為HotWC3是21位密碼吧。但可再加入多位密碼,來增加
    密碼強度。這里只討論基本HotWC3.

    形象點說銀行卡為6位十進制密碼,范圍為0~999999
    而HotWC3為8位BCD密碼,實際10進制范圍為0~3652424

    2. HotWC3密碼的設計原理
    HotWC3為8位BCD密碼bDate[4],分別表示 百年:年:月:日。
    例如:BDate[]={0x20,0x09,0x03,0x05}

    1)星期變換
    為了使密碼收斂,即將長密碼得到一個極短的唯一碼。
    而萬年歷內的某年某月某日即可得到一個確定的星期Week(0~6,0表示星期日)

    例如:BDate[]={0x20,0x09,0x03,0x05} 得到Keek=0x04

    由于BDate為BCD碼,故星期變異后,即W17=16*Week+Week=17*Week
    將其累加的BDate上,即完成日期變異,即wDate[N]=BDate[N]+W17.

    例如:BDate[]={0x20,0x09,0x03,0x05} 得到Keek=0x04
    W17=16*Week+Week=17*Week=(Week<<4)| Week="0x44"
    wDate[]={0x64,0x4d,0x47,0x49}

    這樣wDate就成了包含星期的日期表達式,此可謂“天地巧合”。
    這就是HotWC3要求BCD格式的最重要的原因~~~

    2)星期密鑰
    HotWC3需要一個內部的加密和解密“公鑰”,而且不能從密碼中推算出來。
    HotWC3選用萬年歷做密碼,得到的星期數大約為521775/7=74539個。
    故不可能從星期推算出萬年歷密碼。

    HotWC3的星期密鑰Key為W17與wDate[4]這5個數的異或結果。
    wDate[]={0x64,0x4d,0x47,0x49}
    W17=0x44
    Key=0x63.

    可以看出,從Key里看不出任何BDate的痕跡。
    Key將作用于三角變換的輸入,輸出及密文的輸出方面。

    Key也對CRC運算結果施加影響,同時CRC運算結果又將作為下次
    三角變換的輸入。形成“閉環”的效果。

    這樣不解開Key就無法得出正確的結果。

    由于HotWC3的星期密鑰Key為W17與wDate[4]這5個數的異或結果。
    每四個為一組。那么

    在n=0時,Key XOR wDate[0]即需要百年、年、月及星期的影響。
    在n=1時,Key XOR wDate[1]即需要百年、年、日及星期的影響。
    在n=2時,Key XOR wDate[2]即需要百年、月、日及星期的影響。
    在n=3時,Key XOR wDate[3]即需要年、月、日及星期的影響。

    故解密時,每個密文字符實際都需要對應位的密碼信息。
    而星期密鑰是最關鍵的,但星期卻是不可逆的,即從星期是推不出
    日期的~~~

    這樣逆向者即解密者只能用窮舉法來破解HotWC3密碼,這正是菜農
    夢寐以求的~~~

    3)三角變換
    因為在一個直角三角形中,已知一個整數直角邊,則必有唯一一對的整數
    直角邊和斜邊。早有蘇聯數學家進行過推論,菜農不過進行了形象話的解釋。

    本來 a^2 + b^2 = c^2 需要知道a,b才能算出c,否則有無窮多組解。
    但是,在“直角三角形”和全為“整數邊”這兩個隱藏很深的“條件”下,
    只需知道一個整數直角邊,即可得到另一直角邊和斜邊。

    用一個參數“擴散出”2個參數,這正是CRC運算所需求的,如“初值”和“權”

    即:當一直角邊為奇數時,平方砍半。
        例勾3股4弦5   3^2=9  9/2=4,5    即3^2+4^2=5^2

        當一直角邊為偶數時,砍半平方再拉手。  
        例股4勾3弦5   4/2=2 2^2=4 3(4)5      即4^2+3^2=5^2

    關于三角密碼,這里不用多說,總之一個字節的三角值會“發散”為兩個字節。

    為了避免平方和開方運算,菜農特編寫了《三角變換表》,這樣只需給出
    需要變換的三角值,查表可得出唯一的三角變換值。

    三角變換值為2個字節,可作為每次CRC8運算的“初值”和“權”。
    由于其不可能相等(直角邊不等于斜邊),故可比較其大小來確定CRC運算的“方向”~~~

    再將“初值”和“權”相異或且再與星期密鑰相異或后,即得到“三角密鑰”。

    4)CRC密碼

    CRC密碼是菜農“私自”改動了其CRC運算架構來滿足菜農對“CRC可逆”的需求。

    這樣任何(群魔亂舞的CRC)CRC即可進行加密和解密運算,可以從菜農發布的
    《CRC/PEC網上計算器》看到其“可逆”之處~~~

    這樣,我們即可根據CRC的“三要素”:初值、權和方向。
    正運算出CRC的結果,即加密過程。
    逆還原出CRC的原貌,即解密過程。

    “群魔亂舞的CRC”中的“權”是菜農領悟CRC后對其作出的“擴展”。
    這樣我們就沒必要受制于X8+X5+X4+X0,X16+X12+X5+X0等束縛和制約。

    這樣即可作為CRC密碼的初值和權即CRC密鑰來實現CRC的可逆運算
    即加密和解密過程。

    HotWC3算法中的星期和三角變換的收斂和擴散都是起保護CRC“三要素”的作用。

    5)密文輸出
    CRC運算的結果再異或星期密鑰后作為真正的密文輸出。
    這樣更深地掩蓋了密文和星期、CRC及三角變換之間的關系。

    HotWC3的設計宗旨:讓逆向者只能通過“基于密鑰攻擊”(暈,知道密碼還叫攻擊)

    這樣的設計,使逆向者無法“基于明文攻擊”或“基于密文攻擊”。

    哈哈~~~

    祝大家“三八”愉快~~~

    課畢

    HotC51@126.com   2009.3.8于菜地。
    團部:http://group.ednchina.com/1623/



    5551.gif" target="_blank">

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷