DE112020000694T5 - Erzeugung und ausführung von sicheren containern - Google Patents

Erzeugung und ausführung von sicheren containern Download PDF

Info

Publication number
DE112020000694T5
DE112020000694T5 DE112020000694.8T DE112020000694T DE112020000694T5 DE 112020000694 T5 DE112020000694 T5 DE 112020000694T5 DE 112020000694 T DE112020000694 T DE 112020000694T DE 112020000694 T5 DE112020000694 T5 DE 112020000694T5
Authority
DE
Germany
Prior art keywords
layer
container
encrypted
secure
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020000694.8T
Other languages
English (en)
Inventor
Utz Bacher
Reinhard Buendgen
Peter Morjan
Janosch Frank
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020000694T5 publication Critical patent/DE112020000694T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order

Abstract

Ein durch einen Computer ausgeführtes Verfahren zum Erzeugen eines sicheren Software-Containers kann bereitgestellt werden. Das Verfahren umfasst das Bereitstellen eines ersten mehrschichtigen Software-Container-Images, das Umsetzen von allen Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger, wobei der Datenträger einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist, das Verschlüsseln eines jeden Blocks des Satzes von Blöcken von einem Teil der Schichten und das Speichern eines jeden verschlüsselten Satzes der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist, so dass ein sicherer verschlüsselter Software-Container erzeugt wird.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft allgemein ein sicheres Datenverarbeitungs- und insbesondere ein durch einen Computer ausgeführtes Verfahren zum Erzeugen eines sicheren Software-Containers. Die Erfindung betrifft des Weiteren ein zugehöriges sicheres Containersystem zum Erzeugen eines sicheren Software-Containers sowie ein Computerprogrammprodukt.
  • HINTERGRUND
  • Dieser Tage ist Cloud-Computing unverändert eines der beherrschenden Themen in der IT-(Informationstechnologie-)Branche. Einzelpersonen, kleine und mittelgroße Firmen ebenso wie große Unternehmen lagern Datenverarbeitungsaufgaben weiterhin an Cloud-Computing-Provider aus, die große Cloud-Computing-Zentren betreiben. Andererseits ist eines der größten Anliegen in der IT-Branche die Datensicherheit. Daher ist Sicherheit in privaten Datenverarbeitungsumgebungen, d.h. in Rechenzentren von Unternehmen, ein wichtiges Thema, so dass die Bedeutung der Daten- und Computersicherheit in Cloud-Computing-Umgebungen in großen Unternehmen zur Chefsache gemacht wird.
  • Einige der Datensicherheitsfragen - insbesondere angesichts der neuen staatlichen Datenschutzvorschriften wie der GDPR (General Data Protection Regulation bzw. Datenschutz-Grundverordnung der Europäischen Union) - können durch Verschlüsselung von relevanten Daten während der Übertragung der Daten über öffentliche Netzwerke - z.B. das Internet - und/oder bei der Speicherung der Daten in Speichereinheiten angegangen werden. Wenn die Daten jedoch verarbeitet werden müssen, sind sowohl die Daten als auch die Programme für Administratoren der Cloud-Computing-Zentren mitunter mehr oder weniger zugänglich. Dies kann als eine offene Tür für Verstöße gegen die Datensicherheit betrachtet werden.
  • Bei einem Versuch, den möglichen Konflikt zwischen einer höheren Nutzung von Cloud-Computing-Ressourcen einerseits und höheren Anforderungen an die Datensicherheit und den Datenschutz andererseits anzugehen, werden gesicherte virtuelle Maschinen auf gesicherten Datenverarbeitungsplattformen verwendet, z.B. in Form einer vertrauenswürdigen Datenverarbeitungsumgebung, die Hardwaresicherheitsmodule (HSM) verwendet und eine Verschlüsselung von Daten sowie Anwendungen und virtuelle Maschinen (VM) in engen Grenzen zulässt.
  • Auf der anderen Seite schreitet auch die Technologie virtueller Maschinen voran, und eine der häufig verwendeten aktuellen Technologien ist das „Container-Computing“, das im Grunde als eine Mehrzahl von Anwendungen in betriebssystembasierten Scoping-Sandboxen ohne den ganzen Aufwand eines Betriebssystems innerhalb einer jeden virtuellen Maschine für jeden Container betrachtet werden kann. Somit können viele allgemeine Dienste, die üblicherweise von einem Betriebssystem und zugehöriger Middleware bereitgestellt werden, von verschiedenen Containern in einem Betriebssystem gemeinsam genutzt werden. Dies kann jedoch zur Folge haben, dass Daten und Programme in Containern, unter dem Aspekt der Sicherheit, nicht gleich verwaltet werden können wie andere IT-Ressourcen (wie virtuelle Maschinen).
  • Eine der am häufigsten verwendeten Plattformen für Software-Container ist die Docker-Engine von Docker Inc. In Linux-Umgebungen wurde sie schnell ein Standard zum Verpacken von Mikroservice-Anwendungen, wenngleich die Technologie nicht nur auf Mikroservices beschränkt ist. Im Grunde kann sie zum Verpacken von gebrauchsfertigen kommerziellen und monolithischen Anwendungen verwendet werden, um Isolations- und Portabilitätseigenschaften bereitzustellen.
  • In diesem Kontext wurde eine Reihe von Veröffentlichungen vorgenommen: Das Schriftstück US 2018/0309747 A1 offenbart Computersysteme und Verfahren, bei denen ein gleichzeitig mit einem Sicherheitsmodul ein Agent-Sotware-Execitive-Modul ausgeführt wird, das bei seiner erstmaligen Ausführung einen Agenten-API-Schlüssel von einem Benutzer erhält. Dieser Schlüssel wird einem Rasterdatenverarbeitungssystem mitgeteilt. Ein Agentenidentitätstoken, im Allgemeinen von einem kryptografischen Tokenerzeugungsprotokoll, wenn der API-Schlüssel gültig ist, wird von dem Raster empfangen und in einem sicheren Datenspeicher gespeichert, der zu dem Agentenverantwortlichen gehört. Informationen, die die Integrität des Agentenverantwortlichen bewerten, werden unter Verwendung von Agenten-Selbstüberprüfungsfaktoren erfasst.
  • Andererseits ist aus dem Schriftstück WO 2018/007213 A1 ein Verfahren zum sicheren Verwalten eines Docker-Images bekannt, das einen sicheren Speicherbereich aufweist, der mit einem Schlüsselsatz verschlüsselte Daten speichert. Das Docker-Image weist einen sicheren Treiber auf, und das Verfahren umfasst eine Reihe von Schritten: (i) der sichere Treiber ruft den Schlüsselsatz aus einem vertrauenswürdigen Speicher nur ab, wenn ankommende, dem sicheren Treiber bereitgestellte Identifikationsdaten mit vorhandenen Identifikationsdaten übereinstimmen, (ii) der sichere Treiber greift auf den sicheren Speicherbereich zu und entschlüsselt die Daten unter Verwendung des Schlüsselsatzes, und (iii) der sichere Treiber sendet die Daten außerhalb des Docker-Images.
  • Jedoch klafft nach wie vor eine Lücke zwischen der eleganten Verwaltung von Software-Containern einerseits und Sicherheitsaspekten andererseits. Somit ist es eine Zielsetzung des vorgeschlagenen Konzepts, eine erhöhte Sicherheit für Daten und Anwendungen in Software-Containern bereitzustellen.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung kann ein durch einen Computer ausgeführtes Verfahren zum Erzeugen eines sicheren Software-Containers bereitgestellt werden. Das Verfahren kann das Bereitstellen eines ersten mehrschichtigen Software-Container-Images und das Umsetzen von allen Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger umfassen. Der Datenträger kann einen Satz von Blöcken aufweisen, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweisen kann. Das Verfahren kann des Weiteren das Verschlüsseln eines jeden Blocks des Satzes von Blöcken von einem Teil der Schichten, das Speichern eines jeden verschlüsselten Satzes der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten umfassen, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist. Auf diese Weise kann ein sicherer verschlüsselter Software-Container erzeugt werden.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung kann ein sicheres Containersystem zum Erzeugen eines sicheren Software-Containers bereitgestellt werden. Das sichere Containersystem kann eine Empfangseinheit, die so ausgelegt ist, dass sie ein erstes mehrschichtiges Software-Container-Image empfängt, eine Umsetzungseinheit, die so ausgelegt ist, dass sie alle Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger umsetzt, wobei der Datenträger einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist, ein Verschlüsselungsmodul, das so ausgelegt ist, dass es einen jeden Block des Satzes von Blöcken von einem Teil der Schichten verschlüsselt, und eine Speichereinheit, die so ausgelegt ist, dass sie einen jeden verschlüsselten Satz der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten speichert, aufweisen, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist. Somit kann dem sicheren Containersystem ermöglicht werden, einen sicheren verschlüsselten Software-Container zu erzeugen.
  • Das vorgeschlagene, durch einen Computer ausgeführte Verfahren zum Erzeugen eines sicheren Software-Containers kann mehrere Vorteile und technische Wirkungen bieten:
  • Das vorgeschlagene Konzept erfüllt mindestens drei kritische Anforderungen an die Daten- und Anwendungssicherheit. Durch die Verwendung von Techniken, die den Inhalt von virtuellen Maschinen einschließlich ihrer Speicher vor berechtigten Administratoren (selbst Hypervisor-Administratoren) verbergen, wird erstens erreicht, dass aus Sicht eines Container-Hosts und seines berechtigten System-Administrators niemand den Inhalt des Images des Containers, d.h. die Dateien des Software-Containers, einsehen und diesen verstehen kann. Auch kann ein Zugriff auf den Container, während er im Speicher ausgeführt wird, verhindert werden, was dazu führt, dass der Container vertraulich und sicher ausgeführt wird.
  • Zweitens werden eine Registry, die zum Speichern von Container-Images verwendet wird, und beliebige ihrer Administratoren daran gehindert zu verstehen, was in Container-Images vor sich geht. Auch kann diese Gruppe von Leuten, die im Allgemeinen - in vielerlei Hinsicht unkontrollierbaren - Zugriff auf Container-Images haben, daran gehindert werden, den tatsächlichen Inhalt der verwalteten Software-Container zu verstehen. Zum Beispiel können sie Dateien oder ausführbaren Code oder Daten weder verstehen noch sehen. Als ein dritter entscheidender Vorteil kann erwähnt werden, dass Attribute von Container-Images - wie schichtweise Anordnung, verwendete Deduplizierungsansätze (z.B. CoW [Kopieren beim Schreiben], Thin Provisioning) usw. - und die typische Handhabung - wie typische Aspekte der Verwaltung der Software-Container - beibehalten werden können. Die unveränderte Verwaltung und Handhabung von Containern kann es ermöglichen, die Vertraulichkeitsstufe einer bestehenden Lösung ohne Änderungen an der Gesamtlösung, außer der Verschlüsselung der verwendeten Container-Images, zu erhöhen.
  • Somit kann es das vorgeschlagene Konzept ermöglichen, Arbeitslasten von Software-Containern in einer Umgebung auszuführen, zu der normalerweise berechtigte Administratoren Zugang haben, und die Vertraulichkeit des Inhalts der Images der Software-Container zu schützen. Somit können auch nicht vertrauenswürdige Datenverarbeitungsumgebungen - in denen z.B. kein Vertrauen in die Systemadministratoren vorhanden ist - verwendet werden und dennoch gewährleisten, dass Programmcode, Dateien und Daten - einschließlich ihres Hauptspeichers/RAMs während der Ausführung - von niemand anderem als dem Erzeuger des Software-Containers eingesehen werden können.
  • Dieses Konzept geht über eine sichere Ausführung von virtuellen Maschinen hinaus, deren Sicherheitsschlüssel nur um den Preis eines höheren Grades an Dereferenzierung und eines Verlusts der operativen Vorteile von Software-Containern gestärkt werden kann. Im Kontext von virtuellen Maschinen musste bis heute anerkannt werden, dass Vertraulichkeit des Inhalts von Software-Containern ohne sichere Ausführung nicht gewährleistet werden kann. Das vorgeschlagene Konzept schließt diese Lücke und geht klar über den reinen Schutz von Namensbereichen und selbst ungeschützte virtuelle Maschinen hinaus, um den isolierten Arbeitsbereich für einen Software-Container bereitzustellen.
  • Im Folgenden werden zusätzliche Ausführungsformen des erfindungsgemäßen Konzepts - die sowohl auf das Verfahren als auch das zugehörige System anwendbar sind - beschrieben.
  • Gemäß einer einzelnen bevorzugten Ausführungsform des Verfahrens kann das Speichern eines jeden verschlüsselten Satzes der Blöcke auch das Speichern von Metadaten des ersten schichtweisen Software-Container-Images aufweisen. Die Metadaten können Umgebungsvariablen, Befehle, zu verwendende Anschlüsse usw. aufweisen. Die Metadaten können verschlüsselt oder unverschlüsselt sein. Selbst wenn die Metadaten nicht verschlüsselt sind, ist eine nicht berechtigte Person jedoch nicht in der Lage, etwas über den tatsächlichen Inhalt des sicheren Software-Containers zu sagen.
  • Gemäß einer einzelnen vorteilhaften Ausführungsform des Verfahrens kann jede der in dem verschlüsselten Container-Image gespeicherten Schichten - d.h. als eine Datei - Thin Provisioning anwenden und auch Thin-Provisioning-Metadaten aufweisen, z.B. darüber, welcher Block über gültige Daten verfügt. Dies kann zu den Vorteilen von Thin Provisioning führen, bei dem nur diejenigen Speicherbereiche tatsächlich belegt sind, die tatsächlich gültige, aktive Daten enthalten.
  • Gemäß einer einzelnen zweckmäßigen Ausführungsform des Verfahrens ist ein Name einer jeden Datei der Schicht des verschlüsselten Container-Images ein Hashwert von Inhalt der Datei. Somit sind gegebenenfalls keine zusätzlichen Metadaten erforderlich. Es kann davon ausgegangen werden, dass durch die Entropie des Inhalts der Dateien eindeutige Dateinamen mittels dieses vorgeschlagenen Verfahrensschritts erzeugt werden können.
  • Gemäß einer vorteilhaften Ausführungsform kann das Verfahren auch das Bereitstellen eines Betriebssystems einer virtuellen Maschine, ein Startprogramm, insbesondere für den sicheren Software-Container, und einen Entschlüsselungsschlüssel umfassen. Der Entschlüsselungsschlüssel kann dem Verschlüsselungsschlüssel entsprechen, der für die Verschlüsselung eines jeden Blocks des Satzes von Blöcken verwendet wird. Somit kann der sichere Software-Container entpackt werden, die Schichten können in die ursprüngliche Abfolge gebracht und die in dem sicheren Software-Container enthaltene Anwendung kann gestartet werden.
  • Gemäß einer weiteren vorteilhaften Ausführungsform kann das Verfahren auch das Bereitstellen einer sicheren Container-Ausführungsumgebung umfassen, der ein Starten der virtuellen Maschine mit dem Betriebssystem der virtuellen Maschine ermöglicht wird. Auf diese Weise kann der Stapel von Komponenten vollständig sein, um die Ausführung der in den sicheren Software-Container gepackten Anwendung tatsächlich zu starten. Überdies kann die sichere Container-Ausführungsumgebung auch auf eine Weise geschützt werden, die praktisch unmöglich zu beeinträchtigen ist.
  • Aus Gründen der Vollständigkeit und gemäß einer einzelnen bevorzugten Ausführungsform des Verfahrens kann das Starten der virtuellen Maschine das Entschlüssein des Satzes von Blöcken des verschlüsselten Container-Images mittels des Entschlüsselungsschlüssels aufweisen. Nur der Eigentümer der Anwendung in dem sicheren Software-Container kann Zugriff auf den Schlüssel haben. Somit können das Bereitstellen der entschlüsselten Version des sicheren Software-Containers und das Starten der erforderlichen Umgebung automatisch in einem Schritt durchgeführt werden.
  • Gemäß einer einzelnen zusätzlich bevorzugten Ausführungsform kann das Verfahren auch das Wiederherstellen des ersten mehrschichtigen Software-Container-Images in der Abfolge von Schichten des ersten mehrschichtigen Software-Container-Images umfassen. Die ebenfalls enthaltenen Metadaten, die die ursprüngliche Reihenfolge der Schichten des unverschlüsselten Software-Containers angeben, sind für diesen Verfahrensschritt gegebenenfalls maßgeblich.
  • Gemäß einer einzelnen zulässigen Ausführungsform des Verfahrens kann eine Schicht oben auf dem entschlüsselten sicheren Container-Image - d.h. oben auf dem wiederhergestellten ersten mehrschichtigen Software-Container-Image - Schreib-/ Lesezugriff gestatten, wobei die Schichten unterhalb der oberen Schicht einen Nur-Lese-Zugriff gestatten. Somit können gemäß dem Thin-Provisioning-Modell Schreiboperationen - gemäß dem Copy-on-Write-Paradigma - nur in der oberen Schicht durchgeführt werden, in der Deltas oder Unterschiede zu der Vorgängerversion einer Datei gespeichert werden. Ein Blick vertikal - im virtuellen Sinn - von der oberen Schicht durch alle anderen Schichten zur untersten Schicht würde alle Informationen liefern, um die letzte Version der jeweiligen Datei wiederherzustellen.
  • Gemäß einer einzelnen weiteren weiterentwickelten und vorteilhaften Ausführungsform des Verfahrens kann die sichere Container-Ausführungsumgebung durch eine sichere Firmware geschützt sein - üblicherweise unter Verwendung eines Hardwaresicherheitsmoduls (HSM), d.h. einer Verschlüsselungskarte -, die Zugriff auf die virtuelle Maschine durch berechtigte Benutzer und/oder andere Prozesse verhindert, und wobei das Betriebssystem der virtuellen Maschine, das Startprogramm und der Entschlüsselungsschlüssel jeweils auch verschlüsselt sind.
  • Somit arbeitet, gemäß einer weiteren vorteilhaften Ausführungsform des Verfahrens, die sichere Firmware mit einem Hardwaresicherheitsmodul zusammen. Diese Technik kann die sicherste Ausführungsumgebung sowohl für virtuelle Maschinen als auch Anwendungen und Daten in zugehörigen Software-Containern liefern. Ein solches Sicherheitsmodul ist eine notwendige Voraussetzung, um die sichere Firmware auszuführen. Ohne eine solche hardwarebasierte Einheit können weder die sichere Firmware noch der Hypervisor noch die virtuelle Maschine noch die Anwendung(en) des Software-Containers ausführbar sein.
  • Darüber hinaus können Ausführungsformen die Form eines zugehörigen Computerprogrammprodukts annehmen, auf das von einem durch einen Computer nutzbaren oder lesbaren Datenträger aus zugegriffen werden kann, der Programmcode zur Verwendung durch einen Computer oder ein beliebiges Anweisungsausführungssystem oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Zum Zweck dieser Beschreibung kann ein durch einen Computer nutzbarer oder lesbarer Datenträger jede beliebige Vorrichtung sein, die Mittel enthalten kann, um das Programm zur Verwendung durch das Anweisungsausführungssystem, die Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit dem Anweisungsausführungssystem, der Anweisungsausführungsvorrichtung oder -einheit zu speichern, zu übertragen, weiterzugeben oder zu transportieren.
  • Figurenliste
  • Es sei angemerkt, dass Ausführungsformen der Erfindung unter Bezugnahme auf verschiedene Gegenstände beschrieben werden. Insbesondere werden einige Ausführungsformen unter Bezugnahme auf Verfahrensansprüche beschrieben, wohingegen andere Ausführungsformen unter Bezugnahme auf Vorrichtungsansprüche beschrieben werden. Der Fachmann entnimmt jedoch der vorstehenden und der nachfolgenden Beschreibung, dass, vorbehaltlich anderer Angaben, neben jeder beliebigen Kombination aus Merkmalen, die zu einem Typ von Gegenstand gehören, auch jede beliebige Kombination zwischen Merkmalen, die sich auf verschiedene Gegenstände beziehen, insbesondere zwischen Merkmalen der Verfahrensansprüche und Merkmalen der Vorrichtungsansprüche, als eine in diesem Schriftstück zu offenbarende Kombination betrachtet wird.
  • Die vorstehend definierten Aspekte und weitere Aspekte der vorliegenden Erfindung gehen aus den Beispielen von Ausführungsformen, die nachstehend zu beschreiben sind, hervor und werden unter Bezugnahme auf die Beispiele von Ausführungsformen erklärt, auf welche die Erfindung jedoch nicht beschränkt ist.
  • Bevorzugte Ausführungsformen der Erfindung werden lediglich anhand eines Beispiels und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 zeigt ein Blockschaubild einer Ausführungsform des erfindungsgemäßen, durch einen Computer ausgeführten Verfahrens zum Erzeugen eines sicheren Software-Containers.
    • 2 zeigt ein Blockschaubild des Umsetzungsprozesses aus dem unverschlüsselten Software-Container in den verschlüsselten Software-Container, der in einer Container-Bibliothek gespeichert werden kann.
    • 3 zeigt ein Blockschaubild einer Ausführungsform eines vollständigen Stapels beteiligter Elemente zur Ausführung des sicheren Software-Containers.
    • 4 veranschaulicht Thin Provisioning und das Verknüpfen von Blöcken in dem sicheren Software-Container.
    • 5 zeigt eine Ausführungsform eines ersten Teils eines Ablaufplans zur Bildung des sicheren Software-Containers.
    • 6 zeigt eine Ausführungsform des zweiten Teils des Ablaufplans zur Bildung des sicheren Software-Containers.
    • 7 zeigt eine Ausführungsform eines ersten Teils eines Ablaufplans für eine Ausführung des sicheren Software-Containers.
    • 8 zeigt eine Ausführungsform des zweiten Teils des Ablaufplans für die Ausführung des sicheren Software-Containers.
    • 9 zeigt ein Blockschaubild einer Ausführungsform des sicheren Containersystems.
    • 10 zeigt ein Blockschaubild eines Datenverarbeitungssystems, welches das sichere Containersystem aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Kontext dieser Beschreibung werden gegebenenfalls die folgenden Konventionen, Begriffe und/oder Ausdrücke verwendet:
  • Der Begriff ‚sicherer Software-Container‘ kann einen Software-Container bezeichnen, der gegen unzulässigen Zugriff durch nicht berechtigtes Personal gesichert ist. Somit kann der Inhalt des Software-Containers verschlüsselt sein, so dass nicht berechtigtes Personal nicht in der Lage ist, festzustellen, was in dem Software-Container gespeichert ist. Im Grunde kann ein Software-Container als eine von Scoping-Mechanismen des Betriebssystems bereitgestellte Sandbox betrachtet werden, die für Anwendungen genutzt wird. Anwendungen in diesen Sandboxen haben keinen Einblick in den Rest des Betriebssystems oder in andere Container-Sandboxen. Da alle Anwendungs-Sandboxen auf derselben Betriebssysteminstanz laufen, entsteht bei der Ausführung von Anwendungen in Container-Sandboxen im Vergleich zu deren Ausführung direkt als Anwendungen unter dem Betriebssystem nur ein minimaler Aufwand. Insbesondere gibt es keinen Virtualisierungsaufwand. Somit kann ein Software-Container - letztlich zusammen mit zugehörigen Metadaten - als nur die Anwendung, wie sie in einer Container-Sandbox ausgeführt wird, betrachtet werden, d.h., als die Kernfunktion, die eine Container-Sandbox von einer anderen unterscheidet. In der Container-Technologie beschreiben Container-Images das unveränderliche Verpacken der Anwendung, die all die Dateien aufweist, die einer Container-Instanz übergeben werden. Es ist der „Entwurf“ der Anwendung, die von Container-Instanzen gemeinsam genutzt und auch mit anderen Container-Hosts ausgetauscht werden kann. Eine Container-Instanz ist ein in Ausführung befindlicher Container, der ein Container-Image als Startpunkt seines (Stamm-)Dateisystems verwendet. Docker kann aktuell als die führende Software-Container-Technologie angesehen werden.
  • Es kann auch angemerkt werden, dass gegebenenfalls nicht alle Schichten eines sicheren Software-Containers verschlüsselt werden müssen. Schichten, die gemeinsame Software-Komponenten aufweisen - z.B. Komponenten des Betriebssystems (z.B. Ubuntu) - können unverschlüsselt bleiben. Diese Komponenten können einer Mehrzahl von Containern gemein sein, so dass eine Verschlüsselung gegebenenfalls nicht erforderlich ist, da ihre Funktionalität möglicherweise ohnehin bekannt ist. Die Kernanwendungsblöcke sowie zugehörige Daten können jedoch als die kennzeichnenden Komponenten des Software-Containers betrachtet werden. Somit können diese kennzeichnenden Komponenten als Teil des sicheren Software-Containers verschlüsselt werden. Jedoch, und aus Gründen der Vollständigkeit, kann angemerkt werden, dass natürlich alle Schichten des Software-Containers verschlüsselt werden können. Gegebenenfalls ist es auch möglich, diejenigen Teile, die einer Mehrzahl von Software-Containern gemein sein können, mit einem anderen Verschlüsselungsverfahren (z.B. nur mit einem anderen Schlüssel oder auch mit einem völlig anderen Verschlüsselungsverfahren) zu verschlüsseln, wenn sie mit dem Kernteil des Containers, d.h. der Anwendung, verglichen werden.
  • Der Begriff ‚erstes mehrschichtiges Software-Container-Image‘ kann einen Stapel von Schichten bezeichnen, durch den der Software-Container definiert werden kann. Für die verschiedenen Schichten verwendete Speichertechnologie kann auf Thin-Provisioning-/ Sparse-Speicher beruhen. Eine Anwendung kann nur Schreibzugriff (sowie Lesezugriff) auf die obere Schicht haben. Die Schichten unterhalb der oberen Schicht können schreibgeschützt sein.
  • Der Begriff ‚Metadaten‘ kann „Daten über Daten“ bezeichnen. Hier können die Metadaten Informationen über die verschiedenen Schichten des Software-Containers, insbesondere über die richtige Reihenfolge der verschiedenen Schichten, umfassen, um den ursprünglichen Software-Container nach dem Entschlüsseln des blockbasierten sicheren Software-Containers wiederherzustellen.
  • Der Begriff ‚Datenträger‘ kann hier ein Speichersystem in Form einer virtuellen Speichereinheit bezeichnen. Er umfasst eine Sammlung von Datenblöcken. Wenn der Datenträger virtuell ist, werden alle seine Daten durch eine Datei gesichert, die als dieser virtuelle Datenträger dient. Bei Verwendung von Thin-Provisioning-Mechanismen können nicht verwendete Datenblöcke in dem Datenträger entsprechend markiert werden, was zu einem geringeren Platzverbrauch der Datei führen kann, die als virtueller Datenträger dient.
  • Der Begriff ‚Satz von Blöcken‘ kann eine Gruppe von Speicherblöcken bezeichnen, z.B. eine fortlaufende Folge von verknüpften Blöcken einer Speichereinheit.
  • Der Begriff ‚inkrementeller Unterschied‘ kann ein Delta zwischen zwei verschiedenen Schichten des sicheren Software-Containers bezeichnen. Das Konzept kann üblicherweise bei Thin-Provisioning-Konzepten verwendet werden. Die vollständigen Informationen (Anwendung sowie zugehörige Daten) können wiederhergestellt werden, wenn die Abfolge der verschiedenen Schichten für eine Abfolge von neuen und/oder aktualisierten Daten wiedergegeben werden kann. Die Verwendung des Konzepts des inkrementellen Unterschieds ermöglicht es, nur die wirklich benötigten Speicherkapazitäten - d.h. Thin Provisioning - in Anspruch zu nehmen, obgleich die Blöcke pro Schicht eigentlich viel mehr Platz bieten können (bis zur Speichergrenze der jeweiligen Schicht bzw. des jeweiligen Datenträgers).
  • Der Begriff ‚Teil der Schichten‘ kann eine Anzahl von Schichten bezeichnen, die kleiner als die Gesamtzahl der Schichten des Software-Containers sein kann. Wie vorstehend erwähnt wurde, ist es gegebenenfalls nicht erforderlich, alle Schichten des Software-Containers zu verschlüsseln. Einige untere Schichten - die standardmäßige Software-Komponenten (z.B. Teil eines Betriebssystems) aufweisen - können unverschlüsselt bleiben. In weiteren Ausführungsformen können jedoch auch diese Schichten verschlüsselt werden.
  • Der Begriff ‚verschlüsseltes Container-Image‘ kann eine Abfolge von Schichten des sicheren Software-Containers bezeichnen, die die Informationen des ersten mehrschichtigen Software-Container-Images in verschlüsselter Form aufweisen können.
  • Der Begriff ‚Reihenfolge des Satzes von Blöcken‘ kann eine Abfolge von Blöcken bezeichnen, um die verschiedenen Schichten des sicheren Software-Containers wiederherzustellen.
  • Der Begriff ‚sicherer verschlüsselter Software-Container‘ kann hier den sicheren Software-Container bezeichnen. Die Tatsache, dass der sichere Software-Container verschlüsselte Schichten aufweist, kann innerhalb dieses Schriftstücks als gegeben betrachtet werden.
  • Der Begriff ‚Thin Provisioning‘ kann die Verwendung von Virtualisierungstechnologie bezeichnen, um den Anschein zu erwecken, dass mehr physische Ressourcen vorhanden sind, als tatsächlich zur Verfügung stehen. Wenn ein System virtualisierte Ressourcen immer vollständig sichert, muss die gesamte Kapazität anfangs bereitgestellt werden. Der Begriff 'Thin Provisioning' kann auf eine Plattenschicht angewendet werden, könnte sich aber auch auf ein Zuordnungsschema für eine beliebige Ressource beziehen. Zum Beispiel kann Realspeicher in einem Computer üblicherweise durch Thin Provisioning bereitgestellt werden, um Aufgaben mit einer bestimmten Form von Adressumsetzungstechnologie auszuführen, welche die Virtualisierung vornimmt. Jede Aufgabe kann so tun, als wäre ihr Realspeicher zugeordnet. Die Summe des zugeordneten virtuellen Speichers kann Aufgaben zugewiesen werden, die den gesamten Realspeicher üblicherweise überschreiten dürfen. Dasselbe kann für Schichten und einen Software-Container gelten. Thin Provisioning kann in einigen Kontexten auch als „spärliche Datenträger“ bezeichnet werden.
  • Der Begriff ‚Hashwert‘ kann ein Ergebnis einer Hashfunktion bezeichnen, die verwendet werden kann, um Daten beliebiger Größe Daten fester Größe zuzuordnen. Die von einer Hashfunktion zurückgegebenen Werte werden als Hashwerte, Hash-Codes, Prüfsummen oder einfach als Hashes bezeichnet. Hashfunktionen werden oftmals in Kombination mit einer Hashtabelle verwendet, einer gemeinsamen Datenstruktur, die in Computer-Software für eine schnelle Datensuche verwendet wird. Hashfunktionen beschleunigen eine Tabellen- oder Datenbanksuche, indem sie duplizierte Datensätze in einer großen Datei erkennen. Eine solche Anwendung findet ähnliche Abschnitte in DNA-Sequenzen. Da eine Berechnung eines Hashwerts ein einseitiger Ansatz ist, kann der ursprüngliche Wert möglicherweise nicht eindeutig aus dem Hashwert bestimmt werden. Somit wird die Technologie in der Kryptographie in großem Umfang eingesetzt.
  • Der Begriff ‚Betriebssystem einer virtuellen Maschine‘ kann ein Betriebssystem bezeichnen, bei dem es sich um eine Komponente einer virtuellen Maschine eines virtuellen Servers handelt, der auf einem Hypervisor ausgeführt wird. Unterschiedliche Betriebssysteme von virtuellen Maschinen dürfen die Funktionen der anderen nicht beeinflussen. Diese Technologie kann in Linux-ähnlichen Betriebssystemen in großem Umfang eingesetzt werden. Jedoch können auch Mainframe- und Midrange-Betriebssysteme diese Technologie nutzen.
  • Der Begriff ‚Startprogramm‘ kann ein Programm bezeichnen, dem es ermöglicht wird, einen Ausführungsstart des sicheren Software-Containers einzuleiten. Das Startprogramm kann auch die Einleitung eines Entschlüsselungsprozesses und das Umordnen der entschlüsselten Blöcke übernehmen, um die ursprünglichen Schichten des ersten mehrschichtigen Software-Containers wiederherzustellen.
  • Der Begriff ‚Entschlüsselungsschlüssel‘ kann eine Softwarekomponente bezeichnen, die für das Zurücksetzen eines verschlüsselten Kontexts in seinen ursprünglichen Kontext maßgeblich ist, so dass er ohne Entschlüsselungsfunktion gelesen werden kann. Folglich kann es sich um Klartext handeln.
  • Der Begriff ‚sichere Container-Ausführungsumgebung‘ kann eine Softwarekomponente bezeichnen, die einen sicheren verschlüsselten Software-Container - oder auch ein sicheres verschlüsseltes Software-Container-Image - akzeptieren und darauf beruhend eine Container-Instanz ausführen kann. Sie kann sich dafür entscheiden, den Container in einer virtuellen Maschine auszuführen, die nur für die Ausführung dieses Containers erzeugt wird. Die virtuelle Maschine kann gesichert sein, so dass ein berechtigter Administrator der sicheren Container-Ausführungsumgebung - die beim Starten von virtuellen Maschinen ebenfalls ein Hypervisor wird - möglicherweise nicht auf Daten in der virtuellen Maschine zugreifen kann, welche den Container ausführt. Um eine Entschlüsselung des sicheren verschlüsselten Software-Containers (Images) zu ermöglichen, kann sie einen Entschlüsselungsschlüssel verwenden, der dem Betriebssystem (der virtuellen Maschine) bereitgestellt werden kann, und das Programm während des Starts der Container-Instanz starten.
  • Der Begriff ‚Hardwaresicherheitsmodul‘ (HSM) kann eine physische Datenverarbeitungseinheit bezeichnen, die digitale Schlüssel für eine starke Authentifizierung schützen und verwalten und eine Kryptoverarbeitung bereitstellen kann. Diese Module können herkömmlicherweise in Form einer Steckkarte oder einer externen Einheit, die sich an einen Computer oder einen Netzwerk-Server anschließen lässt, oder der CPU direkt erhältlich sein.
  • Der Begriff ‚Docker-Container‘ kann ein Beispiel einer Virtualisierung auf Betriebssystemebene bezeichnen, die auch als Containerisierung bekannt ist. Er kann ein Betriebssystem-Merkmal bezeichnen, bei dem der Kernel das Vorhandensein von mehreren isolierten Benutzeradressbereichsinstanzen zulassen kann. Solche Instanzen, die als (Software-)Container, Partitionen, virtuelle Umgebungen (VEs, virtual environments) oder Jails (FreeBSD Jail oder Chroot Jail) bezeichnet werden, können aus der Sicht von Programmen, die in ihnen ausgeführt werden, wie echte Computer aussehen. Ein Computerprogramm, das auf einem gewöhnlichen Betriebssystem ausgeführt wird, kann alle Ressourcen (angeschlossene Einheiten, Dateien und Ordner, gemeinsam genutzte Netzbereiche, CPU-Leistung, quantifizierbare Hardwarefunktionen) dieses Computers sehen. Programme, die in einem Container ausgeführt werden, können jedoch nur den Inhalt des Containers sowie dem Container zugewiesene Einheiten sehen. Somit können Container gegeneinander isoliert werden, ähnlich der gegeneinander erfolgenden Isolierung von virtuellen Maschinen. Das hier vorgeschlagene Konzept kann vorteilhaft mit einem Docker-Container umgesetzt werden.
  • Im Folgenden werden die Figuren ausführlich beschrieben. Alle Anweisungen in den Figuren sind schematisch. Zunächst ist ein Blockschaubild einer Ausführungsform des erfindungsgemäßen, durch einen Computer ausgeführten Verfahrens zum Erzeugen eines sicheren Software-Containers dargestellt. Anschließend werden weitere Ausführungsformen sowie Ausführungsformen des sicheren Containersystems zum Erzeugen eines sicheren Software-Containers beschrieben.
  • 1 zeigt ein Blockschaubild einer Ausführungsform des durch einen Computer ausgeführten Verfahrens 100 zum Erzeugen eines sicheren Software-Containers, z.B. eines sicheren Docker-Containers. Das Verfahren kann das Bereitstellen, 102, eines ersten mehrschichtigen Software-Container-Images umfassen, insbesondere eines Images, das Schichten aufweist, die „deltabasiert“ sind, d.h. auf Thin Provisioning beruhen.
  • Das Verfahren 100 umfasst des Weiteren das Umsetzen, 104, von allen Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger, insbesondere einen Datenträger, der ein Dateisystem aufweist. Der Datenträger weist einen Satz von Blöcken - insbesondere die von einer Speicherplatte verwalteten Blöcke - auf, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist. Es kann auch erwähnt werden, dass es sich bei den Metadaten insbesondere um all die erforderlichen Metadaten handelt, die beschreiben, wie mit dem Container umgegangen werden soll, d.h., wie die verschiedenen Schichten zueinander in Beziehung stehen.
  • Zusätzlich umfasst das Verfahren 100 das Verschlüsseln, 106, eines jeden Blocks des Satzes von Blöcken von einem Teil der Schichten. Dies kann mittels eines Verschlüsselungsschlüssels durchgeführt werden, der nur dem Erzeuger des gesicherten Containers bekannt ist. Es kann auch angemerkt werden, dass nicht alle Schichten verschlüsselt werden müssen. Insbesondere diejenigen Schichten, die bei allen Software-Containern gleich sind, machen gegebenenfalls keine Verschlüsselung erforderlich. Ein Beispiel kann die grundlegende Betriebssystemschicht sein, z.B. eine „Ubuntu-Schicht“.
  • Darüber hinaus umfasst das Verfahren 100 das Speichern, 108, eines jeden verschlüsselten Satzes der Blöcke und - insbesondere als Datei dargestellt - das Speichern als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten (z.B. mit Zeigern auf übergeordnete Schichten), um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist. Dies kann dann die gleiche Anzahl von Blockeinheiten wie die Anzahl der Schichten des ursprünglichen Software-Containers, d.h. des ersten mehrschichtigen Software-Container-Images, ergeben. Auf diese Weise wird ein sicherer, verschlüsselter, mehrschichtiger Software-Container erzeugt.
  • 2 zeigt ein Blockschaubild 200 des Umsetzungsprozesses aus dem unverschlüsselten Software-Container 202 in den verschlüsselten Software-Container, der in einer Container-Bibliothek gespeichert werden kann. Das erste mehrschichtige Software-Container-Image 202, das auch als einzelne Schichten 204 gezeigt ist, wird in den sicheren Software-Container 208 umgesetzt, der auch verschiedene Schichten 210 aufweist. Die Umwandlung wird mit Hilfe eines Umwandlungstools 206 durchgeführt und ist durch den bogenförmigen Pfeil 206a angegeben. Der Software-Container 202 ist unverschlüsselt, während der sichere Software-Container 208 über verschlüsselte Schichten 210 verfügt. Diese können in einer Container-Repository 212 gespeichert werden. Auch hier sind sichere Software-Container 208 mit einer Schicht 210 gezeigt, ein Beispiel mit Schichten 210 in symbolischer Form.
  • 3 zeigt ein Blockschaubild einer Ausführungsform eines vollständigen Stapels 300 beteiligter Elemente zur Ausführung des sicheren Software-Containers 208. Beruhend auf einer sicheren Ausführungsplattform für virtuelle Maschinen 302 - oder alternativ einer sicheren Container-Ausführungsumgebung, die Container in virtuellen Maschinen ausführt - verwaltet eine Container-Engine 304 grundlegende Anforderungen für das Betreiben von Software-Containern. Aus Gründen der Vollständigkeit ist der sichere Software-Container 208 (nicht explizit gezeigt) mit seinen Schichten 210, insbesondere mit einer oberen
    Schreib-/Lese-Schicht, und in verschlüsselter Form (e) gezeigt. Diese Container-Engine 304 ruft die Container-Laufzeitumgebung 306 auf, die einen Hypervisor 308 aufweist. Der Hypervisor 308 startet dann den Kernel 310 - insbesondere den Betriebssystemkernel - in einer Schicht des Software-Containers 208. Der Pfeil 312 kann die Bewegung des sicheren Software-Containers 208 mit den Schichten 210 aus der Container-Engine in die virtuelle Maschine 314 angeben, wo er in die entschlüsselte Form der Schichten 204 des ausführbaren, entschlüsselten (d) Containerschichtenstapels 204 (d) (nicht explizit gezeigt) entschlüsselt wird.
  • Es sei darauf hingewiesen, dass es sich bei der virtuellen Maschine 314 um eine vertrauenswürdige Umgebung handelt, wenn Technologie für eine sichere Ausführung der virtuellen Maschine, wie eine Verwendung eines Hardwaresicherheitsmoduls, oder eine beliebige andere Technologie, um virtuelle Maschinen so auszuführen, dass berechtigte Hypervisor-Administratoren - z.B. Rootbenutzer - keinen Zugriff auf die Daten der virtuellen Maschine haben können, angewendet werden kann.
  • 4 veranschaulicht Thin Provisioning und das Verknüpfen von Blöcken in dem sicheren Software-Container. Bei den Schichten 402, 404, 406, 408 auf der linken Seite oben (4(a)) kann es sich um eine Abfolge von Schichten eines Software-Container-Images handeln. Die unterste Schicht 402 weist eine Datei 410 A und die nächsthöhere Schicht 404 weist eine Datei 412 B auf. Wenn die Datei 410 A aktualisiert (geändert) wird, wird sie als die Datei 414 A' in eine neue Schicht 406 geschrieben. Zu diesem Zeitpunkt kann die Schicht 406 die obere Schicht sein, die einen Lese- und insbesondere einen Schreibzugriff auf die Schichten 406 gestattet. Der vollständige, ursprüngliche Inhalt des Software-Containers kann in 408 erkannt werden, was im Grunde eine vertikale Ansicht durch die verschiedenen Schichten darstellt, wobei ausgehend von der oberen Schicht 406 über die Schicht 414 zur Schicht 402 gegangen wird.
  • Auf der rechten Seite oben (4(b)) ist eine Zuordnung in Sparse-Blockeinheiten 416, 418, 420, 422 gezeigt. Die in den verschiedenen Schichten gezeigten schwarzen Felder können Blöcke darstellen, die Daten der Schichten 402, 406, 406 in Sparse-Blockeinheiten mit sich führen und mit dem Client-Schlüssel verschlüsselt sein können. Somit kann der Stapel von 4(b) Daten des sicheren Software-Containers darstellen. Alle verschlüsselten Dateien der Blockeinheiten werden als Dateien in eine entsprechende neue Container-Schicht geschrieben. Diese Schichten können drei Dateien enthalten. Ihre automatisch erzeugten Namen beruhen auf einem Hash des entsprechenden Inhalts der Datei: (i) einer Inhaltsdatei (die blockweise verschlüsselten Sparse-Block-Loopback-Einheitendateien), (ii) einer Elterndatei, die lediglich den Hash der vorherigen Schicht aufweist (d.h. ape, der auf den Dateinamen der vorherigen Schicht zeigt), (iii) einer Metadaten-Datei (diese kann optional sein), die zu der zugehörigen Schicht hinzugefügte Container-Image-Metadaten wie Umgebungsvariablen, Anschlusseinstellungen usw. aufweist. Diese letzte Datei kann optional auch verschlüsselt sein.
  • Wenn alle Schichten übereinander eingehängt sind, sind alle Dateien sichtbar. Die Summeneltern-Firewall beschreibt den Abhängigkeitsgraphen der Schichten, der es gestattet, die Blockeinheitendatei in der richtigen Reihenfolge übereinander einzuhängen. Dies ist in 4(c) gezeigt. Die bogenförmigen Pfeile zeigen die Zeigefunktion der Hashadresse der jeweiligen Elternschicht.
  • 5 zeigt eine Ausführungsform eines ersten Teils eines Ablaufplans 500 zur Bildung des sicheren Software-Containers. Zunächst wird eine Sparse-Loopback-Einheitendatei erzeugt, 502. Dann wird ein Dateisystem in der Loopback-Einheitendatei erzeugt, 504. Ausgehend vom unteren Ende der Schichten des Software-Containers wird eine nächste Schicht „L“ des Images der ersten (ursprünglichen) mehrschichtigen Softwarekomponente gekennzeichnet, bevor eine Sparse-Loopback-Einheitendatei „D“ erzeugt wird, 508. Ein Einheiten-Mapper wird verwendet, um die Loopback-Einheitendatei „D“ oben auf dem bisherigen Stapel der Loopback-Einheitendateien hinzuzufügen, 510. Somit gehen Schreiboperationen an „D“ und alle Anforderungen für Leseoperationen für sie durch den Stapel von Schichten, bis ein Block an dem angeforderten Offset gefunden wird (vgl. 512).
  • Dann wird eine Einhängeoperation für den Stapel von Loopback-Einheitendateien an einem Einhängepunkt durchgeführt, 514. Als Nächstes wird der gesamte Inhalt von „L“ zu dem Einhängepunkt hinzugefügt (der diese Änderungen in „D“ schreibt), 516. Zu guter Letzt wird der Einhängepunkt ausgehängt, 518. Die Schritte 506 bis 518 werden für alle Image-Schichten durchgeführt.
  • 6 zeigt eine Ausführungsform des zweiten Teils 600 des Ablaufplans 500 von 5 zur Bildung des sicheren Software-Containers. Der Ablaufplan fährt mit einer Kennzeichnung 602 einer Sparse-Loopback-Einheit für „D“ fort und startet dabei bei der untersten Schicht. Dann wird „D“ verschlüsselt und eine verschlüsselte Version „E“ von „D“ erzeugt, 604. Dies erfolgt für alle Image-Schichten, wie durch den Loopback-Pfeil auf der linken Seite des Ablaufplans angegeben ist.
  • Anschließend wird eine Sparse-Loopback-Einheitendatei „D2“ gekennzeichnet; auch hier startet der Prozess bei der untersten Schicht (606). Als Nächstes wird ein Hashwert „H“ von „E“ erzeugt, 608. In einem nächsten Schritt, wobei wieder bei der untersten Schicht begonnen wird, wird eine Kennzeichnung entsprechend der ursprünglichen Image-Schicht „L“ vorgenommen, 610. Bei 612 wird eine neue Container-Image-Schicht „M“ oben auf beliebigen vorhandenen neuen Container-Image-Schichten erzeugt. Dann wird eine Datei in „M“ erzeugt, 614, indem Inhalt von „E“ in eine neue Datei mit der Bezeichnung „H“-Inhalt gestellt wird. Und eine Datei in „M“ wird erzeugt, 616, indem beliebige Metadaten-Informationen von „L“ in die neue Datei „H“-Metadaten gestellt werden.
  • Als Nächstes wird festgestellt, 618, ob „L“ die unterste Schicht ist. Wenn dies nicht der Fall ist („N“), wird die Datei in „M“ erzeugt, 620, indem der vorherige Hashwert (d.h. vorheriger „H“ von vorheriger „E“) in eine neue Datei mit der Bezeichnung „H“-Eltern gestellt wird. Wenn die Feststellung 618 wahr ist - Fall „J“ - kehrt der Prozess in einer Schleife zum Schritt 606 des Kennzeichnens der Sparse-Loopback-Einheitendatei „D“ zurück und wiederholt diese Schleife für alle Image-Schichten.
  • 7 zeigt eine Ausführungsform eines ersten Teils des Ablaufplans 700 für eine Ausführung des sicheren Software-Containers. Zunächst hängt, 702, die Container-Engine des Hosts alle Schichten „E“ übereinander ein, um das Container-Dateisystem zusammenzusetzen. In einem nächsten Schritt hängt, 704, die Content-Engine in den Hosts eine leere Schreib-/Leseschicht (read/write layer) in das Container-Dateisystem ein. Dann erzeugt, 706, das Container-Dateisystem eine virtuelle Maschine für eine „sichere Ausführung“, bevor das Dateisystem der virtuellen Maschine bereitgestellt, 708, wird. Die Container-Engine liest, 710, einen vom Benutzer bereitgestellten Kernel und Befehle wie initrd, init sowie einen Client-Schlüssel, um den verschlüsselten Software-Container, d.h. seinen Inhalt, zu entschlüsseln.
  • Die VM bootet, 712, den/die vom Benutzer bereitgestellte(n) Kernel/initrd („initrd“ steht für Initial RAM Disk, bei der es sich um ein temporäres Dateisystem handelt, das vom Linux-Kernel während des Bootprozesses verwendet wird) und startet, 714, den vom Benutzer bereitgestellten init-Prozess, d.h. den Initialisierungsprozess/-befehl. Der Ablaufplan fährt dann in 8 fort.
  • 8 zeigt eine Ausführungsform des zweiten Teils 800 des Ablaufplans 700 (vgl. 7) für eine Ausführung des sicheren Software-Containers. Der init-Prozess erstellt, 802, die Reihenfolge der Schichten auf der Grundlage von „H“-Elterndateien neu, und der init-Prozess entschlüsselt, 804, alle „H“-Inhaltsdateien während der Verarbeitung (z.B. unter Verwendung von „dm-crypt“, einem Verschlüsselungsmodul des Einheiten-Mappers des Linux-Kernels) mit dem vom Benutzer bereitgestellten Client-Schlüssel. Darüber hinaus setzt, 806, der init-Prozess entschlüsselte Sparse-Loopback-Einheiten in der richtigen Reihenfolge zusammen und er setzt, 808, eine Schreib-/Lese-Sparse-Loopback-Einheitendatei oben auf allen anderen Schichten zusammen, die schreibgeschützt sind.
  • Ferner verschlüsselt, 810, der init-Prozess eine Schreib-/Lese-Loopback-Datei als eine neue „H“-Inhaltsdatei, wobei er wieder den vom Client bereitgestellten Entschlüsselungsschlüssel verwendet. Zu guter Letzt verschlüsselt, 812, der init-Prozess eine neue „H“-Elterndatei, die auf die oberste Nur-Lese-Schicht zeigt.
  • Aus Gründen der Vollständigkeit zeigt 9 ein Blockschaubild einer Ausführungsform des sicheren Containersystems 900. Das System 900 weist eine Empfangseinheit 902, die so ausgelegt ist, dass sie ein erstes mehrschichtiges Software-Container-Image empfängt, und eine Umsetzungseinheit 904 auf, die so ausgelegt ist, dass sie alle Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger umsetzt, der einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist.
  • Ferner weist das System 900 ein Verschlüsselungsmodul 906, das so ausgelegt ist, dass es einen jeden Block des Satzes von Blöcken von einem Teil der Schichten verschlüsselt, und eine Speichereinheit 908 auf, die so ausgelegt ist, dass sie einen jeden verschlüsselten Satz der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten speichert, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist. Auf diese Weise wird ein sicherer, verschlüsselter Software-Container erzeugt.
  • Ausführungsformen der Erfindung können zusammen mit praktisch jeder Art von Computer, ungeachtet der zur Speicherung und/oder Ausführung von Programmcode geeigneten Plattform, umgesetzt werden. 10 zeigt als Beispiel ein Datenverarbeitungssystem 1000, das zur Ausführung von Programmcode in Zusammenhang mit dem vorgeschlagenen Verfahren geeignet ist.
  • Das Datenverarbeitungssystem 1000 ist lediglich ein Beispiel eines geeigneten Datenverarbeitungssystems und sollte ungeachtet dessen, ob das Datenverarbeitungssystem 1000 ausführungsfähig und/oder in der Lage ist, jedwede der vorstehend dargelegten Funktionalität durchführen, nicht als Hinweis auf eine Einschränkung des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung verstanden werden. In dem Computersystem 1000 gibt es Komponenten, die mit zahlreichen anderen Universal- oder Spezialdatenverarbeitungssystemumgebungen oder - konfigurationen betrieben werden können. Zu Beispielen für hinlänglich bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die gegebenenfalls zur Verwendung mit dem Computersystem/Server 1000 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten, und dergleichen. Das Computersystem/der Server 1000 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie zum Beispiel Programmmodulen, die durch ein Computersystem 1000 ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter umfassen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 1000 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, zu denen auch Hauptspeichereinheiten gehören, befinden.
  • Wie in der Figur gezeigt ist, ist das Computersystem/der Server 1000 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 1000 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 1002, ein Systemspeicher 1004 und ein Bus 1006 gehören, die verschiedene Systemkomponenten, darunter den Systemspeicher 1004, mit dem Prozessor 1002 verbinden. Der Bus 1006 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Als Beispiel und nicht als Einschränkung gehören zu solchen Architekturen ein Industry-Standard-Architecture-(ISA-)Bus, ein Micro-Channel-Architecture-(MCA-)Bus, ein Enhanced-ISA-(EISA-)Bus, ein lokaler Video-Electronics-Standards-Association-(VESA-)Bus und ein Peripheral-Component-Interconnects-(PCI-)Bus. Das Computersystem/der Server 1000 enthält üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/Server 1000 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch austauschbare und nicht austauschbare Datenträger.
  • Zum Systemspeicher 1004 können durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise ein Direktzugriffsspeicher (RAM) 1008 und/oder ein Cache 1010, gehören. Das Computersystem/der Server 1000 kann des Weiteren weitere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann ein Speichersystem 1012 für das Lesen von und das Schreiben auf einen nicht austauschbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine(r) austauschbare(n), nicht flüchtige(n) Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine(r) austauschbare(n), nicht flüchtige(n) optische(n) Platte, wie zum Beispiel ein CD-ROM, ein DVD-ROM, oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jeder Datenträger durch eine oder mehrere Datenträgerschnittstellen mit dem Bus 1006 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Speicher 1004 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm, das über einen Satz (zumindest einen) von Programmmodulen 1016 verfügt, kann beispielhaft, und nicht als Einschränkung, im Speicher 1004 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Die Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Programmmodule 1016 führen im Allgemeinen die Funktionen und/oder die Vorgehensweisen von Ausführungsformen der Erfindung aus, die hierin beschrieben sind.
  • Das Computersystem/der Server 1000 kann auch mit einer oder mehreren externen Einheiten 1018 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 1020 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 1000 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 1000 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 1014 erfolgen. Weiterhin kann das Computersystem/der Server 1000 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 1022 Daten austauschen. Wie dargestellt ist, kann der Netzwerkadapter 1022 mit den anderen Komponenten des Computersystems/Servers 1000 über den Bus 1006 Daten austauschen. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 1000 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Ferner kann das sichere Containersystem 900 zum Erzeugen eines sicheren Software-Containers an das Bussystem 1006 angeschlossen sein.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Änderungen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem Datenträger kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem für ein Weiterleitungsmedium handeln. Zu Beispielen für einen durch einen Computer lesbaren Datenträger können ein Halbleiter- oder ein Solid-State-Speicher, ein Magnetband, eine austauschbare Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte und eine optische Platte gehören. Zu aktuellen Beispielen für optische Platten gehören ein Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine CD-RW, eine digitale Videoplatte (DVD) und eine Blu-Ray-Disk.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übermittelte elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, fieldprogrammable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hierin verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. In der Verwendung hierin sollen die Singular-Formen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Es wird des Weiteren darauf hingewiesen, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon jedoch nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente von allen Mitteln oder Schritten plus Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, mit einschließen. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, soll aber nicht erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt sein. Viele Änderungen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Erfindung abzuweichen. Die Ausführungsformen werden gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2018/0309747 A1 [0007]
    • WO 2018/007213 A1 [0008]

Claims (25)

  1. Ein Computer-implementiertes Verfahren zum Erzeugen eines sicheren Software-Containers bereitgestellt; wobei das Verfahren - das Bereitstellen eines ersten mehrschichtigen Software-Container-Images, - das Umsetzen von allen Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger, wobei der Datenträger einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist, - das Verschlüsseln eines jeden Blocks des Satzes von Blöcken von einem Teil der Schichten, - das Speichern eines jeden verschlüsselten Satzes der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist, umfasst, wodurch es einen sicheren, verschlüsselten Software-Container erzeugt.
  2. Das Verfahren nach Anspruch 1, wobei das Speichern eines jeden verschlüsselten Satzes der Blöcke auch - das Speichern von Metadaten des ersten mehrschichtigen Software-Container-Images aufweist.
  3. Das Verfahren nach Anspruch 1 oder 2, wobei jede Schicht der in dem verschlüsselten Container-Image gespeicherten Schichten Thin Provisioning anwendet, auch Thin-Provisioning-Metadaten aufweist.
  4. Das Verfahren nach einem der vorhergehenden Ansprüche, wobei ein Name einer jeden Datei der Schicht des verschlüsselten Container-Images ein Hashwert von Inhalt der Datei ist.
  5. Das Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren auch - das Bereitstellen eines Betriebssystems einer virtuellen Maschine, eines Startprogramms und eines Entschlüsselungsschlüssels umfasst, wobei der Entschlüsselungsschlüssel einem für das Verschlüsseln eines jeden Blocks des Satzes von Blöcken verwendeten Verschlüsselungsschlüssel entspricht.
  6. Das Verfahren nach Anspruch 5, das auch - das Bereitstellen einer sicheren Container-Ausführungsumgebung umfasst, der ein Starten der virtuellen Maschine mit dem Betriebssystem der virtuellen Maschine ermöglicht wird.
  7. Das Verfahren nach Anspruch 6, wobei das Starten der virtuellen Maschine - das Entschlüsseln des Satzes von Blöcken des verschlüsselten Container-Images unter Verwendung des Entschlüsselungsschlüssels aufweist.
  8. Das Verfahren nach Anspruch 7, das auch - das Wiederherstellen eines ersten mehrschichtigen Software-Container-Images in der Abfolge von Schichten des ersten mehrschichtigen Software-Container-Images umfasst.
  9. Das Verfahren nach Anspruch 8, wobei eine Schicht oben auf dem entschlüsselten sicheren Container-Image Schreib-/Lesezugriff gestattet, wobei die Schichten unterhalb der oberen Schicht einen Nur-Lese-Zugriff gestatten.
  10. Das Verfahren nach einem der Ansprüche 5 bis 9, wobei die sichere Container-Ausführungsumgebung durch eine sichere Firmware geschützt ist, die Zugriff auf die virtuelle Maschine durch berechtigte Benutzer und/oder andere Prozesse verhindert, und wobei das Betriebssystem der virtuellen Maschine, das Startprogramm und der Entschlüsselungsschlüssel jeweils verschlüsselt sind.
  11. Das Verfahren nach Anspruch 10, wobei die sichere Firmware mit einem Hardwaresicherheitsmodul zusammenarbeitet.
  12. Ein Containersystem zum Erzeugen eines sicheren Software-Containers bereitgestellt; wobei das System - eine Empfangseinheit, die so ausgelegt ist, dass sie ein erstes mehrschichtiges Software-Container-Image empfängt, - eine Umsetzungseinheit, die so ausgelegt ist, dass sie alle Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger umsetzt, wobei der Datenträger einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist, - ein Verschlüsselungsmodul, das so ausgelegt ist, dass es jeden Block des Satzes von Blöcken von einem Teil der Schichten verschlüsselt, - eine Speichereinheit, die so ausgelegt ist, dass sie einen jeden verschlüsselten Satz der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten speichert, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist, aufweist, wodurch es einen sicheren, verschlüsselten Software-Container erzeugt.
  13. Das Containersystem nach Anspruch 12, wobei die Speichereinheit so ausgelegt ist, dass sie - Metadaten des ersten mehrschichtigen Software-Container-Images speichert.
  14. Das Containersystem nach Anspruch 12 oder 13, wobei jede Schicht der in dem verschlüsselten Container-Image gespeicherten Schichten Thin Provisioning verwendet, auch Thin-Provisioning-Metadaten aufweist.
  15. Das Containersystem nach einem der Ansprüche 12 bis 14, wobei ein Name einer jeden Datei der Schicht des verschlüsselten Container-Images ein Hashwert von Inhalt der Datei ist.
  16. Das Containersystem einem der Ansprüche 12 bis 15, das auch ein Bereitstellungsmodul aufweist, das so ausgelegt ist, dass es - ein Betriebssystem einer virtuellen Maschine, ein Startprogramm und einen Entschlüsselungsschlüssel bereitstellt, wobei der Entschlüsselungsschlüssel einem für das Verschlüsseln eines jeden Blocks des Satzes von Blöcken verwendeten Verschlüsselungsschlüssel entspricht.
  17. Das Containersystem nach Anspruch 16, wobei das Bereitstellungsmodul auch so ausgelegt ist, dass es - das Bereitstellen einer sicheren Container-Ausführungsumgebung umfasst, der ein Starten der virtuellen Maschine mit dem Betriebssystem der virtuellen Maschine ermöglicht wird.
  18. Das Containersystem nach Anspruch 17, wobei das Starten der virtuellen Maschine - das Entschlüsseln des Satzes von Blöcken des verschlüsselten Container-Images unter Verwendung des Entschlüsselungsschlüssels umfasst.
  19. Das Containersystem nach Anspruch 18, das auch - eine Wiederherstellungseinheit aufweist, die so ausgelegt ist, dass sie das erste mehrschichtige Software-Container-Image in der Abfolge von Schichten des ersten mehrschichtigen Software-Container-Images wiederherstellt.
  20. Das Containersystem nach Anspruch 19, wobei eine Schicht oben auf dem entschlüsselten sicheren Container-Image Schreib-/Lesezugriff gestattet, wobei die Schichten unterhalb der oberen Schicht einen Nur-Lese-Zugriff gestatten.
  21. Das System nach einem der Ansprüche 16 bis 20, wobei die sichere Container-Ausführungsumgebung durch eine sichere Firmware geschützt ist, die Zugriff auf die virtuelle Maschine durch berechtigte Benutzer und/oder andere Prozesse verhindert, und wobei das Betriebssystem der virtuellen Maschine, das Startprogramm und der Entschlüsselungsschlüssel jeweils verschlüsselt sind.
  22. Das Containersystem nach Anspruch 21, das auch ein - Hardwaresicherheitsmodul aufweist, das so ausgelegt ist, dass es mit der sicheren Firmware zusammenarbeitet.
  23. Ein Computerprogrammprodukt zum Erzeugen eines sicheren Software-Containers, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit damit realisierten Programmanweisungen aufweist, wobei die Programmanweisungen durch ein oder mehrere Datenverarbeitungssysteme oder Controller ausführbar sind, um das eine oder die mehreren Datenverarbeitungssysteme zu veranlassen, - ein erstes mehrschichtiges Software-Container-Image bereitzustellen, - alle Dateien, mit Ausnahme von entsprechenden Metadaten, einer jeden Schicht des ersten mehrschichtigen Software-Container-Images in einen Datenträger umzusetzen, wobei der Datenträger einen Satz von Blöcken aufweist, wobei jede Schicht einen inkrementellen Unterschied zu einer nächstniedrigeren Schicht aufweist, - jeden Block des Satzes von Blöcken von einem Teil der Schichten zu verschlüsseln, - einen jeden verschlüsselten Satz der Blöcke als eine Schicht eines verschlüsselten Container-Images zusammen mit unverschlüsselten Metadaten zu speichern, um eine Reihenfolge des Satzes von Blöcken wiederherzustellen, die gleich einer Reihenfolge des ersten mehrschichtigen Software-Container-Images ist, wodurch es einen sicheren, verschlüsselten Software-Container erzeugt.
  24. Computerprogrammprodukt nach Anspruch 23, wobei jede Schicht der in dem verschlüsselten Container-Image gespeicherten Schichten Thin Provisioning anwendet und auch Thin-Provisioning-Metadaten aufweist.
  25. Computerprogrammprodukt nach einem der Ansprüche 23 bis 24, wobei ein Name einer jeden Datei der Schicht des verschlüsselten Container-Images ein Hashwert von Inhalt der Datei ist.
DE112020000694.8T 2019-02-06 2020-01-31 Erzeugung und ausführung von sicheren containern Pending DE112020000694T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19155755.2 2019-02-06
EP19155755 2019-02-06
PCT/IB2020/050789 WO2020161577A1 (en) 2019-02-06 2020-01-31 Creation and execution of secure containers

Publications (1)

Publication Number Publication Date
DE112020000694T5 true DE112020000694T5 (de) 2021-10-21

Family

ID=65351936

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000694.8T Pending DE112020000694T5 (de) 2019-02-06 2020-01-31 Erzeugung und ausführung von sicheren containern

Country Status (6)

Country Link
US (1) US11475138B2 (de)
JP (1) JP7368476B2 (de)
CN (1) CN113383330A (de)
DE (1) DE112020000694T5 (de)
GB (1) GB2594225B (de)
WO (1) WO2020161577A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102223141B1 (ko) * 2019-02-12 2021-03-04 성균관대학교산학협력단 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치
US11062022B1 (en) * 2019-05-01 2021-07-13 Intuit Inc. Container packaging device
US10901704B1 (en) * 2020-07-19 2021-01-26 Xmodn Security, Llc Computer-aided design, simulation, and code generation for cryptography
US11455405B2 (en) * 2020-08-07 2022-09-27 EMC IP Holding Company LLC Optimizing docker image encryption—tradeoff between performance and protection level
US11675913B2 (en) * 2020-09-18 2023-06-13 EMC IP Holding Company LLC Optimizing container image encryption
US11455429B2 (en) * 2020-12-03 2022-09-27 International Business Machines Corporation Container-based cryptography hardware security module management
US11874926B2 (en) * 2020-12-07 2024-01-16 Hewlett Packard Enterprise Development Lp Measuring containers
CN113391880B (zh) * 2021-06-21 2023-04-07 超越科技股份有限公司 一种分层双重哈希验证的可信镜像传输方法
US20230315678A1 (en) * 2022-03-29 2023-10-05 International Business Machines Corporation Storage driver for managing a multiple layer file system on the cloud
US20240012666A1 (en) * 2022-07-06 2024-01-11 International Business Machines Corporation Protecting container images and runtime data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018007213A1 (en) 2016-07-07 2018-01-11 Gemalto Sa Method for securely managing a docker image
US20180309747A1 (en) 2011-08-09 2018-10-25 CloudPassage, Inc. Systems and methods for providing container security

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129082A (en) * 1990-03-27 1992-07-07 Sun Microsystems, Inc. Method and apparatus for searching database component files to retrieve information from modified files
CN101847184A (zh) 2009-12-16 2010-09-29 深圳市虹安信息技术有限公司 采用加密沙箱的文件加密方法
US9176677B1 (en) * 2010-09-28 2015-11-03 Emc Corporation Virtual provisioning space reservation
US9740583B1 (en) * 2012-09-24 2017-08-22 Amazon Technologies, Inc. Layered keys for storage volumes
US9652631B2 (en) * 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10002247B2 (en) 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment
US11042643B2 (en) 2015-12-24 2021-06-22 Intel Corporation Trusted deployment of application containers in cloud data centers
US10460124B2 (en) * 2016-06-20 2019-10-29 Netapp, Inc. Per-volume tenant encryption and external key manager
US10554690B2 (en) 2016-11-10 2020-02-04 International Business Machines Corporation Security policy inclusion with container deployment
US10572226B2 (en) 2016-12-21 2020-02-25 Aon Global Operations Ltd (Singapore Branch) Methods, systems, and portal using software containers for accelerating aspects of data analytics application development and deployment
US10997283B2 (en) * 2018-01-08 2021-05-04 Aqua Security Software, Ltd. System for securing software containers with encryption and embedded agent

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180309747A1 (en) 2011-08-09 2018-10-25 CloudPassage, Inc. Systems and methods for providing container security
WO2018007213A1 (en) 2016-07-07 2018-01-11 Gemalto Sa Method for securely managing a docker image

Also Published As

Publication number Publication date
GB2594225A (en) 2021-10-20
WO2020161577A1 (en) 2020-08-13
GB2594225B (en) 2022-03-02
US11475138B2 (en) 2022-10-18
CN113383330A (zh) 2021-09-10
GB202112113D0 (en) 2021-10-06
JP7368476B2 (ja) 2023-10-24
JP2022520703A (ja) 2022-04-01
US20200250319A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
DE112020000694T5 (de) Erzeugung und ausführung von sicheren containern
DE102012219155B4 (de) Verschlüsseln von Datenobjekten zur Datensicherung
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE112010003925B4 (de) Erweiterbare Zugriffssteuerungslisten-Grundstruktur
DE112010004931B4 (de) Mehrphasige Wiederherstellung von Dateisystemen mit Selektiver Bedarfsweiser Verfügbarkeit von Daten
DE102013203126B4 (de) System, Verfahren und Programmprodukt zum transparenten Zugreifen auf verschlüsselte nicht-relationale Daten in Echtzeit
DE102020120553A1 (de) Virtuell persistente volumes für containerisierte anwendungen
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
EP2488986B1 (de) Verfahren und vorrichtung zum betreiben einer virtuellen maschine gemäss einer zugeordneten rechteinformation
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112019006667T5 (de) Nutzen von blockchaintechnologie zum prüfen eines cloud-dienstes für die datenschutzkonformität
DE112019006678T5 (de) Blockchaintechnologie für die Einhaltung gesetzlicher Bestimmungen bei Datenverwaltungssystemen
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
DE112019006676T5 (de) Blockchaintechnologie zur Regelung der Datenintegrität und zum Existenzbeweis bei Datenschutzsystemen
DE112020003929T5 (de) Verwaltung von metadaten von virtuellen speichern
DE112019002265T5 (de) Verfahren und System zur semantikbeibehaltenden Standortverschlüsselung
DE112020005517T5 (de) Prozessgestütztes virtualisierungssystem zum ausführen eines sicheren anwendungsprozesses
DE112020003437T5 (de) Hyper-scale p2p-dedupliziertes speichersystem unter verwendung einesdistributed ledger
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102019113249A1 (de) Wertevergleichsserver, wertevergleichsverschlüsselungssystem und wertevergleichsverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence