Bundesamt für Sicherheit in der Informationstechnik

M 2.567 Auswahl vertrauenswürdiger Entwicklungswerkzeuge

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Beschaffer, Entwickler

Wenn Hardware oder Software für Systeme entwickelt werden, wird für gewöhnlich eine Reihe von Werkzeugen eingesetzt. Dabei handelt es sich oft um mächtige, grafikbasierte Entwicklungstools. Diese sind hochintegriert und verbinden Anforderungsmanagement, graphischen Entwurf und Codeerzeugung. Des Weiteren wird ihre Datenbasis als Grundlage automatisierter Tests verwendet. Durch die hohe Automatisierung der Prozessschritte von der Idee zum Code wird dem Werkzeug bzw. den Werkzeugen potenziell ein hoher Grad an Autonomie überlassen. Entwicklungswerkzeuge müssen daher fehlerfrei sein und dürfen nicht unerkannt manipuliert werden können, da sonst auch die Hardware und Software des Zielsystems gefährdet sind. Die Entwicklungswerkzeuge dürfen nicht dazu missbraucht werden können, verdeckte Hintertüren oder Schwachstellen einzubauen. Entwicklungswerkzeuge der Systemhersteller müssen entsprechend dem Schutzbedarf der zu entwickelnden Funktion bzw. der damit verarbeiteten Informationen qualifiziert werden. Hierzu hat der Hersteller dem Auftraggeber eine Tool-Richtlinie vorzulegen, welche die wesentlichen Sicherheitsanforderungen an das Werkzeug, die vorgesehene Tool-Landschaft, Einkaufsrichtlinien und die Qualifizierungsmaßnahmen enthält. Diese Tool-Richtlinie ist bei beschafften Werkzeugen von Seiten des Auftraggebers separat zu überprüfen.

Compiler übersetzten Codes, sie wandeln den Code einer Hochsprache in einen Zwischencode oder Maschinencode um. Ein Assembler ist auch als ein Compiler anzusehen, wobei er eine hardwarenahe Sprache in Maschinencode übersetzt. Cross-Compiler werden normalerweise verwendet, weil die Computerarchitektur des übersetzenden Systems nicht die gleiche ist, wie die des eingebetteten Systems. Dabei läuft der Compiler nicht auf dem Zielsystem, sondern beispielsweise auf einem Standard- PC und erzeugt dort den Code, der auf das Zielsystem geladen wird.

Die Programmiersprache Java spielt derzeit (Stand 2015) eine zunehmende Rolle bei der Softwareentwicklung. In Java geschriebene Programme werden zunächst in maschinenunabhängigen Bytecode übersetzt. Diesen interpretiert dann ein Interpreter auf der jeweiligen Hardware. Moderne Interpreter sind auf eine hohe Ausführungsgeschwindigkeit hin optimiert. Bei der modellbasierten Entwicklung werden Eigenschaften und Verhalten eines Systems mittels Modellierungssprachen oder graphischer Modelle spezifiziert. Aus diesen wird anschließend der Code in einer Hochsprache generiert. Mit Debuggern bzw. Cross-Debuggern werden Fehler in der Hardware und Software gefunden, wobei zum Debugging auch zusätzliche Hardware und Software eingesetzt werden kann. Einige Hersteller bieten für ihre Mikrocontroller komplette Pakete zur Systementwicklung an, sogenannte System Design Kits. Diese bestehen meist aus einer prototypischen Hardware mit Platine, Mikrocontroller, Schnittstellen und Peripherie sowie einem Software Development Kit, mit dem sich Software für diesen Mikrocontroller erstellen lässt. Das Software Development Kit läuft typischerweise auf einem handelsüblichen PC , der über eine Debug-Schnittstelle z. B. gemäß IEEE -Standard 1149.1 mit der Prototypenplatine verbunden wird.

Prüffragen:

  • Werden zur Entwicklung des Systems nur Werkzeuge mit nachgewiesenen Sicherheitseigenschaften verwendet?

  • Ist sichergestellt, dass die Werkzeuge nicht manipuliert werden können?

  • Werden an den Hersteller von Hardware oder Software hinreichende Anforderungen zur Sicherheit seiner Werkzeuge gestellt?

Stand: 15. EL Stand 2016

Hinweis zur Verwendung von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen hierzu erhalten Sie in unserer Datenschutzerklärung.

OK