有关3DES、DUKPT和MK/SK学习记录

笔记

数字签名
公钥,私钥:任意一个可以加密,另一个解密;如发送方使用公钥加密,接收方用私钥解密
文件签名:使用软件把数据压缩成信息摘要(不能还原);然后使用私钥加密成签名【数字签名】;再附加再文件上
解密过程:另一方使用公钥解密签名成信息摘要,可以生产则确定是发送方发送;然后把已有的文件数据散列成摘要并比对摘要可以得知是否改动。
数字证书 :机构(CA)发放:CA用私钥加密被发放者的公钥和其他信息作为证书;验证时使用者用机构的公钥验证签名的证书,可以得到详细信息,包括公钥
对称加密
概念应用:发信方将明文(原始数据)和加密密钥一起经算法处理后变成密文发送,收信方使用加密用的密钥及相同算法解密得到明文。在这个过程只有一个密钥。
优缺:算法公开计算量小加密速度快效率高;使用同样钥匙安全性无法保证密钥管理困难(每次发送都要新的密钥)
3DES
概念与原理
属于对称加密(见前)三重数据加密,可以逆推;唯一密钥;相比DES增加密钥长度避免暴力破解(192位)。
参考链接https://blog.csdn.net/qq_27570955/article/details/52442092?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param
实际:加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文(加密:加解加;解密:解加解->逆向过程)
以加密为例:(若三段密钥相同则抵消等同于des算法)

密钥分成三组在每一次过程中的加密/解密使用。
原理
参考DES:两步:初始置换、逆置换。明文输入块64位(8个字节为1一个数据块)用密钥64位变成密文64位。
first:对数据进行分块和补位(NoPadding和ZerosPadding、PKCS5Padding方法
(1)初始置换:对数据按位重新组合,把输出分为L0、R0(前后)两部分。置换规则为58位到第1位,50到2;则最后为7;L0是58-8;R0是57-7;
(2)逆置换:进行16轮完全相同的运算(迭代),这些运算被称为函数f,在每一轮运算过程中数据与相应的密钥结合。得到L16和R16,以此作为输入快进行逆置换(初始置换的逆)得到最终密文输出块。
tips:迭代过程Ln = R(n - 1);Rn = L(n - 1)⊕f(Rn-1,kn-1):Kn是向n层输入的48位秘钥
---->函数f由四步运算构成:1.秘钥置换(Kn的生成,n=0~16);2.扩展置换;3.S-盒代替;4.P-盒置换。
详细:1.由64位秘钥产生16轮的不同48位子秘钥运用在每一轮的迭代中。(秘钥有8位奇偶校验位):把秘钥降至56,根据选择置换分成Cn和Dn两块,根据轮数循环左移位数(有规则->1或2)生成Cn+1和Dn+1,二者合并通过选择置换生成子秘钥Kn(48位).etc。最后一轮左右不交换直接合并在一起。第一轮置换表位PC-1(分成两块),之后都是PC-2(生成秘钥.)
2.把Rn从32位变成48位,为了生成与秘钥相同长度数据进行异或运行,以及提供更长结果便于在替代运算时可以压缩。扩展规则:中间32位,两边对称加
3.Rn扩展后与子秘钥Kn异或后结果作为S盒输入,把48位数据变为32。运算有8个S盒,故48位输入被分为8个6位分组。(过程:六位中首尾取出转为十进制作为s盒行剩下4位为列找对应)
4.32位经过P置换,映射后的32位与最初的L异或然后左右部分交换开始下一轮迭代。(函数

注:加密和解密里,秘钥使用顺序相反,其余相同(原理一样)。

模式:
(1)ECB电码本:发送单一数据块
(2)CBC密码分组链接:适合文本传输需要IV(初始化向量)实现相同明文不同密文,发送8个字符的数据块
(3)CFB密码反馈:适合聊天对话需要IV,可以发送单一字节数据块
(4)输出反馈:给数据保护需要IV
使用
参考:https://blog.csdn.net/tomcat_2014/article/details/78617282
【Java使用3DES加密解密的流程】
①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象
SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm);(算法为使用的方法名称)
②根据算法实例化Cipher对象。它负责加密/解密
Cipher c1 = Cipher.getInstance(Algorithm); 【算法/工作模式/填充模式】
③传入加密/解密模式以及SecretKey密钥对象,实例化Cipher对象
c1.init(Cipher.ENCRYPT_MODE, deskey); 解密:DECRYPT_MODE (也可以加随机源)
④传入字节数组,调用Cipher.doFinal()方法,实现加密/解密,并返回一个byte字节数组
c1.doFinal(src); (src为文本后使用getBytes方法)

DUKPT
简述:是一套密钥管理体系和算法,用于解决金融支付领域的信息安全传输中的密钥管理问题。(对对称密钥保证其安全性)
涉及概念:
BDK(Base Derivation Key):是体系的根密钥,一般是双倍或三倍长的T-DES密钥;
KSN(Key Serial Number):一串80bit的序号,由59bit的IKSN和21bit的EC组成。
PEK (PIN Encryption Key):加密PIN的密钥,一般为双倍长的T-DES密钥
注:KSN里,10位(40b)密钥标识(确认绑定BDK),5位(19)设备标识;5位(21)交易计数器(给EC借了一位)
实际
(金融机具)POS <—> (收单)Acquirer <—> (卡组织)EMV <—> (发卡行)Issuer
交易流程:
(第一个节点间为例)
初始化:Acquirer Host和POS交互相同的BDK,且POS中销毁BDK,仅保存由BDK分散出来的Initial PEK : Initial PEK = PEK_Derive(BDK, KSN with EC=0)
发生交易时,POS的处理:
1> Current KSN = IKSN and EC++(即EC为1)
2> Current PEK = PEK_Derive(Initial PEK, Current KSN)
3> Encrypted PIN = T-DES(Opr=Encrypt, Current PEK, Clear PIN)
4> 把Current KSN和Encrypted PIN放到交易报文里面,发送给Acquirer Host
收到交易时,Acquirer Host的处理:
1> Initial PEK = PEK_Derive(BDK, KSN with EC=0):每个EC对应一个key
2> Current PEK = PEK_Derive(Initial PEK, Current KSN)
3> Clear PIN = T-DES(Opr=Decrypt, Current PEK, Encrypted PIN)
4> 后续交易处理
交易提速:
在初始化POS提前算出EC=n的Current key(PEK)。这个n指定为21(ANSI规定),于是POS有21个寄存器(Future Key Register),则POS的初始化:
1> Acquirer给POS灌输BDK
2> Initial PEK = PEK_Derive(BDK, KSN with EC=0)
3>
(Future Key)1 = PEK_Derive(Initial PEK, KSN with EC=1) -> (Future Key Register)1
(Future Key)2 = PEK_Derive(Initial PEK, KSN with EC=2) -> (Future Key Register)2
……
(Future Key)21 = PEK_Derive(Initial PEK, KSN with EC=21) -> (Future Key Register)21
4> 为了保证密钥安全性,销毁BDK和Initial PEK
后续处理:
可以在交易完成后把Future Key Register的key更新成Future key22.以此类推
【22的计算:(Current Key)22 = PEK_Derive( (Current Key)1 , KSN with EC=22) -> (Future Key Register)1】……类似】
注:1.实际使用是用key异或pin或者mac的分散向量得到的密钥
2.PEK_DERIVE步骤:EC:树结构,每层bit的1个数含量不同,深度最大规定为10,即1含量超过10无效忽略;Acquirer可以根据1数量和初始密钥得到当前交易密钥
3.每次交易使用唯一生成的密钥,用完销毁(对于终端的密码设备安全要求略低于MK/SK和FIXed Key方法)
MK/SK
这是一种分级密钥体系。最高级别的加密秘钥位MK;上一级加密控制发布下一级,而MK发布和替换是收单行在安全房内采用安全的物理途径进行的。
MasterKey加密其他的密钥
SessionKey对通讯数据传输加解密的密钥
例(以POS机):在MK/SK密钥体系中,要求POS与收单平台预先同步MK(主密钥),随后支付交易终端通过签到等有效方式与收单系统同步SK(会话密钥),终端通过SK中的PIK(PIN Key)对个人识别码进行加密处理,使用SK中的MAK(MAC Key)对交易报文进行MAC运算,以保证交易不被篡改且完整。POS机传递消费信息用密码键盘的PIN加密密钥对用户的PIN进行加密,而这个加密秘钥是需要经常通过通讯网络进行及时更新(防止攻击者有足够时间生成秘钥的全部密文明文进行字典攻击),更新时通过MK加密后传递到终端,MK一直保存在终端得的安全模块,由银行下载,这样防止线路窃听。
区别于DUKPT:收到攻击要求删除秘钥,而DUKPT是可以拒绝使用。mksk是需要每次产生随机数得到密钥,而DUCKPT是由每次交易结果ksn计数加一,得到不同的密钥,从而保证密钥的安全性与唯一性。MKSK每次下载更新会有窃听风险。

补充

1.PIN BLOCK:
PIN按位异或主账号(一共8字节,12位,PIN不足右补F,主帐号取其右12位(不包括最右边的校验位),不足12位左补“0X00”。)
2.三级密钥体系: 
职责:
1->主密钥用于加密密钥交换密钥和数据密钥作本地存储;
2->密钥交换密钥用于加密数据密钥作网络传输;
3->数据密钥用于对数据进行加解密。
一些概念:
LMK:本地主密钥 ZMK:区域主密钥 TMK:终端主密钥
ZAK:区域认证密钥 ZPK:区域PIN密钥
TAK:终端认证密钥 TPK:终端PIN密钥

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值