银行卡密码的加密、MAC计算

简介

       在银行、银联、第三方支付等金融系统中,对银行卡密码等信息的加解密,对交易数据的加解密无处不在,在商场刷卡消费的POS机,在ATM机器取款等都需要对数据加密以保护数据安全,不被窃取。


本文主要对POS机的安全处理和对银行卡的密码加解密的梳理,由于传统POS是存在时间最长,接受最广的一种非现金支付方式,它的安全方案被后来的各种新型支付方式借鉴,比如支付宝和微信的扫码支付。所以,只要理解了POS的安全原理,再理解其它新型支付的安全几乎没有难处。


POS机的安全加密各密钥关系:




存储加密密钥 Storing encryption key ;SEK

SEK,通过SEK生成N个终端主密钥(TMK),也就是说TMKSEK加密保护。



终端主密钥terminal master key;TMK


TMK加密工作密钥PINkeyMACkey,这样工作密钥从银行后台传输到POS的路途,即使被截取,也是密文,不会出现密钥泄漏的风险。

主密钥,两边相同的值,一般是16字节,32个字符,如:1a3ff4….

通过主密钥可以生成终端主密钥(TMK),其实使用的是加密算法,使用主密钥解密可以得到明文。

 

由于密钥的明文没有人完全知道,仅仅知道一部分,或者一个分量。那么,两个系统之间,或者设备和系统之间怎么MAC一直过不去,双方需要核对主密钥知否一致,因为密钥不一致肯定过不去。数据一致,算法一致,密钥一致,结果一定一致。

 

终端主密钥:存入密码键盘内。


工作密钥 working key; WK

工作密钥主要分PIN key、MAC key,PIN key加密银行卡密码,保护密码不泄漏;MAC key加密交易数据,保证交易数据在传输中不被篡改。

 工作密钥由银行后台生成,POS可通过签到经常更新。后台将工作密钥使用TMK加密后形成密文,再传输给POS。


  • 工作密钥:PINKey

持卡人在设备上输入的密码被PINKEYj加密,加密后的密文被送到中心系统,中心系统使用相同的PINKEY对密文解密。

PINKEY由中心系统生成,通过签到的方式下发到设备中。

PINKEY的长度一般为32个字符,如:1fadfasdfasdfsadfasfdasdf


  • 工作密钥MacKey

 银联对名词有专门的解释,参见 银行卡联网联合规范或中国银联POS终端规范:

 发卡银行是指你手里的银行卡在哪家银行办理,该银行就是这张卡的发卡银行。发卡银行指总行。比如:xxx支行,xxx银行。

 持卡人,持卡人不一定是银行卡户名对应的人,在消费场景中,使用银行卡来刷卡支付商品或服务费用的人为持卡人。例如:你接受推拿服务,应该支付服务费用。


密钥校验值 check value

这就需要使用校验值,双方的校验值一致时,说明密钥的明文一致,因为校验值的算法是固定的,使用密钥明文加密8字节0得到。



金融系统中银行卡密码的加密

在交易发起方,对银行卡密码加密,加密后传输到下一个节点,下一个节点可能是银联,也可能是某第三方支付公司,也可能是银行,需要看具体的业务模式。

 

一般我们在酒店、商场刷卡消费时,终端(POS)对持卡人输入的密码加密,然后传到后台,后台对密码做转加密后,送到银行,银行确认密码正确性,决定是否打印刷卡小票。

 

  •  终端(POS)对密码的加密

终端的密码输入键盘是一个经过银联认证的特殊设备,可能保证输入的密码不会被窃取,当用户输入密码按确认后,键盘会使用内部的密钥(PINKEY)对密码做加密处理,加密后的密文同其他金融数据一起,上送到后台,等待后台的交易反馈。

  • 后台对密码的转加密

先说说为什么要转加密,终端与后台之间,这一段线路有双方约定的安全密钥,而后台到银行这段线路也约定有安全密钥,也就是说,在一个常见的金融交换系统中,一般有三个节点(终端、后台、银行),如下图:


后台对终端上送的密码解密,再使用于银行之间的密钥加密,这个过程一般在加密机内部完成,也就是说我们看不到解密后的密码。当然,如果后台没有使用加密机,而使用解密程序,那么密码一定可以看见。


  • 银行对密码的验证

银行对密码的验证很好理解,发卡银行对密码验证,这个没有什么难以理解,银行存储了每一张银行卡的密码(一般以密文的形成存储);

银行对密码解密后,在使用特定的算法加密,加密的结果与存书的密码比较,如果密文一致,说明密码正确。

金融系统中卡片磁道信息的加密与解密

待补充。


金融系统中交易报文的MAC计算方法

待补充。



金融系统中的安全比较复杂,尤其是MAC计算,可能花一周时间都调不通;

如果需要,可以联系我,我在北京,如果着急可现场去帮支持  158/110-59821



ISO8583组包拆包代码、3DES加解密相关源代码出售,整个交易平台出售。

提供金融支付相关的技术服务,如:快速与银行、第三方支付平台对接,联调,加解密,MAC计算,银行卡密码加解密等。

如需要,可以联系我,北京 158/110-59821




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】 - - 链表推导式[ 2*x for x in X ]、匿名函数、并行迭代

列表推导式[x for x in range(n)] 问题:请计算出1~9间的整数的平方 常规方法 for i in range(1,10):print(i*i) 链表推导式: print([x*x for x in range(1,10)]) 匿名函数方法: 匿名函数语法形式: lambda [arg1, arg2, arg3,…

C#多线程和线程池

.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则…

GitHub.com上的那些东西你都知道什么意思吗?

GitHub初学入门者的图谱,介绍Github网站每个功能的意思 一、键盘快捷键 在GitHub中,很多页面都可以使用键盘快捷键。在各个页面按下“shift /”都可以打开键盘快捷键一览表,如下图: 快捷键 二、工具栏 工具栏 LOGO 点击GitHub…

【Python学习】 - sklearn学习 - 数据集分割方法 - 随机划分与K折交叉划分与StratifiedKFold与StratifiedShuffleSplit

一、随机划分 import numpy as np from sklearn import datasetsiris datasets.load_iris() X iris.data y iris.target# 1)归一化前,将原始数据分割 from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test train_t…

【Python学习】 - sklearn - 用于生成数据的make_blobs模块

函数原型: sklearn.datasets.make_blobs(n_samples100, n_features2, centers3, cluster_std1.0, center_box(-10.0, 10.0), shuffleTrue, random_stateNone) 参数含义: n_samples: int, optional (default100) The total number of points equally di…

微服务架构及幂等性

微服务架构 微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。 和 微服务 相对应的,这…

【Python学习】 - Matplotlib二维绘图 - plt.matshow()和plt.imshow()区别对比

给定一个8*8的数据,用两种方式分别进行输出。 xx np.zeros((8,8),dtype np.uint8) xx[0,0] 13im Image.fromarray(xx) plt.imshow(im)plt.matshow(xx) plt.show() 输出: 得出结论: 首先我不知道为啥两个窗口是不一样大的。 其次发现图…

【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化

一、为什么要进行数据归一化 定义:把所有数据的特征都归到 [0,1] 之间 或 均值0方差1 的过程。原则:样本的所有特征,在特征空间中,对样本的距离产生的影响是同级的;问题:特征数字化后,由于取值…

【基于Python】 - 人工智能机器学习深度学习数据分析 - 常见问题,常用的套路与操作(持续更新)

20200221; 1.做分类问题的时候,给定你标签,你想知道每一类标签的出现频数,可以使用这个函数:np.bincount()。 如果想分析一下数据样本是否均衡的时候,可以考虑这种操作,代码十分简明。 2. 当…

Entity Framework 简介

转贴:链接https://www.cnblogs.com/davidzhou/p/5348637.html 侵删,谢谢 第一篇:Entity Framework 简介 先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架&#xff0…

【Python学习】 - pyecharts包 - 地图可视化

安装: https://pan.baidu.com/s/1vAlSjVbHt0EDJY6C_38oEA 提取码:t9be 在这个链接中下载对应的.whl文件,放到下图所示的目录中。 然后打开anaconda prompt 找到对应的目录,输入: pip install pyecharts-0.1.9.4-py…

【机器学习】 - 关于图像质量评价IQA(Image Quality Assessment)

图像质量评价(Image Quality Assessment,IQA)是图像处理中的基本技术之一,主要通过对图像进行特性分析研究,然后评估出图像优劣(图像失真程度)。 主要的目的是使用合适的评价指标,使得评价结果…

【机器学习】 - CNN

什么是卷积神经网络,它为何重要? 卷积神经网络(也称作 ConvNets 或 CNN)是神经网络的一种,它在图像识别和分类等领域已被证明非常有效。 卷积神经网络除了为机器人和自动驾驶汽车的视觉助力之外,还可以成功…

Asp.Net中WebForm与MVC,Web API模式对比

webform,web mvc和web api都是asp.net官方的三套框架,想对比下三者的关系,查了下资料,web api跟web mvc基本同属一脉,只是mvc多了一个视图渲染,网上有些博客介绍了webform和mvc底层源码实现的不同&#xff…

【机器学习】 - Keras学习 - TensorBoard模块 - 可视化模型训练过程神器

运行环境:Win10 anaconda3。 TensorFlow版本:2.0.0 import numpy as np import tensorflow as tf import tensorflow.keras from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import matplotlib.pyplot as…

无废话SharePoint入门教程一[SharePoint概述]

一、前言 听说SharePoint也有一段时间了,可一直处在门外。最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发。但苦于网上SharePoint入门的东西实在太少,导致自学入门很难,不知道SharePoint这东西到底能做什么…

SharePoint 站点结构及概念

简单的记录一下Sharepoint的结构与基本概念 一、服务器场 服务器场,即主机的集群.简单点说就是两台机器互相备份,两个或几台机器之间有心跳线,定时检测对端设备的情况,如果对端设备出现故障,一台机器就会接管出问题机器的受保护…

【Python学习】 - sklearn学习 - 自带数据集sklearn.datasets.x

sklearn 的数据集有好多个种 自带的小数据集(packaged dataset):sklearn.datasets.load_可在线下载的数据集(Downloaded Dataset):sklearn.datasets.fetch_计算机生成的数据集(Generated Datas…

sharepoint 概念及认证方式介绍

3.SharePoint Web 应用程序 我个人的理解,SharePoint Web 应用程序(SharePoint Web Application)代表的是 SharePoint 网站(集)的物理容器。 SharePoint Web 应用程序需要指定内容数据库、宿主 IIS 应用程序池、应用…

我们可以用SharePoint做什么

前言 不知不觉作为一个SharePoint的开发人员若干年了,从SharePoint api 开始学习,到了解SharePoint的结构,逐渐一点点了解sharepoint的体系;从SharePoint 的2007到2010到2013到SharePoint Online都接触了一些。本文会从个人的视角…