是否有任何用于加密的元格式?

信息安全 加密 电子签名 协议 asn1
2021-08-27 06:30:10

是否有任何(正确指定的)元格式/模式格式来描述加密消息结构?

我正在寻找一种方法来描述格式(某些通道可能需要对称/非对称编码或签名),而不仅仅是“这使用方案 #5 - 有关更多信息,请参阅文档”。

让它计算机可读可以让我做一些有趣的修补 - 例如以编程方式推断必须预先共享哪些信息才能使方案工作,推断消息的哪些部分具有完整性,生成方案属性的报告(包括错误由于填充不足等)-但对我来说,拥有一种表达事物的语言也让我感觉更整洁。


作为说明性(不是实际语法!)示例,例如:

  • random-iv[128] + CTR[AES](shared-secret[256], iv, message) - IV,后跟 AES-256-CTR 编码消息(未指定共享秘密)

  • message + your-key[2048].public + RSA[DECODE](your-key[2048], random-padding[256] + SHA256(message)) - 消息后跟公钥和 SHA-256 哈希的 RSA 签名

  • HMAC[SHA256]({0x123456...}, message) + message - HMAC 首先(秘密作为文字),与消息连接

  • RSA[ENCODE]({0x...my-key-literal}, random-iv[128] + random-key[256]) + CTR[AES](random-key[256], random-iv[128], message) - 指定我的加密密钥,并使用 AES-256 随机密钥的消息

如果没有任何硬编码值(例如,HMAC 秘密不是文字),那么它将描述通用方案。

使用硬编码值,您可以描述特定通道上预期的数据,甚至可以验证它是通用方案的子集。


这有点类似于结构化数据的 ASN.1(它可以让您描述二进制流的内部结构,甚至与 PER 之类的东西结合使用时的按位布局),但可能更像是方程/函数表达式,带有密码原语和未知数等。

似乎应该是可能的,但我找不到任何东西。是否存在用于加密的元格式?

2个回答

这不完全符合您的要求,但在我看来,至少这两个值得一看。

  • 有一个描述安全协议的通用和抽象符号,它被用来描述相当复杂的东西,例如 Kerberos。Needham-Schröder 协议也可以这样表达。再说一次,不是你真正想要的,但让我想到了。
  • 在更基础的层面上,我建议您看一下Cryptol语言,它试图使加密的实现更接近于教科书中的内容。然而,Cryptol 的重点更多是描述功能而不是消息。

无论如何,在多年潜伏和以他人为食后,第一次在这里发帖。希望这个对你有帮助。

听起来您有点描述Cryptographic Message Syntax (CMS)它松散地从 PKCS#7 发展而来。