DUKPT(derived unique key per Transaction) 是被ANSI定义的一套密钥管理体系和算法,用于解决金融支付领域的信息安全传输中的 密钥管理问题,应用于对称密钥加密MAC,PIN等数据安全方面。保证每一次交易流程使用唯一的密钥,采用一种不可逆的密钥转换算法, 使得无法从当前交易数据信息破解上一次交易密钥。要求收单行与终端必须同步支持该项密钥管理技术。由交易发起端点(S-TRSM,如POS) 与交易接收端点(R-TRSM,如收单行)两部分组成。注:TRSM(Tamper-Resistant Security Module)是一个具备阻止攻击能力的安全模块。 TRSM具有抵御攻击能力。 特点和工作原理 唯一性: Dukpt 为每个交易生成一个唯一的加密密钥,确保即使相同的主密钥在不同交易中使用,也能产生不同的派生密钥。 分散: Dukpt 使用一种称为分散的技术,通过将密钥按照一定规则扩展为不同的密钥,以增加密钥的安全性。 保密性: Dukpt 通过不存储或传输主密钥的完整值,而是使用一个初始的主密钥派生出每个交易的密钥,从而增加了密钥的保密性。 动态变化: Dukpt 可以动态地变化,以适应不同的交易条件。这使得攻击者更难预测下一个派生密钥。 逆推困难性: 由于 Dukpt 的分散和动态性,逆推派生密钥以获取原始主密钥是非常困难的。 用途: Dukpt 主要用于保护磁条卡数据、PIN(个人身份号码)加密和其他金融交易中的密钥管理。 DUKPT是由基础密钥BDK和KSN组成,其中BDK是基础主密钥,它派生出加密安全模块的初始密钥。初始密钥和KSN一起装入加密模块, 保证每个终端的主密钥都不重复。 BDK(Base Derivation Key):DUKPT密钥体系的根密钥,一般是一个双倍长或三倍长的T-DES密钥。 KSN(Key Serial Number):一串80bit的(20 hexadecimal digits)序号,由59bit的IKSN(Initial Key Serial Number)和 21bit的EC(Encryption Counter)组成。 PIN 卡片密码。 PEK(PIN Encryption Key): 加密PIN的密钥咯!一般是双倍长的T-DES密钥。 ------------------------------------------------------------------------------------------------------------------------- KSN KSN(Key Serial Number)是用于标识加密设备和交易的一种格式化序列号。KSN通常与加密操作一起使用,特别是在金融交易领域, 用于生成派生密钥和跟踪加密设备的使用情况。以下是一个典型的 KSN 格式: KSN的组成如下:以下位数是16进制的字符(1-F) (1)密钥标识10位(基础派生密钥标识9位+子密钥标识1位) (2)设备标识5位:其中最右边的一个二进制位给下面第三部分使用(只有二进制的19位)。 (3)交易计数标识5位:即二进制的20位,但它占用了设备标识的一个二进制位其实是二进制的21位。 KSN 的生成和使用是为了追踪和管理加密设备,确保其唯一性和完整性。在金融交易中,KSN 通常用于生成派生密钥,以确保每个交 易都使用一个唯一的密钥,提高加密的安全性。 ------------------------------------------------------------------------------------------------------------------------- BDK BDK(Base Derived Key)是用于派生其他密钥的基础密钥。在金融行业和加密领域中,BDK通常是一个16字节(128位)的密钥,用于生成其 他密钥,如PIN加密密钥、MAC密钥等。BDK的安全性对整个加密系统至关重要,因为它作为生成其他关键的基础。 BDK的用途通常涉及到以下方面: PIN加密密钥派生: BDK用于派生生成用于加密和解密用户PIN的密钥。这确保了在金融交易中对用户PIN的安全处理。 MAC密钥派生: 用于生成消息认证码(MAC)密钥,以验证数据的完整性和认证数据的发送方。 其他密钥派生: BDK也可以用于生成其他类型的密钥,具体取决于加密系统的要求。 通常,BDK是在加密设备的安全环境中生成和存储的,以确保其机密性。密钥派生函数将BDK与其他参数结合使用,生成用于特定加密目的的派生密钥。 这有助于提高密钥的安全性,因为实际用于加密的密钥是通过派生而来的,而不是直接使用BDK。 BDK在加密系统中扮演着关键的角色,它的安全性直接影响整个加密系统的强度。因此,保护和管理BDK是确保整个加密体系安全的一个重要方面。 ------------------------------------------------------------------------------------------------------------------------- IPEK IPEK(Initial Pin Encrypt Key)是金融领域中用于加密和解密用户个人身份号码(PIN)的密钥。IPEK通常是从BDK(Base Derivation Key)派生而来,通过一个特定的密钥派生函数生成。 IPEK通常是一个16字节(128位)的密钥,其格式为: B BBBBB 1 CCCCC 00000000000 B(Header): 一个字节,表示密钥来源的设备类型。 C(Device ID): 五个字节,表示设备标识,用于标识具体的加密设备。 ------------------------------------------------------------------------------------------------------------------------- DUKPT(Derived Unique Key Per Transaction)是一种**一次一密(One-time Key)**的加密机制,常用于支付终端(POS 机、ATM)和安全支付系统,以确保每笔交易都有唯一的密钥,从而降低密钥泄露带来的风险。 在 DUKPT 机制中,密钥的使用(Key Usage)可以分为以下几种主要类型: Key Type 用途 描述 BDK(Base Derivation Key) 基础派生密钥 最高级别的密钥,存储在安全 HSM 中,POS 设备不会直接使用该密钥 IPEK(Initial Pin Encryption Key) 初始密钥 由 BDK 生成,存储在 POS 设备中,用于派生后续的密钥 Data Encryption Key (DEK) 数据加密密钥 用于加密磁条数据、EMV 交易数据等 PIN Encryption Key (PEK) PIN 加密密钥 用于加密 PIN(如银行卡密码) MAC Key (Message Authentication Code Key) 消息认证密钥 用于计算 MAC(消息完整性验证) Session Key 会话密钥 每次交易生成的唯一密钥 📌 3. 关键密钥用途(Key Usage) IPEK(初始 PIN 加密密钥) 由 BDK 通过 KSN(Key Serial Number)派生 用于派生 Data Key、PIN Key、MAC Key 只能用于生成派生密钥,不可直接加密数据 Data Encryption Key (DEK) 用于加密敏感数据(如信用卡磁道信息、交易数据) 通常采用 Triple DES 或 AES 不能用于加密 PIN PIN Encryption Key (PEK) 用于加密用户输入的 PIN 仅用于 PIN 加密,不能加密其他数据 符合 ANSI X9.8 或 ISO 9564 PIN 加密标准 MAC Key 计算交易消息的 MAC,以确保完整性和防篡改 常见算法:DUKPT-MAC、HMAC-SHA256 不能用于加密数据或 PIN Session Key 交易过程中动态生成 只能用于当前交易,交易结束后即失效 每笔交易唯一 📌 4. DUKPT 关键工作机制 POS 设备内置 IPEK(从 BDK 派生) 每次交易时,使用 KSN(Key Serial Number)计算新的会话密钥 使用会话密钥加密 PIN / 交易数据 / MAC 加密数据发送到服务器,服务器使用 BDK 逆向解密 📌 5. 总结 DUKPT 机制保证每笔交易都有唯一密钥,防止密钥重用攻击。 不同 Key Usage 具有不同用途,不能互相替代: PIN Key 只能加密 PIN Data Key 只能加密数据 MAC Key 只能用于消息完整性验证 POS 设备永远不会存储 BDK,只存储 IPEK,以提高安全性。 🚀 DUKPT 机制广泛用于支付系统(PCI-DSS 认证)确保交易安全,减少密钥泄露风险!