﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Michael's Space-文章分类-ATM Technology/EMV Notes</title><link>http://www.cppblog.com/MichaelLiu/category/1643.html</link><description>Technology changes the world, serves the people.</description><language>zh-cn</language><lastBuildDate>Wed, 04 Aug 2010 01:58:04 GMT</lastBuildDate><pubDate>Wed, 04 Aug 2010 01:58:04 GMT</pubDate><ttl>60</ttl><item><title>Researcher Demonstrates ATM ‘Jackpotting’ at Black Hat Conference</title><link>http://www.cppblog.com/MichaelLiu/articles/121725.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 30 Jul 2010 13:18:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/121725.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/121725.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/121725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/121725.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/121725.html</trackback:ping><description><![CDATA[Source: http://www.wired.com/threatlevel/2010/07/atms-jackpotted/<br>
<h1>Researcher Demonstrates ATM &#8216;Jackpotting&#8217; at Black Hat Conference</h1>
<div class=entryDescription>
<ul>
    <li class=entryAuthor>By <a title="Posts by Kim Zetter" href="http://www.wired.com/threatlevel/author/kimzetter/">Kim Zetter</a> <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#122;&#101;&#116;&#116;&#101;&#114;&#64;&#119;&#105;&#114;&#101;&#100;&#46;&#99;&#111;&#109;"><img border=0 alt="Email Author" src="http://www.wired.com/threatlevel/wp-content/themes/wired/images/envelope.gif" width=14 height=11> </a>
    <li class=entryDate>July 28, 2010 &nbsp;|&nbsp;
    <li class=entryTime>8:37 pm &nbsp;|&nbsp;
    <li class=entryCategories>Categories: <a title="View all posts in Black Hat Conference" href="http://www.wired.com/threatlevel/category/black-hat-conference/" rel="category tag">Black Hat Conference</a>, <a title="View all posts in Cybersecurity" href="http://www.wired.com/threatlevel/category/cybersecurity/" rel="category tag">Cybersecurity</a>, <a title="View all posts in Hacks and Cracks" href="http://www.wired.com/threatlevel/category/hacks-and-cracks/" rel="category tag">Hacks and Cracks</a>
    <li class=entryEdit></li>
</ul>
</div>
<div class=entry>
<p><a href="http://www.wired.com/images_blogs/threatlevel/2010/07/atm_cash.jpg"><img class="alignnone size-full wp-image-18089" title=atm_cash alt="" src="http://www.wired.com/images_blogs/threatlevel/2010/07/atm_cash.jpg" width=660 height=444></a></p>
<p>LAS VEGAS — In a city filled with slot machines spilling jackpots, it was a &#8220;jackpotted&#8221; ATM that got the most attention Wednesday at the Black Hat security conference, when researcher Barnaby Jack demonstrated two suave hacks against automated teller machines that made them spew out dozens of crisp bills.</p>
<p>The audience greeted the demonstration with hoots and applause.</p>
<p>In one of the attacks, Jack&nbsp;reprogrammed&nbsp;the ATM remotely over a network, without touching the machine; the second attack required he open the front panel and plug in a USB stick loaded with malware.</p>
<p>Jack, director of security research at IOActive Labs, focused his hack research on standalone and hole-in-the-wall ATMs — the kind installed in retail outlets and restaurants. He did not rule out that bank ATMs could have similar vulnerabilities, but he hasn&#8217;t yet examined them.</p>
<p>The two systems he hacked onstage were made by Triton and Tranax. The Tranax hack was conducted using an authentication bypass vulnerability that Jack found in the system&#8217;s remote monitoring feature, which can be accessed over the internet or dial-up, depending on how the owner configured the machine.</p>
<p>Tranax&#8217;s remote monitoring system is turned on by default, but Jack said the company has since begun advising customers to protect themselves from the attack by disabling the remote system.</p>
<p>To conduct the remote hack, an attacker would need to know an ATM&#8217;s IP address or phone number.&nbsp;Jack said he believes about 95 percent of retail ATMs are on dial-up; a hacker could war dial for ATMs connected to telephone modems, and identify them by the cash machine&#8217;s proprietary protocol.</p>
<p>The Triton attack was made possible by a security flaw that allowed unauthorized programs to execute on the system. The company distributed a patch last November so that only digitally signed code can run on them.</p>
<p>Both the Triton and Tranax ATMs run on Windows CE.</p>
<p>Using a remote attack tool, dubbed Dillinger, Jack was able to exploit the authentication-bypass vulnerability in Tranax&#8217;s remote monitoring feature and upload software or overwrite the entire firmware on the system. With that capability, he installed a malicious program he wrote, called Scrooge.</p>
<p>Scrooge lurks on the ATM quietly in the background until someone wakes it up in person. It can be initiated in two ways — either through a touch-sequence entered on the ATM&#8217;s keypad or by inserting a special control card. Both methods activate a hidden menu an attacker can use to make the machine spew out money or print receipts. Scrooge will also capture magstripe data embedded in bank cards other users insert into the ATM.</p>
<p>To demonstrate, Jack punched keys on the keypad to call up the menu, then instructed the machine to spit out 50 bills from one of four cassettes. The screen lit up with the word &#8220;Jackpot!&#8221; as the bills came flying out the front.</p>
<p><span id=more-18076></span>To hack the Triton, he used a key to open the machine&#8217;s front panel, then connected a USB stick containing his malware. The ATM uses a uniform lock on all of its systems — the kind used on filing cabinets — that can be opened with a $10 key available on the web. The same key opens every Triton ATM.</p>
<p>Two Triton representatives said at a press conference after the presentation that its customers preferred a single lock on systems so they could easily manage fleets of machines without requiring numerous keys. But they said Triton offers a lock upgrade kit to customers who request it — the upgraded lock is a Medeco pick-resistant, high-security lock.</p>
<p>Similar malware attacks were discovered on bank ATMs in Eastern Europe last year. Security researchers at Trustwave, based in Chicago, <a href="http://www.wired.com/threatlevel/2009/06/new-atm-malware-captures-pins-and-cash">found the malware on 20 machines in Russia and Ukraine</a> that were all running Microsoft&#8217;s Windows XP operating system. They said they found signs that hackers were planning on bringing their attacks to machines in the United States. The malware was designed to attack ATMs made by Diebold and NCR.</p>
<p>Those attacks required an insider, such as an ATM technician or anyone else with a key to the machine, to place malware on the ATM. Once that was done, attackers could insert a control card into the machine&#8217;s card reader to trigger the malware and give them control of the machine through a custom interface and the ATM&#8217;s keypad.</p>
<p>The malware captured account numbers and PINs from the machine&#8217;s transaction application and then delivered it to the thief on a receipt printed from the machine in an encrypted format, or to a storage device inserted in the card reader. A thief could also instruct the machine to eject whatever cash was inside the machine. A fully loaded bank ATM can hold up to $600,000.</p>
<p>Earlier this year, in a separate incident, a Bank of America employee was charged with installing malware on his employer&#8217;s ATMs that allowed him to <a href="http://www.wired.com/threatlevel/2010/04/bank-of-america-hack/">withdraw thousands of dollars without leaving a transaction record</a>.</p>
<p>Jack was slated to give the same ATM vulnerability talk at Black Hat last year, but his then-employer Juniper Networks canceled the talk weeks before the conference after an <a href="http://www.wired.com/threatlevel/2009/06/atm-vendor-halts-talk/">unnamed ATM vendor expressed concern</a>. He said on Wednesday that the earlier talk was withdrawn to allow Triton time to implement a patch to address the code-execution vulnerability targeted in his demonstration. The company <a href="http://www.tritonatm.com/news/current/black_hat.htm">released the patch eight months ago</a>.</p>
<p>Jack said that so far he&#8217;s examined ATMs made by four manufacturers and all of them have vulnerabilities. &#8220;Every ATM I&#8217;ve looked at allows that &#8216;game over.&#8217; I&#8217;m four for four,&#8221; he said at the press conference. He wouldn&#8217;t discuss the vulnerabilities in the two ATMs not attacked on Wednesday because he said his previous employer, Juniper Networks, owns that research.</p>
<p>Jack said his aim in demonstrating the hacks is to get people to look more closely at the security of systems that are presumed to be locked down and impenetrable.</p>
<p><em>Photo: Isaac Brekken/Associated Press</em></p>
</div>
<br><br>Read More <a style="COLOR: #003399" href="http://www.wired.com/threatlevel/2010/07/atms-jackpotted/#ixzz0vAgMMN79">http://www.wired.com/threatlevel/2010/07/atms-jackpotted/#ixzz0vAgMMN79</a><br><br>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/121725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2010-07-30 21:18 <a href="http://www.cppblog.com/MichaelLiu/articles/121725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>风雨兼程20载——记ATM机进入中国银行业20周年（转载）</title><link>http://www.cppblog.com/MichaelLiu/articles/54682.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 26 Jun 2008 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/54682.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/54682.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/54682.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/54682.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/54682.html</trackback:ping><description><![CDATA[<div class=font14_black_bold align=center>风雨兼程20载——记ATM机进入中国银行业20周年<br><br><a href="http://www.fcmag.com.cn/Column/Special/28544.shtml">http://www.fcmag.com.cn/Column/Special/28544.shtml</a><font size=2><br><br>对于金融界来说，ATM机算得上是20世纪最伟大的发明之一。对于中国的银行业而言，ATM机开启了一扇通向用户的新窗口。对于消费者而言，ATM机已经成为日常生活的一部分。自1986年第一台ATM机在中国银行珠海分行投放至今，ATM机进入中国银行业已有20年时间。随着中国银行业信息化建设的深入开展，人们对ATM机也经历了一个由陌生到熟悉的过程。如今，金融自助设备已成为银行开展个人业务的一条不可替代的渠道。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1996年，中国银行上海市分行在虹桥开发区开办了国内第一家自助银行，为客户提供全天候服务，逐步培养人们使用自助设备的习惯。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1998年后，随着ATM机等自助设备在银行应用的逐渐成熟，开始出现了更多的自助银行。ATM机自动柜员机、CDM自动存款机、存折补登机、触摸式多媒体电脑等设备的出现，使自助银行更接近于真正意义上的银行功能。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而价格昂贵，功能单一，加上各银行发卡量不多，ATM机作为银行为客户提供的一种便捷的&#8220;信息化服务手段&#8221;并非谁家都用得起。截至2000年底，拥有ATM机数量占有绝对优势的工商银行，投入使用的ATM突破1万台，此时，牡丹卡发行量为6000万张，初步形成了覆盖全国的ATM机自助银行体系。其他银行则相差较远。<br>&nbsp;&nbsp;&nbsp;&nbsp;经过了3～5年的起步阶段，各商业银行市场意识增强，逐步意识到自助设备在未来个人金融业务发展中的重要性。于是ATM机在中国银行业进入了快速发展期。2003年一场&#8220;非典&#8221;突袭中国，严重干扰了人们的日常生活和工作。而这给了网上银行、ATM机等金融渠道彰显其优势的机会。工行、中行、建行等商业银行看到了市场在变化，证券市场、资本市场正在迅速发展，个人客户理财的需求不断增加，顺应这种市场的变化，纷纷开始重视零售业务的发展。其中，工商银行最早在国内实施了大客户战略即零售业务发展战略，推进了个人金融业务的转型。与此战略同步发展的是各商业银行对金融自助设备的大力投入。<br>&nbsp;&nbsp;&nbsp;&nbsp;随着大量ATM机投放市场，各行对ATM机的监控管理工作也提上日程。工行通过实施ATM机前置机方案，直观地反映全行每台ATM机的运行情况，以确保用户使用ATM机交易的安全。2005年，工商银行重点加大了对ATM机功能和服务的改进力度，通过科学调整ATM机的布局、加强ATM机的安全防范措施等，使ATM机的使用效率大大提高。2005年工商银行ATM机交易总金额突破5000亿元。ATM机交易量达16.2亿笔，其中结算类交易量8.34亿笔，同比增加3.08亿笔。</font></div>
<p><font color=#ff0000 size=2>为&#8220;排队现象&#8221;解困</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 今年以来，各银行网点的排队现象都比较严重。为了解决排队这个问题，人们的目光聚焦到ATM机上来。<br>&nbsp;&nbsp;&nbsp; 建设银行个人金融部副总经理王毅告诉记者，他曾经到建行北京的一个网点当了一天大堂经理，综合其他部门反映上来的情况，他总结了出现排队问题的主要原因。<br>&nbsp;&nbsp;&nbsp; 首先，是股市连带下的基金火爆，使银行和客户都没有充分的思想准备。建设银行的基金代理业务是中间业务销售的重要一项。与基金相关的业务需求量大增。几乎所有的商业银行都在积极承揽基金代销业务，分享股市红利。<br>&nbsp;&nbsp;&nbsp;&nbsp;其次，与银行的后台系统的服务能力有一定关系。银行的后台服务系统流程仍然太复杂，需要不断优化。比如，在建行买基金需要办理一张专用的卡，为了简化流程，提高效率，建行将在年底取消这个环节。<br>&nbsp;&nbsp;&nbsp;&nbsp;第三，与业务人员对业务的熟练程度和素质有关。这里的业务人员不仅指柜员，还包括大堂经理。一个好的大堂经理可以通过对客户的引导，分流掉那些能在ATM机上实现的业务，减轻柜面压力。另外，对公与对私业务的窗口开设没有随着业务流向进行及时调整，出现&#8220;对公业务闲得没事干，对私业务忙得一塌糊涂&#8221;现象。<br>&nbsp;&nbsp;&nbsp;&nbsp;从解决排队问题这个角度看，ATM机的布放合理和充足一定程度上缓解了眼下的排队问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;工商银行个人金融业务部负责人介绍说，针对今年出现的排队现象，要求将复杂的业务和简单的业务区分开来；与此同时，工行正在进行内部的流程再造，这将使业务流程简洁化。工商银行加大了营销宣传力度，指导客户正确操作ATM机，主动提示银行卡及ATM机交易的安全事项，告知客户特殊情况的应急处理措施，努力为客户提供便捷安全的ATM机自助服务环境。同时，取现限额提高后，ATM机支付现金量将随之增多，工商银行已要求全行根据辖内ATM机支付特点，合理确定ATM机备付金填装量和加钞频率，保证ATM机专用钞券的供应。据悉，今年，ATM机开机率、正常运行率等指标较去年提高，受理业务量大幅增加。今年前5个月ATM机的累计交易量达到79618万笔，累计交易额达3496亿元。<br>&nbsp;&nbsp;&nbsp; 据透露，工行将继续加大自助机具的投放力度，在原有2万台ATM机的基础上，今年再增5000台自动柜员机，大量增设缴费机、登折机、补打发票机等多功能自助设备，并在现有2700多家自助银行的基础上，在大城市的繁华商业街区再多建24小时自助银行。<br>&nbsp;&nbsp;&nbsp; 为了有效管理和使用ATM机，2003年，建设银行就研发了&#8220;ATM机功能拓展和系统监控系统&#8221;，对全行的ATM机实现了后台统一控制。今年5月，人民银行将每日自助设备提款限额上调到2万元后，建设银行一周内就在全国的ATM机上做了相应的调整。系统实现快速响应，是建立在信息技术有力支撑的基础上的。</font></p>
<p><font color=#ff0000 size=2>从服务客户到盈利中心</font></p>
<p><font size=2><font color=#ff0000>&nbsp;&nbsp;&nbsp;&nbsp;</font>2003年，建设银行拥有的ATM机还不到1万台。而工商银行截至2003年6月底，投入使用的ATM机已经达到12715台，位居全国之首。王毅副总经理给记者算了一笔账：从投入成本来看，现在一台ATM机设备大约十几万元，便宜的只有10万元出头，如果是集中采购，费用还会再降下来一些。而通过实际计算，建行在系统上线后，在网点布放ATM机，投入使用后，通常1年就能收回成本。这里收入主要盈利的来源是跨行转账以及异地转账的收入手续费收入。</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;王毅说，如果把其他行在建行ATM机上提款的费用，与建设银行卡在其他银行提款的手续费对切后，有一年仅此一项，他们就赚了3亿元。此外，异地跨行转账的收入也相当可观；ATM机替代人工网点还会给网点节约一大笔开销。账算清楚后，建行在ATM机的投入上进入加速期。截至今年5月，建行ATM机数量超过2万台。<br>&#8220;ATM机功能拓展和系统监控系统&#8221;上线后，每台ATM机的投入和布放也不再是&#8220;拍脑袋&#8221;式了。从后台监控室可以对布放在全国的2万多台ATM机中任何一台经营情况的数据调出来做分析。如果发现某一台ATM机布放后不能赚钱，可以通过数据分析原因，再根据分析结果进行调整。ATM机挣钱的另外两个原因在于，建行有一套完整的网点选择流程，配套网点布放合理；建行有借记卡接近2亿，信用卡超过1000万，银行卡的活跃程度很高。</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;而2003年之前，建设银行的ATM机不论是操作系统、管理模式，还是操作界面等等是五花八门，杂乱无章，在功能上仅限于取款、存款、查询，非常单一。王毅说，那时，大家觉得ATM机仅仅是给客户提供服务的一种昂贵的渠道，完全是投入式的。但是，经过调研发现：成本中心的观念不正确，必须改变。ATM机完全可以成为赚钱的工具，要用经营的头脑来做ATM机。他下决心要建设一套系统来控制ATM机，使之成为赚钱的机器。<br>&nbsp;&nbsp;&nbsp; 2003年，北京发生非典之前的两个月，王毅带领一队人马跑了国内5个大城市，找到这些城市最繁华的街道去做ATM机的使用状况调研。比如，在南京的新街口（当地最繁华的街道），他们对这条街上设置的每一家银行的自助银行都进行了仔细观察，并逐机操作，把结果与建行自己的ATM机加以比较。结果发现，各家银行的ATM机也是五花八门，功能各有千秋。<br>&nbsp;&nbsp;&nbsp;&nbsp;回北京后，王毅带队，自己研发了一套&#8220;ATM机功能拓展和系统监控系统&#8221;，并为ATM机开发出46种功能（现发展为五六十种功能），根据ATM机布放点的情况有选择，开放一些适合当地的业务品种。还可以根据业务需求量的不同，适当调整。系统可以在总行统一管理全国ATM机，各省分行有一个管理中心，可以监控全省的ATM机运行情况。<br>&nbsp;&nbsp;&nbsp;&nbsp;自助服务区的比例，建行有一套标准，符合要求的都要安装ATM机等自助设备，准备向综合网点发展。今年，建行还会增大ATM机的布设量，增设到什么样的规模不好说。ATM机的盈利能力现在来看，还处于一个上升期。尽管建行的ATM机增速很快，但是并没有因为投入量增长而使每台ATM机的操作笔数下降，相反交易量还在不断上涨。</font></p>
<p><font color=#ff0000 size=2>安全，道高一尺魔高一丈</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;一扇窗户开启，伴随而来的安全问题不容忽视。ATM机的安全可以分为两个层面，一是系统运行的安全；二是用户使用ATM机环境的安全。据农行相关负责人介绍，在系统安全运行上，他们主要通过以下手段：首先是通过全行的ATM机监控管理系统，对ATM机进行实时监控；其次是发生问题后通过短信、电话等方式及时联系相关的责任人员及厂商进行维修；第三，设有专门的ATM机管理员，加强ATM机的日常维护；第四，对离行式ATM机，通过定期巡检，提高正常开机率和正常运行率；第五，通过定期的数据分析，找出每个片区乃至每台机具发生故障的频率和故障原因，并制订相应的措施，预防与维护并举。<br>&nbsp;&nbsp;&nbsp; 王毅表示，犯罪分子的犯罪手段其实很低级，完全可以通过ATM机上设置相关的警示信息，提醒消费者避免上此类信息的当。前年，当短信诈骗比较猖獗的时候，建设银行ATM机上也时有发生。原因在于建设银行当时是惟一一家开通了全国ATM机转账功能的银行。&#8220;当时的压力很大，考虑要不要关闭这项功能。经过分析，我们采取了通过系统设置，在建行的ATM机上设置相关提醒信息，让用户一插卡就看到这个提示信息，骗术不攻自破。&#8221;建行有一套完整的网点选择流程。王毅说，很多犯罪份子的作案手段其实很低级，比如趁持卡人插卡后，犯罪嫌疑人突然在身后拍你，佯称东西掉了，等消费者低头拣拾的时候，把卡换了。建行通过远程监控探头抓到过好几个犯罪嫌疑人。ATM机上的多数风险来源还是持卡人的疏忽。银行则需要通过各种途径对用卡人进行安全意识的宣传教育，提高消费者的安全意识。</font></p>
<p><font color=#ff0000 size=2>竞争日趋激烈</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;随着百姓对自助设备接受程度的提高，以及ATM机价格下降，ATM机正成为各商业银行竞争不可忽视的领域。<br>&nbsp;&nbsp;&nbsp;&nbsp;据中国银行信息科技部副总经理徐纪恒介绍，中行ATM机投入使用20年以来，坚持以科技为依托，按照国际标准和国内外银行卡业发展趋势，构建全新的、集中运作的银行卡运作体系，提升现有产品服务功能，不断进行工作创新与产品创新，呈现出业务规模与经营效益双增长局面，提前实现人民币信用卡发卡量、国际信用卡发卡量和有效商户数量居业内第一的目标，外卡收单继续雄居榜首的强劲发展势头。<br>&nbsp;&nbsp;&nbsp;&nbsp;据悉，目前，中国银行有贷记卡发卡量230万，借记卡发卡1.2亿张。账户与客户还没有完全对应起来。每年新增ATM机在1500～2000台之间，主要布放在包括：本行网点、自助银行以及大商场、机场、饭店等。<br>&nbsp;&nbsp;&nbsp; 截至2007年第一季度，中国银行可以办理个人业务的综合网点为10600家，投产ATM机11329台，有2089台在自助银行内，自助银行855家。在重点城市及其繁华地段，增加营业网点和ATM机等自助机具设备。在营业面积超出200平方米的网点，建立自助银行或自助服务区，提高网点自助设备配备率，充分发挥网点自助渠道对柜台业务的分流效用。<br>&nbsp;&nbsp;&nbsp; 中行目前已经在ATM机上安装使用监控设备，保障客户资金安全。随着中国银行实施网点转型，简单业务将逐步迁移至自助设备上。<br>&nbsp;&nbsp;&nbsp; 徐纪恒副总经理透露，目前，中国银行ATM机的运营由分行自行承担，部分分行选择了外包方式进行维护。中行正在开发新的核心应用系统，今年试点投产，明年将推广完成。新系统将包括客户与账户的完全对应。<br>&nbsp;&nbsp;&nbsp; 目前，建设银行自助银行数量超过3000家，离行式自助银行不足300家；离行式ATM机将近4000台。据建设银行统计，目前在ATM机上使用最多的是功能仍然是取款和查询，占总量的70%，其次是转账、存款以及代缴费业务。<br>&nbsp;&nbsp;&nbsp;&nbsp;曾一度落后于其他大型商行的中国农业银行也开始空前重视ATM机的布放和运营。截至今年上半年，农行拥有ATM机近1.9万台，发卡量总计约2.7亿张。去年农行抢占了北京地铁站内商机，高密度地布放ATM机，由此获得相当可观的收益，地铁ATM机跨行手续费收入已经超过很多商业区的ATM机。针对北京2008奥运商机，北京农行的ATM机90％以上开通了外卡取现功能。<br>&nbsp;&nbsp;&nbsp;&nbsp;中小银行因为网点数量少，无法与大银行以比高下，也开始通过增加ATM机布放等方式弥补其网点不足的劣势。据民生银行零售业务总部运行保障中心总经理项英介绍，从2003年起，民生银行提出要在按揭、储蓄和自助银行业务上实现三大突破，总行在设备投入、人员配备等方面鼎力支持。通过团队建设、激励机制等措施，各分行加大了自助银行的投入，布放速度明显加快，拓展重点从在行式转向离行式。目前，在线运行的ATM机从2003年起步时的几百台迅速升至近3000台，完成了民生银行自助银行业务的第一次飞跃。目前，在一些重点城市如北京、武汉、太原等，民生的自助银行非常醒目。项英说，&#8220;对于民生银行这样一个新兴股份制商业银行来说，除了把业务做精做好，还要通过积极宣传逐渐赢得客户的信任。毫无疑问，自助银行对于民生银行的形象宣传颇有益处。&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;即使进入中国市场不久的外资银行，在ATM机发展方面也非常积极。目前，为配合不断增长的自助服务设施的需求，渣打银行在2006年底前在中国重点城市设立了22台ATM机， 并计划在年底前把ATM机的数量提高到100台。据悉，渣打银行已经与中国银联签约，将成为其会员。届时，渣打银行的ATM机系统与银联系统实行对接，可为客户提供更方便的ATM机上的自助服务。<br>&nbsp;&nbsp;&nbsp;&nbsp;与此同时，汇丰银行、花旗银行方面也在积极扩张网点。花旗银行2005年7月1日在上海浦东国际机场设立了第一台离行式柜员机。之后，与主要的战略伙伴诸如7-11便利店合作来拓展网络。截至今年5月，在全国6所城市中共有84台ATM机，包括62台离行式和22台驻行式。花旗中国副行长兼个人零售业务主管石安楠(Anand Selva)表示，选址方面主要有三方面考虑：便捷度、接触面和可视性。便捷度：主要根据目标客户群在商业、零售、住宅、娱乐和公用事业等物业形态中的步行流量和频率进行选址，其中公用事业范围包括机场、火车站等。娱乐区域包括各大宾馆和像长城这样的旅游胜地等。主要目的是为了增加我们客户日常生活的方便程度。接触面：除了会在人流密集度高的地方布点之外，还会系统性地分散ATM机分布来扩大我们的接触面。可视性：选址策略的另一个重要目的是为了增加花旗银行品牌的知名度，所以会选择人流量大的众多区域和地点。今后，将致力于将更多创新性的服务和解决方案带到我们在中国的ATM机服务中来。</font></p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/54682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2008-06-26 17:02 <a href="http://www.cppblog.com/MichaelLiu/articles/54682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>粹通标准</title><link>http://www.cppblog.com/MichaelLiu/articles/37906.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 06 Dec 2007 08:19:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/37906.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/37906.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/37906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/37906.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/37906.html</trackback:ping><description><![CDATA[<span class=newtext>&nbsp;粹通公布其协议标准。<br>
<p><span class=featuretext>Getting message </span>
<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#110;&#110;&#97;&#64;&#110;&#101;&#116;&#119;&#111;&#114;&#108;&#100;&#97;&#108;&#108;&#105;&#97;&#110;&#99;&#101;&#46;&#99;&#111;&#109;&#63;&#83;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#71;&#101;&#116;&#116;&#105;&#110;&#103;&#32;&#109;&#101;&#115;&#115;&#97;&#103;&#101;">Ann All, editor</a> <br>
<p>&#8226;&nbsp;09 Aug 2004<br><br>For those not there when Bob Dylan picked up an electric guitar in front of audiences for the first time, in 1966, the only way to hear the music was to purchase one of a myriad of bootleg recordings made during the tour.</p>
<p>Twenty-two years after an especially incendiary performance at Royal Albert Hall, Dylan's record label released an "official" version of the concert with re-mastered, state-of-the-art sound. The result: a renewed appreciation of Dylan's role in shaping popular music.</p>
While it's too soon to predict if <a href="http://www.atmmarketplace.com/sf_10.htm">Triton</a> will garner the same kind of enthusiasm with its decision to publicly release its Triton Standard ATM message specification, early reaction appears to be mostly of the "rock on" variety.
<p>"If more vendors were as open as Triton, all of our lives would be a little less complicated," said Chris Klein, executive vice president of marketing for <a href="http://www.atmmarketplace.com/sf_222.htm">Mosaic Software</a>, developer of the Postilion transaction processing platform.</p>
<p>"For businesses like ACI it means supporting less device handlers and the associated maintenance like Triple DES, EMV and remote key downloading," agreed Rick DuVall, a senior product manager for <a href="http://www.atmmarketplace.com/sf_562.htm">ACI Worldwide,</a> developer of the BASE24 transaction processing platform. "For customers, it means not having to purchase and maintain additional device handlers. It gives them the ability to shop multiple ATM vendors more easily."</p>
<p><strong>A little history</strong></p>
<p>Message specifications like Triton Standard dictate how ATMs communicate with host processors and vice versa. Triton was one of the early pioneers of creating specifications for ATMs using dial-up communications.</p>
<p>The first dial-up specification was created by Tidel in 1992 for its AnyCard ATM. Like Triton, Tidel based the spec on the Visa II protocol, which had been developed for point-of-sale terminals. Transaction processor ACS helped produce the spec.</p>
<p>Also in 1992, Triton began developing a spec for its Scrip Jr terminal, working with transaction processor Intercept. </p>
<p>Before the introduction of dial-up ATMs in the early '90s, all ATMs used leased line communications. Host processors created configurations of&nbsp; "states and screens" for each ATM operation. Leased-line terminals collect information when a customer requests a particular type of transaction and transmit it to the host; the host then downloads the appropriate configuration.</p>
<p>The approach wasn't appropriate for retail ATMs, said Bill Jackson, Triton's vice president of research and development. "Programming screens for each terminal by the host is time consuming, so a different model was needed."</p>
<p>So Triton and Tidel modeled their retail ATMs on POS terminals, with the ATM containing all of the screens, states and programming it needs to perform transactions.</p>
<p>This approach makes terminal set-up and configuration "trivial" and supports communication using a far less expensive dial-up telephone line, Jackson said.</p>
<p>Because of the newness of dial-up ATMs, Jackson said, Triton had to develop a new interface each time it signed with a new transaction processor. "The interface had to match something they already supported. The message formats were all similar; the same information was needed to do the job - but it was always arranged in a different way."</p>
<p>By 1996, Jackson said Triton had developed more than a half dozen formats for a like number of processors. </p>
<p>"We could not make changes or add new features because the host was in charge of the format. They supported other devices with the same format and did not want to change just for us," he said. "This made life miserable for programmers at Triton. We were supporting lots of versions of code and had to know what processor a customer was using before we built the terminal. Changing processors in the field meant a complete software reload and configuration."</p>
<p>A new relationship with Concord EFS (then EPS) in 1996 marked a change. Concord offered to write code to support Triton's ATMs. "Up to that point in time, no one wrote code to support us. We wrote code to support them," Jackson said.</p>
<p>Triton kept the Visa II protocol but started with a clean slate for the Concord message format itself, Jackson said. Based on its previous experiences with complicated, processor-specific modifications, the manufacturer built the message structure in a way that allowed for modification with no changes to the original framework.</p>
<p>"A brand new RL5000 (Triton's newest and most advanced ATM) could be supported by any processor that wrote software based on the first release of Triton Standard. A 9500 (last manufactured in 1997) would work perfectly with any processor today even if they were supporting the latest version of Triton Standard," he explained. "The goal was to have the version of any terminal code be fully compatible with any version of host processor code, no matter how old or new either was."</p>
<p><strong>Form of flattery?</strong></p>
<p>Because of the popularity of its 9600 ATM, Triton was able to convince processors to support the new standard. Today, some 50 processors around the world do so, Jackson said. </p>
<p>It has become so popular that a number of other manufacturers, including several of the largest in the world,&nbsp;emulate it. Such emulation occurs, said ACI's DuVall, because "it's easier for new players to get into the market by emulating someone else rather than convincing companies like ACI to build new device handlers."</p>
<p>Indeed, many manufacturers also emulate 911/912, a Diebold message format, and NDC/NDC+, an NCR message format. Fujitsu's Prism software, which Triton has licensed for use with its new Windows-based ATMs, features Diebold 912 emulation.</p>
<p>Jackson believes the widespread practice of emulation is tolerated -- though not encouraged -- because ultimately it helps facilitate development of new ATM applications. </p>
<p>Noting that Triton's specification has been shared with partners like Mosaic Software and ACI under non-disclosure agreements, he said, "Triton has never pursued any kind of legal action against anyone, manufacturer or processor. As far as I know, neither have NCR or Diebold. I think this is because each emulates the other and what goes around, comes around. We do not sanction or condone (emulation), but also do not actively discourage it."</p>
<p><strong>Cleaner copy</strong></p>
<p>Triton hopes that offering freer access to its specification will result in "cleaner" emulations, with less testing and development required for software developers and processors, Jackson said.</p>
<p>"If the specification isn't officially open, the emulators, due to a lack of knowledge, eventually drift away from the official specification and companies like ACI are forced to support these nuances in order to keep our customers content," DuVall said. </p>
<p>Offering new functionality should become quicker and easier for manufacturers currently emulating Triton that choose to adopt Triton Standard, said Mike Cowart, operations director, ATM Services for transaction processor Lynk Systems.</p>
<p>Lynk and other processors "make enhancements and updates to Triton Standard first, then look at emulations," Cowart said.</p>
<p>Brad Zerman, president of <a href="http://www.atmmarketplace.com/sf_313.htm">Qualtex Corporation</a>, which manufactures the WeatherMaster ATM, said Triton's decision to open its spec "is huge for us."</p>
<p>His company is considering entering the burgeoning retail ATM market in the United Kingdom. Developing support for EMV, a smart card standard mandated in the UK, would have been costly, he said.&nbsp;"Triton already supports EMV, so that will allow us to minimize our development costs if and when we decide to enter that market."</p>
<p><strong>Open issues</strong></p>
<p>Triton originally intended to post the Triton Standard spec on its Web site. Due to security concerns,&nbsp;Jackson said it will post a request form instead. It will not collect a license fee, or otherwise charge anyone to use it.</p>
<p>"We are modifying the plan to give it to anyone that legitimately could use it, including competitors, but with a non-disclosure agreement of some kind. While we will continue to help any legitimate processor to develop drivers for it, we will not provide any technical assistance or help to any competitor," he said.</p>
<p>Jackson said Triton hopes to accelerate the development of new ATM features and functionality. "We have always solicited feedback from processors on what we could do to enhance the specification. We do not expect to solicit feedback from competitors; we will not ignore it, either."</p>
<p>By opening its standard, Triton could "theoretically lose some market share due to removing a barrier to other entrants," said ACI's DuVall.</p>
<p>Jackson said the manufacturer hopes Triton Standard will become a communications-independent standard for entry-level ATMs, much as&nbsp;IFX is becoming a standard for more sophisticated machines. <br>&nbsp;<br>"Open standards are good for the industry and will be good for Triton," he said.</p>
<p>At&nbsp;least one competitor worries that&nbsp;encouraging adoption of existing vendor standards, including Triton Standard, could slow&nbsp;a broad move to&nbsp;IFX.</p>
<p>"IFX&nbsp;is not solely being driven by ATM manufacturers; rather it is being driven by the financial industry as a whole. It is the&nbsp;first time a standard has been defined whereby institutions can truly influence what functionality each ATM provider, switch vendor or network provider should implement to meet the customer business needs," said Joe Gallagher, general manager of Software and Services for NCR's Financial Solutions division. "Releasing or advocating adoption of existing vendor standards will not encourage the industry at large to move to IFX and could potentially slow the pace of adoption."</p>
Source：<a href="http://www.atmmarketplace.com/article.php?id=4938&amp;na=1">http://www.atmmarketplace.com/article.php?id=4938&amp;na=1</a></span>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/37906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2007-12-06 16:19 <a href="http://www.cppblog.com/MichaelLiu/articles/37906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>美国居民利用ATM的软件漏洞透支取款被判入狱10年</title><link>http://www.cppblog.com/MichaelLiu/articles/16464.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 14 Dec 2006 14:43:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/16464.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/16464.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/16464.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/16464.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/16464.html</trackback:ping><description><![CDATA[
		<h1 class="red">
				<h1 class="red">
						<font size="3">Woman steals thousands from ATM</font>
				</h1>
		</h1>
		<div class="subhead">
				<div class="subhead">
						<font size="2">
								<b>Glitch let cash flow freely after Katrina</b>
						</font>
				</div>
		</div>
		<div class="byln">
				<font size="2">Thursday, December 07, 2006 </font>
				<div>
						<div>
								<font size="2">By Matt Scallan<br /><br />(本文转载自:<a class="" title="" href="http://www.nola.com/search/index.ssf?/base/news-3/1165474781197240.xml?NERP&amp;coll=1" target="_blank">http://www.nola.com/search/index.ssf?/base/news-3/1165474781197240.xml?NERP&amp;coll=1</a>)<br /><br />[Michael]: 前不久在本人身边就发生过类似情况,国内客户在一ATM(自动柜员机)上取款时发现ATM软件的漏洞(取100元帐户只被扣1元),于是拼命取款上十万最终辞去工作,逃离人们视线.<br /> 殊不知本文中该美国居民因类似事件被FBI追查并被送上法庭,最终以<font size="3"><strong>盗窃罪</strong></font>将被判处至多10年的徒刑,并追加一定的罚款.<br /><br /><br /></font>
						</div>
				</div>
				<b>
				</b>
		</div>
		<p>
				<font size="2">A Destrehan woman with $600 in her credit union account took advantage of a software glitch to steal more than $14,000 with her ATM card in the weeks after Hurricane Katrina, U.S. Attorney Jim Letten said Wednesday. </font>
		</p>
		<p>
				<font size="2">Shelita Grandpre, 32, pleaded guilty to bank larceny charges in U.S. Eastern District Court last week after admitting that she knowingly spent the money after discovering a software glitch in the ASI Federal Credit Union's ATM software that allowed customers to withdraw unlimited amounts of cash and make unlimited purchases with their debit cards. </font>
		</p>
		<p>
				<font size="2">Five other ASI members have pleaded guilty to similar charges. The Elmwood-based credit union has 14 branches in Orleans, Jefferson, St. Tammany, St. Charles, Lafourche and Evangeline parishes. <br /></font>
		</p>
		<p>
				<font size="2">Audrey Cerise, ASI's chief executive officer, said credit union officers discovered the glitch three days after the storm after the institution transferred its operations to another company when the power failed at its Jefferson Parish headquarters. </font>
		</p>
		<p>
				<font size="2">"We had a choice. We could have cut off ATM services for all of our members, or we could take the chance on losing some money," she said. </font>
		</p>
		<p>
				<font size="2">Many of the credit union's members who evacuated from the storm took advantage of the glitch and withdrew more than they had in their accounts. But the vast majority repaid the money after the storm, Cerise said. </font>
		</p>
		<p>
				<font size="2">"Our faith was not misplaced," Cerise said. </font>
		</p>
		<p>
				<font size="2">Cerise said many who withdrew more than they had thanked her employees for letting them make overdrafts in the weeks after the storm. </font>
		</p>
		<p>
				<font size="2">"I don't know that I wouldn't have done the same thing in their shoes," she said. "They didn't have money for food. They didn't have money for gas." </font>
		</p>
		<p>
				<font size="2">Cerise said the credit union has moved to avoid repeating the problem by mirroring its computerized transactions at its Ville Platte branch, rather than using an outside vendor. </font>
		</p>
		<p>
				<font size="2">According to Grandpre's guilty plea, she made withdrawals and purchases totaling $14,056.21 in the Monroe, Baton Rouge and New Orleans areas between Aug. 30, 2005, and Sept. 17, 2005. She admitted to FBI agents that she knowingly overdrafted her account, Letten said. </font>
		</p>
		<p>
				<font size="2">Grandpre pleaded guilty to bank larceny and could be sentenced to up to 10 years in prison and a $250,000 fine. Sentencing is scheduled for March 6 before U.S. District Judge Jay Zainey. </font>
		</p>
		<p>
				<font size="2">Others who have pleaded guilty on similar charges, along with the amount they are accused of overdrafting, are Renesha Brown of New Orleans, $8,483; Chassity Deshone Hulbert Irving of New Orleans, $18,334; Michelle Taylor of New Orleans, $7,488; Charlotte J. Whitley of Gretna, $8,024; and her daughter, Graylyn Whitley of New Orleans, $7,943. The defendants are set to be sentenced early next year. <br /></font>
		</p>
		<p>
				<font size="2">More cases are pending, Letten said. </font>
		</p>
		<p>
				<font size="2">. . . . . . . </font>
		</p>
		<p>
				<font size="2">Matt Scallan may be reached at mscallan@timespicayune.com or (985) 652-0953. </font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/16464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-12-14 22:43 <a href="http://www.cppblog.com/MichaelLiu/articles/16464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>六款符合WOSA/XFS标准的ATMC软件</title><link>http://www.cppblog.com/MichaelLiu/articles/14662.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Sat, 04 Nov 2006 05:37:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/14662.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/14662.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/14662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/14662.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/14662.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Verdana">
						<font size="3">六款符合WOSA/XFS标准的ATMC软件<br />Michael 2006年11月4日<br /></font>
						<br />
						<u>Diebold（USA）:</u> Agilis<br /><u>Fujitsu（JAPAN）:</u> Prism<br /><u>NCR（USA）:</u> APTRA<br /><u>KAL（UK）:</u> Kalignite<br /><u>Phoenix Interactive（CANADA）:</u> VISTAatm<br /><u>Wincor-Nixdorf（GERMANY）:</u> ProTopas</font>
		</font>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/14662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-11-04 13:37 <a href="http://www.cppblog.com/MichaelLiu/articles/14662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20世纪“金钱”技术十大发明（下）</title><link>http://www.cppblog.com/MichaelLiu/articles/11753.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Sun, 27 Aug 2006 08:17:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/11753.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/11753.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/11753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/11753.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/11753.html</trackback:ping><description><![CDATA[20世纪“金钱”技术十大发明（下）<br />Michael 2006年8月27日<br /><br /><strong>6）信用卡（Credit Card）- 1950<br /></strong><br />  <font size="2">  1950年，Frank McNamara，“晚餐俱乐部”（Diners' Club）的创办者，被公认为发明了首张统一信用卡。Frank向200名顾客发行了该卡，用于在美国纽约的27家餐馆消费。1958年，美国快递公司（American Express）也发行了其统一信用卡。<br />    信用卡行业实际上在20世纪30年代就已经在美国成形，当时，一些燃油公司和连锁旅店向顾客发放信用卡，用于在他们自己的加油站和旅馆刷卡消费。<br />    二战期间，大量的资金被投入到政府的军事战争中。男人奔赴战场，使得工商业的中心向战争用品上转移。二战结束后，家庭重整，美国经济重新回到了普通客户的消费行业，因而公众又开始热衷于使用信用卡。<br />    银行信用卡，是在20世纪50年代才出现的。在当时，许多金融机构纷纷联盟组成今天我们看到的一些主要信用卡公司。1951年，纽约的弗兰克林国家银行（Franklin National Bank）发行了第一张真正的信用卡。1966年8月16日，多家银行联合组建了今天的万事达公司（MarsterCard）。<br />    1958年末，美国银行（Bank of America）发行了BankAmericard（现在的Visa卡），第一张银行信用卡。他们最初仅供销售人员出行使用。20世纪60年代早期，越来越多的公司开始发行信用卡，并在广告上声称“它不是信用的形式，而是一种节约时间的设备”。<br />    美国快递和万事达公司一夜暴富，因他们向一些不需要信用卡的人大量邮递卡片，70年代中期，美国国会不得不颁布法令制止这种行为，并对信用卡行业进行了规范整顿。<br />    今天，Visa、MasterCard和American Express已经成为了世界知名的品牌。<br /><br />    社会贡献：信用卡的出现点燃了人们的消费热情。它在人们就业，旅行等方面起着重要作用。同时，因为信用卡的钱是无形的，很多人因它而破产。<br /><br /></font><font size="2"><strong><font size="3">7）条形码（Barcode）-1952</font><br /></strong><br />    条形码最初使用于铁路系统中，用于记录每个车厢用了哪种引擎。条形码打印在车厢的边上，在地面的某个高度上安装有一个专门的系统。后来，商业界意识到了这个系统的价值，这些铁路条形码也就演变成今天我们所熟悉的统一产品标识码（UPC-Uniform Product Code）了。<br />    1932年，Wallace Flint第一个提出构建自动结算系统（Automated Checkout System）的想法，虽然他的方案经济上不可行，但是，这个方案的提出向今天的条形码迈出了重要的一步。40年后，Flint作为国家食物连锁协会（National Association of Food Chains）的副总裁，力挺这种自动结算系统的开发研究，于是产生了UPC。<br />    20世纪40年代末期，超市业向费城的Drexel理工学院请求开发一套柜台结算自动化的方案。当时，柜员需要花费大量的时间在给客户结算上，而且在录入货品数据的时候经常出现错误。院长拒绝了这个项目，但是一位机械工程专业的讲师（Instructor）Norman Joseph Woodland和他的朋友Bernard Bob Silver两人接收了这个项目，1952年，他们一起获得了专利。<br />    后来，Joseph Woodland入职IBM公司，他利用自己的发明开始开发自动化的结算柜台。1959年成功开发出了原型，但是一系列行性研究报告使他决定暂停这个项目。后来Philco公司从Woodland和Silver那购买了这项专利，此后不久，Philco公司又把专利转卖给了RCA公司。RCA的Francis Beck制造了一个自动化结算柜台并获得专利。<br />    1972年7月，俄亥俄州Kenwood城的Kroger's成为第一家完全自动化的超市。1973年，Beck的一个自动化结算柜台原型被陈列在Smithsonian的美国历史国家博物馆。<br />    1974年6月26日，一个巨大的Wrigley's Spearmint口香糖连同今天的UPC码成为第一个被扫描的商品，标志着条形码世界的开始。<br />    <br />    社会贡献：条形码衍生出了数据挖掘领域，人们可以通过数据挖掘技术预知产品的流通和销售信息。这些信息可以帮忙发掘人们需要的产品，从而减少库存成本，深入理解供应链，购买模式以及大量的其它特性。<br /><br /><strong><font size="3">8）智能卡（Smart Card）－1974<br /></font></strong><br />    微芯之父Roland Moreno，1974年3月获得了智能卡的第一项专利。多年后智能卡首次发行，但是反应平平。这些刚发行的卡非常先进但是造价相当昂贵。<br />    1978年电子元件的体积大大缩小，使得大规模生产通用智能卡成为可能。自那以后，需求不断上升，现在我们几乎可以在世界上每一个角落看到智能卡。<br />    <br />    社会贡献： 智能卡允许存储更多复杂的信息，包括资金可从中心转移到卡上<br />（Movement of currency from the center(credit card centralized network) to the edges(stored value on the card)）。虽然智能卡的应用领域涉及多个方面，但是它带来的真正的社会变革还有待察觉，因为越来越多的交易信息将会被直接存储在智能卡里。<br /><br /><font size="3"><strong>9）电子数据表（Spreadsheet）－1978<br /></strong></font><br />    会计表单已经存在数世纪，但是Dan Bricklin的电子数据表不仅使会计业发生了变革，而且成为了个人电脑的首个杀手锏应用。<br />    1961年，加州大学伯克力分校（UC Berkeley）教授Richard Mattessich在1961年7月刊的《The Accounting Review》上发表论文“预算模型和系统模拟”（Budgeting Models and System Simulation），以及随后的两本著作《会计和分析方法》（Accounting and Analytical Methods）、《企业通过计算机预算程序的模拟》（Simualtion of the Firm Through a Budget Computer Program）首次提出了开发电子化表单的想法。在那两本著作中，还给出了由Mattessich教授的两位助理研究员采用FORTRAN IV语言编写的计算机程序模拟，他们分别是Tom C.Schneider和 Paul A. Zitlau.<br />    然而，Mattessich的工作并没有带来很大的影响。随后，Bricklin继续推进，开发了电子数据表单领域的第一个可用产品，他因此成为了电子数据表单之父。<br />    当时Dan Bricklin正在为哈佛商学院（Harvard Business School）的“案例分析”（Case Study）报告准备一份数据表单分析，他要么只能手动制作一个，要么使用一个极难用的时间共享的主机程序。Bricklin认为一定存在更好的办法来制作表单，他希望有这么一个程序：人们可以看到创建表单的全过程。他的想法意味着“在教室里存在一只电子黑板和电子粉笔”（an electronic blackboard and electronic chalk in a classroom）。<br />    1978年秋，Bricklin已经用整数BASIC(Interger Basic）语言编写出了他概念中的第一个原型程序。这个程序帮助用户输入和操作一个20行5列的矩阵。第一个版本功能比较简单，所以Bricklin找来在麻省理工大学（MIT）的熟人Bob Frankston改善和扩充这个程序的功能。<br />    VisiCalc产品从诞生到推出市场，总共卖出了约1百万套电子数据表单程序。<br />    20世纪80年代早期，电子数据表单的市场迅速发展，但VisiCalc的股东对采用Intel芯片的IBM PC电脑的出现反应不够灵敏。1983年9月始，VisiCorp和Software Arts公司的法律纠纷使VisiCalc开发者Bricklin和Frankston的注意力转移，这段时间，Mitch Kapor开发了Lotus，其电子数据表单程序迅速成为了电子表单行业新标准。<br />    紧接着的下一个时代随着微软Excel表单的出现而开始。1987年微软启动Windows操作系统，Excel是随之一起发布的应用软件之一。1989年末，Windows 3.0获得用户的大量认可，此时，Excel已经成为了微软的旗舰产品。<br /><br />    社会贡献： 现在个人和企业都可以做复杂得多的财务规划、研究和场景开发（development of scenarios）工作。数字可以用方程来表示，这样表单中的信息可以随着一个值的改变而全部更新。<br /><br /><font size="3"><strong>10）RSA加密 － 1983</strong></font><br /><br />    RSA密钥最大的贡献在于它允许在多用户的环境下加减密，换句话说，加密数据方和解密数据方不需要直接的参与交互。<br />    RSA算法于1976-1977年在美国麻省理工学院的计算机科学实验室由Ronald Rivest ，Adi  Shamir 和Len  Adelman三人发明，“RSA”一词源自每人的名字首字母。<br />    他们三人发明RSA算法前受到了Whitfield Diffie和Martin Hellman在斯坦福大学的工作的启发，Diffie和Hellman两人都曾一直在研究探索多用户的加密技术。<br />    Rivest有一次在长椅上接受头痛治疗时冒出这么一个构建RSA系统的想法，它基于这样一个思路：把两个大质数相乘很容易得到一个更大的数，但是从一个大数却很难找到它的最小因子。密文通讯依赖于通讯双方分别持有一公钥和一私钥。只要从某方处获得公钥，那么就有可能在约定的算法下和对方交换秘文信息。<br />    在RSA三人演示他们的系统之前，Rivest得到一位来自国家安全部（National Security Administration）工作人员的联系，并被警告如果他在即将召开的会议上演示这个加密算法，他可能面临触犯1954军事管理行为条例（1954 Munitins Control Act）的危险。这个条例规定任何人不得对外出授密钥知识，因为在即将举行的会议上将有许多外籍人士参加，他很可能将会泄露被禁止出授的加密技术。MIT出面和NSA进行干涉并解决了该问题，后来NSA解释道那位工作人员的行为并不代表安全部，而仅属个人行径。<br />    MIT决定对这个算法申请专利，但因为在递交申请之前它已经被公开过，所以无法获得批准（it couldn't get foreign rights to it）。1983年9月20日，MIT获得了专利，并特许RSA Security公司使用。<br />    <br />    社会贡献： 加密是在公共信息网（包括因特网）上进行私人信息交换的必须手段。个人权利和政府职能之间的斗争将决定于多少交换信息是在政府允许的管辖范围之内。<br /><br /><font size="3"><strong>结论</strong></font><br />    <br />    也许进行这项10大技术研究最具意义的部分在于探究一种新技术从开发到被大众市场接受所需要的时间。比如ATM，它经历了50多年。我们对没有映入众人眼帘的技术常感到好奇，他们在可以真正获得市场的馈赠前就匆匆离开了我们的视线。<br /><br />    还有一些新技术正在“金钱”世界里开拓前行，微支付技术（Micropayment technologies），预付信用卡（Prepaid credit cards），移动支付系统（Mobile payment system）以及生物识别技术（Biometrics）都是充满希望的行业。公共政策(public policy decisions)，经济环境(General economic conditions)，资金储备(financial backing)，果断决策(sheer determination)以及初始团队的组织，将是我们前行道路上影响输赢的主要因素。<br /><br /><strong><font size="3">[全文完]</font></strong><br /></font><img src ="http://www.cppblog.com/MichaelLiu/aggbug/11753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-08-27 16:17 <a href="http://www.cppblog.com/MichaelLiu/articles/11753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20世纪“金钱”技术十大发明（上）</title><link>http://www.cppblog.com/MichaelLiu/articles/11592.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Tue, 22 Aug 2006 16:45:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/11592.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/11592.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/11592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/11592.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/11592.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<font size="3">20世纪“金钱”技术十大发明</font>
						<br />注：本文在Thomas Frey, Executive Director of the DaVinci Institute的文章基础上整理编写。</font>
				<font size="2">
						<br />Michael 2006年8月23日</font>
		</p>
		<p>
				<font size="2">达芬奇学院的研究小组耗时六月搜集整理了近百项在金钱领域的创新技术，并由学</font>
				<font size="2">院成员及专家按照影响力的大小对每项技术进行了评分。一些技术发明如售货机</font>
				<font size="2">（VENDING MACHINE)，旅行支票(TRAVELERS CHEQUES)，和SLOT MACHINES因为发明</font>
				<font size="2">于19世纪而没有被选进来。我们的目标将主要集中在上世纪的创新技术。有些产生</font>
				<font size="2">于20世纪90年代的技术因为其影响没有以下这些那么大而没有在名单之列。<br />以下是十大技术：<br /><strong>1）电子现金收入记录机（ELECTRONIC CASH REGISTER）－ 1906</strong></font>
				<strong>
				</strong>
		</p>
		<p>
				<font size="2">美国发明家Charles Franklin Kettering(1876-1958)于1906年发明了世界上第一台ECR，</font>
				<font size="2">他1904年毕业于美国俄亥俄州州立大学，工程专业。他一生贡献显著，获得过140多</font>
				<font size="2">项专利技术并享有近30所大学的荣誉博士头衔。先后任职于NCR, DELCO, GM。</font>
		</p>
		<p>
				<font size="2">社会贡献：ECR的出现为后来的交易数据收集与分析铺平了道路，并随之产生了现在</font>
				<font size="2">的预分析模型（Predictive Modeling）和存货控制。</font>
		</p>
		<p>
				<font size="2">
						<strong>2）电子货币 － 1918</strong>
				</font>
		</p>
		<p>
				<font size="2">1918年美联储银行(Federal Reserve Banks)通过电报的形式转移资金，这是电子货币</font>
				<font size="2">的第一次出现。然而，电子货币的广泛使用直到1972年美联储设立自动清算中心（A</font>
				<font size="2">CH-Automated Clearing House）后才开始，这个清算中心用于给美国财政部及商业银</font>
				<font size="2">行提供电子形式的支票处理。紧接着类似的系统在欧洲也逐渐出现，因此电子货币</font>
				<font size="2">的广泛使用实际上已经持续了20多年。</font>
		</p>
		<p>
				<font size="2">社会贡献：<br />    今天，世界上所有银行系统的货币支付几乎都是通过一系列的跨行网络进行电子</font>
				<font size="2">处理。其中，纽约清算中心运行操作的CHIPS(Clearing House Interbank Payments </font>
				<font size="2">System)就是最大的网络之一，它主要处理巨额资金的转帐。1994年CHIPS和Fedwir</font>
				<font size="2">e（美联储网络系统）联合处理了11750万笔交易，总价值5066千亿美金。<br />    虽然银行已经采用电子货币转帐有20多年，但是直到最近，它才真正意义上地被</font>
				<font size="2">普通消费者使用起来。计算机功能的日益强大和成本的缩减，以及使全球交互成本</font>
				<font size="2">大大降低的现代网络通讯技术的发展，这些因素已经使得全球数百万的个人用户进</font>
				<font size="2">行电子货币转帐成为现实。因此，电子货币的出现让我们见证了数字经济发展的早</font>
				<font size="2">期阶段。</font>
		</p>
		<p>
				<font size="2">
						<strong>3）第一辆运钞车－1920</strong>
				</font>
		</p>
		<p>
				<font size="2">    有些人认为达芬奇(Leonardo da Vinci)发明了装甲车，实际上不是。今天的装甲车</font>
				<font size="2">需要追踪到1920年美国明尼苏达州圣保罗的第一辆商用装甲车的出现。</font>
		</p>
		<p>
				<font size="2">    社会贡献：运钞车的出现使得巨额现金的运送更快更安全，银行不需要手握大量</font>
				<font size="2">现金而进行转送。</font>
		</p>
		<p>
				<font size="2">
						<strong>4）信用机构－1937<br /></strong>    <br />    19世纪30年代，商人Lewis Tappan在曼哈顿为他哥哥的丝绸批发生意做客户信用的</font>
				<font size="2">评定，并利用处理生成的大量信用记录做为他们开展业务的方针。Tappan意识到他</font>
				<font size="2">们做批发生意时需要信用记录这一点将会延伸到其他需要信息的供应商上。通过专</font>
				<font size="2">门处理这些信用信息并提供给其他供应商，Tappan认识到了经济学家门所称的“规模</font>
				<font size="2">经济”，并帮忙创立了美国信用报告业务（Business of credit reporting）。Tappan和全</font>
				<font size="2">国的代理及通讯社签订合同，开辟专栏讨论当地企业的特点、运行状况以及未来前</font>
				<font size="2">景。他创立了一个信息中心可快速地提供信息咨询。Tappan的信息中心后来成为众</font>
				<font size="2">所周知的R.G.Dun&amp;Co.公司，1933年和Bradstreet公司合并成立了Dun&amp;Bradstreet，现在</font>
				<font size="2">已经占据了商业信用报告领域业务。<br />    <br />    社会贡献：今天在美国有三大信用报告系统－Equifax, Experian, Trans Union，每个</font>
				<font size="2">系统拥有大量的小型的附属信用机构。1998年ACB(Associated Credit Bureau)在整个美</font>
				<font size="2">国拥有591个成员机构，每年出售6亿份信用报告。</font>
		</p>
		<p>
				<font size="2">
						<strong>5）自动柜员机（ATM-Automatic Teller Machine）－1939</strong>
				</font>
		</p>
		<p>
				<font size="2">    Luther George Simjian（1905－1997），发明家，出生于土耳其，1920年移居美国</font>
				<font size="2">。1939年他制造了世界上第一台ATM，但是ATM发明者的头衔并不属于他。<br />    1939年Simjian制造出第一台ATM，获得了20项相关专利（很多在今天的ATM中仍旧</font>
				<font size="2">使用），当时很多银行对这种机器持怀疑态度，最终Simjian说服了现在的花旗银行（</font>
				<font size="2">CitiBank）并同意试用6个月。但是，银行最终并没有接受这种机器，因为需求不足。</font>
				<font size="2">当时Simjian写道，“看来使用这种机器的人只是一小部分的妓女和赌徒，因为他们不</font>
				<font size="2">想接受柜台服务员当面的服务”。Simjian因而不再对它进行进一步的研究和推销。<br />    1968年，Donald Wetzel，当时Docutel公司产品规划部的副总裁，在达拉斯一家银行排</font>
				<font size="2">队等候服务的时候，萌生了制造ATM机器的想法。Docutel的首席机械工程师Tom </font>
				<font size="2">Barnes和电子工程师George Chastain，和Donal Wetzel一起花费500万美金开始开发第</font>
				<font size="2">一台现代意义上的ATM，并于1969年产生雏形。1973年Docutel公司获得一项专利。<br />    第一台ATM在美国纽约的化工银行（Chemical Bank）安装使用。它离线工作，对</font>
				<font size="2">使用客户的信用要求较高。<br />    Wetzel，Barnes，Chastain三人开发了第一张真正的ATM卡，持卡人根据卡中的磁道数据</font>
				<font size="2">和个人密码从ATM获取现金。这三人共同发明了ATM而被铭记史册。</font>
		</p>
		<p>
				<font size="2">    社会贡献：如今ATM被安装在银行和服务场所每个角落，给客户提供了快捷方便</font>
				<font size="2">的现金及各种其他服务。</font>
				<font size="2">
				</font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/11592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-08-23 00:45 <a href="http://www.cppblog.com/MichaelLiu/articles/11592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在ATM上实现EMV交易</title><link>http://www.cppblog.com/MichaelLiu/articles/11042.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Wed, 09 Aug 2006 05:39:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/11042.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/11042.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/11042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/11042.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/11042.html</trackback:ping><description><![CDATA[
		<strong>如何在ATM上实现EMV交易<br />Michael 2006年8月9日<br /><br /></strong>
		<font size="2">即将推出。</font>
		<br />
		<font size="2">
				<br />
				<br />因近日工作繁忙,将于他日闲暇时间再写.(2006-10)</font>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/11042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-08-09 13:39 <a href="http://www.cppblog.com/MichaelLiu/articles/11042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之十一 Completion</title><link>http://www.cppblog.com/MichaelLiu/articles/10422.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Mon, 24 Jul 2006 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10422.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10422.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10422.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10422.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之十一 Completion<br />Michael 2006年7月24日<br /></strong>
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img id="Codehighlighter1_0_346_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_346_Open_Text.style.display='none'; Codehighlighter1_0_346_Closed_Image.style.display='inline'; Codehighlighter1_0_346_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_346_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_346_Closed_Text.style.display='none'; Codehighlighter1_0_346_Open_Image.style.display='inline'; Codehighlighter1_0_346_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_346_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_346_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">----------------------------------------------------------------<br /></span>
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：Completion<br /></span>
						<span style="COLOR: #008080">3</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span>
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        无。<br /></span>
						<span style="COLOR: #008080">5</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span>
						<span style="COLOR: #008080">6</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        这是EMV交易的终点站。<br /></span>
						<span style="COLOR: #008080">7</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ICC卡返回TC(Transaction Certificate，当响应第一次GENERATE AC命令)或者AAC(Application Authentication Cryptogram，当响应第二次GENERATE AC命令)给终端预示ICC对所有EMV函数的执行结束（即授权或者拒绝交易）。<br /></span>
						<span style="COLOR: #008080">8</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span>
						<span style="COLOR: #008000">*/</span>
				</span>
		</div>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/10422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-24 21:44 <a href="http://www.cppblog.com/MichaelLiu/articles/10422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之十 Issuer-to-Card Script Processing</title><link>http://www.cppblog.com/MichaelLiu/articles/10421.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Mon, 24 Jul 2006 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10421.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10421.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10421.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10421.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之十 Issuer-to-Card Script Processing<br />Michael 2006年7月24日<br /><br /></strong>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img id="Codehighlighter1_0_835_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_835_Open_Text.style.display='none'; Codehighlighter1_0_835_Closed_Image.style.display='inline'; Codehighlighter1_0_835_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_835_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_835_Closed_Text.style.display='none'; Codehighlighter1_0_835_Open_Image.style.display='inline'; Codehighlighter1_0_835_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span>/**/<span>/*----------------------------------------------------------------<br /></span><span> 2<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：Issuer-to-Card Script Processing<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Authorization Response Message（包含Issuer Script - Tag'71' or '72'）<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR(Terminal Verification Result)<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        这是发卡行(ICC)和发卡行自身(主机)之间的又一次对话。<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        主机可以在发给终端的交易响应包中包含一些特殊命令的脚本<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />（比如unblocking of an offline PIN命令，对于不同的发卡行命令迥异所以由发卡行直接发送）供ICC执行，终端只要将这些命令转发给ICC即可。<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        具体地，终端接收到主机的交易响应包后取出ICC执行脚本(Issuer Script-Tag'71' or '72'， 每个响应包中可能包含多个执行脚本)，终端对每个执行脚本进行解析得到该脚本的ICC命令序列(Tag-'86')，然后逐一按序给ICC发送ICC命令，如果ICC执行该命令失败则该脚本的后续命令不再执行，脚本执行结束；如果该命令执行成功则继续执行后续解析出来的命令，直到所有命令执行成功后该脚本的执行成功完成。<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        只要脚本被执行则设置TSI的"Script processing was performed"为1，若执行失败则设置TVR的相应位为1（对Tag'71'和'72'的脚本设置的TVR位不同）。<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span>
		</div>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/10421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-24 21:43 <a href="http://www.cppblog.com/MichaelLiu/articles/10421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之九 Online Processing</title><link>http://www.cppblog.com/MichaelLiu/articles/10420.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Mon, 24 Jul 2006 13:41:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10420.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10420.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10420.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10420.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之九 Online Processing<br />Michael 2006年7月24日<br /></strong>
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img id="Codehighlighter1_0_765_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_765_Open_Text.style.display='none'; Codehighlighter1_0_765_Closed_Image.style.display='inline'; Codehighlighter1_0_765_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_765_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_765_Closed_Text.style.display='none'; Codehighlighter1_0_765_Open_Image.style.display='inline'; Codehighlighter1_0_765_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_765_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_765_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">----------------------------------------------------------------<br /></span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：Online Processing<br /></span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] ARQC(Authorization Request Cryptogram)<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AIP(Application Interchange Profile)<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR(Terminal Verification Result)<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TSI(Transaction Status Information)<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        这是发卡行(ICC)和发卡行自身(主机)之间的一次对话。<br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        当终端收到ICC的ARQC决策时需要进行在线授权。<br /></span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        具体地，ARQC（用发卡行的密钥对交易数据进行运算得到的一段代码）被包含在交易请求包中发送给主机，主机进行授权确认后返回交易响应包。<br /></span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果交易响应包中包含IAD(Issuer Authentication Data - tag'91')，终端检查AIP值看ICC是否支持IA(Issuer Authentication)，如果支持则终端给ICC发送EXTERNAL AUTHENTICATE命令（一次交易只能发一次），根据ICC返回的命令执行结果设置TVR相应位。若终端不支持IA或交易响应包没有IAD数据，则不发送任何命令。<br /></span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        若EXTERNAL AUTHENTICATIE命令有被发送，则设置TSI的相应位为1。<br /></span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span>
						<span style="COLOR: #008000">*/</span>
				</span>
		</div>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/10420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-24 21:41 <a href="http://www.cppblog.com/MichaelLiu/articles/10420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之八 Card Action Analysis</title><link>http://www.cppblog.com/MichaelLiu/articles/10312.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 21 Jul 2006 07:11:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10312.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10312.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10312.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10312.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之八 Card Action Analysis</strong>
		<br />Michael 2006年7月21日<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_555_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_555_Open_Text.style.display='none'; Codehighlighter1_0_555_Closed_Image.style.display='inline'; Codehighlighter1_0_555_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_555_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_555_Closed_Text.style.display='none'; Codehighlighter1_0_555_Open_Image.style.display='inline'; Codehighlighter1_0_555_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_555_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_555_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：Card Action Analysis（卡行为决策）<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] GENERATE AC Command<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] CDOL(Card Risk Management Data Object List)<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AIP(Application Interchange Profile)<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] GENERATE AC Response<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        卡行为决策，即对终端发下来的GENERATE AC命令进行处理并做出响应（离线拒绝，在线授权，在线'冲正'还是离线授权），以对发卡行的风险进行管理。不同于终端行为(Terminal Action Analysis)的查表决策，发卡行如何处理AC命令及做何种响应完全由发卡行自身决定，EMV并无规定。<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span></div><img src ="http://www.cppblog.com/MichaelLiu/aggbug/10312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-21 15:11 <a href="http://www.cppblog.com/MichaelLiu/articles/10312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之七 Terminal Action Analysis</title><link>http://www.cppblog.com/MichaelLiu/articles/10310.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 21 Jul 2006 07:04:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10310.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10310.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10310.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10310.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之七 Terminal Action Analysis</strong>
		<br />Michael 2006年7月21日<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_1331_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_1331_Open_Text.style.display='none'; Codehighlighter1_0_1331_Closed_Image.style.display='inline'; Codehighlighter1_0_1331_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_1331_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_1331_Closed_Text.style.display='none'; Codehighlighter1_0_1331_Open_Image.style.display='inline'; Codehighlighter1_0_1331_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_1331_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_1331_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：Terminal Action Analysis（终端行为决策）<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TVR(Terminal Verification Result)<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] IAC(Issuer Action Codes)，和TVR完全一样的数据结构，记录了针对TVR中每位结果应采取的决策包括离线授权，离线拒绝或在线授权。IAC包括:<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Issuer Action Code - Denial (Tag '9F0E'), 默认值为全0<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Issuer Action Code - Online (Tag '9F0F'), 默认值为全1<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Issuer Action Code - Default(Tag '9F0D'), 默认值为全1<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IAC-Denial指定TVR中哪些结果位为1时需要离线拒绝。<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IAC-Online指定TVR中哪些结果位为1时需要在线授权。<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        IAC-Default指定当要求在线授权但是终端没办法在线的情况下TVR中哪些结果位为1时需要离线拒绝。对为0的结果位则离线授权。如果终端可以在线交易则IAC-Default不被执行。<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TAC(Terminal Action Codes)，或者称作AAC(Acquirer Action Codes)，和TVR完全一样的数据结构，包括:<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Terminal Action Code - Denial, <br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Terminal Action Code - Online,<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              Terminal Action Code - Default<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        TAC和IAC完全一样的意义，在进行行为决策的时候需要综合考虑IAC和TAC，只要其中某一个的相应位要求做出某种行为则需要执行该行为。比如，当TVR中某位为1时IAC要求Denial（离线拒绝），但是TAC没有要求Denial，那么结果是需要离线拒绝。<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] GENERATE AC Command<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        终端行为决策，就是根据TVR结果查找IAC和TAC表来决定向ICC发送GENERATE AC命令时需要请求AAC, ARQC还是TC，即离线拒绝，在线授权还是离线授权。<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        向ICC发送GENERATE AC命令后，ICC本身还要做出行为决策（Card Action Analysis），以最终确定该交易是离线拒绝/在线授权/离线授权。<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        行为决策的顺序是从IAC/TAC-Denial, IAC/TAC-Online到IAC/TAC-Default。<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span></div><img src ="http://www.cppblog.com/MichaelLiu/aggbug/10310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-21 15:04 <a href="http://www.cppblog.com/MichaelLiu/articles/10310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之六 Terminal Risk Management</title><link>http://www.cppblog.com/MichaelLiu/articles/10256.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 20 Jul 2006 10:09:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10256.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10256.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10256.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之六 Terminal Risk Management<br /></strong>Michael 2006年7月20日<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_1572_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_1572_Open_Text.style.display='none'; Codehighlighter1_0_1572_Closed_Image.style.display='inline'; Codehighlighter1_0_1572_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_1572_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_1572_Closed_Text.style.display='none'; Codehighlighter1_0_1572_Open_Image.style.display='inline'; Codehighlighter1_0_1572_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_1572_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_1572_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：TerminalRiskManagement<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AIP(Application Interchange Profile)<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Terminal LOG<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            用于获得本次交易帐号的最近一次交易金额<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TFL(Terminal Floor Limit - Tag '9F1B')<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TPURS(Target Percentage to be Used for Random Selection - 终端数据)<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TVBRS(Threshold Value for Biased Random Selection - 终端数据)<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] MTPUBRS(Maximum Target Percentage to be Used for Biased Random Selection - 终端数据)<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] LCOL(Lower Consecutive Offline Limit - tag '9F14')<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] UCOL(Upper Consecutive Offline Limit - tag '9F23')<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] ATC(Application Transaction Counter - tag '9F36')<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] LOAR(Last Online ATC Register - tag '9F13')<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR(Terminal Verification Result)<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        包括：<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [金额上限检验(Floor Limit checking)] 判断本次交易金额和上次交易金额的总和是否超过终端交易金额上限(Terminal Floor Limit)，设置TVR相应位。<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [在线交易判断(Random Transaction Selection)] 对于交易金额小于TVBRS的情况，终端需要产生一个1－99的随机数，如果该随机数小于等于TPURS则该交易需要在线验证。对于金额大于等于TVBRS但小于TFL的交易，终端需要比较产生的随机数和TTP(Transaction Target Percent)，如果随机数小于等于TTP，则交易需要在线验证。其中，TTP=( (MTPUBRS-TPURS) * ((Amount,Authorised-TVBRS)/(TFL-TVBRS)) )+TPURS。若需要在线验证则设置TVR的相应位为1。<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [交易周期校验(Velocity Checking)] 发送GET DATA命令读取ATC和Last Online ATC Register，若读取失败则校验结束并置TVR相应位。若读取成功则两值相减的结果同LCOL比较，若结果大于LCOL则该交易需要在线授权。若终端当时无法在线交易则可以继续离线交易的上限为UCOL，当UCOL次数达到时必须进行在线授权，否则交易应当被拒绝。若LOAR为0则要设置TVR的“新卡”位为1。<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        TRM执行完后置TVR和TSI相应位。<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><img src ="http://www.cppblog.com/MichaelLiu/aggbug/10256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-20 18:09 <a href="http://www.cppblog.com/MichaelLiu/articles/10256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之五 Cardholder Verification</title><link>http://www.cppblog.com/MichaelLiu/articles/10255.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 20 Jul 2006 10:05:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/10255.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/10255.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/10255.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/10255.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/10255.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之五 Cardholder Verification<br /></strong>Michael 2006年7月20日<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_842_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_842_Open_Text.style.display='none'; Codehighlighter1_0_842_Closed_Image.style.display='inline'; Codehighlighter1_0_842_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_842_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_842_Closed_Text.style.display='none'; Codehighlighter1_0_842_Open_Image.style.display='inline'; Codehighlighter1_0_842_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_842_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_842_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：CardholderVerification<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AIP(Application Interchange Profile)<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] CVM List(Tag '8E')<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />              包括两个4-BYTE的AMOUNT FIELDs和数个2-BYTE的CVRs(Cardholder Verification Rule)，每个CVR包括两个字节，分别是CVM(Cardholder Verification Method，表示身份验证的可选方法) Codes和CVM Condition Codes(表示进行身份验证的条件)。<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR(Terminal Verification Result)<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        终端判断CVR列表的第一个CVM Condition是否满足，如果满足则采用对应的CVM进行验证。如果验证成功则CV过程结束，否则需要检查该CVM Code的第7位，以决定是否需要读取第二个CVR元素继续验证。<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果第一个CVR的Condition不满足，或者该条件不被终端理解，则需要读取下一个CVR继续验证。<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        当其中只要有一个CVR验证成功，则CV成功结束，若所有验证都失败则CV失败。CV结果在TVR相应位中作设置。<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        几个典型的CVM方法有：Offline PIN, Online PIN, Signature, Combination CVMs.<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span></div><img src ="http://www.cppblog.com/MichaelLiu/aggbug/10255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-20 18:05 <a href="http://www.cppblog.com/MichaelLiu/articles/10255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之四 Processing Restrictions</title><link>http://www.cppblog.com/MichaelLiu/articles/9858.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 14 Jul 2006 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9858.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9858.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9858.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9858.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之四 Processing Restrictions<br />Michael 2006年7月14日</strong>
		<br />
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img id="Codehighlighter1_0_637_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_637_Open_Text.style.display='none'; Codehighlighter1_0_637_Closed_Image.style.display='inline'; Codehighlighter1_0_637_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_637_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_637_Closed_Text.style.display='none'; Codehighlighter1_0_637_Open_Image.style.display='inline'; Codehighlighter1_0_637_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_637_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_637_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">----------------------------------------------------------------<br /></span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：ProcessingRestrictions<br /></span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] TERMINAL和ICC上的AVN(Application Version Number)<br /></span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AUC(Application Usage Control)<br /></span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Issuer Country Code<br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Terminal Country Code<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Application Effective Date<br /></span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] Application Expiration Date<br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR<br /></span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        包括：<br /></span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [应用版本判断] 比较TERMINAL和ICC的AVN，设置TVR相应位。<br /></span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [ICC地域判断] 根据交易类型，比较Issuer Country Code和Terminal Country <br /></span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />Code，依据比较结果和AUC的相应位匹配与否，设置TVR相应位。<br /></span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [有效期判断] 判断当前交易日期是否在有效期内，设置TVR相应位。<br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #008000">
								<img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />----------------------------------------------------------------</span>
						<span style="COLOR: #008000">*/</span>
				</span>
		</div>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/9858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-14 17:02 <a href="http://www.cppblog.com/MichaelLiu/articles/9858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之三 Offline Data Authentication</title><link>http://www.cppblog.com/MichaelLiu/articles/9856.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 14 Jul 2006 08:57:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9856.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9856.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9856.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9856.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之三 Offline Data Authentication<br /></strong>Michael 2006年7月14日<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_1_776_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1_776_Open_Text.style.display='none'; Codehighlighter1_1_776_Closed_Image.style.display='inline'; Codehighlighter1_1_776_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1_776_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1_776_Closed_Text.style.display='none'; Codehighlighter1_1_776_Open_Image.style.display='inline'; Codehighlighter1_1_776_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_1_776_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_1_776_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------------------------------<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />名称：OfflineDataAuthentication(ODA)<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />参数：<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AIP(Application Interchange Profile)<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AFL(Application File Locator)<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] AFL中指定的记录数据<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [IN] SDA Tag List(tag '9F4A')<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        [OUT] TVR(Terminal Verification Results)<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />       [OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />处理：<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        终端从AIP数据判断执行哪种类型的ODA。<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果ICC和TERMINAL都支持CDDA/ACG(Combined Dynamic Data Authentication/Application Cryptogram Generation)，则终端需要执行CDDA/ACG。<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果终端不执行CDDA/ACG，此时，若ICC和TERMINAL都支持OFFLINE DDA，则终端执行OFFLINE DDA。<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果终端不执行OFFLINE DDA，此时，若ICC和TERMINAL都只持OFFLINE SDA，则终端执行OFFLINE SDA。<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        如果以上三种ODA都不执行则设置TVR的“ODA未执行”标志为1。<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />----------------------------------------------------------------</span><span style="COLOR: #008000">*/</span></span></div><img src ="http://www.cppblog.com/MichaelLiu/aggbug/9856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-14 16:57 <a href="http://www.cppblog.com/MichaelLiu/articles/9856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之二 Read Application Data</title><link>http://www.cppblog.com/MichaelLiu/articles/9545.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 07 Jul 2006 07:39:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9545.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9545.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9545.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9545.html</trackback:ping><description><![CDATA[
		<font size="2">
				<strong>
						<font size="3">EMV交易过程解析之二 Read Application Data</font>
				</strong>
				<br />Michael 2006年7月7日<br /><br />这个过程用来遍历ICC中的文件/记录/TLV对象，并保存在终端上。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_449_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_449_Open_Text.style.display='none'; Codehighlighter1_0_449_Closed_Image.style.display='inline'; Codehighlighter1_0_449_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_449_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_449_Closed_Text.style.display='none'; Codehighlighter1_0_449_Open_Image.style.display='inline'; Codehighlighter1_0_449_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_449_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_449_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数名称：ReadApplicationData<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [IN] AFL(Application File Locator),AFL结构如下：<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    struct tAFLElement {<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BYTE nSFI; <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BYTE nFirstRecordNo;   //the first (or only) record number to be read for that SFI.<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BYTE nLastRecordNo;   //the last record number to be read for that SFI.<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    BYTE nRecordNumToOfflineDataAuthentication;   //the number of records involved in offline data<br />                                                                                        //authentication starting with the record number coded in the second byte.<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    }* pAFLList;  <br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [OUT] DATA OBJECTS<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [OUT] SW1 SW2(9000-success, others-fail)<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数处理：<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />  终端给ICC发送READ RECORD命令。读取AFL指定的文件里的记录内容并返回数据供终端保存及使用。<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------</span><span style="COLOR: #008000">*/</span></span></span></div></font>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/9545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-07 15:39 <a href="http://www.cppblog.com/MichaelLiu/articles/9545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMV交易过程解析之一 Initiate Application</title><link>http://www.cppblog.com/MichaelLiu/articles/9540.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Fri, 07 Jul 2006 06:28:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9540.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9540.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9540.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9540.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9540.html</trackback:ping><description><![CDATA[
		<strong>EMV交易过程解析之一 Initiate Application</strong>
		<br />Michael 2006年7月7日<br /><br /><font size="2">EMV标准定义了十一个过程，这些过程主要通过交易数据的认证、持卡人身份验证以及风险管理等来实现交易的安全，接下来我们将对这些过程逐一进行剖析，从而明白，为什么EMV交易是安全的。<br />我将把每个过程喻作一个函数，采用函数的语法进行解析。<br /><br />初始化应用（Initiate Application）是持卡人进行应用选择后的第一个过程。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080"> 1</span><img id="Codehighlighter1_0_540_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_540_Open_Text.style.display='none'; Codehighlighter1_0_540_Closed_Image.style.display='inline'; Codehighlighter1_0_540_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_540_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_540_Closed_Text.style.display='none'; Codehighlighter1_0_540_Open_Image.style.display='inline'; Codehighlighter1_0_540_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_540_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_540_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">----------------------------------------<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数名称：InitiateApplication<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数参数：<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [IN,OUT] TSI(Transaction Status Information)<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [IN,OUT] TVR(Terminal Verification Results)<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [IN] PDOL(Processing Options Data Object List)-extracted from the FCI of the ADF <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [IN] Data specified in PDOL<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [OUT] AIP(Application Interchange Profile)<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [OUT] AFL(Application File Locator)<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    [OUT] SW1 SW2(9000-success, 6985-conditions of use not satisfied, others)<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />函数处理：<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    终端给ICC发送GET PROCESSING OPTIONS命令。<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />-----------------------------------------</span><span style="COLOR: #008000">*/</span></span></span></div><br /></font><img src ="http://www.cppblog.com/MichaelLiu/aggbug/9540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-07 14:28 <a href="http://www.cppblog.com/MichaelLiu/articles/9540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是AC(Application Cryptogram)</title><link>http://www.cppblog.com/MichaelLiu/articles/9507.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 06 Jul 2006 13:05:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9507.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9507.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9507.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9507.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9507.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<font size="3">
								<strong>什么是AC(Application Cryptogram)?<br /></strong>
						</font>Michael 2006年7月6日<br /><br />我们从前面了解到，目前终端和ICC之间有13个命令交互，其中有一个很关键的命令叫GENERATE AC，那么，什么是AC，它又是用来做什么的？<br />简单地说，AC是一个<strong>ICC产生的交易代码</strong>，GENERATE AC是一个<strong>ICC做交易决策</strong>的过程。也就是说，终端执行每次交易时，都要发送该命令给ICC进行交易决策（比如拒绝交易还是要求联机授权），来决定该笔交易接受与否以及如何接受。<br />终端在发送GENERATE AC之前，自己首先有个<strong>终端行为分析</strong>的过程，分析的结果是决定需要向ICC发送什么样的AC请求：联机授权（ONLINE）、脱机拒绝（REJECT OFFLINE）还是脱机授权(APPROVE OFFLINE)。ICC在接收命令并处理后返回其决策结果即AC值。<br />针对终端的不同请求，相应地，AC有以下几种类型：<br /><strong>类型                                                                                                   意义</strong><br />Application Authentication Cryptogram (AAC)                  拒绝交易<br />Application Authorisation Referral(AAR)                             Referral requested by the card<br />Authorisation Request Cryptogram(ARQC)                          要求联机授权<br />Transaction Certificate(TC)                                                      接受交易<br /><br />值得注意的是，终端发送GENERATE AC命令的数据并不是TLV编码的，而是由一个叫做CDOL的数据对象来决定的。CDOL，指Card Risk Management Data Object List，它指定了GENERATE AC的命令数据需要包括哪些对象。ICC中需要有两个CDOL对象，CDOL1(TAG-'8C')和CDOL2(TAG-'8D')分别用于两次命令的发送，在一次交易中最多只能发送两次GENERATE AC 命令，超过2次则会执行失败导致交易终止。<br />GENERATE AC命令的数据可能还会包含一个叫做TC Hash Value的数据，这个值通过TDOL(Transaction Certificate Data Object List)经过HASH算法计算得到。如果ICC中没有TDOL，终端可能需要保存一个默认的TDOL，以计算TC HASH VALUE.<br /><br />前面提到GENERATE AC的决策结果是AC（有四种类型），那么我们看看其具体的数据结构是如何的。<br /><strong>      值                                                                 是否必须返回</strong><br />Cryptogram Information Data                          是<br />Application Transaction Counter (ATC)       是<br />Application Cryptogram (AC)                         是<br />Issuer Application Data                                    可选      <br />其中CID(Cryptogram Information Data)中指明了决策结果属于哪种AC类型。<br /><br />GENERATE AC是卡行为分析的重要过程，如果ICC返回TC，则交易成功，如果返回AAC则交易失败，返回其他时则终端将会发送第二次GENERATE AC命令，以决定交易授权结果。<br /><br />[完]<br /></font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/9507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-07-06 21:05 <a href="http://www.cppblog.com/MichaelLiu/articles/9507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ICC的数据编码</title><link>http://www.cppblog.com/MichaelLiu/articles/9169.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 29 Jun 2006 10:06:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9169.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9169.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9169.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9169.html</trackback:ping><description><![CDATA[
		<p>
				<font style="BACKGROUND-COLOR: #ffffff" size="2">
						<font size="3">ICC的数据编码<br /></font>Michael 2006/6/29<br /><br />这里我们讨论ICC和读卡器终端之间交互数据的编码格式。<br />BER-TLV(Basic Encoding Rule - Tag Length Value)编码，这个是ISO/IEC 8825定义的标准，在EMV规范中，TAG包含1－2个字节，LENGTH包含1－3个字节，VALUE为数据元素（对于原始数据对象）或者模板（对于组合数据对象）。<br />在某些情况下，为了简化ICC内部的处理，ICC要求终端发送给它的数据按照ICC定义的格式编码，而非TLV格式。这种格式要求终端简单地把ICC定义了的数据元素连接一块，组装成一个域，再发送给ICC。那么去哪里得到ICC定义的编码格式呢？ICC中定义了数据对象列表（DOL,DATA OBJECT LIST），终端通过发送相关命令给ICC，即可获得DOL定义，那么终端就知道了该把哪些数据元素组装起来。<br /><br /></font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/9169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-06-29 18:06 <a href="http://www.cppblog.com/MichaelLiu/articles/9169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ICC的数据存储</title><link>http://www.cppblog.com/MichaelLiu/articles/9156.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Thu, 29 Jun 2006 08:49:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/9156.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/9156.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/9156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/9156.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/9156.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
						<font size="3">ICC的数据存储<br /></font>Michael 2006/06/29<br /><br />ICC卡支持多应用，每个应用都存储着相关的信息，这些信息像操作系统的文件结构一样存储。<br />最小的信息单位是<strong>数据元素</strong>，它包含数据元素名称、内容描述、格式和编码，比如：<br /><strong>Name          |          Description               |   Source  |       Format          |Template | Tag   |    Length</strong><br />Application | Valid cardholder account number | ICC | cn var. up to 19 |  '70' or '77' | '5A' | var. up to 10<br />Primary Account<br />Number (PAN)<br /><br /><strong>数据对象</strong>，由TAG、LENGTH、VALUE组成，每个数据对象由一个该应用范围内唯一的TAG进行标识。和OS的文件夹类似，一个数据对象可仅仅包含数据元素，或者子数据对象，如果该数据对象值为数据元素，则被称作“<strong>原始数据对象</strong>(Primitive Data Object)”；如果该数据对象值为其他（一个或多个）数据对象，则它被称作“<strong>组合数据对象</strong>(Constructed Data Object)”，相应地，它的值被称作“<strong>模板</strong>(Template)”。这两类数据对象的TAG是不一样的，所以，从TAG可以知道它属于哪一种类型。例如，77099F1A0208409F350101，它是一个组合对象，TAG='77'，组合对象的长度为9个字节，组合对象的值为"9F1A0208409F350101"，即它包含两个原始数据对象，分别是对象"9F1A"(LEN=02, VALUE=0840)和"9F35"(LEN=01, VALUE=01)。<br /><br />上面我们讨论了一些逻辑概念，现在让我们具体看看ICC中对上述概念是如何存储的。<br /><br />每个应用包含一个或多个<strong>文件</strong>(Files)，它是ICC中信息的存储格式，文件中包含大量的<strong>记录</strong>(Records)，记录就是模板（即它存放了一个或多个数据对象）。关于他们之间的关系，我们可以做个形象的比喻，<em>文件</em>就像数据库系统中的数据库，<em>记录</em>如同数据库中的表，<em>数据对象</em>则似表中的每条记录。<br /><br />那么如何访问文件呢？<br />文件有三种类型：AEF(Application Elementary File)、ADF(Application Definition File)、DDF(Directory Definition File)。对于ADF和DDF，采用文件名称进行访问，文件不可以重名，它在<strong>卡</strong>中必须是独一无二的。对于AEF，采用一个整数标识（范围从1－30）即SFI(Short File Identifier)进行访问，同样地，该标识不可以重复，它在<strong>同一应用</strong>中是独一无二的。</font>
		</p>
		<p>
				<font size="2">我们再来看看终端通过哪些命令来和ICC交互。<br />不同的发卡行对IC卡的定义是不一样的，在EMV标准中，定义了以下命令集，除此之外，发卡行可以定义针对自身的命令集。<br />终端发给ICC的命令集合（共13个）：<br />命令类别   指令码   含义<br />‘8x’         ‘1E’     APPLICATION BLOCK<br />‘8x’         ‘18’     APPLICATION UNBLOCK<br />‘8x’         ‘16’     CARD BLOCK<br />‘0x’         ‘82’     EXTERNAL AUTHENTICATE【请求ICC校验ISSUER AUTHENTICATION DATA】<br />‘8x’         ‘AE’     GENERATE APPLICATION CRYPTOGRAM【返回CID(Cryptogram Information Data), ATC<br />                                     (Application  Transaction Counter, AC(Application Cryptogram)数据】<br />‘0x’         ‘84’     GET CHALLENGE【获取随机数】<br />‘8x’         ‘CA’     GET DATA【限于读取ATC(tag '9F36'), Last Online ATC Register(tag '9F13'), PIN Try<br />                                     Counter(tag '9F17')】<br />‘8x’         ‘A8’     GET PROCESSING OPTIONS【返回AIP(Application Interchange Profile）和AFL<br />                                    (Application File Locator)】<br />‘0x’         ‘88’     INTERNAL AUTHENTICATE【请求ICC计算并返回Signed Dynamic Application Data】<br />‘8x’         ‘24’     PERSONAL IDENTIFICATION NUMBER (PIN)CHANGE/UNBLOCK【激活PIN，<br />                                    重设PIN RETRY Counter】<br />‘0x’         ‘B2’     READ RECORD【读取RECORD数据，如Application Expiration Date, Application PAN, <br />                           Card Risk Managemt Data Object List1, Card Risk Management Data Object List2, etc】<br />‘0x’         ‘A4’     SELECT<br />‘0x’         ‘20’     VERIFY【要求ICC进行脱机密码校验（Transaction PIN &amp; Reference PIN）】<br />‘8x’         ‘Dx’     RFU for the payment systems<br />‘8x’         ‘Ex’     RFU for the payment systems<br />‘9x’         ‘xx’     RFU for manufacturers for proprietary INS coding<br />‘Ex’         ‘xx’     RFU for issuers for proprietary INS coding</font>
		</p>
		<p>
				<font size="2">终端发给ICC的命令由4个字节的命令包头和命令码以及相关参数组成。ICC返回给终端的数据是我们在前面提到的<b>数据对象</b>或<b>模板，</b>再添加2个字节的命令执行状态。</font>
		</p>
		<p>
				<font size="2">到这里，我们知道了ICC中有哪些数据，以及它们如何存储，终端如何访问它们。<br /></font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/9156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-06-29 16:49 <a href="http://www.cppblog.com/MichaelLiu/articles/9156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现EMV卡的电子商务系统</title><link>http://www.cppblog.com/MichaelLiu/articles/8235.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Wed, 07 Jun 2006 02:37:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/8235.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/8235.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/8235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/8235.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/8235.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">如何实现EMV卡的电子商务(E-Commerce)系统<br />Michael 2006/05/20</font>
		</p>
		<p>
				<font size="2">一 系统架构<br />IC卡&lt;--&gt;CS(Cardholder System)&lt;--&gt;MS(Merchant Server)&lt;--&gt;PG(Payment Gateway)。<br />Cardholder System和Merchant Server之间采用SET(Secure Electronic Transaction)message protocol。</font>
		</p>
		<p>
				<font size="2">二 持卡人系统（Cardholder System）的设计<br />在电子商务系统的持卡人系统中，需要考虑以下因素：</font>
		</p>
		<p>
				<br />
				<font size="2">1。CS需要实现的IC卡交互功能<br />包括：Card Selection, Application Selection, Application Initiation, Read Application Data, Cardholder Verification, Terminal Action Analysis, Issuer Script Processing&amp;Completion，不需要实现以下功能：Offline Data Authentication, Processing Restrictions, Terminal Risk Management.</font>
		</p>
		<p>
				<font size="2">2。CS需要支持的IC卡命令集<br />包括：SELECT, GET PROCESSING OPTIONS, READ RECORD, GET DATA, VERIFY, GENERATE AC, EXTERNAL AUTHENTICATE。同时，CS需要能够解释IC卡返回的数据。</font>
		</p>
		<p>
				<font size="2">3。CS需要保存和处理的数据<br />在交易过程中，CS需要保存有以下数据元素：<br />1) Amount Other: Cashback amount, 在E-Commerce系统中值为空。<br />2) BrandID-AID Table: <br />3) ISO8859 Code Table: 帮助解析Application Preferred Name等数据。<br />4) Terminal Type: E-Commerce系统的终端类型是“unattended, online, controlled by cardholder”(value=34).<br />5) Transaction Type: E-Commerce系统执行的交易是"purchase of goods or service"(value=00).<br />6) Terminal Verification Results: CS执行完每个功能保存的结果（共5 BYTES，40BITS）。<br />4。SET协议扩展消息<br />SET消息包中需要包含以下信息以执行EMV交易。<br />1) commonChip: the cryptogram and related data，由CS生成，存放在PReq消息中。<br />2) acqCardExtensions: Issuer Authentication and Issuer Script data，由Payment Gateway生成，存放在PRes消息的AcqCardMsgData域中。<br />3) onlinePIN: PIN data entered by the cardholder，由CS生成，存放在PReq消息中。</font>
		</p>
		<p>
				<font size="2">三 Merchant Server的设计<br />无特殊需求。</font>
		</p>
		<p>
				<font size="2">四 PG(Payment Gateway)的设计<br />PG需要能够处理上述定义的SET协议扩展消息。</font>
		</p>
		<p>
				<font size="2">五 交易处理过程<br />定义IC卡&lt;--&gt;CS(Cardholder System)&lt;--&gt;MS(Merchant Server)&lt;--&gt;PG(Payment Gateway)之间的交互接口。<br />1。交易流程总览<br />如图。<br />2。CS和IC卡的功能交互接口<br />1) Card Selection: 持卡人选择相应的支付卡执行交易<br />过程：<br />Merchant Server支持的所有支付卡需要被显示；<br />CS需要提供所有可支付的方式；<br />CS需提示持卡人在交易期间IC卡不能退出，除非提示这么做</font>
		</p>
		<p>
				<font size="2">2) Application Selection: CS从IC卡中选择相应应用并显示<br />过程：<br />CS从MS发送的SET Initiation Message中获取可用于交易支付的机构Brand，并使用BrandID-AID表找到并创建支持的应用标识(AIDs)。如果AID没有找到，则要求持卡人尝试另一张卡或者更新BrandID-AID表。<br />在IC卡给SELECT命令的答复中若包含Application Preferred Name，则该名称需要显示给持卡人，若不包含，则显示Application Label给持卡人。如果答复中还包含Issuer URL，则CS同时还需要显示该Issuer的LOGO给用户。</font>
		</p>
		<p>
				<font size="2">3) Application Initiation: 初始化应用</font>
		</p>
		<p>
				<font size="2">4) Read Application Data: CS读取IC卡应用数据</font>
		</p>
		<p>
				<font size="2">5) Cardholder Verification: CS从持卡人处获取PIN信息发给IC卡或者ISSUER做身份校验<br />当AIP第一字节的第五位为1时，需要做持卡人身份验证。</font>
		</p>
		<p>
				<font size="2">6) Terminal Action Analysis: IC卡针对CS的交易授权请求决定DECLINE OFFLINE还是同意ONLINE AUTHORISATION REQUEST<br />要求：在给IC卡的GENERATE AC命令中发送的数据元素需要按照一定的格式转换，以方便IC卡理解。</font>
		</p>
		<p>
				<font size="2">7) Issuer Script Processing and Completion: CS根据脚本执行操作并提示用户取卡</font>
		</p>
		<p>
				<font size="2">3。CS和MS的消息交互接口<br />1) SET Initiation: MS通知CS并告知支付卡方式等交易细节<br />MS需要创建SET Payment Initiation消息并发送给CS，CS需要能够解析处理该消息。<br />2) Purchase Initiation: CS创建Purchase请求并验证MS和PG的身份，同时发送交易信息给MS<br />过程：CS创建发送PInitReq消息（包含Language, BrandID, BIN数据），MS创建响应PInitRes消息<br />3) Purchase Request&amp;Response<br />PReq包含Language, BrandID, PAN, BIN, AID, Application Expiration Date等数据。</font>
		</p>
		<p>
				<font size="2">4。MS和PG的消息交互接口<br />1) Authorization Request(AuthReq) &amp; Response(AuthRes)<br />2) Capture Request(CapReq) &amp; Response(CapRes)</font>
		</p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/8235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-06-07 10:37 <a href="http://www.cppblog.com/MichaelLiu/articles/8235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DDA 过程解析</title><link>http://www.cppblog.com/MichaelLiu/articles/6609.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Wed, 03 May 2006 15:22:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/6609.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/6609.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/6609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/6609.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/6609.html</trackback:ping><description><![CDATA[
		<font face="Arial" size="2">DDA(Dynamic data authentication) is performed by the terminal using a digital signature<br />scheme based on public key techniques to authenticate the ICC, and confirm the<br />legitimacy of critical ICC-resident/generated data and data received from the<br />terminal. This precludes the counterfeiting of any such card.<br /><br />DDA的思路是把每个CERTIFICATE作为输入通过指定的算法进行还原(RECOVER)，对还原<br />后的结果数据进行逐项地校验，若有任何一项不满足则DDA失败，当且仅当所有的项目都通过<br />后DDA才成功。<br /><br /><strong>一 ICC必须包含的数据</strong><br />a) Certification Authority Public Key Index<br />b) Issuer Public Key Certificate<br />c) ICC Public Key Certificate<br />d) Issuer Public Key Remainder<br />e) Issuer Public Key Exponent<br />f)  ICC Public Key Remainder<br />g) ICC Public Key Exponent<br />h) ICC Private Key : An ICC internal variable-length data element used to<br />generate the Signed Dynamic Application Data.<br />i)  <strong>Signed Dynamic Application Data</strong>: A variable-length data element generated by<br />the ICC using the private key that corresponds to the public key authenticated<br />in the ICC Public Key Certificate. It is a digital signature covering critical ICCresident/<br />generated and terminal data elements,<br /><br /><strong>二 Terminal应保存数据：<br /></strong>a) Six CA public keys per RID(Registered Application Provider Identifier) <br />b) Key-related information for each CA public key<br />c) Corresponding algorithm<br /><br /><strong>三 DDA的执行过程按次序分为四个步骤，任何一个步骤若出现异常则DDA失败，只有所有<br />步骤都完成后DDA才成功：<br /></strong><br /><strong>a) Retrieval of the Certification Authority Public Key</strong><br />The terminal reads the Certification Authority Public Key Index. Using this index<br />and the RID, the terminal can identify and retrieve the terminal-stored<br />Certification Authority Public Key Modulus and Exponent and the associated keyrelated<br />information, and the corresponding algorithm to be used. If the terminal<br />does not have the key stored associated with this index and RID, <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br /><br /><strong>b) Retrieval of the Issuer Public Key<br /></strong>1. If the Issuer Public Key Certificate has a length different from the length of the<br />Certification Authority Public Key Modulus obtained in the previous section,<br /><font color="#ff0000">dynamic data authentication has failed</font>.<br />2. In order to obtain the recovered data specified in Table 9, apply the recovery<br />function specified in Annex A2.1 on the Issuer Public Key Certificate using the<br />Certification Authority Public Key in conjunction with the corresponding<br />algorithm. If the Recovered Data Trailer is not equal to ‘BC’, <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br />3. Check the Recovered Data Header. If it is not ‘6A’, <font color="#ff0000">dynamic data authentication<br />has failed</font>.<br />4. Check the Certificate Format. If it is not ‘02’, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />5. Concatenate from left to right the second to the tenth data elements in Table 9<br />(that is, Certificate Format through Issuer Public Key or Leftmost Digits of the<br />Issuer Public Key), followed by the Issuer Public Key Remainder (if present) and<br />finally the Issuer Public Key Exponent.<br />6. Apply the indicated hash algorithm (derived from the Hash Algorithm Indicator)<br />to the result of the concatenation of the previous step to produce the hash result.<br />7. Compare the calculated hash result from the previous step with the recovered<br />Hash Result. If they are not the same, <font color="#ff0000">dynamic data authentication has failed</font>.<br />8. Verify that the Issuer Identification Number matches the leftmost 3-8 PAN digits<br />(allowing for the possible padding of the Issuer Identification Number with<br />hexadecimal ‘F’s). If not, <font color="#ff0000">dynamic data authentication has failed</font>.<br />9. Verify that the last day of the month specified in the Certificate Expiration Date<br />is equal to or later than today's date. If the Certificate Expiration Date is earlier<br />than today's date, the certificate has expired, in which case <font color="#ff0000">dynamic data<br />authentication has failed.</font><br />10.Verify that the concatenation of RID, Certification Public Key Index, and<br />Certificate Serial Number is valid. If not, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />11.If the Issuer Public Key Algorithm Indicator is not recognised, <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br />12.If all the checks above are correct, concatenate the Leftmost Digits of the Issuer<br />Public Key and the Issuer Public Key Remainder (if present) to obtain the Issuer<br />Public Key Modulus, and continue with the next steps for the retrieval of the ICC<br />Public Key.<br /><br /><strong>c) Retrieval of the ICC Public Key</strong><br />1. If the ICC Public Key Certificate has a length different from the length of the<br />Issuer Public Key Modulus obtained in the previous section, <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br />2. In order to obtain the recovered data specified in Table 10, apply the recovery<br />function specified in Annex A2.1 on the ICC Public Key Certificate using the<br />Issuer Public Key in conjunction with the corresponding algorithm. If the<br />Recovered Data Trailer is not equal to ‘BC’, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />3. Check the Recovered Data Header. If it is not ‘6A’, <font color="#ff0000">dynamic data authentication<br />has failed.</font><br />4. Check the Certificate Format. If it is not ‘04’, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />5. Concatenate from left to right the second to the tenth data elements in Table 10<br />(that is, Certificate Format through ICC Public Key or Leftmost Digits of the ICC<br />Public Key), followed by the ICC Public Key Remainder (if present), the ICC<br />Public Key Exponent and finally the static data to be authenticated specified in<br />Part II of Book 3 of these specifications. If the Static Data Authentication Tag<br />List is present and contains tags other than ‘82’, then <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br />6. Apply the indicated hash algorithm (derived from the Hash Algorithm Indicator)<br />to the result of the concatenation of the previous step to produce the hash result.<br />7. Compare the calculated hash result from the previous step with the recovered<br />Hash Result. If they are not the same, <font color="#ff0000">dynamic data authentication has failed</font>.<br />8. Check if the recovered PAN is equal to the Application PAN, read from the ICC.<br />If not, <font color="#ff0000">dynamic data authentication has failed</font>.<br />9. Verify that the last day of the month specified in the Certificate Expiration Date<br />is equal to or later than today's date. If not, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />10.If the ICC Public Key Algorithm Indicator is not recognised, <font color="#ff0000">dynamic data<br />authentication has failed</font>.<br />11.If all the checks above are correct, concatenate the Leftmost Digits of the ICC<br />Public Key and the ICC Public Key Remainder (if present) to obtain the ICC<br />Public Key Modulus, and continue with the actual dynamic data authentication<br />described in the two sections below.<br /><strong>d) Dynamic Data Authentication<br /></strong>分为STANDARD和COMBINED两种方式。<br /><strong>d.1 Standard Dynamic Data Authentication<br />d.1.1. Dynamic Signature Generation</strong><br />Terminal向ICC发送一个INTERNAL AUTHENTICATE命令并附带DDOL中定义的数据（<br />称为<em>Terminal Dynamic Data</em>）。<br />ICC对Terminal Dynamic Data重新组合及格式化处理后生成<em>Dynamic Application Data。<br /></em>ICC对Dynamic Application Data用自己的私钥和相应算法进行签名，最终生成<br /><em>Signed Dynamic Application Data.</em><br /><br /><strong>d.1.2. Dynamic Signature Verification<br /></strong>接下来的过程和SDA类似。<br />1. If the Signed Dynamic Application Data has a length different from the length of<br />the ICC Public Key Modulus,<font color="#ff0000"> dynamic data authentication has failed.</font><br />2. To obtain the recovered data specified in Table 13, apply the recovery function<br />specified in Annex A2.1 on the Signed Dynamic Application Data using the ICC<br />Public Key in conjunction with the corresponding algorithm. If the Recovered<br />Data Trailer is not equal to ‘BC’, <font color="#ff0000">dynamic data authentication has failed</font>.<br />3. Check the Recovered Data Header. If it is not ‘6A’, <font color="#ff0000">dynamic data authentication<br />has failed.</font><br />4. Check the Signed Data Format. If it is not ‘05’, <font color="#ff0000">dynamic data authentication has<br />failed</font>.<br />5. Concatenate from left to right the second to the sixth data elements in Table 13<br />(that is, Signed Data Format through Pad Pattern), followed by the data<br />elements specified by the DDOL.<br />6. Apply the indicated hash algorithm (derived from the Hash Algorithm Indicator)<br />to the result of the concatenation of the previous step to produce the hash result.<br />7. Compare the calculated hash result from the previous step with the recovered<br />Hash Result. If they are not the same, <font color="#ff0000">dynamic data authentication has failed</font>.<br /><br /><strong><font color="#008000">If all the above steps were executed successfully, dynamic data authentication was<br />successful</font></strong>. The ICC Dynamic Number contained in the ICC Dynamic Data<br />recovered in Table 13 shall be stored in Tag ‘9F4C’.<br /><strong>d.2 Combined Dynamic Data Authentication/Application Cryptogram Generation<br /></strong>和d.1一样需要Signature creation和verification两步，不同的是在creation中，d.2需要<br />Cryptogram Information Data object参与组成 ICC Dynamic Data，进而格式化成相应<br />的Dynamic Application Data，然后用其私钥和算法进行签名，形成Signed Dynamic <br />Application Data.<br />Verification过程同d.1类似。<br /></font>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/6609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-05-03 23:22 <a href="http://www.cppblog.com/MichaelLiu/articles/6609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SDA 过程解析</title><link>http://www.cppblog.com/MichaelLiu/articles/6594.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Wed, 03 May 2006 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/6594.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/6594.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/6594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/6594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/6594.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="Arial">SDA(Static data authentication) is performed by the terminal using a digital signature<br />scheme based on public key techniques to confirm the legitimacy of critical ICCresident<br />static data identified by the AFL and by the optional Static Data Authentication Tag List. <br />This detects unauthorised alteration of data after personalisation.<br /><br /><strong>一 ICC应保存数据：</strong><br />a) CA Public Key Index <br />b)Issuer Public Key Certificate <br />c) Signed Static Application Data <br /><br /><b>二 Terminal应保存数据：</b><br />a) Six CA public keys per RID(Registered Application Provider Identifier) <br />b) Key-related information for each CA public key<br />c) Corresponding algorithm<br /><br />三 SDA过程按次序分三个步骤，其中任一步骤若出现异常则SDA失败，只有三个步骤顺利完成<br />后SDA才成功：<br /><br /><b>a) Retrieval of the Certification Authority Public Key</b><br />The terminal reads the Certification Authority Public Key Index. Using this index<br />and the RID, the terminal shall identify and retrieve the terminal-stored<br />Certification Authority Public Key Modulus and Exponent and the associated keyrelated<br />information, and the corresponding algorithm to be used. If the terminal does not have the <br />key stored associated with this index and RID, static data authentication has failed.<br /><br /><b>b) Retrieval of the Issuer Public Key</b><br />1. If the Issuer Public Key Certificate has a length different from the length of the<br />Certification Authority Public Key Modulus obtained in the previous section,<br />static data authentication has failed.<br />2. In order to obtain the recovered data specified in Table 4, apply the recovery<br />function specified in Annex A2.1 to the Issuer Public Key Certificate using the<br />Certification Authority Public Key in conjunction with the corresponding<br />algorithm. If the Recovered Data Trailer is not equal to ‘BC’, static data<br />authentication has failed.<br />3. Check the Recovered Data Header. If it is not ‘6A’, static data authentication has<br />failed.<br />4. Check the Certificate Format. If it is not ‘02’, static data authentication has<br />failed.<br />5. Concatenate from left to right the second to the tenth data elements in Table 4<br />(that is, Certificate Format through Issuer Public Key or Leftmost Digits of the<br />Issuer Public Key), followed by the Issuer Public Key Remainder (if present) and<br />finally the Issuer Public Key Exponent.<br />6. Apply the indicated hash algorithm (derived from the Hash Algorithm Indicator)<br />to the result of the concatenation of the previous step to produce the hash result.<br />7. Compare the calculated hash result from the previous step with the recovered<br />Hash Result. If they are not the same, static data authentication has failed.<br />8. Verify that the Issuer Identification Number matches the leftmost 3-8 PAN digits<br />(allowing for the possible padding of the Issuer Identification Number with<br />hexadecimal ‘F’s). If not, static data authentication has failed.<br />9. Verify that the last day of the month specified in the Certificate Expiration Date<br />is equal to or later than today's date. If the Certificate Expiration Date is earlier<br />than today's date, the certificate has expired, in which case static data<br />authentication has failed.<br />10. Verify that the concatenation of RID, Certification Authority Public Key Index,<br />and Certificate Serial Number is valid. If not, static data authentication has<br />failed4.<br />11. If the Issuer Public Key Algorithm Indicator is not recognised, static data<br />authentication has failed.<br />12. If all the checks above are correct, concatenate the Leftmost Digits of the Issuer<br />Public Key and the Issuer Public Key Remainder (if present) to obtain the Issuer<br />Public Key Modulus, and continue with the next steps for the verification of the<br />Signed Static Application Data.<br /><br /><b>c) Verification of the Signed Static Application Data</b><br />1. If the Signed Static Application Data has a length different from the length of the<br />Issuer Public Key Modulus, static data authentication has failed.<br />2. In order to obtain the Recovered Data specified in Table 5, apply the recovery<br />function specified in Annex A2.1 on the Signed Static Application Data using the<br />Issuer Public Key in conjunction with the corresponding algorithm. If the<br />Recovered Data Trailer is not equal to ‘BC’, static data authentication has failed.<br />3. Check the Recovered Data Header. If it is not ‘6A’, static data authentication has<br />failed.<br />4. Check the Signed Data Format. If it is not ‘03’, static data authentication has<br />failed.<br />5. Concatenate from left to right the second to the fifth data elements in Table 5<br />(that is, Signed Data Format through Pad Pattern), followed by the static data to<br />be authenticated as specified in Part II of Book 3 of these specifications. If the<br />Static Data Authentication Tag List is present and contains tags other than ‘82’,<br />then static data authentication has failed.<br />6. Apply the indicated hash algorithm (derived from the Hash Algorithm Indicator)<br />to the result of the concatenation of the previous step to produce the hash result.<br />7. Compare the calculated hash result from the previous step with the recovered<br />Hash Result. If they are not the same, static data authentication has failed.<br />If all of the above steps were executed successfully, static data authentication was<br />successful. The Data Authentication Code recovered in Table 5 shall be stored in<br />Tag ‘9F45’.<br /><img src="c:%5Ctable4.jpg" /><img src="c:%5Ctable5.jpg" /><br />参考：&lt;&lt;EMV2000 Integrated Circuit Card Specification for Payment Systems Book 2<br /> - Security and Key Management&gt;&gt;<br /></font>
		</font>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/6594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-05-03 17:15 <a href="http://www.cppblog.com/MichaelLiu/articles/6594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Digital Signature</title><link>http://www.cppblog.com/MichaelLiu/articles/6592.html</link><dc:creator>奔跑的阿甘</dc:creator><author>奔跑的阿甘</author><pubDate>Wed, 03 May 2006 06:32:00 GMT</pubDate><guid>http://www.cppblog.com/MichaelLiu/articles/6592.html</guid><wfw:comment>http://www.cppblog.com/MichaelLiu/comments/6592.html</wfw:comment><comments>http://www.cppblog.com/MichaelLiu/articles/6592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MichaelLiu/comments/commentRss/6592.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MichaelLiu/services/trackbacks/6592.html</trackback:ping><description><![CDATA[
		<p>
				<b>数字签名的原理</b>
		</p>
		<p>1 被发送文件采用哈希算法对原 始报文进行运算，得到一个固定长度的数字串，称为报文摘要 (Message Digest)，不同的报文所得到的报文摘要各异，但对相 同的报文它的报文摘要却是唯一的。<br />2 发送方生成报文的报文摘要，用自己的私钥对摘 要进行加密来形成发送方的数字签名。<br />3 这个数字签名将作为报文的附件和报文一起发送给接收方。<br />4 接收方首先从接收到的原始报文中用同样的算法计算出新的报文摘要， 再用发送方的公钥对报文附件的数字签名进行解密，比较两个报文 摘要，如果值相同，接收方就能确认该数字签名是发送方的。<br /></p>
<img src ="http://www.cppblog.com/MichaelLiu/aggbug/6592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MichaelLiu/" target="_blank">奔跑的阿甘</a> 2006-05-03 14:32 <a href="http://www.cppblog.com/MichaelLiu/articles/6592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>