MAC多原鏈的高TPS背後的故事

MAC多原鏈的高TPS背後的故事

MAC多原鏈的高TPS背後的故事:

採用RungeKutta演算法如何實現非同步處理以及在機密數據、秘鑰生成、信息分布存儲上的應用藍圖

一.MAC多原鏈為何採用RungeKutta 龍格庫塔演算法

並行演算法的研究應以實用性、可實現性以及最大的並行處理效率為出發點。在解常微分方程(組)Runge Kutta 並行演算法的基礎上進一步提出了一種針對Transputer 並行多處理機系統實現的非同步並行演算法,該演算法可劃分成若干OCCAM並發進程一一映射到多個處理機上且進程間採用非同步通訊機制。作為一個應用實例,文中用OCCAM語言編寫了三階Runge Kutta 非同步並行演算法程序,做了算力。

實驗最終表明,由於該演算法避免了進程間同步通訊等待所需的時間開銷,從而演算法的效率得以提高。

在工程技術和科學研究中,許多問題都是用常微分方程組來描述的。那麼現在我們假設一階常微分方程組:

式中:y, f (t,y) 都是N 維的,為了確定這個微分方程組的解 y(t) ,需要給出N 個求解條件。

如果N個定解條件都是給定在一個點上y(t0)=yo, 那麼稱式(1)描述的問題為常微分方程組的初值問題。

在以往串列數值求解常微分方程組的方法中,通常都是非線性的遞推計算格式,並無其他理想格式,如Runge Kutta 法,若不考慮右函數的計算,其計算格式實際上是非線性的遞推格式,下面給出的是q級顯示Runge Kutta 法的求解公式:

式中: yn=tn+n·h 點上的近似值,h為積分步長,n 為遞歸係數;b,r,a的選擇確定相應逼近解的階及其穩定域。顯然,式(2)又是一個嚴格的順序計算過程,k之間,k和y之間關係相互依賴,每一次調用式(2)只能得到微分方程在一個點上的值,且每一個新點上的值又依賴於前面點的值,體現了演算法的遞推性。

為了開發串列Runge Kutta法的並行性,在1967年就有Miranker等人給出了並行二階,三階的計算格式。此後,在文獻[3]中又推導出了MIMD型並行Runge Kutta 法計算公式,其做法是修正式 (2)的計算次序,逐級採用(j)級Runge Kutta 法逼近y 來計算 f(tn, yN )以部分打斷KT 的相關性,並適當選擇參數(h,r,a)構造出穩定的並行計算格式。

同時,以三階Runge Kutta法為例子,將三級公式演變為三步逼近。

一級逼近:

結論:式(3a)是不依賴式(3b)和(3C)的,而式(3b)和(3c)無關,不妨讓式(3a)來計算兩步,式(3b)先計算一步,即式(3a)~式 (3b)的計算可分成3個過程並行計算,從而達到了同時計算若干點上的右函數的目的。

一般來說,並行處理演算法的研究應以實用性、可實現性以及效率的考慮為出發點,此處所說的實用性是指能在一些實際應用問題中具有實際應用價值,可實現性是指在一類特定的並行多處理軟體、硬體環境中能得以實現,有的演算法模型只有理論價值,但在實際應用中不太適用;而一些硬體結構模型適合於某類應用,卻不適合於別類的應用;有的演算法模型在有的硬體結構模型上有可實現性,在別的硬體結構模型卻很難實現。從並行處理的過程來看,它需要經歷建立數學模型、設計並行演算法和實施演算法3個步驟。儘管串列處理也要經過類似的步驟,但是並行處理的演算法實施要更困難、更複雜,要有效地實施並行演算法,不能只單純考慮演算法模型本身的並行效率,還需綜合考慮多並行處理機硬體結構以及軟體支持的環境和並行演算法在多法處理機上的映射匹配關係(包括:多處理機的拓撲結構、任務劃分粒度以及信息通訊策略等)。為此本文將圍繞演算法的步驟展開以下的論述:

(1)設計適合於在Transputer多處理機系統上實施的Runge Kutta非同步並行演算法模型以及相應的通訊策略和效率分析。

(2)給出一個用三階Runge Kutta 非同步並行演算法求解常微分方程初值問題的例子,以驗證演算法的效率並給出結果。

Transputer 並行處理機系統實現解常微分方程(組)初值問題的Runge Kutta 非同步並行演算法模型

Runge Kutta 並行演算法模型

為了便於論述,首先給出幾個定義,然後給q階Runge Kutta 並行演算法抽象出一個適合在Transputer 並行多處理機系統上運行的並行計算模型,從中可清晰地體現出任務之間的交互作用,以使得討論的這類遞推問題更具有一般性。

定義1 設任務Y是由幾個串列步組成額遞推過程,那麼一次遞推過程(Y)將由輸入相(iny)計算相和輸出相(outy)三部分組成(見圖1)。

定義2 如果說兩個任務yi 和 yt 是相互依賴的,那麼必定inyi=outyi ,這就意味著任務yi 收到從任務yt 來的信息後才執行,反之也成立。

定義3 如果存在某種策略,使任務 y1 y2 yn能夠一一對應映射到(q)個處理機上且能夠並發執行,那麼說任務 y1 y2 yn 是並行的。

這裡說的策略是指如何進行任務劃分,使任務執行的並行度最高,任務完成的時間最短,處理機之間通訊量之和最少和各處理機之間的負載平衡,最終達到提高並行處理效率的目的。

二.增加一個起緩存作用的OEEAM進程使得Transputer-OeeAM多處理機環境支持非同步處理

1.在並行處理技術中,任務之間的信息通訊通常採用2種策略,非同步通訊策略和同步通訊策略。

由此引出非同步並行演算法和同步並行演算法。

所謂同步並行演算法就是在執行過程中的數個任務,會有某個任務在某段處於等待狀態,直到另一個任務完成某一段運算後,它才能被激活,而在非同步並行演算法中就不存在這種現象,任務間的通訊是通過全局變數(共享數據)進行的,不像在同步演算法中有任務間的依賴關係,各任務間可不必等待輸入,而是根據當前從全局變數得到的信息,可以不斷地執行任務和中斷獲取數據,因而非同步演算法可以帶來的優點就是避免任務間的同步通訊開銷,從而改善加速比。

然而,Transputer-OCCAM多處理機環境僅支持同步通訊機制,同一通道連接的2個OCCAM進程只有當分別處於輸入、輸出準備就緒狀態時才能發生通訊,否則已經處於就緒狀態的進程(任務)(不管是輸入進程還是輸出進程)將一直處於等待通訊狀態。具體地說,由於分配到各處理機上的任務總歸有不平衡的情形,因而可能會發生:

(1)任務y的輸出相延遲太久才響應任務y的輸入相的輸入數據請求

(2)任務y的輸出請求發送數據等待任務y輸入相的響應太久,以至於數據可能會丟失,進一步說,由於通訊等待,致使任務y不能進入下一步遞歸運算。為此,考慮設計一種通訊測試,使得Transputer-OeeAM多處理機環境僅支持同步通訊機制,同一通道連接的2個OEEAM進程(任務)(不管是輸入進程還是輸出進程)將一直處於等待通訊狀態。具體地說,由於分配到各處理機上的任務總歸有不平衡的情形,因為可能會發生:

(1)任務y的輸出相延遲太久才響應任務y的輸入相的輸入數據請求

(2)任務y輸出相請求發送數據等待任務y輸入相的響應過久,以至於數據可能會丟失。進一步說,由於通訊等待,致使任務y不能進入下一步遞歸運算。為此,考慮設計一種通訊策略,使Transputer-OEEAM多處理機系統實現非同步通訊的數據交換策略是非常必要的而且是必須的。在這裡考慮增加一個起緩存作用的OEEAM進程CP(Communication Processing),使它與y並發執行,以協調任務yi 與yj 之間的信息交換(見圖2).

圖中:

Runge-Kutta非同步並行演算法模型可劃分為若干個兩種類型的任務,一種完成遞推計算,另一種起緩存作用。在Transputer多處理機中,每一任務對應一個OEEAM進程,以實現三階RungeKutta非同步並行演算法為例,它可分化為6個並發執行的任務,其中3個完成一級、二級、三級逼近的遞歸運算,另一種起緩存作用。

在Transputer多處。

2.效率分析

效率分析選用了時間序列圖來表示各進程在多處理機上的執行順序,圖4所示的是三階Runge Kutta非同步並行演算法各進程執行的時間序列。

3. 算例以及結果

為了驗證本文所給演算法的有效性,用OEEAM語言編寫了三階Runge Kutta 非同步並行求解常微分方程初值問題的程序,並解以下常微分方程組:

非同步操作的本質;所有的程序最終都會由計算機硬體來執行,所以為了更好的理解非同步操作的本質,我們有必要了解一下它的硬體基礎。 熟悉電腦硬體的朋友肯定對DMA這個詞不陌生,硬碟、光碟機的技術規格中都有明確DMA的模式指標,其實網卡、音效卡、顯卡也是有DMA功能的。DMA就是直接內存訪問的意思,也就是說,擁有DMA功能的硬體在和內存進行數據交換的時候可以不消耗CPU資源。只要CPU在發起數據傳輸時發送一個指令,硬體就開始自己和內存交換數據,在傳輸完成之後硬體會觸發一個中斷來通知操作完成。這些無須消耗CPU時間的I/O操作正是非同步操作的硬體基礎。所以即使在DOS這樣的單進程(而且無線程概念)系統中也同樣可以發起非同步的DMA操作。

三.高階辛RungeKutta 方法的暫態穩定性並行計算方法

並行計算技術是實現大規模電力系統實時和超實時計算這一目標的有效途徑[1-2]。有關電力系統暫態穩定性並行計算方法,大致可以分為三類:空間並行、時間並行以及時間—空間並行。空間並行類方法又可以分為兩類:一類是基於網路分割或矩陣分塊、分裂思想的粗粒度空間並行方法,例如波形鬆弛法;另一類是基於矢量計算的細粒度空間並行方法。粗粒度的空間並行方法適用於多 CPU 結構,而細粒度的空間並行方法只能採用矢量或向量處理器。國內有關空間並行計算方法的研究,絕大多數是採用粗粒度的空間並行。時間並行演算法是通過同時求解多個積分步長來實現並行求解。很易理解,時間並行是一種粗粒度的並行。將時間並行與空間並行相結合,就是時間—空間並行計算。

空間並行演算法從理論上講比較簡單;時間並行計算方法比較複雜,因為在電力系統暫態穩定性計算中,待求變數在每一時刻的狀態強烈依賴於前一時刻的狀態,亦即不同時刻的狀態變數彼此強烈相關。因此,時間並行演算法研究工作中所存在的主要問題,是如何有效解決演算法的時間並行度與收斂性之間的矛盾。

近年來,研究人員已提出了不少新的數值積分方法,其中一類是著名的辛幾何演算法(以下簡稱辛演算法)。辛演算法是由我國已故著名學者馮康先生及其研究小組,針對傳統的 Runge-Kutta 方法不能保持 Hamiltonian 系統的辛幾何結構以及具有人為耗散等缺點而提出的。這一新方法的提出,為 Hamiltonian 系統的分析計算,同時也為微分方程數值計算方法的研究開闢了一個全新的領域。本文將多級、高階辛 Runge-Kutta 方法(以下簡稱辛 RK 方法)用於電力系統暫態穩定性的計算,利用多級、高階辛 RK 方法所具有的內在時間並行特性,導出了一種新的暫態穩定性並行計算方法。

1. 辛 Runge-Kutta 演算法

自馮康先生在上世紀 80 年代後期首創 Hamiltonian 系統的辛演算法後[4-5],辛演算法的研究已取得了十分豐富的成果,研究人員已提出了多種辛差分格式即辛演算法[6]。限於主題,本文只介紹辛 RK方法.

式中: h 為積分步長; y j ( j (1, s)) 為真解 x(t) 在 t j = tn + c j h 時的逼近,即 y j ≈ x(tn + c j h) 。該 RK 方法也可用 Butcher 表

表示,這裡

研究人員已經證明:當且僅當 M = 0 時,上述方法是辛演算法。

具體的辛 RK 方法有 2 種結構形式:當 A 為下三角陣時,方法稱為對角隱式辛 RK 方法;當 A 為滿陣時,方法稱為全隱辛 RK 方法。對角隱式辛 RK方法的級、階不可能很高。迄今為止,已推導出的對角隱式辛 RK 方法最高級階為 4 級 4 階[11]。基於並行計算的目的,本文主要研究s級 2s 階的全隱辛 RK方法。研究人員已經證明:s級 2s 階的全隱辛 RK方法是 A—穩定的。該方法的具體參數參見附錄 A。

多級高階辛 RK 方法除具有辛演算法本身的優點外,還具有內在的時間並行特性。如圖 1 所示,1 個 s 級的全隱辛 RK 方法,其一步的計算需要在 s 個時間點上同時進行求解,這相當於用變步長 hi′ 同時積分 s +1步。 hi′ 的表達式如下:

因此,1 個 s 級的全隱辛 RK 方法具有內在和「真實」的 s 個時間並行度,而且相當於用傳統的積分方法同時積分 s +1步,如圖 1 所示。為敘述方便,將後一種特性稱為「等效時間並行度」,即 s 級的全隱辛 RK 方法具有 s +1個「等效時間並行度」。

若用隱式梯形積分方法同樣以變步長 hi′ 同時,s +1 個時間點上進行求解,則這種並行演算法仍然只具有 2 階計算精度,因為隱式梯形積分方法本身只是 2 階演算法。但是,上述 s 級的全隱辛 RK 方法則具有 2s 階的精度。依據局部截斷誤差,若用隱式梯形積分方法以固定步長 hN 同時在 s +1 個時間點上進行求解,在不考慮誤差累積的前提條件下,這種並行求解的總體截斷誤差為 O(hN3 ) ;若採用 s 級的全隱辛 RK 方法以步長 h 積分 1 步,則其截斷誤差為 O(h2 s+1 ) 。因此,在保持 2 種計算方法計算精度大致相近的條件下,即 O(h2 s+1 ) ≈ O(hN3 ) ,則有h ≈ (hN3 )12s+1 。舉一個簡單的例子:取 hN = 0.05sec., s = 3 ,則 h ≈ 0.277 > 4hN 。也就是說,一個 3 級的

辛RK 方法積分 1 步至少可以等同於用隱式梯形積分法同時或連續積分 4 步。這就是多級高階辛 RK 方法所具有的內在時間並行特性。多級相當於多步;每增加 1 級就相當於增加了 1 個時間並行度。

2.暫態穩定性並行計算方法

2.1 演算法推導

電力系統暫態穩定性數值計算可用下述模型表示:

x = f ( x , v) (3)

= g( x , v)

式中: x 為狀態變數, x R m×1 ;v 為輔助變數,一般是網路節點電壓, v R2n×1 ( n 為網路節點數)。定義

yi = x(tn + ci h) Rm×1 ,i (1, s)

zi = v(tn + ci h) R2n×1 , i (1, s)

X = ( y1T , y2T , , yST )T ,V = (z1T , z2T , , zST )T

F ( y, z) = ( f ( y1 , z1 ), f ( y2 , z2 ), , f ( ys , zs ))T

則用 s 級的全隱辛 RK 方法對方程式(3)進行求解的基本公式為:

X = e xn + h(A I )F ( y, z) (4)

0=g ( yi , zi ), i (1, s) (5)

上述方程中,e 是所有分量均為 1 的 s 維矢量,I 為 m × m 維單位矩陣, 表示矩陣的 Kronecker 積(也稱直積或張量積)。很顯然,式(6)的計算首先需要同時在 s 個時間點上求解出 yi , zi ,i (1, s) 。

將方程式(4)變換成

( A I )?1 X = ( A I )?1 (e xn ) + hF ( y, z)

定義

則上式可以進一步寫成

至此,本文導出了暫態穩定性的並行計算方法。在上述計算公式中, σi , ηi , τi , μi 相當於或就是傳統逐步串列計算時的 4 個雅可比矩陣,它們均為稀疏矩陣; μi 是網路節點導納矩陣,通常情況下可以保持為常數矩陣。在上述演算法的推導過程中,將方程式(4)轉換為方程式(7)以及方程式(8)中所採用的矩陣分裂方法,是演算法推導的 2 個關鍵步驟。

從上述計算公式可以看出:在每個時間點上的求解過程中,只需對 μi 進行稀疏三角分解。因此,該方法在每個時間點上進行求解時每次迭代的計算量不會大於傳統的單步串列計算時每步迭代的計算量。

上述演算法具有很好的並行特性。不同時間點上的求解過程不存在相互「等待」的問題,只是在幾個步驟上需要共享各自獨立計算出的幾個中間向量*(~ ~ 等的計算),而這可以通過共享存儲方式或 r , y數據通信方式來實現。因此, s 個時間點上的求解完全可以同步實現。

很易理解,上述演算法易於按時間和空間組織並行計算:不同時間點上的計算採用不同的處理器;同一時間點上的計算任務適合於矢量計算,亦即細粒度的空間並行計算。基於這一思路,可以採用 GPU 或經重構後的 FPGA 來具體實現演算法的並行裝配。

2.2 演算法收斂性分析

數值積分方法的好壞,主要看演算法的數值穩定性、計算精度和計算速度。如上所述, s級 2s 階的全隱辛 RK 方法是 A—穩定的。

本文演算法的收斂性,主要取決於方程式(10):若該方程成立,則本文導出的演算法具有超線性收斂性,因為鬆弛牛頓法是超線性收斂的。為此,可以推導出:

ρ[( A I ) P ] ≤ A I P = A max(Ji ) ≤ A max(σ i + ηi μi?1 τi )

上式中, * 表示範數。對上式取列和範數(用 *1 表示),並定義

A1 = λ, max((σi 1 + ηi 1 μi?1 1 τi 1 ) = γ,則當 h ≤ 1λγ 時,方程式(10)成立。

A 為常數矩陣(見附錄 A),對不同級階的辛 RK 方法,有 λ(s ≤ 5) ≤ 0.87314 。對具體的電力系統, γ 是很容易計算出來的。因此,利用下式可以確定暫態穩定性並行計算的最大可用步長,即h ≤ 1.1453γ (15)。

換言之,當步長滿足上述條件時,所導出的演算法是超線性收斂的。

3. 模擬測試結果及分析

並行演算法的好壞,主要是看演算法的並行度、加速比及並行效率。對時間並行計算而言,影響演算法並行性能的主要因素是演算法的收斂性:一般情況下,時間並行度愈高,演算法的收斂性就會下降,因而很難獲得高的加速比和並行效率。為評估本文所導出的演算法的並行性能,利用 IEEE 145 節點系統,對本文演算法進行了模擬測試。該系統含 50 台發電機。模擬測試中,為簡單起見,發電機均採用經典模型;故障設定為在 7 號母線處發生三相短路,經 0.1 s 後切除;暫態過程計算時程設定為 1.5 s。依據公式可以算出:利用本文方法進行計算時最大可用步長可達 0.34 s。也就是說,當步長 h ≤ 0.34 時,本文演算法將具備超線性收斂性。

3.1 演算法收斂性測試

為測試本文演算法的收斂性,將本文方法與傳統的時間並行牛頓計算方法進行了比較。所謂傳統的「時間並行牛頓計算方法」,就是利用隱式梯形積分方法,以 hN = 0.05 s 的步長,一次性同時積分η 步(η 即為時間並行度),而且使用嚴格的牛頓法進行

整體迭代求解。「時間並行牛頓計算方法」具有最好的收斂性,但難以完全並行化[3,15]。

表1 是傳統時間並行方法的收斂性測試結果。

其中,收斂精度設定為 ε = 10?5 (即牛頓殘差向量範數小於該值時停止迭代),k 為牛頓求解過程中所需的最大迭代次數。

參照上述情況,按「等效時間並行度」考慮,對本文方法的收斂性進行了測試。表 2 是在保持本文演算法的計算精度不低於傳統的「時間並行牛頓計算方法」的前提下,對本文演算法的收斂性測試結果。

表 1 傳統時間並行方法收斂性測試結果

對比表 1 和表 2 可以看出:在保持本文演算法的計算精度不低於傳統的「時間並行牛頓計算方法」的前提下,本文演算法的收斂性與時間並行(嚴格)牛頓計算方法的收斂性大致相當。因此,本文演算法很好地解決了時間並行度與收斂性之間的矛盾。

上述測試結果只是對本文演算法的時間並行性能進行模擬測試的結果,演算法的空間並行性能無法通過模擬測試來獲得。對比相關或同類並行演算法的性能[12],從表 3 可以看出:單以時間並行而言,Runge Kutta演算法具有很好的並行性能,可以達到較高的時間並行加速比並獲得很高的並行效率。

需要說明的是:通常情況下,並行演算法的並行效率一般不會超過 100%。本文演算法在 s = 2,3 時獲得了超過常規的並行效率,這主要是得益於以下兩點:

s 級的演算法具有 s + 1 個等效時間並行度;經典的串列計算方法儘管每步只需 2 次迭代,但在求解和迭代中需要對雅可比矩陣進行三角分解,而本文演算法在每個時間點上的迭代求解中無需對雅可比矩陣進行三角分解( μi 是網路節點導納矩陣,只需一次性三角分解)

4.將多級高階辛 RK 方法用於暫態穩定性計算,導出了一種新的暫態穩定性並行計算方法。理論分析及模擬測試結果表明,該演算法具有以下優點:

1)該演算法具有內在的時間並行特性和超線性收斂性。

2)多級高階辛 RK 方法具有更高的計算精度。在保持相同的計算精度的前提下,本文演算法的收斂性與時間並行(嚴格)牛頓計算方法的收斂性大致相當。因此,RungeKutta演算法很好地解決了時間並行度與收斂性之間的矛盾,可以獲得較高的時間並行加速比和很好的並行效率。

四.龍格庫塔演算法在區塊鏈中的加密數據,圖形加密以及可能的人臉識別應用。

為有效保護數字圖像的安全,我們提出一種基於小波展開函數與超混沌系統的數字圖像加密演算法。這種圖像加密演算法利用小波展開函數對圖像進行置亂,同時通過超混沌系統擾亂原圖像與加密圖像文件之間的關係。

區塊鏈的多節點分布信息加密等等運用到了此項技術,而在其中龍格庫塔RungeKutta起到了重要作用。

1.超混沌系統的四階Runge-Kutta公式

在提出的加密方案中,一種新的超混沌系統從Chen混沌系統演變而來。超混沌Chen系統是四維混沌系統,其動力學方程式如下:

在式(3)中,當a=36,b=3,c=28,d=-16,-0.7≤k≤0.7時,系統處於超混沌狀態。當k= 0.2時,系統Lyapunov指數為λ1= -12.573,λ2 =0,λ3=0.023,λ4 =1.522,超混沌系統有2個正的Lyapunov指數,擁有更為複雜的行為,隨機性更強,因此,將超混沌系統用於圖像加密,能大幅度提升系統的抗破譯能力。

在構造混沌序列時使用四階Runge-Kutta公式,在該式的中間過程插入參數,如式(4)所示:

由於式(3)包含4個表達式,因此K1,K2,K3,K4,Xn,Yn,Yn+1,P1,P2,P3,P4都含有4個元素(P1,P2,P3,P4是後加入到Runge-Kutta公式中的),共計16個元素。

研究表明,一個混沌系統多數是在其混沌狀態的某些參數區間內逐漸向非混沌過渡,這就為混沌加密提供了一定的密鑰空間,而在四階Runge-Kutta公式中插入的這些參數也都可以擴大密鑰空間。實驗分析表明這種插入參數的方法是可行的。在眾多的參數空間中,其超混沌特性(即有2個正的Lyapunov指數)不變。

由於步長h很小,因此加在每個表達式上的參數p經過計算後變得很小,這樣就相當於每一個曲面(或者幾何體)向上或者向下作微小移動,根據研究的結果,多數情形下變換後的系統還是混沌的,但由於改變了(常數)參數,在相同初始值與相同參數的情形下,其生成的混沌序列不同,這就相當於擴大了密鑰空間。

2、替換過程

使用超混沌系統產生的混沌序列對置亂後的圖像像素灰度值進行加密。替換過程如加密演算法2所示。

加密演算法2使用超混沌系統(替換)加密圖像的演算法

(1)把置亂後二維圖像矩陣E(i,j)轉化為一維序列A(i),i=1,2,L,M×N。

(2)計算參數的混沌區域,在該區域內給各個參數賦值,給定迭代初始值x1(0),x2 (0),x3(0),x4(0),超混沌陳系統(式(3))在四階龍格一庫塔法迭代式(式(4))作用下生成混沌序列

{x1(k),x2(k),x3(k),x4(k),k=1,2,L。對該混沌序列進行如下預處理:

其中,Abs(xi)表示xi的絕對值;函數Floor(z)表示小於z的最小整數;mod(x,y)表示x對y取余。

(3)通過d=mod(d,4),d∈[o,3],超混沌系統參數x1,x2,x3,x4不同結合狀態如表1所示。

如果d等於序號組的序列,則選擇相應的序列組執行加密操作。例如d=1,則選擇(x1,x2,x3)用來進行加密。用序列A(i)數據的3 Byte和狀態組數據的3 Byte做XOR(異或)操作。

通過以下公式進行計算:

其中,i=1,2,…表示超混沌陳系統第f次迭代;+表示按位異或操作Bx1,Bx2,Bx3表示相應狀態組的值;A表示置亂後序列A(i),i=1,2,L,M×N。

(4)繼續上述操作,直到A={A1,A2,L,AM×N}中的所有像素值全部被加密為止。此時得到加密後像素集合為C={C1,C2,L,CM×N},然後將其轉化為二維圖像形式,得到了加密圖像D(i,j)i=o,1,L,M一1,j=0,1,L,N-1。加密後的效果如圖1(b)所示。

3.區塊鏈的隨機分散式存儲和秘鑰生成中RungeKutta演算法的密鑰起到了怎樣的作用?

(1)密鑰敏感性測試

為驗證上述演算法的有效性,本文以256×256的lena.bmp圖像作實驗測試圖像。在本演算法中初始參數也作為密鑰。如果密鑰稍有微小變化,如修改參數k=1.300 000 000 000 08(原k為1.3)加密效果如圖1(c)所示,它與如圖1(b)加密效果不同。經實驗測試加密後的2幅圖像中有99.06%的像素灰度值不相同。密鑰的微小變化導緻密文幾乎完全不同,這就說明密鑰的一點微小的變化將產生完全不同的加密效果,密鑰敏感性高,因此,可以抗差分攻擊。

比較加密前後圖像的直方圖,如圖2所示。可以看出,加密後圖像的直方圖與原始圖像的直方圖有很大的不同,並且非常均勻。變換後的直方圖呈均勻分布,它掩蓋了變換前分布規律,增加了破譯的難度。

(2)、相鄰像素的相關性分析

研究表明,圖像置亂效果的好壞,與相鄰像素相關性的大小存在反比關係:相關性越大,置亂效果越差;相關性越小,置亂的效果越好。為檢驗原始圖像和密文圖像相鄰像素的相關性,從原圖像和加密圖像文件中隨機選取4 000對相鄰像素(水平、垂直或對角),利用下式計算其相鄰像素的相關係數:

其中,x和y分別表示圖像中相鄰2個像素的灰度;rxy為相鄰2個像素的相關係數。圖3展示了原始圖像和加密後圖像的2個垂直方向的相鄰像素的相關分布情況。

表2列出了加密前後各個方向的相關係數,可以看出,原始明文圖像的相鄰像素是高度相關的,相關係數接近於1,而加密圖像的相鄰像素相關係數比0還小,說明相鄰像素不相關,明文的統計特性已被擴散到隨機的密文中。

Bibliography:

1.《圖像加密之基於函數展開與超混沌系統的加密》

jiamisoft.com/blog/7677

2.

《常微分方程(組)的RungeKutta 非同步並行演算法以及在多Transputer系統上的實現》。上海交通大學學報 李懿

3. 《基於多級高階辛 Runge-Kutta方法的暫態穩定性並行計算方法》

汪芳宗,何一帆;三峽大學電氣與新能源學院。

or.nsfc.gov.cn/bitstrea


推薦閱讀:

TAG:macOS | Mac | AdobePhotoshop |