李 生,竇 馨,張曉雪
(1.青島海爾智能技術研發有限公司,山東 青島 266000;2.中國海洋大學信息科學與工程學院,山東 青島 266100)
目前3D 模型的設計主要通過CAD、Blender 等工具,并將模型輸出為STL 格式的3D 數據模型文件,當完成3D 模型的設計后,將3D 模型文件傳輸到3D 打印機中,通過建模、分層、打印和后期處理以獲得打印的部件。為了保護模型文件的安全性,常用的加密方法通常是對STL 模型文件使用AES、RSA、3DES 等加密算法進行加密,或者通過數字水印的方式,對3D 模型進行保護。然而,通過該方法僅能在軟件層面上實現對3D 模型文件的保護,在實際的3D 打印工作中,3D 模型不僅僅需要在計算機系統中保證其安全性,而且在切片分層過程中也要對模型文件進行必要的加密。同時,隨著3D 打印在信息時代的高速發展,3D 打印機連接到網絡的可能性越來越高,受到網絡攻擊盜取3D 模型文件或者更改3D 模型文件的危險性也越來越高。針對這些問題,我們提出了基于ECDSA 的3D 打印加密方法來保證3D 模型的安全性。
數字簽名技術是信息安全機制中的一種重要技術,其算法一般采用非對稱密鑰密碼體制來實現。常見的數字簽名算法有:RSA,其安全性是基于求解離散對數的困難性;DSA,其安全性是基于對有限域的離散對數問題的不可實現性;橢圓曲線數字簽名算法(Elliptic Curve Digital Signature Algorithm,ECDSA),其安全性基于橢圓曲線離散對數問題的不可實現性等[1]。
RSA 算法采用較短長度的密鑰難以保證簽名的安全性,雖然提高密鑰長度可以提升安全性,但會隨著位數增加,計算量增加,計算成本加大,從而降低了加密效率[2]。相比而言,ECC 算法使用的橢圓曲線域內的離散對數問題的難度相對較大,同等密鑰長度下,EC 算法具有更高的安全性[3]。
ECDSA 算法的密碼安全性能高,加密解密速度快,同時破解的復雜度高,能在現有軟硬件條件下有效的保證3D 模型的安全性,其原理是消息發送方使用自己的私鑰對需要發送的信息進行加密,接收方收到經過加密的信息后使用發送方的公鑰進行驗證解密,而橢圓曲線運算的規則使得其他人無法根據公鑰的信息進行偽造或者破解私鑰。因此,ECDSA 對3D 模型的加密具有很好的安全性。本文正是運用了由ECC 和DSA 加密算法構成的ECDSA 橢圓曲線數字簽名算法來保障3D 模型的安全性。
ECC 為橢圓曲線密碼體制,屬于非對稱加密算法的一種,利用橢圓曲線標量運算,以及橢圓曲線有限域的模運算,實現高速、安全的數字簽名和驗證,完成對信息的加密解密過程。該算法具體實現過程如下所示:
首先,發送者選定橢圓曲線,并在該橢圓曲線上選取一個點作為基點,記作G;其次,接收者選擇一個私鑰,記作k,則公鑰K為k×G;再次,將基點和公鑰傳送給發送者,發送者將信息編碼至橢圓曲線上的隨機點M上,并生成隨機整數r;最后,在解碼時計算隨機點M,再對M進行解碼,可以得到加密的信息。由于k和r都是私鑰,因此當信息被竊取時,只能得到曲線方程,而無法得到加密的信息。
DSA 為數字簽名算法,其基于整數有限域離散對數難解的性質保證傳輸信息的安全性,包含公鑰、私鑰以及數字簽名,具體過程如下所示:
首先,發送方選擇一個大素數,長度為160bit,并將其記為A;其次,再選擇一個長度為1024bit 的大素數,記為B,A和B滿足條件A|B-1;再次,通過公式(1),公式(2)獲取C,D。

則(A,B,C,D)為公鑰,公式(2)中x為私鑰,x的取值為[1,B-1]中任選的一個整數;然后,當生成公鑰和密鑰后,發送方將公鑰公開,利用私鑰對信息進行加密,并將已經加密的信息以及生成的簽名一同發送給接收方;最終,接收方利用公鑰進行驗證,驗證順利通過,即為數據安全傳輸,沒有被篡改。
ECC 密鑰位數短、加密速度快,但是基本的運算較為復雜,而DSA 雖然生成速度快,安全性好,但是其缺點也很明顯,即驗證速度和加密速度較慢。因此,基于ECC 和DSA 加密算法的特征,將二者結合而成的ECDSA 成為3D 模型文件加密的一種新選擇。
ECDSA 的數字簽名過程類似于DSA 加密算法,而數字簽名中的算法采用ECC 加密算法,對信息傳輸過程分為三步,具體過程如下所示:
假設采用的橢圓曲線方程為F(a,b,p,N,G),其中a和b 為橢圓曲線的參數,p為模運算的底,N為橢圓曲線中點的個數,G則表示基點,可以是橢圓曲線中的任意一點。若設Qa表示公鑰,dA表示私鑰,則由公式(3)可得公鑰Qa:

ECDSA 加密算法的簽名共40字節,由兩個20字節的值進行表示,若將第一個值記為R,第二個值記為S,則(R,S)表示ECDSA 的簽名。若要獲得R和S的值,首先需要選擇一個20字節的隨機整數k,并利用點乘法計算kG的值,將此值記為P,此時,P的x軸坐標則為R;其次,將原數據和P的坐標值x,y作為參數,使用SHA1加密算法做hash 加密,即SHA1(原數據,x,y),獲得一個20字節的整數z;最后,通過公式(4)獲得的值。

當接收方收到數據時,對加密信息的簽名進行驗證。此時,只需要通過公式(5)對結果進行驗證,即可獲取數據。

通過ECDSA 算法對3D 模型進行加密流程圖如圖1所示。

圖1 ECDSA算法對3D模型加密流程圖
實驗證明,ECDSA 算法在3D 模型加密方面具有良好的表現。ECDSA 的優越性主要體現在以下幾個方面:
(1)計算量小,處理速度快。在私鑰的處理速度上,ECC 遠比RSA、DSA 快得多。
(2)相同密鑰長度下,安全性能更高。如160 位ECC 已經與1024位RSA、DSA 有相同的安全強度。
(3)存儲空間占用小。ECC 的密鑰尺寸和系統參數相對較小,占用的存儲空間也小很多。
(4)在帶寬要求方面,ECC 算法以低帶寬獲得了更好的應用前景。
由此可得,在同樣安全級別的密碼體制中,ECDSA的密鑰規模小,節省帶寬和空間,尤其適合一些計算能力和存儲空間受限的領域,能有效的保證在現有軟硬件條件下3D 模型的安全性。