DECE加密算法應(yīng)用于藍(lán)牙通訊

DECE算法基本原理
在發(fā)送端,把輸入內(nèi)容按數(shù)據(jù)位排列成矩陣,按照協(xié)商的方式和密鑰形成一個(gè)列加密矩陣、行加密矩陣和加擾矩陣。用列加密矩陣對(duì)輸入數(shù)據(jù)的列進(jìn)行數(shù)據(jù)位交換,用行加密矩陣對(duì)輸入數(shù)據(jù)的行進(jìn)行數(shù)據(jù)位交換,用加擾矩陣對(duì)數(shù)據(jù)塊按字節(jié)進(jìn)行異或操作,從而達(dá)到加密的目的。在接收端,使用同樣三個(gè)矩陣的逆矩陣順序進(jìn)行去擾、行恢復(fù)和列恢復(fù),還原出原始數(shù)據(jù)。在整個(gè)加解密過程中,僅僅使用數(shù)據(jù)位交換和異或操作,這種加密方法命名為。

DECE為了計(jì)算簡單而且保證輸入輸出的數(shù)據(jù)長度完全一樣,加密分組使用8×N列矩陣,這樣,每個(gè)字節(jié)對(duì)應(yīng)于矩陣的一列,順序排列形成矩陣。使用密鑰交換算法產(chǎn)生一個(gè)屬于通訊雙方共有的6個(gè)私有數(shù)值,三個(gè)作為密鑰,與公共密鑰一起計(jì)算三個(gè)HASH數(shù)字簽名;剩余三個(gè)作為矩陣生成偏移量;把數(shù)字簽名根據(jù)矩陣生成偏移量進(jìn)行循環(huán)移位,生成列交換矩陣、行交換矩陣和加擾矩陣。

DECE加密矩陣生成方式很多,選用8×32列共計(jì)128位的加密矩陣;采用DH算法完成密鑰交換,并選擇密鑰和矩陣生成偏移量的DH特征值長度分別為160位和16位;選擇MD5產(chǎn)生HASH數(shù)字簽名,數(shù)字簽名長度為128位。

DH交換DH
交換的目的在于以明文的方式交換密鑰特征,形成只有參與通訊雙方才知道而且通訊雙方一定知道的私有數(shù)值。

確定一個(gè)模數(shù)(如p)以及底數(shù)(如g),兩個(gè)通訊設(shè)備(如MA、MB)各隨即選取一個(gè)加密指數(shù)(如a和b),以明文方式報(bào)告自己的DH特征值(如A和B),然后各自進(jìn)行乘冪計(jì)算以產(chǎn)生這個(gè)私有數(shù)值:
MA把計(jì)算結(jié)果(特征值)A=ga%p發(fā)送給MB;
MB把計(jì)算結(jié)果B=gb%p發(fā)送給MA;
這樣,兩個(gè)通訊設(shè)備可以同時(shí)計(jì)算出屬于這個(gè)通訊鏈路的私有數(shù)值:
O=Ba%p=ga*b%? p=Ab%p。

通訊雙方選擇的加密指數(shù)是不公開的,應(yīng)該相對(duì)較大,而且應(yīng)該通過某種隨即算法保證這個(gè)加密指數(shù)是變化的。其次,通訊雙方每隔一定時(shí)間,應(yīng)該申請(qǐng)更改私有密鑰,以避免黑客獲得太多的數(shù)據(jù)樣本并破譯通訊內(nèi)容。針對(duì)基本原理中提到的各個(gè)特征數(shù)據(jù)的長度,用于生成密鑰的加密指數(shù)至少應(yīng)該達(dá)到12位,用于生成偏移量的加密指數(shù)建議選擇8位,這樣,六個(gè)加密指數(shù)的選擇空間總和至少達(dá)到60位。在通過信令完成RTP參數(shù)交換以后,雙方各自在第一時(shí)刻發(fā)起DH交換請(qǐng)求,而且任何一方收到DH交換請(qǐng)求以后,立即向用戶發(fā)送自己的DH特征值,從而建立起這個(gè)加密信道。

設(shè)備產(chǎn)生的加密指數(shù)是隨機(jī)的、變化的,而且6個(gè)加密指數(shù)之間沒有任何的聯(lián)系。事實(shí)上,設(shè)備根本不能產(chǎn)生隨機(jī)數(shù),當(dāng)程序運(yùn)行到某一條指令的時(shí)候,時(shí)鐘是一個(gè)固定值,隨機(jī)算法的種子是一個(gè)固定值,甚至各個(gè)寄存器也是一個(gè)固定值,用隨機(jī)算法產(chǎn)生的下一個(gè)數(shù)據(jù)也是固定值。在程序啟動(dòng)的時(shí)候以及運(yùn)行過程中,最好讀一段隨機(jī)網(wǎng)路數(shù)據(jù),以這些數(shù)據(jù)進(jìn)行運(yùn)算和組合,形成加密指數(shù)。