基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒?/h1>

為了加強(qiáng)云計算系統(tǒng)安全,我們采用點集拓?fù)浞中巫兓眠\算進(jìn)行隨機(jī)密鑰生成,并運用橢圓加密算法進(jìn)行數(shù)據(jù)文件加密。

一、云計算安全體系結(jié)構(gòu)

云計算是定制與交付服務(wù)的超級計算,其最大的優(yōu)點是虛擬服務(wù)平臺高效且定制服務(wù)總類豐富,具有廣闊的市場應(yīng)用前景,但是安全性問題一直是云計算的一大難點。云計算的不安全性表現(xiàn)在多個方面,比如信息體的偽造、變造、假冒、抵賴、木馬攻擊、病毒損毀等,這些使得云計算的應(yīng)用推廣受到阻礙。

其實不信任、不安全對云計算的危害不僅發(fā)生在服務(wù)定制和交付這兩個出入口,也發(fā)生在中間過程,即:服務(wù)的組織、加工、整理、包裝等過程,因此在整個云空間,云可信、云安全對正常的網(wǎng)絡(luò)社會經(jīng)濟(jì)秩序構(gòu)成了巨大的挑戰(zhàn)。圖1描述了云計算安全防護(hù)體系結(jié)構(gòu)。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

要實現(xiàn)可控、可信、可驗證的云計算安全系統(tǒng)必須保證基礎(chǔ)架構(gòu)安全,用戶數(shù)據(jù)安全級運營管理安全,作為云計算的使用者來說,用戶數(shù)據(jù)安全是最為關(guān)注的問題,保護(hù)用戶信息的可用性、保密性和完整性是云計算必須攻克的難題,而身份驗證、訪問授權(quán)、訪問控制及加密則是用戶數(shù)據(jù)安全需要解決的具體問題。

本文從云計算加密系統(tǒng)方面展開研究,密鑰生成是加密系統(tǒng)最關(guān)鍵的部分,其次是加密算法,采用點集拓?fù)浞中巫兓玫拿荑€生成隨機(jī)性強(qiáng),安全性高的優(yōu)點,而且分形變幻效率高,適合作為密鑰生成運算方法。同時采用人臉、語音、指紋等生物特征點作為分形變幻的數(shù)據(jù)源,具有唯一性,進(jìn)一步提高了加密系統(tǒng)的安全性,能給不同用戶數(shù)據(jù)打上用戶特有標(biāo)簽,有助于保護(hù)用戶數(shù)據(jù)隱私。

二、點集拓?fù)淙悍中巫兓玫脑朴嬎慵用軐崿F(xiàn)

1、點集拓?fù)浞中巫兓妹荑€生成

(1)隨機(jī)碼生成

在密碼學(xué)中,隨機(jī)序列的作用不言而喻,它的生成一般使用偽隨機(jī)生成器,包括給定長度為K的一個隨機(jī)二進(jìn)制序列(稱為種子SEED)作為算法的輸入,算法輸出一個看上去似乎隨機(jī)的二進(jìn)制序列。

隨機(jī)數(shù)是指用數(shù)學(xué)遞推公式所產(chǎn)生的隨機(jī)數(shù)。不同的開發(fā)環(huán)境提供的生成隨機(jī)數(shù)的函數(shù)和方法不一樣。在典型情況下,它會輸出一個均勻分布在0和1區(qū)間內(nèi)的偽隨機(jī)變量的值。隨機(jī)數(shù)發(fā)生器是在計算機(jī)中產(chǎn)生隨機(jī)數(shù)的方法,經(jīng)常采用如下公式:

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

其中b、c、d為正整數(shù),d稱為由公式所產(chǎn)生的隨機(jī)序列的種子,an是隨機(jī)數(shù)序列。

由公式1可以看出,所產(chǎn)生的隨機(jī)序列的值與b、c、d是有一定關(guān)系的。這種只在一定程度上滿足隨機(jī)性的序列稱為偽隨機(jī)數(shù)。用這個公式產(chǎn)生0—65536的a1,a2,....,an隨機(jī)數(shù)序列,故稱為232步長的倍增諧和隨機(jī)數(shù)發(fā)生器。

(2)點集拓?fù)淙簩ο蟮哪P?/strong>

如圖2所示,點集”拓?fù)淙赫摗睂ο罂梢员硎緸橛删匦慰虬鼑c集的對象BioTPM[N],點集拓?fù)淙赫撨\算模型說明如下:

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

a、設(shè)定基準(zhǔn)點和基準(zhǔn)方向點

設(shè)定該對象模型的基準(zhǔn)點和基準(zhǔn)方向點步驟,圖2中的P、D所示,子集也如此。

b、設(shè)定坐標(biāo)系

設(shè)定該對象模型的坐標(biāo)系,如圖2中xOy坐標(biāo)系所示,子集也如此。

c、設(shè)定環(huán)運算特征

點集“拓?fù)淙赫摗睂ο筮\算特征表示為,首先進(jìn)行加法交換群位移操作,再進(jìn)行乘法對稱群旋轉(zhuǎn)操作,也可在該乘法對稱群旋轉(zhuǎn)操作的同時增加乘法對稱群翻轉(zhuǎn)操作。當(dāng)然規(guī)則要事先確定,子集也如此。在圖2中,位移方向由P、D連線的箭頭指示,位移量由P、D箭頭連線長度Move [N]指示,Move [N]是BioTPM[N]到BioTPM [N+1]的基準(zhǔn)點P
位移值;旋轉(zhuǎn)由Round[N]弧線箭頭指示,旋轉(zhuǎn)量由Round[N]弧長指示,Round[N]是BioTPM [N+1]的旋轉(zhuǎn)值。

需要說明的是,設(shè)定先加法位移后,再乘法旋轉(zhuǎn),該兩項操作為一次組合操作,在”群論”中稱環(huán)運算。該環(huán)運算次數(shù)為MRNumber[N]。圖2只進(jìn)行了一次加法位移和乘法旋轉(zhuǎn),因此MRNumber[N]值為1,該環(huán)的運算次數(shù)不改變點集“拓?fù)淙赫摗睂ο蟮膶傩浴?/p>

上述基于點集“拓?fù)淙赫摗睂ο蟮亩x中,涉及該環(huán)運算特征參數(shù)的確定,即加法位移量Move [N]、乘法旋轉(zhuǎn)量Round[M、環(huán)運算次數(shù)MRNumber[N]。同時,該點集”拓?fù)淙赫摗睂ο蟮姆蔷€性變換和變幻要求該環(huán)運算特征參數(shù)非線性。

Move [N]、Round[N]、MRNumber[N]的初始化值來自于節(jié)點”子集自組織”,這些值的確定是點集拓?fù)淙赫撨\算的關(guān)鍵點。

(3)點集拓?fù)淙悍中巫兓铆h(huán)運算

特征圖像點的集合用G[K]表示,G[K]中又有子集Gl[K],…,G [K],設(shè)定GnLKl為最后一個子集。提取自組織于集合G[K]的兩個子集Gi[K]、GnLKl,參與基于混沌的散列運算。設(shè)定位移量Move[K]是子集Gl[K]的散列運算值、乘法旋轉(zhuǎn)量Round[K]是Gn[Kl的散列運算值、環(huán)運算次數(shù)MRNumber[K]是G1[K]、Gn[K]或Gl[K]模Gll[K]的散列運算值。

基于群特征的運算是點集”拓?fù)淙骸狈中巫兓铆h(huán)運算,設(shè)定點集”拓?fù)淙骸狈中巫兓铆h(huán)運算,由單位拓?fù)淙悍中巫兓铆h(huán)運算構(gòu)成,是該單位群的加法運算。設(shè)定單位群是連續(xù)的單位環(huán)運算。其中,單位環(huán)運算是單位點集拓?fù)淙涵h(huán)運算的簡稱,是該點集先加法位移后,再乘法旋轉(zhuǎn)的運算,而該分形變幻則是反復(fù)的”單位環(huán)”運算。具體運算流程如圖3所示。

“單位群”加法運算的數(shù)學(xué)規(guī)定如下:

a、1個“單位群”+0個“單位群”=1個“單位群”,即進(jìn)行該連續(xù)的“單位環(huán)”運算。

b、1個“單位群”+1個“單位群”=2個“單位群”,即進(jìn)行二連續(xù)的“單位群”運算。

c、1個“單位群”+K個“單位群”=K+1個“單位群”,即K+1連續(xù)的“單位群”運算。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

點集拓?fù)淙悍中巫兓铆h(huán)運算的流程步驟如下:

(1):輸入集合G[K]及子集Gl[K],...;Gn[K],初始化1個”單位群”運算;

(2):設(shè)定子集G1[K]為集合G[K]的自組織對象;

(3):設(shè)定子集Gn[K]為集合G[K]的自組織對象;

(4):謎Move[K]是GI[K]的散列運算值、Round[K]是Gn[Kl的散列運算值、MRNumber[K]是Gl[K],GnLKl或Gi[K]模GnLKl的散列運算值:

(5):設(shè)定K個”單位群”運算的循環(huán),K的初始化值為1;

(6):設(shè)定1個”單位群”即一個連續(xù)環(huán)運算及其運算規(guī)則,循環(huán)次數(shù)為MRNumber[N]次;

(7):設(shè)定K個”單位群”運算的循環(huán)限制值;

(8):輸出K個”單位群”運算的點集”拓?fù)淙骸狈中巫兓铆h(huán)運算值。

(4)密鑰生成

運用VC++實現(xiàn)點集拓?fù)浞中巫兓眠\算如圖4所示。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

打開選擇特征數(shù)據(jù),本文選擇指紋圖像作為特征數(shù)據(jù),然后選擇變幻次數(shù),選擇100次,然后選擇保存路徑及保存名字,最后選擇應(yīng)用,變幻結(jié)果立即生成,且存入保存路徑的log.log文件中。

變幻結(jié)果如圖5所示,顯示由子集GI[K]和G[K]組成集合G[K]一系列數(shù)據(jù),其中m和m’分別表示Gi和G2作平移旋轉(zhuǎn)操作的次數(shù)。從開始到結(jié)束顯示每一系列數(shù)據(jù)都不同,呈現(xiàn)很大的變幻隨機(jī)性。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

Move[K]、Round[K]、MRNumber[K]數(shù)值范圍從Move[l]=l、Round[l]=0、MRNumber[1]=3,直到隨100次單位點集”拓?fù)淙骸狈中巫兓铆h(huán)運算,呈現(xiàn)Move[100]=6、 Round[100]=0、MRNumber[100]=3。文件列從子集G1[2]和G2[2]組成的集合G[2]系列數(shù)據(jù)開始,到子集G1[101]和G2[101]組成的集合G[lO1]系列數(shù)據(jù)結(jié)束,是100組集合G[K]變幻數(shù)據(jù),第1組集合是初始數(shù)據(jù)。

利用此分形變幻的隨機(jī)序列作為密鑰對數(shù)據(jù)進(jìn)行加密,具有非常高的安全性,密鑰的生成以指紋圖像作為輸入特征值,具有唯一性,可靠性及辨識性更高。

2、加密實現(xiàn)

加密的過程就是根據(jù)密鑰和明文生成密文的過程,密鑰由指紋圖像經(jīng)過點集拓?fù)浞中巫兓枚?,密文由加密算法而得,具體過程如圖6所示。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

(1)橢圓加密算法

本文采用橢圓加密算法,它與傳統(tǒng)的基于大質(zhì)數(shù)因子分解困難性的加密方法不同,橢圓加密算法ECC (Elliptic Curve Cryptosystems)通過橢圓曲線方程式的性質(zhì)產(chǎn)生密鑰,ECC 164位的密鑰產(chǎn)生一個安全級,相當(dāng)于RSA 1024位密鑰提供的保密強(qiáng)度,而且計算量較小,處理速度更快,存儲空間和傳輸帶寬占用較少,因此常被用于安全級高的加密系統(tǒng)中。

橢圓曲線即三次平滑代數(shù)平面曲線(SmoothAlgebraic Plane Curve),可在適當(dāng)?shù)淖鴺?biāo)下,表達(dá)成Weierstrass方程式:

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

除了特殊系數(shù),一般而言,可在適當(dāng)?shù)淖鴺?biāo)下,表示為:

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

在系數(shù)K上的平面圖形,其中E也包括無限遠(yuǎn)點O。

令P、Q為E(FP)上的兩點,假設(shè)點Q由點P生成。在E上的離散對數(shù)問題就是要解Q=[k]P的K值。

令E為定義在FP上的橢圓曲線,則E(FP)的個數(shù)滿足#E(Fp)=p+1+t,其中誤差項|t|<2√p,則:

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

給定私有密鑰k,K=k.#E(Fp),就可計算出經(jīng)過加密后的公開密鑰K,其中p的值越大,安全性也好,但加密速度變慢,一般而言,p取200-bit左右。

(2)橢圓加密實現(xiàn)

首先通過點集拓?fù)渥兓脤⒅讣y圖像生成密鑰,然后將密鑰和要加密的明文,通過橢圓加密算法生成密文,密文通過相同的密鑰進(jìn)行解密,恢復(fù)原文,依據(jù)此功能,通過VC++開發(fā)程序,程序界面圖如圖7所示。

基于點集拓?fù)淙悍中巫兓玫脑朴嬎慵用芊椒? width=

如上圖所示,對明文12981進(jìn)行橢圓加密,加密的密鑰來自于點集拓?fù)浞中巫兓眠\算,加密后的密文為(646034, 519257840) (672986, 519297773),點擊“解密”按鈕,恢復(fù)為原文12981。采用此加密方法具有速度快,安全性高的優(yōu)點。

小知識之拓?fù)?/strong>

拓?fù)鋵W(xué)的英文名是Topology,直譯是地志學(xué),也就是和研究地形、地貌相類似的有關(guān)學(xué)科。幾何拓?fù)鋵W(xué)是十九世紀(jì)形成的一門數(shù)學(xué)分支,它屬于幾何學(xué)的范疇。有關(guān)拓?fù)鋵W(xué)的一些內(nèi)容早在十八世紀(jì)就出現(xiàn)了。那時候發(fā)現(xiàn)一些孤立的問題,后來在拓?fù)鋵W(xué)的形成中占著重要的地位。