# Rail Safe Transport Application

Rail Safe Transport Application (kurz RaSTA) ist ein Netzwerkprotokoll, welches auf die spezifischen Bedürfnisse von Systemen der Eisenbahnsignaltechnik zugeschnitten ist. Es erfüllt die Anforderungen an sicheren Nachrichtentransport nach DIN EN 50159. RaSTA kann ohne zusätzliche Maßnahmen nur in Kategorie 1 und 2 Netzen (gemäß EN 50159) eingesetzt werden. Aber auch in Bereichen mit ähnlichen Anforderungen kann es eingesetzt werden, wenn der Sicherheitscode entsprechend gewählt wird (vergleiche dazu Kapitel 5.3.11 Sicherheitscode in VDE V 0831-200). Zu den besonderen Eigenschaften von RaSTA gehört eine verlässliche Übertragung von Nachrichten ohne unbemerkten Paketverlust, die Überwachung der Kanalgüte mittels Heartbeat-Nachrichten, eine garantierte Zustellung von Nachrichten innerhalb eines Zeitfensters und die Nutzung mehrerer Transportkanäle zur Steigerung der Ausfallsicherheit. Im Kontext der Kommunikation innerhalb von sicherheitskritischer Infrastruktur wie dem Bahnbetrieb, helfen solche Eigenschaften die ordnungsgemäße Funktionsweise der Systeme nachzuweisen. RaSTA ist spezifiziert in der Vornorm DIN VDE V 0831-200.

## Anwendungsbereich

RaSTA soll den sicherheitstechnischen Anforderungen die an Systeme der Leit- und Sicherungstechnik im Bahnbetrieb gestellt werden entsprechen. Dort muss etwa eine hohe Ausfallsicherheit und die Vermeidung von unsicheren Fehlerzuständen gewährleistet werden. Im Zuge der Modernisierung elektronischer Stellwerke und der Installation digital ansteuerbarer Feldelemente, welche über IP-Netze verbunden sind, kann deren Kommunikation über das RaSTA-Protokoll erfolgen. RaSTA ist unabhängig vom Anwendungsprotokoll und kann daher prinzipiell auch in anderen Einsatzbereichen mit ähnlichen Anforderungen genutzt werden.
In Deutschland wird RaSTA für die Datenübertragung zwischen den sicherheitsrelevanten Systemen der Digitalen Leit- und Sicherungstechnik, insbesondere Digitalen Stellwerken und ETCS-Zentralen, verwendet.

## Einordnung in das Schichtenmodell

Das RaSTA-Protokoll gliedert sich in zwei Subprotokolle, welche zwei neue Schichten zwischen Anwendungsschicht und Transportschicht im TCP/IP-Referenzmodell bilden. Die erste dieser Schichten ist die Sicherheits- und Sendewiederholungsschicht, welche Nutzdaten von der Anwendungsschicht erhält und diese in eine eigene Protocol Data Unit (PDU) verpackt. Hauptaufgabe der Sicherheits- und Sendewiederholungsschicht ist es, die Integrität der zu versendenden Daten sicherzustellen und für eine erneute Übertragung der PDU zu sorgen, wenn der Erhalt dieser nicht vom empfangenden Client bestätigt wird. Die Sicherheits- und Sendewiederholungsschicht muss in einem gemäß EN 50126 als sicher geltendem Prozessor ausgeführt werden. Eine so erzeugte PDU wird an die zweite durch RaSTA definierte Schicht übergeben, die Redundanzschicht. Diese kann in einem als nicht sicher (im Sinne von Safety) geltendem Prozessor mehrere, physikalisch getrennte Transportkanäle zu einem logischen Transportkanal zusammenfassen. Damit wird die Ausfallsicherheit der Netzwerkverbindung im Falle der Störung eines einzelnen Kanals sichergestellt. Eine PDU der Redundanzschicht wird an die Transportschicht übergeben und dort mit einem Protokoll wie UDP oder Transport Layer Security auf allen verfügbaren Transportkanälen identisch übertragen. Wichtig ist dabei, dass die Transportschicht die Paketgrenzen der Nachricht erhält. Das Transmission Control Protocol kann somit, ohne weitere Maßnahmen, nicht verwendet werden. Leider beschreibt die RaSTA Vornorm die notwendige Transportadaption nicht. Somit ist zu befürchten, dass eine Verwendung von TCP als Transportschicht zu Inkompatibilitäten führt.

## Sicherheits- und Sendewiederholungsschicht

Die obere der beiden RaSTA-Schichten ist die Sicherheits- und Sendewiederholungsschicht. Sie nimmt Daten der Anwendungsschicht entgegen und stellt beim Versenden der Nachricht an einen anderen RaSTA-Client verschiedene Funktionen zur Verfügung. Dazu gehört die Identifikation des sendenden und empfangenden Clients durch Kennnummern, welche hier vergleichbar, aber unabhängig von IP-Adressen sind. Jedes Paket erhält eine Sequenznummer, durch die das Paket identifizierbar ist und so einem empfangenden Client erlaubt wird, den Erhalt des Pakets zu bestätigen. Bleibt eine Bestätigung aus, wird das fehlende Paket erneut übertragen. Im Header der PDU werden außerdem Zeitstempel mitgeschickt, die es erlauben die Paketumlaufzeit und das Alter eines Paketes zu bestimmen. Wird das maximal akzeptierte Alter einer Nachricht (je nach Konfiguration beispielsweise eine Sekunde) überschritten, wird die Nachricht für ungültig erklärt. Durch den ständigen Austausch von Heartbeat-Nachrichten wird zudem die Qualität der Verbindung überwacht. Das Ergebnis dieser Überwachung kann zu Diagnosezwecken an die Anwendungsschicht gemeldet werden. Das gilt auch für Fehlerzähler, welche etwa das Eintreffen unplausibler Sequenznummern protokollieren. Fehler in der Übertragung von RaSTA-Nachrichten können zum Abbau der Verbindung führen. An die eigentlichen Nutzdaten wird abschließend eine Prüfsumme angehängt, die die Integrität der Nachricht sicherstellen soll.

### Paketformat

Eine PDU der Sicherheits- und Sendewiederholungsschicht hat den folgenden Aufbau:

#### Nachrichtenlänge

    2 Byte breit. Enthält die Anzahl der Byte der gesamten PDU.

#### Nachrichtentyp

    2 Byte breit. Enthält die dem entsprechenden Nachrichtentyp zugeordnete Identifikationsnummer. Mögliche Nachrichtentypen sind Verbindungsanfrage, Verbindungsantwort, Sendewiederholungsanfrage, Sendewiederholungsantwort, Trennaufforderung, Lebenszeichen, Daten und Erneut übertragene Daten.

#### Empfängerkennung

    4 Byte breit. Innerhalb eines RaSTA-Netzwerks eindeutige Kennnummer des empfangenden Clients.

#### Absenderkennung

    4 Byte breit. Innerhalb eines RaSTA-Netzwerks eindeutige Kennnummer des sendenden Clients.

#### Sequenznummer

    4 Byte breit. Nummer einer Nachricht die mit jeder folgenden Nachricht inkrementiert wird.

#### Bestätigte Sequenznummer

    4 Byte breit. Nummer einer Nachricht deren Erhalt mit der aktuellen Nachricht bestätigt wird.

#### Zeitstempel

    4 Byte breit. Zeitstempel des Absenders der Nachricht.

#### Bestätigter Zeitstempel

    4 Byte breit. Zeitstempel der bestätigten Nachricht.

#### Nutzdaten

    Variable Breite. Nutzdaten können sowohl Kontrollnachrichten des RaSTA-Protokolls selbst, als auch übertragene Daten der Anwendungsschicht sein.

#### Sicherheitscode

    0, 8 oder 16 Byte breit. Prüfsumme, die die Integrität der PDU sicherstellen soll. Dabei wird die PDU mit dem MD4-Algorithmus gehasht, bei dessen Anwendung zuvor der Initialisierungsvektor durch einen dem RaSTA-Netzwerk zugeordneten Code ersetzt werden kann. Der Hashwert kann vollständig für den Sicherheitscode verwendet werden (16 Byte), es kann nur die untere Hälfte des Hashwertes verwendet werden (8 Byte) oder es kann auf einen Sicherheitscode verzichtet werden (0 Byte).

## Redundanzschicht

Die untere der beiden RaSTA-Schichten ist die Redundanzschicht. Sie nimmt Daten der Sicherheits- und Sendewiederholungsschicht entgegen und versendet die Nachrichten über Redundanzkanäle. Ein Redundanzkanal wird aus einem oder mehreren Transportkanälen gebildet, etwa mehrere physikalisch getrennte Netzwerkverbindungen, mit denen Daten dann beispielsweise per UDP ausgetauscht werden können. Eine PDU der Redundanzschicht wird auf allen verfügbaren Redundanz- und Transportkanälen identisch übertragen. Dies erhöht die Robustheit der gesamten RaSTA-Verbindung gegenüber Fehlern auf einzelnen Transportkanälen.

### Paketformat

Eine PDU der Redundanzschicht hat den folgenden Aufbau:

#### Länge

    2 Byte breit. Enthält die Länge der gesamten Protokolldateneinheit.

#### Reserve

    2 Byte breit. Reserviert für zukünftige Protokollerweiterungen.

#### Sequenznummer

    4 Byte breit. Eine der Redundanzschicht-PDU zugeordnete Sequenznummer, die mit jeder folgenden Nachricht inkrementiert wird.

#### Nutzdaten

    Variable Breite. Zu übertragende Nutzdaten der Sicherheits- und Sendewiederholungsschicht.

#### Prüfcode

    0, 2 oder 4 Byte breit. Prüfcode um Übertragungsfehler entdecken zu können. Wird nach dem CRC-Verfahren berechnet. Kann unter Verwendung unterschiedlicher Polynome berechnet werden (2 oder 4 Byte), oder nicht verwendet werden (0 Byte).

## Sicherheitsaspekte

Während RaSTA einige Mechanismen bietet, die die Betriebssicherheit erhöhen und den reibungslosen Ablauf sicherstellen sollen, bietet es keine Garantien hinsichtlich der IT-Sicherheit gegen böswillige Angreifer. Der einzige Aspekt, der hier zum Tragen kommen kann, ist der Sicherheitscode auf der Sicherheits- und Sendewiederholungsschicht. Wird der dort verwendete Code, der den Initialisierungsvektor für die MD4-Hashfunktion ersetzt, geheim gehalten, ähnelt dies einem Message Authentication Code (MAC) nach dem secret IV- oder secret prefix- Verfahren. Ein solcher MAC soll die Authentizität der Nachrichten sicherstellen und eine mutwillige Manipulation verhindern. Da eine MAC-Konstruktion wie diese allerdings nicht dem heutigen Stand der Technik entspricht und es sich bei MD4 um eine veraltete und als unsicher geltende Hashfunktion handelt, sollte RaSTA durch andere Protokolle, wie IPsec geschützt werden. Im europäischen Standard für Stellwerkstechnik EULYNX erfolgt diese Absicherung seit Baseline 4 über TLS.