相信大家都用过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系统的。


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的神秘面纱的更多相关文章

  1. 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!

    本月初微软官宣.NET 6 的RC1即将在11月正式发布,这意味着.NET6正式版跟我们见面的时间又近了一步.在之前的.NET6预览版本中,微软加入了大量新功能特性,而在最终版本中将不再额外加入新的内 ...

  2. 揭开Future的神秘面纱——结果获取

    前言 在前面的两篇博文中,已经介绍利用FutureTask任务的执行流程,以及利用其实现的cancel方法取消任务的情况.本篇就来介绍下,线程任务的结果获取. 系列目录 揭开Future的神秘面纱—— ...

  3. SparkSQL大数据实战:揭开Join的神秘面纱

    本文来自 网易云社区 . Join操作是数据库和大数据计算中的高级特性,大多数场景都需要进行复杂的Join操作,本文从原理层面介绍了SparkSQL支持的常见Join算法及其适用场景. Join背景介 ...

  4. 从一个Demo开始,揭开Netty的神秘面纱

    本文是Netty系列第5篇 上一篇文章我们对于I/O多路复用.Java NIO包 和 Netty 的关系有了全面的认识. 到目前为止,我们已经从I/O模型出发,逐步接触到了Netty框架.这个过程中, ...

  5. ASP.NET 运行时详解 揭开请求过程神秘面纱

    对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...

  6. 揭开Future的神秘面纱——任务执行

    前言 此文承接之前的博文 解开Future的神秘面纱之取消任务 补充一些任务执行的一些细节,并从全局介绍程序的运行情况. 系列目录 揭开Future的神秘面纱——任务取消 揭开Future的神秘面纱— ...

  7. 揭开Future的神秘面纱——任务取消

    系列目录: 揭开Future的神秘面纱——任务取消 揭开Future的神秘面纱——任务执行 揭开Future的神秘面纱——结果获取 使用案例 在之前写过的一篇随笔中已经提到了Future的应用场景和特 ...

  8. 揭开HTTPS的神秘面纱

    摘自:https://www.cnblogs.com/hujingnb/p/11789728.html 揭开HTTPS的神秘面纱   在说HTTP前,一定要先介绍一下HTTP,这家伙应该不用过多说明了 ...

  9. 揭开Redis的神秘面纱

    本篇博文将为你解开Redis的神秘面纱,通过阅读本篇博文你将了解到以下内容: 什么是Redis? 为什么选择 Redis? 什么场景下用Redis? Redis 支持哪些语言? Redis下载 Red ...

随机推荐

  1. LotteryDrawing

    import java.util.*; public class MyTest{ public static void main(String[] args){ Scanner in = new Sc ...

  2. HBase分享会议笔记

    今天参加了一个关于HBase的分享,有一些内容是之前的知识的补充. 之前关于Hadoop家族,包括HBase的内容,可以参考:http://www.cnblogs.com/charlesblc/p/6 ...

  3. FSL安装

    本文介绍如何安装医学图像处理软件fsl. 安装环境:Win8和Ubuntu 14.04 LTS(双系统和虚拟机皆可) 1. 安装ubuntu 14.04 LTS 2. 打开终端,设置ip代理:expo ...

  4. C++——类继承

    类库:类库由类声明和实现构成.类组合了数据表示和类方法,因此提供了比函数库更加完整的程序包. 类继承:从已有的类派生出新的类,派生类继承了原有类(称为基类)的特征,包括方法. 通过类继承可以完成的工作 ...

  5. Nginx安装(zhuan)

    http://www.nginx.cn/install ************************ nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. ...

  6. MVC HtmlHelper用法大全

    MVC HtmlHelper用法大全HtmlHelper用来在视图中呈现 HTML 控件.以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ·Actio ...

  7. Linux chmod命令修改文件与文件夹权限的命令附实例

    Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...

  8. python操作mongodb之七时间和时区

    #时间和时区 import datetime db.test.insert_one({"datetime-datetime-utcnow":datetime.datetime.ut ...

  9. weblogic 下载安装部署说明

    http://blog.csdn.net/gaofuqi/article/details/36870887/ http://jingyan.baidu.com/article/d8072ac45f57 ...

  10. eclipse 下的 merge 是如何实现的

    1 我从eclipse里面新建一个workspace2 新建一个分支3 再新建另外一个分支4 回到原分支, 修改某一行,比如a.txt的85行5 提交git add commit6 切换到新分支7 修 ...