我很好奇直接在 COBOL/DB2 代码中处理加密或散列而不依赖外部安全管理器 (ESM) 的合法用例。
许多人可能知道,IBM 大型机上的大部分安全功能都是通过 ESM(例如 CA-ACF2、IBM RACF 或 CA-Top Secret)来实现的。它们控制对各种资源的访问,例如数据集、事务和子系统,包括 CICS、DB2、IMS 和 TSO。
例如,通常不需要通过 COBOL 验证密码哈希,因为当此类功能已通过上述 ESM 进行管理时,创建临时用户系统是多余的。
根据我的经验,加密、解密和散列的过程不是在主机内执行的,而是在之前或之后的外部系统(例如 PCI-DSS)中执行,因此,主机上的应用程序不与加密的交互或直接散列数据。
在线搜索“COBOL 加密”时,您会发现各种临时加密例程,在我看来,这些例程在实现和设计级别上都表现出较差的实践。
当然,有一些 ICSF 实用程序可以通过 COBOL CALL 语句访问来加密、解密或散列数据,但是任何人都可以想象这种方法是明智的用例,并且最佳实践不是依赖 ESM 或将这些任务委托给外部系统?
一些有效的用例:-
对信用卡号进行哈希处理,以便通过单张卡进行报告并公开该号码(许多国家/地区的法律要求)。
应用程序(例如证券交易平台)可能有许多外部用户,您需要管理密码访问而不将每个客户定义为 RACF。