基于RSA的AIS数据传输加密系统仿真*
2018-09-29樊春南黄耀倞
樊春南,黄耀倞,康 振
(大连海事大学 航海学院,辽宁 大连 116026)
0 引 言
信息技术的应用几乎涉及到各个领域,给人们带来了前所未有的便利。海上交通运输业是全球经济发展的重要支柱,对经济全球化的蓬勃发展起着至关重要的作用。随着信息技术的迅猛发展,信息技术给海事工作人员带来了巨大便利。然而,信息技术是一把双刃剑,互联网不可避免地存在着信息安全隐患。因此,保障海上交通安全促进安全高效的航运发展,已经成为世界各国优先解决的重要问题。船舶自动识别系统(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数据传输加密算法在保证船舶安全航行和高效航行中具有重要意义。
1 AIS研究现状
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]。
2 AIS数据加密传输实现
2.1 RSA数据加密算法原理
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 。
2.2 RSA加密算法实现
通过JavaAPI对RSA算法进行封装,调用Java中 有 关 的 RSA 算 法 的 类 Cipher、KeyPair、PrivateKey、SecretKeySpec来实现RSA数据加密算法。
编写以下代码来测试验证RSA算法:
图3 基于Java的RSA算法测试
2.3 AIS数据加密测试
在使用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 结 语