2023年7月27日发(作者:)
SWIFT端系统的安全性研究与实现
三、SWIFT端系统与SWIFT网络的连接
为了访问SWIFT网络,用户必须配备一台能与SWIFT网络联接的电脑CBT(ComputerBasedTerminal),在其上运行的是与SWIFT系统联接的接口软件。同时用户也要准备一条联接CBT与SAP的通讯线,这条通讯线可以采用专线、去共电话网的拨号线,或是通过x.25的公共分组交换网,这三种方式中的任何一种也可以用作备份线路。还有一种备份方式也应积极考虑,这就是跨境联接备份,为了增大安全系数,避免由于设在本国的SAP出现故障,引起用户通讯中断,可以自接联接某个境外的SAP.作为备份。用户必须使用SWIFT组织指定的Securex.25加密器在线路两端进行加密,以保证信息的安全。
CDT是以逻辑终端LT(LogicalTerminal)的方式与SWIFT系统相联的。LT是一个逻辑概念,不需要有一个物理地址永久与之对应。一台CBT可以定义一个LT,也可以定义几个LT,几台CBT也可以使用一个LT。
当一个LT与SWIFT系统开始建立逻辑联接,并与SWIFT的一种应用GPA(GeneralPurposeApplication)建立对话关系(Session),这个过程称之为KIGN。这条物理线路的联接只是被看做LT与SWIFT应用对话期间的一个信息流的临时出入口,在下次对话时,这个LT也可以采用另一条物理线路联接到另一个SAP上。拥有一个或几个LT的金融机构SWIFT网络内都有自己的地址,一个8位字符的BIC(BankIdentifierCode),有时也称之为目的地地址(Destination)。当用户发一份电报给另一家银行时.SWIFT系统根据Destination判别将电报传送到哪个地区处理机的哪个Deliv-erySubset上,目的地银行也能决定哪个LT接收哪个DeliverySubset的电报。
四、SWIFT端系统安全机制的研究
SWIFT端系统安全的关键问题包括:安全登录端系统、报文加密、报文完整性检查、发方身份鉴别等。
安全登录端系统通过用户登录端系统时输入用户名和登录口令来控制;报文加密是在报文输出前使用硬件设备进行加密;报文完整性检查通过对报文后附加的CHK报尾及MAG报尾进行验证得到;发方身份鉴别通过对MAC报尾进行验证得到。
1.端系统的安全登录
安全登录端系统是通过用户登录端系统时输入用户名和登录口令来控制的。在用户登录端系统之前首先要输入用户名和登录口令,端系统根据用户名和登录口令到用户表中查询,确定用户的合法身份和权限。由于SWIFT系统是金融行业的专用系统,因此防止非法用户登录端系统非常重要。一般系统采取的措施是允许用户输入三次口令,若三次都输错则退出系统。
2.报文加密
SWIFT系统中的报文加密是在报文输出前使用硬件设备进行加密,通过在每条通信信道的两端加入—对链路加密设备来实现。报文加密可以硬件实现,也可以软件实现,常见的方法是用软件实现。用软件实现在经济上更合算一些,但从安全保密的立场上看,软件密码的保密性能较差,因为软件保密要求十分重要的密钥在系统上以明文存在,终究是脆弱的。密码的基本规则是明文形式的密钥只能存在于防篡改的硬件保密模块之中。如果模块遭篡改,则密钥自动删除。如果密钥存在于模块之外,则必须对他们加密或把他们分裂成若干密钥分量,这样保密系统就能控制住自己,保证不被滥用。正因为这样,许多金融网强行规定其成员使用硬件加密,SWIFT网也规定在其网络中使用硬件加密。
3.报文鉴别
通信双方在网上交换信息,如何防止伪造和欺骗便成为头等重要的课题,特别是金融行业电子交换上尤其感到迫切需要。报文加密并不一定能保证其完整性,甚至已经加密的报文也会被修改。在某些场合数据的篡改与数据被读懂相比,其后果往往更为严重,因此,保护信息的完整性比保护其机密性重要得多。保护数据免遭不可检测的篡改,这种技术称为报文鉴别。SWIFT系统中的报文鉴别主要包括报文完整性检查,收、发双方的身份鉴别等。根据SWIFT标准的规定,报文完整性检查和身份鉴别通过在报文的报尾处加上cHK报尾和MAC报尾来完成。CHK报尾为12位16进制字符;MAC报尾为8位16进制字符,用于MAC报尾计算的密钥长度为128个比特。对于CHK报尾其主要功能是进行报文完整性检查;MAC报尾的主要功能则是身份鉴别及不可否认服务。
CHK报尾按照一定算法计算出唯一的校验值,该校验值将在系统的输入/输出节点重新计算。如果报文在传输中遭到破坏(被修改或部分丢失)而没有被低层协议所检测到,核对校验值时会发现错误,报文将被重发。
为提高报文的可靠性,在用户双方建立通信前先通过安全的方式交换密押文件,并将其存放在自己的数据库中,以后通信时发报方根据收报方的密押文件,按照一定的算法,自动生成8位16进制的密押加在报尾MAC域内,收报方经审核辨认发报行及报文的真伪;发报方也对收报方发回的确认电报中的密押进行审核,检验收报行的真伪。密押每半年更换一次,以保证密押的安全性。
五、安全SWIFT端系统的实现
1.端系统的安全登录
一般SWIFT端系统采取的三次口令方式对非法用户攻击系统有一定的防范作用,但如果非法用户有足够的时间进行关机重启的话,这种方式则没有多大的用处,而且系统也不知道有非法用户在攻击系统,无法防范。
在本端系统中对上述方法做了一些改进,使登录更安全。用户登录时输入用户名和登录口令,若输入错误,端系统会给出相应的提示告知出错。若用户名输入错误则请用户重新输入,不计次数;若登录口令输入错误则记录出错次数,超过三次,退出系统并取消此用户的登录资格,同时通知系统管理员。此用户下次登录时会看到警告信息:登录口令受到攻击,此口令停止使用。用户需到系统管理员处重新登记才能再次登录端系统,实现各项操作。
2.报文加密
SWIFT网规定在其网络中使用硬件加密。此过程实现起来非常简单,只要选择合适的硬件加密器就可以了。
3.报文鉴别
根据SWIFT标准的规定,报文完整性检查和身份鉴别通过在报文的报尾处加上CHK和MAC来完成。其中MAC报尾采用SA—2算法。由于所获得的资料有限,无法知道CHK报尾和MAC报尾究竟采用了什么安全算法,因此只能根据已有的资料选择安全算法。
安全算法的选取主要需要考虑两个因素:一是算法的安全性;二是算法实现的速度,同时还要考虑与SWIFT标准的规定相吻合。
(1)CHK算法
根据SWIFT标准规定:CHK报尾为12位16进制字符。CHK报尾的主要功能是校验报文的正确性,用于CHK的算法一般有奇偶校验、方阵校验、循环校验。其中循环校验使用较多,因此我们选择循环校验算法(CRC)。
CRC算法的实现步骤如下:
1将所需校验的信息表示成二进制流的形式,M(X)=MO+M1X+M2X2+……+M(k—1)Xk—1;
2指定生成多项式g(X)=g0+g1X+g2X2+...+grXr;r=48;
3编码XrM(X)/g(X)=q(X)+r(X)/g(X);
4发送多项式为:r(x)=r0+r1Xh+……r(r—1)xr—1。
CHK报尾为:r(r—1)r(r—2)....
接收端收到CHK后计算:
r(X)/g(x)=[XrM(x)+r(X)]/g(X)
=[q(X)+r(X)/g(X)]+r(X)/g(X)=q(X)
如果被整除则说明报文在传送过程中未被修改。
(2)MAC算法
根据SWIFT标准的规定,MAc报尾为8位16进制字符,用于MAC报尾计算的密钥长度为128个比特,MAC报尾进行身份鉴别和发方不可否认服务,因此MAC报尾采用数字签名技术。目前数字签名的技术很多,其中多半都是基于公开密钥体制,但公开密钥算法的数字签名速度较慢,因此对选用什么信息作为数字签名的对象还要进行仔细考虑。数字签名还可以采用基于对称密钥体制的方法,在SWIFT标准中就是采用这种方法的数字签名技术。
基于对称密钥算法的数字签名技术,是利用密码技术来构造哈希函数。所谓的哈希函数,即对于任意长度的信息M,经过哈希函数运算后,压缩成固定长度的数,比如64比特,要求满足:
1已知哈希函数的输出,要求它的输入是困难的、即已知c=Hash(m),求m是困难的;
2已知m计算Hash(m)是容易的;
3巳知c1:Hash(m1),构造m2使Hash(m2)=c1是困难的;
4c=Hash(m),c的每一比特都与m的每一比特相关,并有高度敏感性、即每改变m的一个比特,都将对c产生明显影响;
5作为一种数字签名,还要求哈希函数除了信息m自身之外,应该基于发信方的秘密信息对信息m确认。
我们选择TEA算法构造哈希函数。所谓的TEA算法,是一种精巧的快速软件分组加密算法,可运行于各类计算机,它加密速度极快,高速、高效,抗差分攻击能力强。TEA软件程序很易于存储和复制,而且安全,不受出口限制,是一种有效而有用的算法。
TEA算法为:
S1(初始化过程)
加密数据分成
v(0)和v(1)两部分,各32比特,y←v(0),
z←(1),Sum←0。
Delta←0X9E3779B9(16进制)
密钥128比特分成4部分k(0).L(1),k(2),k
(3).各32比特。
a←k(0)←b←k(1),c←k(2),d←k(3),n←32
S2若n>0则转S2,否则转S4: S2Sum←Sum+Delta:
y←y+(z《4)+a^z+Sum^(z》5)+b
z←z+(y《4)+c^y+Sum^(y》5)+d:
n←n-1,转S2。
S4v(0)←y,v(1)←z,结束。
TEA加密算法迭代的次数可以改变,32次很充分,16次足够了,8次也可以。明文改变1比特,迭代6次便可以影响32比特位使之改变。
S3中有《运算、》运算、^运算、还有+运算。其顺序为先作《或》,再作^运算,最后是+运算。
解密算法和加密算法类似:
S1初始化过程
解密数据分两部分v(0),v(1)
y←(O),z←v(1)。
Sum←0XC6EF3720(16进制)
Deltra←0X9E3779b9(16进制)
a←k(0),b←k(1),c←k(2),d←k(3),n←32
S2若n》O则转S3,否则转4。
S3z←z(y《4)+C^y十Sum^(y》5)+d:
y←(z《4)+c^z+Sum^(z》5)+b;
Sum←Sum—Deltra;
n←n-1.转S2。
S4v(0)←y,v(1)←z.结束。
下面利用TEA算法构造哈希函数:
设已知M=M1M2M3......Mn
其中M1.M2、M3,……,Mn都是64比特的数据块,为报文发送方拟向接收方发送电报的正文及发方地址。发送方和接收方的通信密钥为K(长128比特)。利用密钥K对M1进行加密得到密文C1=TEA(M1),C1长为64比特;利用C1和M1作变换得到K2=MlCl,K2长为128位,用密钥K2对M2进行加密得到密文C2:TEA(M2),C2长度也为64比特,如此反复,直到Mn加密后的结果作为HASH(M)的输出,即:
S1.K1←K.i←1。
S2.Ci=TEAKi(Mi),K(i+1)←MiCi,i←(i+
1)。
S3.i〈n则转S2,否则HASH(M)←Kn。
最后取Mn的前32位作为MAC报尾。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690462991a352888.html
评论列表(0条)