18
juin
2021
Protocole COAP pour “l'Internet des objets” - Étude du trafic
11:35

Protocole COAP pour “l'Internet des objets” - Étude du trafic

18 juin 2021 11:35

Avec wireShark удалось захватить два пакета нового сетевого протокола CoAP.

Suiterained Application Protocol (стандарт RFC 7252) предназначен для "Интернета вещей" и действует на основе UDP. Этот простой протокол позволяет общаться машинам между собой (M2M - machine to maÉchine).

Le premier package - une demande de périphérique au serveur 188.34.167.226:
Frame 13: 103 bytes on wire (824 bits), 103 bytes captured (824 bits) on interface 0
Ethernet II, Src: Keenetic_0f:40:ef (50:ff:20:0f:40:ef), Dst: router.lan (c4:ad:34:45:6a:fb)
Internet Protocol Version 4, Src: 192.168.0.73 (192.168.0.73), Dst: static.226.167.34.188.clients.your-server.de (188.34.167.226)
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 89
Identification: 0xfaca (64202)
Flags: 0x4000, Don't fragment
Time to live: 64
Protocol: UDP (17)
Header checksum: 0x1ad3 [validation disabled]
[Header checksum status: Unverified]
Source: 192.168.0.73 (192.168.0.73)
Destination: static.226.167.34.188.clients.your-server.de (188.34.167.226)
User Datagram Protocol, Src Port: 56911 (56911), Dst Port: coap (5683)
Source Port: 56911 (56911)
Destination Port: coap (5683)
Length: 69
Checksum: 0x8392 [unverified]
[Checksum Status: Unverified]
[Stream index: 1]
Constrained Application Protocol, Confirmable, POST, MID:41783
01.. .... = Version: 1
..00 .... = Type: Confirmable (0)
.... 1000 = Token Length: 8
Code: POST (2)
Message ID: 41783
Token: 398d7e264ddd9768
Opt Name: #1: Uri-Path: a
Opt Name: #2: Uri-Query: cid=4cef9cfe-af0c-11e8-8f23-df6cd39224ef
Opt Name: #3: Uri-Query: r=ru
[Response In: 59]
[Uri-Path: /a]

Deuxième package - Réponse du serveur

Frame 59: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on interface 0
Ethernet II, Src: router.lan (c4:ad:34:45:6a:fb), Dst: Keenetic_0f:40:ef (50:ff:20:0f:40:ef)
Internet Protocol Version 4, Src: static.226.167.34.188.clients.your-server.de (188.34.167.226), Dst: 192.168.0.73 (192.168.0.73)
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x40 (DSCP: CS2, ECN: Not-ECT)
Total Length: 61
Identification: 0xa920 (43296)
Flags: 0x4000, Don't fragment
Time to live: 52
Protocol: UDP (17)
Header checksum: 0x7859 [validation disabled]
[Header checksum status: Unverified]
Source: static.226.167.34.188.clients.your-server.de (188.34.167.226)
Destination: 192.168.0.73 (192.168.0.73)
User Datagram Protocol, Src Port: coap (5683), Dst Port: 56911 (56911)
Source Port: coap (5683)
Destination Port: 56911 (56911)
Length: 41
Checksum: 0x38a3 [unverified]
[Checksum Status: Unverified]
[Stream index: 1]
Constrained Application Protocol, Acknowledgement, 2.04 Changed, MID:41783
01.. .... = Version: 1
..10 .... = Type: Acknowledgement (2)
.... 1000 = Token Length: 8
Code: 2.04 Changed (68)
Message ID: 41783
Token: 398d7e264ddd9768
End of options marker: 255
[Request In: 13]
[Response Time: 0.049948917 seconds]
[Uri-Path: /a]
Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 2
Data (20 bytes)
Data: 3138382e3133342e38362e3232363a3536393131
[Length: 20]

Analyse des packages COAP:
Port de destination - 5683 , Protocole UDP .
Dans le premier, le pointeur est transmis ( uri-Query: cid=) во втором возвращается значение (Data).
Serveur static.226.167.34.188.clients.your-server.de (188.34.167.226)
La longueur du package de demande 89 octet, la réponse se compose de 41 octet.

Comme vous pouvez le voir, dans ce cas, la réponse contient une ligne sous la forme d'un ensemble de numéros hexadécimaux sans espaces:
31 38 38 2E 31 33 34 2E 38 36 2E 32 32 36 35 36 36 31 31 31 31 31
(Ces données numériques peuvent contenir, par exemple, des commandes de contrôle pour le périphérique final ou, au contraire, la télémétrie pour le serveur - les champs de battement sur les boutons activés / désactivés, les informations sur la température, la tension, le niveau de toner et le nombre de pages imprimées).

Quel est le protocole Internet CoAP

Le protocole COAP est un protocole HTTP simplifié fonctionnant via UDP.
Contrairement au HTTP, le protocole, qui est strictement textuel, COAP peut également transmettre dans la demande et la réponse et les données binaires.

Étant donné que l'UDP ne garantit pas la livraison, le contrôle de réception est mis en œuvre.

Afin d'économiser les ressources du canal de transmission, la COAP est souvent utilisée dans le protocole COP " Piggy-BackEd " réponse. (En logistique dans le domaine du transport de fret, ce terme "Piggyback" cela signifie Livraison de cargaison associée ). Ici, lors de la réception de la réception, les résultats de la demande sont immédiatement envoyés à la réception.

Для передачи текста в запросах и ответах используется кодировка UTF-8. Если в качестве запроса или полезной нагрузки используется строка, то её длина не превышает 270 байт. Что сделано для маломощных устройств (с малым объемом ОЗУ). Но некоторые теги могут повторяться по нескольку раз, чтобы передать всю необходимую информацию.

Sécurité : La réponse doit se conformer à la demande ( "Demande / réponse correspondant" ).
En cochon-backLa réponse ED à la réponse Toke devrait correspondre au jeton de requête.

Demande:
Demande

Répondre:
Réponse

Je note que le temps entre la demande et la réponse est petit - seulement 50 millisecondes.

Description des champs de demande et de réponse

Les options sont divisées en deux groupes de "critique" et "facultatif". La différence est de savoir comment les paramètres neRespaned sont traités par le point final:

  • Les paramètres facultatifs, si leur valeur n'est pas reconnue par le point final, doit être ignoré silencieusement.
  • Les paramètres non reconnus de la classe "critique" dans la demande correctement compilée, devraient provoquer l'erreur "mauvaise option". Cette réponse doit inclure une personne adaptée à une personne pour lire un message d'erreur.
  • Tous les messages "critiques" non reconnus dans la réponse doivent être rejetés avec le message sur le redémarrage
  • Les paramètres facultatifs dans la réponse du serveur, non reconnus par le client, doivent être ignorés silencieusement.

Les messages critiques et facultatifs du "obligatoire" doivent être distingués. Aucune option COAP n'est obligatoire. Toutes ces règles sont inventées pour le traitement des demandes et réponses non reconnues (ou non réalisées).

Non. Critique Nom Format Longueur, octet Description
1 Oui Type de contenu uint 0-2 Type de format de message
0 - text/plain; charset=utf-8
40 - application/link-format
41 - application/xml
42 - application/octet-stream
47 - application/exi
50 = application/JSON
2 Non MAX-AGE uint 0-4 60 secondes par défaut - Temps de réponse maximum en secondes de 0 à 2 ^ 32-1
3 Oui P.roxy-Uri string 1-270 Запрос к proxy, а не к серверу. Содержит URI для запроса к proxy, Proxy-UrJe peux être considéré comme une demande à Kesh.
4 Non ETag скрытый 1-8 Дополнительный "ярлык" для проверки безопасности. Ответ будет возвращен, только если проверка EtaLe serveur G a réussi. Lorsqu'il réussit, le serveur doit envoyer la réponse.
5 Oui uri-Host strIng 1-270 Hôte Internet - Demandes de serveur de serveur.
6 Localiseration-Path string 1-270 Аналогичен Uri-PaTh, mais peut être indiqué dans la demande plusieurs fois
7 Oui uri-PorT uint 0-2 Port Internet sur le serveur
8 Localiseration-Query string 1-270 Аналогичен Uri-Query, mais peut être indiqué dans la demande plusieurs fois
9 Oui uri-Path strIng 1-270 Internet est le chemin absolu du serveur vers la ressource
11 Oui Àken скрытый 1-8 Токен безопасности (в ответе и запросе TokEn doit correspondre)
12 Non Accepter uint 0-2 Types de données perçues par Client , voir le type de contenu
13 Oui Si-match скрытый 0-8 Предварительные условия. Ответ поступит только если выполнено условие (совместно с тэгом ETag) - est utilisé pour des requêtes compétitives afin de mettre à jour les données de plusieurs clients afin d'éviter la réécriture des données
15 Oui Uri-Query strIng 1-270 Le nom de la ressource de destination sur le serveur de rendez-vous. Peut contenir des symboles sauf. "Et" .. ". Les lettres de codage (russes) utilisant% ne sont pas utilisées. Seuls les symboles de l'UTF-8 sont impliqués.
21 Oui If-None-Match нет 0 Обратное условие If-Match. Ответ поступит только если условие не выполнено. См. If-MaTCH - La logique du travail est inverse.

Conclusions:

  1. Étudier l'Internet des objets en utilisant WIreShark открывает лишь наружную часть протокола (можно узнать IP адрес сервера, запрошенный URI ресурс и ответ - данные в закодированном или ином нечитаемом для человека виде).

  2. Bien que la demande et les données aient été décodées, il est impossible de comprendre la logique interne de l'application: pour savoir pourquoi l'appareil est destiné et qui est le propriétaire du domaine où les données ont été envoyées.

  3. Les packages que j'ai interceptés sont très courts - environ 40 à 89 octets de long. Les packages sont en groupes: demande-réponse.

  4. La période de temps entre les programmes (packages et groupes) dans la norme COAP peut être très importante - de plusieurs minutes à plusieurs mois, voire des années.

Protection de COAP à l'aide de DTLS

Si une sécurité et une protection accrue du contenu contre la lecture et le changement pendant la transmission sont nécessaires, avec COAP peut être utilisé DTL - реализация TLS поверх UDP. При использовании DTLS обеспечивается защита соединений и протоколов, а также самих данных.


Sources:



Publications connexes