带你揭开ATM的神秘面纱

时间:2023-03-09 03:08:25
带你揭开ATM的神秘面纱

相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧。以下纯属个人所知,如有错误概不负责。废话不多说,以下开扒:

1、ATM有没有可能出假钞?
答:完全有可能,想必大家也从各种新闻上看到过有人从ATM取出假钱的报道吧,这种新闻对于我们ATM从业者来说早就不是啥新鲜事了。
    要解释ATM为啥子会出假钞就要从ATM的分类开始了,广义的ATM一般分为三类:取款机(ATM)、存款机、存取一体机(CRS或CDM),其中存取一体机我们也称之为”循环机”,意思是这种机器我们存进去的票子可以被其他人取出来。目前天朝市场上大多数机器都是取款机和存取一体机,存款机的数量很少及罕见,至少本人木有见过。
    为啥要给大家介绍ATM的分类呢?玄机就在这个地方,就拿当前市场上最常见的取款机和存取一体机为例吧,其中取款机出来的钞票机器是不验钞的,也就是不管真钞假钞一股脑都往外出,而存取一体机有个东东叫验钞模块,这个东东可是高科技,不是啥公司都能做出来的,据我所知目前国内还只有一家公司完全掌握这项技术,所以从存取一体机里面出来的钞票一般假不了(99.99%,当然也不排除有些假钞的工艺太高超了)。
    通过上面的介绍想必大家已经有了初步的了解吧,所以大家不到万不得已还是不要到取款机去取钱了。什么,不知道怎么分辨这两种机器?自己抬头看啊,ATM机上方都会有标识机器类型的,反正大家记住一点尽量用能存钱的机器去取钱。
2、ATM用的是什么操作系统?
答:Unix?Linux?如果我告诉你是Windows你会不会大吃一惊,我想很多人都会的。事实上现在市面上99%ATM机上的操作系统都是WinXP,还有极少部分机器的系统是WinNT和OS2,不过这些极少数的非主流很快就会被淘汰掉,谁让人家XP是主流呢。不过由于微软马上要停止对XP进行技术支持,预计明年起新增的机器都默认配置Win7系统的。

带你揭开ATM的神秘面纱
3、ATM安全么?
答:这个不用太担心,暂时还是很安全的。
    既然知道ATM机上安装的是Windows系统,很多人肯定会说Windows这么多漏洞,那ATM肯定很不安全了,那我再告诉你ATM是从来不会更新系统补丁的,也就是系统的漏洞比我们想象的多得多。听到这些估计很多人要崩溃了,其实大可不必的啦,因为ATM的网络是一个独立的局域网,是不会连接到互联网上的,再高的高手想要攻击ATM也是不太可能的,所以国外什么黑客轻松控制ATM疯狂吐钱的报道可信度并不高,除非他们能接入到ATM连接的这个局域网去,再说要是能连接到这个网络我这个伪专业人士也能控制ATM疯狂吐钱的,所以那些天天吐槽ATM不安全的人可以洗洗睡去了。
4、ATM机的配置是不是都很高?
答:非也非也,现在市面上奔三奔四CPU、256RAM的机器比比皆是。你想想要是你要买个电脑只用来登个QQ看个网页的话有必要搞个骨灰级游戏玩家的配置么?ATM机无非就是跑个ATM软件,再装个杀毒软件啥的,普通家用机的配置完全毫无鸭梨。
5、为嘛我从存取一体机里面取出来的票子在同一台机器上却存不进去?
答:不用大惊小怪,这个非常正常。前面说过从存取一体机里面取出来的钱一般假不了,也就是说你取出来的钱99%是真钞,但为啥子就是存不进去呢?这是因为存取一体机存款一般都要比取款验钞要严格不少,所以出钞验证为真钞,存钞验证为不可识别钞票的情况是再正常不过的了,也许只是因为钞票缺了一个小角啥的,可以放心的拿出去花掉。
6、ATM取款时倒着输密码会不会报警?
答:明确告诉各位:不会。最近这个谣言在网络上传的轰轰烈烈的,尽快各位砖家叫兽反反复复出来辟谣,但还是有人会相信,这个东东只要自己仔细想想也知道是假的,比如说我把密码设成123321,那我每次做交易都会自动报警,警察蜀黍那不得累死了。事实上只要倒着的密码与实际密码不相同(当然也不建议设置顺序和倒序相同的密码),ATM上只会显示密码错的提示。

今天先简单八一八ATM软件相关东西吧。一般讲ATM软件业内都称之为ATMC,即ATM Client,能够在多种厂商的机器上运行的ATMC也被成为跨平台ATMC,这里的跨平台不是我们常说的跨操作系统,因为ATMC都是运行在Windows平台下的,所谓的跨平台只不过是能够兼容各厂商的各种型号的硬件设备。既然ATMC是在Windows下运行的,那开发ATMC程序的语言无非就那么几种:C++、C#或者Java,目前来说以使用C++的居多,毕竟大部分ATM的配置都不高,为了效率考虑还是用C++比较保险。
     目前国内市场上ATMC软件占用率前两名的公司分别为深圳紫金和美国NCR,两者的占有率不相伯仲。其中深圳紫金占据了建行、交行、光大、兴业等中大型银行以及其他小银行若干,市场分割大概在30%左右;NCR则占据了工行、中行两大行和部分中小银行的份额,这两家公司基本上占据了国内50%~60%的市场。国内的话还有一家公司的实力也不容小觑,就是中国最大的ATM设备制造商广电运通,其在软件方面的实力也是非常不错的,前段时间刚将广发拿下,但由于市场已基本成形,要想抢占更大的份额也有些力不从心了。农行的话据说目前还没有上跨平台ATMC,ATM软件还是由各个ATM厂家负责开发。

貌似有不少人对ATM的安全机制比较感兴趣,今天就先介绍一下ATMC软件的密钥管理机制吧。
一般来讲ATMC用到的密钥有MasterKey、PinKey和MacKey,其中MasterKey(主密钥)主要用来解密后台下发的密钥,PinKey用来加密用户密码,MacKey用来计算报文Mac的。所有这些密钥当中尤以MasterKey最为重要,它主要负责解密后台下发的Pinkey和MacKey,解密使用的算法为3DES,MasterKey一般在ATM安装时手工输入(也有部分银行通过后台下发的)。PinKey和MacKey均由后台下发,且每天至少需要更新一次这两个密钥。由于ATM与后台主要通过TCP\IP报文进行通信,传输的报文有可能被截取,因此后台下发的报文中Pinkey和MacKey都已经使用MasterKey进行3DES加密,ATMC接收到Pinkey和Mackey后需要使用本地的MasterKey分别进行3DES解密后才能得到真正参与加密运算的PinKey和MacKey。实际上不管是MasterKey还是PinKey和MacKey,ATMC软件都是不允许记录和保存的(较早之前默认是由软件保存的,后来央行发文明令禁止该做法),在获取到这些密钥后首要的事情就将其是写到ATM的密码键盘里面,所有的加解密工作其实都由密码键盘完成的,这也就是传说中的硬加密,密码键盘其实就相当于一个小型的加密机。
    客户在插卡输密码后密码键盘会根据ATMC软件送入的账号信息对输入的密码进行加密,生成PinBlock并返回给ATMC,生成PinBlock算法网上到处都是,我就不再累述了,ATMC会将这个PinBlock放置于交易报文*后台校验密码。
    MacKey的作用主要用于生成MAC校验值,这玩意其实与MD5差不多,主要用于防止报文在传输过程中被恶意篡改。ATMC在组装好一条交易报文后将整条报文(全报文加密)或关键域(关键域加密)传入密码键盘计算MAC,ATMC将密码键盘加密完毕后的MAC校验值添加到报文的特定位置(一般位于报文末尾),这样一条完整的报文就组好,可以发送到后台了。后台可以根据报文中的PINBLOCK和MAC校验值来确认用户密码是否正确和报文是否被篡改,后台接收到ATMC发送的报文后也会使用加密机计算一遍MAC校验值,如果计算出来的校验值与ATMC上送的校验值一致,则说明报文未被篡改,否则就会直接拒绝该笔交易。

以上呢就是ATM的加解密机制简要介绍,由于文笔不好,估计有不少人都看晕了,我再画个简单的流程图帮助大家理解:带你揭开ATM的神秘面纱