Zum Hauptinhalt springen

1. Einführung

  1. Einführung

Es gibt einen verstärkten Fokus auf kleine, eingeschränkte Geräte, die das Internet der Dinge (IoT) bilden. Einer der Standards, die aus diesem Prozess hervorgegangen sind, ist "Concise Binary Object Representation (CBOR)" [STD94]. CBOR erweiterte das Datenmodell der JavaScript Object Notation (JSON) [STD90], indem es binäre Daten sowie andere Änderungen zuließ. CBOR wurde von mehreren IETF-Arbeitsgruppen, die sich mit der IoT-Welt befassen, als Methode zur Codierung von Datenstrukturen übernommen. CBOR wurde speziell entwickelt, um sowohl in Bezug auf die transportierten Nachrichten als auch auf die Implementierungsgröße klein zu sein und einen schemafreien Decoder zu haben. Es besteht die Notwendigkeit, Nachrichtensicherheitsdienste für IoT bereitzustellen, und die Verwendung von CBOR als Nachrichtencodierungsformat ist sinnvoll.

Die COSE-Kernspezifikation besteht aus zwei Dokumenten. [RFC9052] enthält die Serialisierungsstrukturen und die Verfahren zur Verwendung der verschiedenen kryptografischen Algorithmen. Dieses Dokument bietet einen ersten Satz von Algorithmen zur Verwendung mit diesen Strukturen.

1.1. Anforderungsterminologie

Die Schlüsselwörter "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", und "OPTIONAL" in diesem Dokument sind so zu interpretieren, wie in BCP 14 [RFC2119] [RFC8174] beschrieben, wenn und nur wenn sie in Großbuchstaben erscheinen, wie hier gezeigt.

1.2. Änderungen gegenüber RFC 8152

  • Die Abschnitte, die sich mit bestimmten Algorithmen befassen, wurden extrahiert und in dieses Dokument aufgenommen. Die Abschnitte, die sich mit Struktur und allgemeinen Verarbeitungsregeln befassen, befinden sich in [RFC9052].

  • Textklarstellungen und Änderungen in der Terminologie wurden vorgenommen.

  • Alle Details zu Gegensignaturen wurden entfernt und in [COUNTERSIGN] platziert.

1.3. Dokumentterminologie

In diesem Dokument verwenden wir die folgende Terminologie:

Byte: Ein Synonym für Oktett.

Constrained Application Protocol (CoAP): Ein spezialisiertes Webübertragungsprotokoll für den Einsatz in eingeschränkten Systemen. Es ist in [RFC7252] definiert.

Authenticated Encryption (AE) algorithms [RFC5116]: Verschlüsselungsalgorithmen, die neben dem Verschlüsselungsdienst eine Authentifizierungsprüfung des Inhalts bieten. Ein Beispiel für einen AE-Algorithmus, der in COSE verwendet wird, ist AES Key Wrap [RFC3394]. Diese Algorithmen werden für die Schlüsselverschlüsselung verwendet, aber Authenticated Encryption with Associated Data (AEAD) Algorithmen wären vorzuziehen.

AEAD algorithms [RFC5116]: Verschlüsselungsalgorithmen, die denselben Authentifizierungsdienst für den Inhalt bieten wie AE-Algorithmen und es auch ermöglichen, zugehörige Daten, die nicht Teil des verschlüsselten Körpers sind, in den Authentifizierungsdienst einzubeziehen. Ein Beispiel für einen AEAD-Algorithmus, der in COSE verwendet wird, ist AES-GCM [RFC5116]. Diese Algorithmen werden für die Inhaltsverschlüsselung verwendet und können auch für die Schlüsselverschlüsselung verwendet werden.

Der Begriff "byte string" wird für Folgen von Bytes verwendet, während der Begriff "text string" für Folgen von Zeichen verwendet wird.

Die Tabellen für Algorithmen enthalten die folgenden Spalten:

  • Ein Name für den Algorithmus zur Verwendung in Dokumenten.

  • Der Wert, der für den Algorithmus auf der Leitung verwendet wird. Ein Ort, an dem dies verwendet wird, ist der Algorithmus-Header-Parameter einer Nachricht.

  • Eine kurze Beschreibung, damit der Algorithmus beim Scannen der IANA-Registrierung leicht identifiziert werden kann.

Abhängig von den Algorithmen können zusätzliche Spalten in einer Tabelle vorhanden sein.

1.4. CDDL-Grammatik für CBOR-Datenstrukturen

Als COSE ursprünglich geschrieben wurde, war die Concise Data Definition Language (CDDL) [RFC8610] noch nicht in einem RFC veröffentlicht worden, sodass sie nicht als Datenbeschreibungssprache verwendet werden konnte, um die von COSE verwendeten CBOR-Datenstrukturen normativ zu beschreiben. Aus diesem Grund werden die hier definierten CBOR-Datenobjekte in Prosa beschrieben. Zusätzliche (nicht normative) Beschreibungen der COSE-Datenobjekte werden in einer Teilmenge von CDDL bereitgestellt, die in [RFC9052] beschrieben ist.

1.5. Beispiele

Ein GitHub-Projekt wurde unter [GitHub-Examples] erstellt, das eine Reihe von Testbeispielen enthält. Jedes Beispiel befindet sich in einer JSON-Datei, die die Eingaben enthält, die zum Erstellen des Beispiels verwendet wurden, einige der Zwischenwerte, die zum Debuggen verwendet werden können, und die Ausgabe des Beispiels. Die Ergebnisse werden sowohl im Hexadezimal- als auch im CBOR-Diagnose-Notationsformat codiert.

Einige der Beispiele sind als Fehlertestfälle konzipiert; diese sind in der JSON-Datei eindeutig als solche gekennzeichnet.