樊春南,黃耀倞,康 振
(大連海事大學 航海學院,遼寧 大連 116026)
信息技術的應用幾乎涉及到各個領域,給人們帶來了前所未有的便利。海上交通運輸業是全球經濟發展的重要支柱,對經濟全球化的蓬勃發展起著至關重要的作用。隨著信息技術的迅猛發展,信息技術給海事工作人員帶來了巨大便利。然而,信息技術是一把雙刃劍,互聯網不可避免地存在著信息安全隱患。因此,保障海上交通安全促進安全高效的航運發展,已經成為世界各國優先解決的重要問題。船舶自動識別系統(Automatic Identification System,AIS)是基于現代數字網絡通信技術的航海助航設備[1],工作在海上移動通信甚高頻(Very HighFrequency,VHF)頻帶[2]。實踐證明,AIS系統在未來電子航海戰略中,對船舶操縱避碰和航行安全起到了至關重要的作用。但是,AIS系統具有開放性,最初設計時并沒有考慮系統的信息安全問題,這對于AIS信息的傳輸是致命的弱點。只要船舶配備了AIS接收機且其在AIS信號覆蓋范圍內,船舶就能自動接收岸臺和其他船臺自動播發的AIS數據信息,因而很容易對船舶實施跟蹤。目前,AIS系統缺乏必要的信息安全保護措施,導致AIS信息很容易遭受惡意的攻擊和截取。例如:美國海事網絡安全研究人員于2013年10月14日下午12:47,利用船舶AIS系統的漏洞,使一艘沿著密西西比河駛向墨西哥灣的美國拖輪在海圖上突然完全消失,片刻后卻出現在幾百英里外的德克薩斯州的一個小湖上[3]。可見,AIS系統存在著巨大的安全隱患。一旦AIS信息資源受到網絡攻擊和破壞,將給國家、公司或者個人造成嚴重的損失。特別地,現在的海盜和恐怖主義活動相對猖獗,配備AIS系統的船舶面臨的如信息被盜、恐怖襲擊等威脅正日益增大。另外,AIS用戶中存在一些對AIS信息的保密性有較高要求的特殊用戶,如海事執法船。因此,為了保證AIS信息的安全性、實時性和準確性,AIS數據傳輸加密已經成為一個重要的研究方向。
RSA數據傳輸加密算法在保護數字通信的過程中具有極高的安全性。RSA算法具有安全、高效、高性能等優點,且其密鑰建立時間短,有較高的實現性。因此,本文采用基于RSA算法的信息加密方法對機密的AIS信息傳輸進行加密處理,以有效防止AIS信息被篡改和偽造。因此,RSA數據傳輸加密算法在保證船舶安全航行和高效航行中具有重要意義。
AIS是國際海事組織(International Maritime Organization,IMO)、國際電信聯盟(International Telecommunication Union,ITU)和國際航標協會(The InternationalAssociation of MarineAids to NavigationAnd LighthouseAuthorities,IALA)在 2000年共同推廣的一個將現代通信技術、計算機網絡技術和電子信息顯示技術融為一體的新型電子助航系統。AIS系統實現了船舶之間數據信息的自動識別和交互[4-5]。IMO明確規定,300 t以上的國際航線船舶和500 t以上的國內航線船舶應強行安裝AIS系統,舊船加裝必須在2004年底前完成[6]。目前,全球已有7萬余條船舶安裝了AIS系統。
AIS系統是工作在海上移動通信甚高頻頻帶的廣播轉發器的助航系統,工作示意圖如圖1所示。隨著科學技術的發展,AIS系統的功能也將進一步得到完善,其在未來電子航海戰略中的應用也越來越廣泛[7]。

圖1 船岸之間AIS的工作原理
以下三個方面是AIS系統在航運業中的主要應用。
(1)船舶避碰的應用。此方面的應用是AIS系統在船舶航行中的最重要用途。AIS系統能夠實現船舶間動靜態消息的交互,還支持短消息的發送,便于各船臺之間的信息交流,能夠進一步提高航行安全。
(2)航標系統的應用。燈塔等傳統的航標有一定的優勢,但是存在成本高、易受天氣影響等缺點。而基于AIS系統的虛擬航標設備可以將AIS系統信號覆蓋范圍內所有相關的助航標注,并通知給附近配備了AIS設備的船舶。
(3)海上救助的應用。當船舶在海上遇到危險時,船舶可以借助AIS系統對外發布遇險信息,提高海上搜尋救助的效率。
但是,由于在最初設計AIS系統時并沒有考慮AIS系統數據信息在傳輸中的安全問題,AIS數據傳輸很容易受到人為因素的破壞(如信息篡改、偽造信息和干擾通訊)和傳感器工作狀況的影響。在海上航行的實際觀測中,一旦發現AIS目標的靜態和動態信息以及相關的航次信息存在異常狀況,都將對海上航行的船舶產生重大的安全隱患[8]。
RSA算法是一種分組密碼體制算法,理論基礎是一種特殊的可逆模指數運算,安全性基于數論中大整數分解的困難性。在RSA密碼體制中,每個用戶都擁有兩個密鑰——公鑰PK={e,n}和私鑰SK={d,n}。公鑰PK={e,n}用于加密,也稱為加密密鑰,可以在網絡、電話簿等媒體上進行公布;私鑰SK={d,n}用于解密,也稱為解密秘鑰,必須保密。每個用戶把加密秘鑰PK 公開,使得系統中任何其他用戶都可以使用,而對解密秘鑰SK 中的d 則必須嚴格保密[9]。RSA加密算法流程如圖2所示。

圖2 RSA加密/解密算法流程
2.1.1 密鑰的產生
使用過程中,RSA數據加密算法首先需要得到電子商務認證授權機構(CertificateAuthority,CA)的認定,從而產生一對加密所需的密鑰(公鑰/私鑰)[10-11]。具體產生密鑰步驟如下。
步驟1:首先隨機選取兩個保密的大素數p 和q ;
步驟 2:計算 n=p×q ,φ(n)=(p-1)(q-1),其中φ(n)是n 的歐拉函數值;
步驟3:隨機選一整數e ,滿足1<e<φ(n),且 gcd(φ(n),e)=1;
步 驟 4: 計 算d , 滿 足 d ?e ≡1 mod?(n),即d 是e 在模φ(n)下的乘法逆元。因e 與φ(n)互素,由模運算可知,它的乘法逆元一定存在;
步驟5:以{e,n}為公開鑰,{d,n}為秘密鑰。
2.1.2 加密
對于加密,首先需將明文比特串分組,使得每個分組對應的十進制數小于n ,即分組長度小于lon 。其次對每個明文分組m 作加密運算c≡ memod n 。
2.1.3 解密
對密文分組的解密運算為 m≡cdmod n 。
通過JavaAPI對RSA算法進行封裝,調用Java中 有 關 的 RSA 算 法 的 類 Cipher、KeyPair、PrivateKey、SecretKeySpec來實現RSA數據加密算法。
編寫以下代碼來測試驗證RSA算法:




圖3 基于Java的RSA算法測試
在使用RSA數據加密算法進行AIS數據傳輸加密過程中,密鑰(公鑰+模值、私鑰+模值)是分組分發的,密鑰模值的位長度就是密鑰的長度[12]。在本實例AIS數據加密測試過程中,密鑰的長度選取1 024Bit。在加密/解密的密鑰長度確定的情況下,對RSA數據傳輸加密算法進行仿真實現。
在RSA數據加密算法實現過程中,只是將公鑰(e,n)公開,而其他的加密算法信息均處于保密狀態。任何人均可以通過使用公鑰對明文信息進行加密處理,但如果想對密文進行解密,只有擁有私鑰(d,n)的授權用戶才可以。如果僅僅根據算法通過公鑰計算私鑰是無法實現的,這樣就實現了信息的保密傳輸。
在VS2016的環境下,通過C++編程語言進行編譯,對RSA加密算法進行系統仿真,生成對AIS數據信息進行加密、解密的軟件,并選取所需密鑰的長度。AIS數據信息加密、解密的軟件在3 s內實現1 024位的大素數運算,同時生成一對密鑰(公鑰/私鑰)。現在對一條AIS數據進行舉例操作。通過AIS數據信息加密、解密軟件隨機生成一對公鑰(n,e)和私鑰(n,d),如圖4所示。
通過使用公鑰對一條AIS數據進行加密:!AIV DM,1,1,,B,15NDS 通過私鑰對密文解密,獲得加密的AIS數據,如圖6所示。 將獲得的AIS數據進行解碼,最終獲得船舶準確的AIS數據信息。以上內容完成了對AIS數據加密系統的仿真測試。系統仿真的運行結果表明,RSA加密算法可以在AIS數據信息傳輸的過程中使用。 圖4 基于1024位的RSA公鑰/密鑰產生 圖5 通過公鑰對AIS數據加密 圖6 通過私鑰對AIS數據解密 基于大數因子分解的非對稱RSA數據傳輸加密算法是當前被廣泛使用的一種比較安全、高效的通信系統數據加密算法[12]。通信系統中,只有參與雙方的使用者才可以獲得并讀取通信傳輸的數據。因此,不僅網絡犯罪分子無法對加密傳輸的通信信息進行竊聽或竊取,甚至連電信服務提供商、通信服務提供商以及互聯網服務提供商都沒有辦法獲取RSA加密算法加密后傳輸的AIS通信數據信息。可見,由RSA加密算法加密的數據傳輸通信系統可以防止黑客輕易截獲用于解密通信會話的加密/解密密鑰,還可以做到有效地防止網絡攻擊者對用戶端重要的通信數據進行攔截、竊聽或篡改。網絡攻擊者要篡改通信數據相關的數據內容,將是一件幾乎不可能完成的工作。 此外,RSA數據傳輸加密可以使通信用戶對敏感的AIS數據“有選擇性地”加密,大幅提升了加密的靈活性。同時,AIS用戶端可以根據自己的情況選擇需要進行加密的AIS數據。在整個RSA數據傳輸加密過程中,涉及的AIS文件量非常小,所以在整個加密傳輸的過程中所占用的資源量并不大,且加密所需要的時間只有3 s。


3 結 語