暗号メッセージ構造を記述するための(適切に指定された)メタフォーマット/スキーマフォーマットはありますか?
「これはスキーム#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つは私の意見では一見の価値があります。
とにかく、何年も潜んで他人を養った後、最初にここに投稿します。これが少し役に立てば幸いです。
Cryptographic Message Syntax(CMS) をいくらか説明しているようです。 PKCS#7から緩やかに成長しました。