DE112019004605T5 - Ermöglichen einer software-verteilung - Google Patents

Ermöglichen einer software-verteilung Download PDF

Info

Publication number
DE112019004605T5
DE112019004605T5 DE112019004605.5T DE112019004605T DE112019004605T5 DE 112019004605 T5 DE112019004605 T5 DE 112019004605T5 DE 112019004605 T DE112019004605 T DE 112019004605T DE 112019004605 T5 DE112019004605 T5 DE 112019004605T5
Authority
DE
Germany
Prior art keywords
computer
unit
portions
program instructions
code
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
DE112019004605.5T
Other languages
English (en)
Inventor
Srikanth Murali
Vijay Kumar Ananthapur Bache
Padmanabha Venkatagiri Seshadri
Vijay Ekambaram
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 DE112019004605T5 publication Critical patent/DE112019004605T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Verteilen und Ausführen von Software auf Einheiten durch Bereitstellen eines Computerprogramms; Zerlegen des Computerprogramms in einen Satz von Teilstücken; Verbessern der Datenübertragungs-Fehlertoleranz der Teilstücke; Verschlüsseln der Teilstücke; und Verteilen einzelner Teilstücke an einen Spiegelprozessor einer Einheit zur Assemblierung und Ausführung.

Description

  • HINTERGRUND
  • Die Erfindung bezieht sich im Allgemeinen auf das Gebiet eines Verteilens und Ausführens von Software und im Besonderen auf das Gebiet einer verdeckten Software-Verteilung und -Ausführung.
  • Schad-Software (Malware) kann Einheiten auf der Ebene von Datei, Antivirenprogramm (AV-Programm) oder Betriebssystem (Operating System, OS) infizieren. Das systeminterne Antivirenprogramm kann Infektionen auf der Datei- und auf manchen OS-Ebenen möglicherweise wirksam bekämpfen, bei Infektionen im Kern-OS oder im Antivirenprogramm selbst jedoch unwirksam sein.
  • Diagnose-Software, die in einer Einheit realisiert wird, kann dazu verwendet werden, das Vorhandensein und die Art einer Malware zu ermitteln, die in der Einheit aktiv ist. Eine solche Software kann dazu dienen, Schadcode in der Einheit zu erkennen und daraufhin zu entfernen oder anderweitig unter Quarantäne zu stellen.
  • Malware kann die Fähigkeit enthalten, Anti-Malware-Diagnoseaktionen zu identifizieren und zu umgehen, indem Leistungsmesswerte einer Einheit überwacht und Netzwerkübertragungskanäle, die einem Herunterladen eines Diagnoseprogramms zugehörig sind, selektiv blockiert werden oder indem das Angriffsmuster der Malware an die Aktivitäten des Anti-Malware- oder Diagnoseprogramms angepasst wird.
  • KURZDARSTELLUNG
  • Ein Aspekt der vorliegenden Erfindung enthält Verfahren, durch einen Computer lesbare Anweisungen und Systeme zum Verteilen und Ausführen von Software auf Einheiten, enthaltend: Bereitstellen eines Computerprogramms; Zerlegen des Computerprogramms in einen Satz von Teilstücken; Verbessern der Datenübertragungs-Fehlertoleranz der Teilstücke; Verschlüsseln der Teilstücke; und Verteilen einzelner Teilstücke an eine Einheit.
  • Figurenliste
  • Mit Blick auf die beigefügten Zeichnungen werden nun Ausführungsformen der Erfindung beschrieben, die lediglich beispielhaft zu verstehen sind und bei denen:
    • 1 eine schematische Ansicht des Systems einer Ausführungsform der Erfindung bereitstellt;
    • 2 ein funktionales Blockschaubild einer vernetzten Einheit gemäß einer Ausführungsform der Erfindung bereitstellt;
    • 3 eine schematische Ansicht der Schritte gemäß einer Ausführungsform der Erfindung bereitstellt;
    • 4 eine schematische Ansicht der Schritte gemäß einer Ausführungsform der Erfindung bereitstellt;
    • 5 einen Ablaufplan bereitstellt, der eine Ausführungsform der Erfindung darstellt;
    • 6 einen Ablaufplan bereitstellt, der eine Ausführungsform der Erfindung darstellt;
    • 7 eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der Erfindung darstellt; und
    • 8 Abstraktionsmodellschichten gemäß einer Ausführungsform der Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bei einer Einheit, die durch Malware auf der Betriebssystemebene oder in der Antiviren-Software der Einheit selbst kompromittiert wird, können Standardverfahren für die Malware-Erkennung womöglich unwirksam sein. Die aktuelle Malware kann die Aktivitäten der CPU der Einheit sowie eine Speicheraktivität überwachen, um zu ermitteln, wann und wie Diagnoseaktionen ausgeführt werden. Die Malware kann auch den Inhalt eines beliebigen Diagnoseprogramms überwachen, wodurch sich die Malware anpassen kann, um einer Kontrolle durch die Diagnose-Software zu entgehen. Die Malware kann den Netzwerkzugang der Einheit kontrollieren und so jeden Versuch verhindern, Diagnose-Software herunterzuladen oder den Zustand der Einheit über die Netzwerkverbindung aus der Ferne zu diagnostizieren. Bei einer Ausführungsform ermöglichen die Systeme und Verfahren, dass Diagnose-Software an eine Zieleinheit in einem Netzwerk weitergeleitet wird, während sie zugleich die verdeckte Ausführung der Software außerhalb des Sichtbereichs der aktuellen Malware ermöglichen. Bei dieser Ausführungsform wird die Nutzdaten-Diagnose-Software bzw. das Malware-Diagnoseprogramm (MDP) in Teilstücke zerlegt, die dann unter Verwendung unüblicher Pfade an das Ziel weitergeleitet werden. Die Teilstücke werden durch einen Spiegelprozessor (SP) der Einheit erkannt, neu assembliert und außerhalb des Sichtbereichs einer etwaig vorhandenen Malware durch den SP ausgeführt.
  • Bei einer Ausführungsform weist ein System einen Server und eine Mehrzahl von vernetzten Einheiten auf, die in einem Datenaustausch mit dem Server sowie in einem Peer-zu-Peer-Datenaustausch stehen. Die Einheiten übertragen ihre Identität und ermöglichen so anderen Einheiten in dem Netzwerk, zu ermitteln, welche Peer-Einheiten sich in der Nähe befinden. Bei einer Ausführungsform überträgt die Einheit außerdem die Identitäten von in der Nähe befindlichen Einheiten und ermöglicht dadurch, dass Interaktionen der Netzwerkeinheiten überwacht und analysiert werden können. Bei dieser Ausführungsform enthalten die Peer-Einheiten Smartphones, IoT-Einheiten, vernetzte Computer, Server und andere Netzwerkeinheiten. Die Einheiten weisen Anwendungscode auf, der durch den Hauptprozessor der Einheit ausgeführt werden kann. Die Einheiten können eine Anzeige und eine Benutzeroberfläche sowie einen Satz von Sensoren aufweisen. Zusätzlich zu dem Hauptprozessor der Einheit weist jede Einheit einen SP (Spiegelprozessor) auf. Der SP kann ein separater Mikroprozessor oder eine virtuelle Maschine sein, die als ein partitionierter Bereich einer einzelnen CPU der Einheit fungiert. Der SP wird als eine Überwachungseinheit des Hauptprozessors und anderer Komponenten der Einheit wie z.B. Speicherelementen der Einheit konfiguriert. Die Einheit wird so konfiguriert, dass der SP in der Lage ist, den Hauptprozessor und den Hauptspeicher der Einheit zu überwachen, der Hauptprozessor jedoch daran gehindert wird, die Aktivitäten des SPs zu sehen. Systemarchitektur wie die Intel Management Engine, der AMD Platform Security Processor oder entsprechende Systeme können für die Verfahren der Erfindung verwendet werden. (Hinweis: Die Begriffe „INTEL“ und/oder „AMD“ können in verschiedenen Ländern weltweit Markenrechten unterliegen und werden hier nur insofern unter Bezugnahme auf die Produkte oder Dienste verwendet, die durch die Marken ordnungsgemäß benannt werden, als solche Markenrechte möglicherweise vorhanden sind.)
  • Bei dieser Ausführungsform wird der SP konfiguriert, um kryptografische Funktionen wie z.B. eine Verschlüsselung und Entschlüsselung mit einem doppelten Schlüssel sowie eine Löschcodierung und ein Umkehren einer Löschcodierung von Daten zu ermöglichen. Der SP wird mit Anweisungen und Codeschlüsseln vorkonfiguriert, die einem Erkennen von Codeteilstücken sowie einem Entziffern und Entschlüsseln von empfangenen Teilstücken zugehörig sind.
  • Jede vernetzte Einheit kann in Bezug auf ihre Netzwerkbeziehung zu allen anderen Einheiten definiert werden, zum Beispiel: die Häufigkeit und Dauer des Kontakts zwischen einer bestimmten Einheit und jeder anderen Einheit in dem Netzwerk (das D2D- oder Device-to-Device-Kontaktmuster), das Potenzial einer jeden vernetzten Einheit, die Umgebung zu beeinflussen, welche eine bestimmte Zieleinheit im Laufe der Zeit einnimmt (Inkubatorprofil), sowie der Satz von Software-Anwendungen, die auf jeder Einheit vorhanden sind, einschließlich der Metadaten zur Nutzungshäufigkeit der betreffenden Anwendungen (das Anwendungsprofil der Einheit, (Device Application Profile, DAP)). Der Systemadministrator überwacht die Peer-zu-Peer-Aktivität und Software-Aktualisierungen, um das D2D-Kontaktmuster, das Inkubatorprofil und das Anwendungsprofil der Einheit für jede Systemeinheit zu verwalten.
  • Bei einer Ausführungsform enthält ein durch einen Computer realisiertes Verfahren zum Verteilen von Software ein Bereitstellen von Computercode. Bei dieser Ausführungsform kann der bereitgestellte Code als die Nutzdaten für eine Zustellung an die Zielelemente des Gesamtsystems betrachtet werden. Die Nutzdaten können Grenzelemente, Signaturelemente, Diagnose-Software oder andere Elemente aufweisen, die als funktionale Aspekte des Codes der Einheit gedacht sind, aber vor einer einfachen Entdeckung verborgen sind, sobald sie vorhanden vor Ort sind oder während sie ausgeführt werden. Die Nutzdaten können unter Verwendung einer beliebigen Software-Sprache codiert werden. Bei einer Ausführungsform weisen die Nutzdaten einen Code für ein Malware-Erkennungsprogramm (Malware Detection Program, MDP) auf, das dazu gedacht ist, Systemressourcen auf Malware zu überprüfen und die Malware bei einer Erkennung zu entfernen, in Quarantäne zu stellen oder zu melden.
  • Die Nutzdaten-Software wird einem Zerstückelungsprozess unterzogen, bei dem die Software in einen Satz von Codefragmenten oder -teilstücken unterteilt wird. Jedes Teilstück weist einen Teil der gesamten Nutzdaten auf, und der vollständige Satz von Teilstücken weist die Gesamtheit der gesamten Nutzdaten-Software auf. Der Zerstückelungsprozess kann das D2D-Muster und das Anwendungsprofil der Einheit sowie das Inkubatorprofil als mögliche Eingaben verwenden, um zu ermitteln, wie groß jedes Teilstück sein sollte und wie viele Teilstücke somit benötigt werden. Der Satz von Teilstücken kann in einen Binärcode übersetzt werden, um an Zieleinheiten übertragen zu werden.
  • Die Teilstücke können unter Verwendung von drahtlosen oder drahtgebundenen Pfaden an die Zieleinheit übertragen werden. Um die Auswirkung etwaiger mit der Übertragung verbundener Fehler bei den zugestellten Nutzdaten zu reduzieren, kann die Fehlertoleranz verbessert werden, d. h. die Fähigkeit, die Informationen, die ein Teilstück enthält, auch dann wiederherzustellen, wenn ein Teil der übertragenen Daten korrumpiert wird oder verloren geht. Bei einer Ausführungsform können die Teilstücke löschcodiert werden, um ihre Fehlertoleranz zu erhöhen. Bei dieser Ausführungsform werden die Teilstücke unter Verwendung von Brunnencode, Reed-Solomon-Code oder anderen Verfahrensweisen für die Löschcodierung löschcodiert.
  • Bei einer Ausführungsform können die Teilstücke verschlüsselt werden. Verschlüsselungsverfahren unter Verwendung von symmetrischen Schlüsseln oder Kombinationen aus asymmetrischen öffentlichen und privaten Schlüsseln können zum Verschlüsseln der Teilstücke verwendet werden, um den Teilstück-Inhalt zu verschleiern, falls die Übertragung des Teilstücks abgefangen wird und der Teilstück-Inhalt untersucht wird. Die Verwendung von asymmetrischen Schlüsseln stellt einen zusätzlichen Nutzen einer Berechtigungsprüfung für Teilstücke bereit, die durch einen SP entschlüsselt werden, da nur authentische Teilstücke unter Verwendung des asymmetrischen Schlüsselteils des SPs einwandfrei entschlüsselt werden können.
  • Bei einer Ausführungsform weist jede Einheit einen eindeutigen privaten Schlüssel auf, und der Server kann die öffentlichen Schlüssel für jede eindeutige Einheit speichern. Bei dieser Ausführungsform kann der Server Teilstücke erzeugen, die an jede Einheit individuell angepasst und unter Verwendung des öffentlichen Schlüssels der betreffenden Einheit verschlüsselt werden. Die individuell angepassten Teilstücke können dann als Patches bei Anwendungsaktualisierungen oder bei einem Peer-zu-Peer-Kontakt verteilt werden. Das Ziel entschlüsselt die Teilstücke unter Verwendung des privaten Schlüssels.
  • Bei einer Ausführungsform kann der Server einen privaten Schlüssel aufweisen, der verwendet wird, um alle Teilstücke unabhängig von der Zieleinheit zu verschlüsseln. Bei dieser Ausführungsform weist jede Einheit den öffentlichen Schlüssel des Servers auf, der in Software oder in Firmware der Einheit gespeichert wird. Jede Einheit kann jedes Teilstück entschlüsseln. Bei dieser Ausführungsform kann der Systemadministrator einen einzelnen Satz von Teilstücken erzeugen, der an alle vernetzten Einheiten übertragen werden kann. Jede Einheit kann dann den allgemeinen Satz von Teilstücken entschlüsseln und verwenden, um ein MDP zu assemblieren und auszuführen.
  • Bei einer Ausführungsform können die Teilstücke unter Verwendung einer App-Smear-Codierung an den SP einer oder mehrerer Zieleinheiten verteilt werden. Eine App-Smear-Codierung verbreitet die Teilstücke über mehrere Verteilungseinheiten oder mehrere Anwendungen der Einheit hinweg. Der ursprüngliche Satz von Teilstücken wird unterteilt, und die Teilsätze von Teilstücken werden dann verteilt, um die Möglichkeiten einer Erkennung während der Verteilung zu reduzieren. Unter Verwendung der hier beschriebenen App-Smear-Methoden können Teilstücke einzeln injiziert werden.
  • Bei einer Ausführungsform wird der Satz von Teilstücken an eine Zieleinheit verteilt, indem Interaktionen zwischen dem Ziel und Peer-Einheiten in dem Netzwerk verwendet werden. Der Satz von Teilstücken wird verteilt oder über die Netzwerk-Peers hinweg verbreitet, indem die D2D-Muster- und Inkubatorprofil-Informationen wie z. B. Kontakthäufigkeit und -dauer sowie Injektionsquellen verwendet werden, die jeder der Peer-Einheiten in Bezug auf die Zieleinheit zur Verfügung stehen. Es können mehr Teilstücke an Einheiten verteilt werden, die eine größere Kontakthäufigkeit mit dem Ziel oder eine längere Kontaktdauer mit dem Ziel aufweisen oder die mehr Injektionskanäle aufweisen. Als ein Beispiel kann eine erste Peer-Einheit ein D2D-Muster aufweisen, das einen einmal pro Monat stattfindenden Kontakt angibt, das jedoch auch eine Kontaktdauer von mehr als einer Stunde sowie mehrere Injektionspfade angibt, das D2D-Muster einer zweiten Peer-Einheit kann einen Kontakt mit einer kurzen Dauer alle 15 Minuten angeben, und das D2D-Muster einer dritten Einheit kann einen einmal pro Tag stattfindenden Kontakt mit einer kurzen Dauer angeben. In diesem Beispiel können alle gewünschten Teilstücke zur Injektion an die erste Einheit verteilt werden, und ein Teil des Satzes von Teilstücken kann zur Injektion jeweils an die zweite und dritte Einheit verteilt werden. Einzelne Teilstücke können an mehrere Peer-Einheiten verteilt werden, um die Zustellung der Nutzdaten an Zieleinheiten zu beschleunigen.
  • Bei einer Ausführungsform können Injektionsquellen unübliche Wege wie z.B. passive Umgebungssensoren nutzen, um Erkennungsmaßnahmen zu vermeiden, die sich auf ein Überwachen der APIs der Einheit konzentrieren. Bei dieser Ausführungsform können die Injektionsquellen Peer-Einheiten oder Systemprozessoren oder Server-Ressourcen sein. Bei dieser Ausführungsform kann die Peer-Einheit mit der Zieleinheit interagieren, indem sie die Umgebung der Zieleinheit ändert und dadurch passive Sensoren der Zieleinheit dazu bringt, in Datenregister zu schreiben. Die Systemprozessoren oder Server-Ressourcen können außerdem mit der Zieleinheit interagieren, indem sie die Umgebung des Ziels durch Änderungen am Erzeugen von Umgebungssystemen und -ressourcen ändern. Die geschriebenen Daten können Laufzeitausnahmebedingungen in Algorithmen auslösen, welche die Sensordatenregister lesen. Die ausgelösten Ausnahmebedingungen werden durch den SP erfasst, der den Hauptprozessor der Einheit überwacht. Umgebungssensoren können durch vorhandene Malware nur schwer oder gar nicht blockiert oder deaktiviert werden. Bei dieser Ausführungsform kann ein Algorithmus die Register von Sensoren der Einheit lesen, z.B. Licht-, Beschleunigungs-, Temperatur-, Druck-, Magnetfeld- und Geräuschsensoren.
  • Bei dieser Ausführungsform wird der SP mit einem Datenmodell vorkonfiguriert, um den SP in die Lage zu versetzen, Sequenzen von ausgelösten Ausnahmebedingungen als Codeteilstücke zu erkennen. Der SP assembliert die Ausnahmebedingungsdaten und erzeugt daraus erneut die einzelnen Teilstücke. Die assemblierten Teilstücke werden entschlüsselt, wodurch sowohl der Verschlüsselungsprozess als auch der Löschcodierungsprozess umgekehrt wird und die ursprünglichen Codeteilstücke erhalten werden. Die ursprünglichen Teilstücke werden dann unter Verwendung von Sequenzierungsinformationen, die aus dem ursprünglichen Programm in die Teilstücke übernommen werden, zu der ursprünglichen Nutzdaten-Software assembliert und ausgeführt, um die Aufgabe des ursprünglichen Programms auszuführen.
  • Wenn die Peer-Einheiten die Umgebung des Ziels ändern und dadurch den Wert in den Datenregistern von Sensoren des Ziels ändern, kann der SP nach vorkonfigurierten Anweisungen alternativ die Sensorregister der Einheiten direkt lesen, um die Teilstücke wiederherzustellen, wodurch es nicht notwendig ist, ausgelöste Ausnahmebedingungen des Hauptprozessors zu überwachen.
  • Bei einer Ausführungsform können die Teilstücke dem Ziel durch Anwendungsaktualisierungen bereitgestellt werden. Bei dieser Ausführungsform wird eine Datenbank von Anwendungen der Einheit durch den Administrator gepflegt, um zu verfolgen, welche Anwendungen auf einer bestimmten Einheit vorhanden sind, und um die Häufigkeit einer Nutzung der Anwendungen in der Einheit zu verfolgen, das Anwendungsprofil der Einheit (DAP).
  • Sobald eine Einheit als ein Ziel identifiziert wird, kann das DAP dazu verwendet werden, Anwendungen für eine weitere Analyse zu identifizieren, um geeignete Stellen für eine Codeinjektion zu identifizieren. Anwendungen können analysiert werden, um Stellen zum Einfügen von Teilstücken zu identifizieren, die zuvor in ausführbare, ansonsten jedoch nicht funktionale Codezeichenfolgen übersetzt wurden. Eine Analyse des Anwendungssteuerungsablaufs kann verwendet werden, um Teile des Anwendungscodes zu identifizieren, die Hotspots in dem Code aufweisen, welche während der normalen oder üblichen Nutzung der Anwendung häufig ausgeführt werden, sowie um Teile mit einer gleichmäßigen Ablaufausführung mit wenigen oder überhaupt keinen Verzweigungsanweisungen zu identifizieren. Hotspot-Stellen mit einem gleichmäßigen Ablauf eignen sich gut für eine Code-Einfügung.
  • Bei dieser Ausführungsform können die Teilstücke in Code-Anweisungen übersetzt werden, die den Hauptcode der Hostanwendung, welcher das Teilstück enthält, nicht negativ beeinflussen. Zum Beispiel könnte eine Teilstück-Sequenz von 100100000011 als eine ansonsten nicht funktionale Codesequenz injiziert werden:
    • ADD R1, R2, TMP_REGISTER
    • ADD R2, R1, TMP_REGISTER
    • NOOP
    • NOOP
    • NOOP
    • BR J1; J1:NEXT_INSTRUCTION wird so verwendet, dass der Hauptcode nicht beeinträchtigt wird. Eine Sequenz von derartigen Anweisungen, die in den Hauptcode eingestreut sind, ermöglicht das Verbergen des Codes. Bei dieser Ausführungsform steht ADD R1, R2, TMP_REGISTER für 10, ADD R2, R1, TMP_REGISTER für 01, NOOP für 00 und BR für 11.
  • Jedes Teilstück kann in eine ähnliche Zeichenfolge von ausführbarem, aber nicht funktionalem Code übersetzt und als ein Patch an einer identifizierten Stelle in eine Anwendung eingefügt werden, um die Wahrscheinlichkeit zu erhöhen, dass die Zieleinheit den gepatchten Anwendungscode ausführt.
  • Auf geeignete Weise gepatchte Versionen von Host-Anwendungen, die nun eingebettete Teilstücke der Nutzdaten enthalten, können der Einheit als scheinbar routinemäßige Anwendungsaktualisierungen bereitgestellt werden. Ein Verbreiten der Teilstücke des ursprünglichen Programms über mehrere Anwendungen der Einheit hinweg reduziert die Möglichkeit einer Entdeckung durch Schad-Software, welche die Aktivität der Einheit überwacht.
  • Bei dieser Ausführungsform kann der SP die heruntergeladenen Aktualisierungen der Anwendungen oder die Ausführung der Anwendungen durch den Hauptprozessor für den nicht funktionalen Code überprüfen und Code zu den injizierten Teilstücken assemblieren. Der SP kann mit einem Entzifferungsschlüssel vorkonfiguriert werden, um die nicht funktionale Codezeichenfolge in eine binäre Sequenz des Teilstücks zu übersetzen. Danach entschlüsselt der SP das Teilstück und kehrt die Löschcodierung um, um den ursprünglichen Codeteil wie oben beschrieben zu erhalten. Der SP assembliert die akkumulierten Teilstücke unter Verwendung von Sequenzinformationen, die in dem ursprünglichen Nutzdaten-Quellcode enthalten sind.
  • Bei einer Ausführungsform kann der SP einer Zieleinheit des Weiteren als Teil des Netzwerks von Einheiten dienen, die Teilstücke verbreiten. Bei dieser Ausführungsform löschcodiert und verschlüsselt der SP der Zieleinheit Teilstücke, die empfangen und entschlüsselt wurden, und überträgt die verschlüsselten Teilstücke daraufhin unter Verwendung unüblicher Kanäle an andere Netzwerkkanäle, wenn die Zieleinheit und andere Einheiten sich einander annähern. Bei dieser Ausführungsform kann der Administrator alle Einheiten als Zieleinheiten behandeln. Der Server kann versuchen, unter Verwendung der Verfahren der Erfindung Nutzdaten-Anti-Malware-Software an alle Netzwerkeinheiten zu verteilen. Verschlüsselte Nutzdaten-Teilstücke können unter Verwendung von Anwendungsaktualisierungen sowie Peer-zu-Peer-Verfahren verteilt werden, die für jede Einheit individuell angepasst werden oder die von allgemeiner Natur sind, um eine Zustellung an alle Einheiten zu umfassen.
  • Bei einer Ausführungsform führt der SP der Zieleinheit den Code aus, der akkumuliert, entschlüsselt und assembliert wurde. Die Ausführung des akkumulierten Codes kann auf das Vorhandensein von Malware hinweisen, die in dem System der Einheit aktiv ist. Die Malware kann durch das MDP entfernt oder in Quarantäne gestellt werden. Der Code kann des Weiteren ein Aktivitätsprotokoll erzeugen und seine Aktivitäten übertragen. Bei einer Ausführungsform, bei der erkannte Malware entfernt oder in Quarantäne gestellt wurde, kann die Datenübertragung auf einer hohen Ebene erfolgen, z.B. als ein Aufklappfenster, das einen Link zu einer Protokolldatei oder andere Informationen bereitstellt, die auf der Anzeige der Zieleinheit vorgelegt werden, oder sie kann durch eine direkte Datenübertragung über das Netzwerk erfolgen, sobald eine wie auch immer geartete Kontrolle über Netzwerkkanäle durch Malware behoben wurde. Bei einer Ausführungsform, bei der Malware erkannt, aber nicht entschärft wurde, so dass herkömmliche Datenübertragungskanäle einer Kontrolle oder Beobachtung durch Malware unterliegen könnten, kann die Datenübertragung eine Umkehrung der MDP-Verteilung sein. Bei einer Ausführungsform wird die Nachricht in Teilstücke zerlegt, löschcodiert, verschlüsselt und unter Verwendung von Licht, Geräuschen, Magnetfeldern oder Vibrationen, die durch Peer-Einheiten erfasst werden, über das Peer-zu-Peer-Netzwerk verteilt. Bei dieser Ausführungsform löst ein Empfang der Nachricht durch das System eine weitere Aktivität aus, z.B. ein Protokollieren der erfolgreichen Entfernung von Malware oder die Notwendigkeit von zusätzlichen Schritten im Falle einer erfolgreichen Identifizierung eines Malware-Vorhandenseins, jedoch ein nicht gelungenes Beheben der Malware-Auswirkungen.
  • Bei einer in 1 veranschaulichten Ausführungsform weist ein allgemein als 100 bezeichnetes System ein Server-Teilsystem 102 und eine Mehrzahl von vernetzten Client-Einheiten 104, 106, 108, 110 und 112 auf. Die vernetzten Einheiten 104, 106, 108, 110 und 112 tauschen über ein Netzwerk 114 auf drahtlose Weise Daten mit dem Server und miteinander aus. Die vernetzten Einheiten 104, 106, 108, 110 und 112 können auch unter Verwendung (nicht gezeigter) anderer unüblicher Kanäle miteinander interagieren, z.B. Licht, Geräusche, Temperatur, Magnetfelder und Druckänderungen in der Umgebung einer (nicht gezeigten) Zieleinheit T, um Daten in die Datenregister der Einheiten zu schreiben. Jede Client-Einheit 104, 106, 108, 110 und 112 weist ein Client-Programm 115 auf, das bei Ausführung die hier beschriebenen Arbeitsaufgaben der Zieleinheit ausführt.
  • Wie in 1 gezeigt, weist das Server-Teilsystem 102 einen Server-Computer 150 auf. 1 stellt ein Blockschaubild von Komponenten des Server-Computers 150 innerhalb einer verteilten Datenverarbeitungsumgebung 100 aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung dar. Dabei sollte klar sein, dass 1 lediglich eine Veranschaulichung einer Ausführung bereitstellt und keinerlei Beschränkungen mit Blick auf die Umgebungen impliziert, in denen verschiedene Ausführungsformen realisiert werden können. Vielmehr können an der abgebildeten Umgebung zahlreiche Änderungen vorgenommen werden.
  • Der Server-Computer 150 kann einen oder mehrere Prozessoren 154, einen Arbeitsspeicher 158, der einen Direktzugriffsspeicher (Random Access Memory, RAM) 160 und einen Cache-Arbeitsspeicher 162 aufweist, einen persistenten Speicher 170, eine Datenübertragungseinheit 152, eine bzw. mehrere Eingabe/Ausgabe(E/A)-Schnittstellen 156 und eine Datenübertragungsstruktur 140 enthalten. Die Datenübertragungsstruktur 140 stellt eine Datenübertragung zwischen dem Cache 162, dem Arbeitsspeicher 158, dem persistenten Speicher 170, der Datenübertragungseinheit 152 und der bzw. den Eingabe/Ausgabe(E/A)-Schnittstellen 156 bereit. Die Datenübertragungsstruktur 140 kann mit einer beliebigen Architektur realisiert werden, die dafür entworfen wurde, zwischen Prozessoren (wie z.B. Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), einem Systemarbeitsspeicher, Peripherieeinheiten und beliebigen anderen Hardware-Komponenten innerhalb eines Systems Daten und/oder Steuerungsinformationen weiterzuleiten. Die Datenübertragungsstruktur 140 kann zum Beispiel mit einem oder mehreren Bussen realisiert werden.
  • Der Arbeitsspeicher 158 und der persistente Speicher 170 sind durch einen Computer lesbare Speichermedien. Bei dieser Ausführungsform enthält der Arbeitsspeicher 158 einen Direktzugriffsspeicher (RAM). Im Allgemeinen kann der Arbeitsspeicher 158 alle geeigneten flüchtigen oder nicht flüchtigen durch einen Computer lesbaren Speichermedien enthalten. Der Cache 162 ist ein schneller Arbeitsspeicher, der die Leistung des einen oder der mehreren Prozessoren 154 verbessert, indem er Daten, auf die kürzlich zugegriffen wurde, sowie Daten in der Nähe von Daten, auf die kürzlich zugegriffen wurde, aus dem Arbeitsspeicher 158 speichert.
  • Programmanweisungen und Daten zur praktischen Umsetzung von Ausführungsformen der vorliegenden Erfindung wie z.B. das Software-Verteilungsprogramm 175 werden in dem persistenten Speicher 170 gespeichert, um über den Cache 162 durch einen oder mehrere der betreffenden Prozessoren 154 des Server-Computers 150 ausgeführt zu werden. Bei dieser Ausführungsform enthält der persistente Speicher 170 ein magnetisches Festplattenlaufwerk. Alternativ oder zusätzlich zu einem magnetischen Festplattenlaufwerk kann der persistente Speicher 170 eine Halbleiter-Festplatte, eine Halbleiter-Speichereinheit, einen Festwertspeicher (Read-Only Memory, ROM), einen löschbaren programmierbaren ROM (Erasable Programmable Read-Only Memory, EPROM), einen Flash-Speicher oder jedes andere durch einen Computer lesbare Speichermedium enthalten, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
  • Die durch den persistenten Speicher 170 verwendeten Medien können auch entfernbar sein. So kann zum Beispiel eine entfernbare Festplatte als der persistente Speicher 170 verwendet werden. Andere Beispiele enthalten optische und Magnetplatten, USB-Sticks und Smartcards, die in ein Laufwerk eingeführt werden, um eine Übertragung auf ein weiteres durch einen Computer lesbares Speichermedium vorzunehmen, das ebenfalls Teil des persistenten Speichers 170 ist.
  • Die Datenübertragungseinheit 152 stellt in diesen Beispielen eine Datenübertragung mit anderen Datenverarbeitungssystemen oder -einheiten bereit, wie z.B. mit Ressourcen der Client-Datenverarbeitungseinheiten 104, 106, 108, 110 und 112. In diesen Beispielen besteht die Datenübertragungseinheit 152 aus einer oder mehreren Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 152 kann eine Datenübertragung sowohl über physische als auch über drahtlose Datenübertragungsverbindungen bereitstellen. Software-Verteilungsprogramme und andere Programme und Daten, die für eine Realisierung der vorliegenden Erfindung verwendet werden, können über die Datenübertragungseinheit 152 in den persistenten Speicher 170 des Server-Computers 150 heruntergeladen werden.
  • Die eine bzw. die mehreren E/A-Schnittstellen 156 ermöglichen eine Eingabe und Ausgabe von Daten in andere oder aus anderen Einheiten, die mit dem Server-Computer 150 verbunden werden können. Zum Beispiel können die eine bzw. die mehreren E/A-Schnittstellen 156 eine Verbindung zu einer bzw. mehreren externen Einheiten 190 wie beispielsweise zu einer Tastatur, einem Tastenfeld, einem berührungsempfindlichen Bildschirm, einem Mikrofon, einer Digitalkamera und/oder einer anderweitigen geeigneten Eingabeeinheit bereitstellen. Die externen Einheiten 190 können auch tragbare durch einen Computer lesbare Speichermedien wie z.B. USB-Sticks, tragbare optische oder Magnetplatten und Speicherkarten enthalten. Software und Daten zur praktischen Umsetzung von Ausführungsformen der vorliegenden Erfindung wie z.B. das Software-Verteilungsprogramm 175 auf dem Server-Computer 150 können auf derartigen tragbaren, durch einen Computer lesbaren Speichermedien gespeichert und über die eine bzw. die mehreren E/A-Schnittstellen 156 in den persistenten Speicher 170 geladen werden. Die eine bzw. die mehreren E/A-Schnittstellen 156 werden auch mit einer Anzeige 180 verbunden.
  • Die Anzeige 180 stellt einen Mechanismus bereit, um einem Benutzer Daten anzuzeigen, und kann zum Beispiel ein Computermonitor sein. Die Anzeige 180 kann auch als ein berührungsempfindlicher Bildschirm fungieren, z.B. als eine Anzeige eines Tablet Computers.
  • Wie in 2 gezeigt, weist eine repräsentative vernetzte Client-Einheit 104 einen Hauptprozessor 1041, einen SP 1042, eine Netzwerk-Datenübertragungsschicht 1043, einen Einheitenspeicher 1044 und eine Sensorschicht 1045 auf. Die Sensorschicht 1045 weist einen oder mehrere Einheitensensoren, Kameras, Mikrofone, Beschleunigungsmesser, Thermometer, Barometer, Windmesser und andere Sensoren auf, die nach dem Stand der Technik bekannt sind. Die (nicht gezeigten) Sensoren geben Daten an (nicht gezeigte) Register aus, auf die der Hauptprozessor 1041 und der SP 1042 jeweils zugreifen können. Aktivitäten des Hauptprozessors 1041 und des Einheitenspeichers 1044 sind für den SP 1042 sichtbar. Aktivitäten des SPs 1042 sind für den Hauptprozessor 1041 nicht sichtbar. Der Hauptprozessor 1041 und der SP 1042 können über die Netzwerkschicht 1043 jeweils mit der Umgebung interagieren.
  • Bei einer in 3 veranschaulichten Ausführungsform wird in Schritt 1 unter Bezugsziffer 300 in 310 ein MDP durch einen Server-Teilsystem-Computer 150 aus 1, der das Software-Verteilungsprogramm 175 aus 1 ausführt, in Teilstücke umgewandelt. In 320 werden die Teilstücke durch den Computer 150 löschcodiert. In 330 werden die löschcodierten Teilstücke durch den Computer 150 verschlüsselt. Wie in der Figur gezeigt, werden die verschlüsselten Teilstücke durch den Computer 150 an Schritt 2, Bezugsziffer 350, weitergeleitet. In Schritt 2 werden die verschlüsselten Teilstücke an eine Zieleinheit T verteilt. Die verschlüsselten Teilstücke 330 können auf einen Satz von vernetzten Peer-zu-Peer-Einheiten 104, 106, 108, 110 und 112 verteilt werden, um an andere Einheiten und die Zieleinheit T übertragen zu werden. Verschlüsselte Teilstücke werden dann unter Verwendung unüblicher Kanäle und der Sensorschicht-Datenregister von Einheit T in die anderen Einheiten und die Zieleinheit T injiziert, indem die Umgebung der Einheiten durch eine Kombination aus dem Server-Teilsystem 102 und den vernetzten Einheiten 104, 106, 108, 110 und 112 geändert wird.
  • Bei dieser Ausführungsform kann jede der vernetzten Einheiten 104, 106, 108, 110 und 112 ein Ziel für eine Einfügung von Codeteilstücken sein. Bei einer Ausführungsform ist jede Einheit 104, 106, 108, 110 und 112 des Systems eine Zieleinheit T. Bei dieser Ausführungsform kann der Systemadministrator (der Server-Computer 150 aus 1) feststellen, dass ein MDP an alle vernetzten Einheiten 200 verteilt werden muss. Die verschlüsselten Teilstücke 330 können durch den Server-Computer 150 als ein ausführbarer, nicht funktionaler Code 340 in Kopien von Anwendungen eingefügt werden, die sich auf der Zieleinheit T befinden. Der ausführbare, nicht funktionale Code 340 kann dann durch den Server-Computer 150 unter Verwendung herkömmlicher Netzwerkkanäle als gepatchte Versionen der vorhandenen Anwendungen direkt an die Zieleinheit T übertragen werden. Der nicht funktionale Code kann dann durch einen SP der Zieleinheit in einen Binärcode übersetzt, entschlüsselt und zu dem MDP assembliert werden.
  • Die in den 4 und 6 veranschaulichten Aktivitäten werden durch den SP der Zieleinheit ausgeführt, der das Software-Verteilungsprogramm 115 aus 1 ausführt. Bei einer in 4 veranschaulichten Ausführungsform entschlüsselt ein SP in 410 einen Satz von akkumulierten Teilsätzen unter Verwendung von vorkonfigurierten Schlüsseln wie z.B. dem privaten oder öffentlichen Schlüssel eines asymmetrischen Schlüsselpaars, so dass sich ein Satz von löschcodierten Teilstücken ergibt. In 420 werden die löschcodierten Teilstücke durch den SP umgekehrt löschcodiert, so dass sich die ursprünglichen Teilstücke ergeben. In 430 werden die ursprünglichen Teilstücke 416 dann durch den SP zu dem ursprünglichen MDP 440 assembliert, wobei die in den Teilstücken enthaltenen Sequenzierungsinformationen verwendet werden. Ursprüngliche Teilstücke werden außerdem in 450 durch den SP löschcodiert und in 460 durch den SP verschlüsselt, um durch den SP an andere Einheiten übertragen zu werden.
  • Der Ablaufplan 500 aus 5 veranschaulicht die Prozessschritte einer Ausführungsform der Erfindung. Nach dem Programmstart wird in Schritt 510 durch den Server-Teilsystem-Computer 150 ein MDP in einen Satz von Codeteilstücken zerlegt. Die Teilstücke aus Schritt 510 werden dann in Schritt 520 unter Verwendung von Brunnencode, Reed-Solomon-Methoden oder anderen Löschcodierungsverfahren durch den Computer 150 löschcodiert. Die löschcodierten Teilstücke werden dann in Schritt 530 durch den Computer 150 verschlüsselt, wobei ein Schlüssel eines asymmetrischen Schlüsselpaars verwendet wird. Die verschlüsselten Teilstücke werden danach durch den Computer 150 und die vernetzten Einheiten 104, 106, 108, 110 und 112 in Schritt 540 an eine Einheit verteilt, wobei die oben beschriebenen Verteilungsverfahren verwendet werden.
  • Bei einer in dem Ablaufplan 600 aus 6 veranschaulichten Ausführungsform werden Programmteilstücke in Schritt 610 durch einen SP akkumuliert. Die Teilstücke werden aus Injektionsstellen akkumuliert, z.B. Datenregister auf Sensorebene, durch Algorithmen von Hauptprozessoren ausgelöste Ausnahmebedingungen und nicht funktionaler Code aus gepatchten Anwendungsaktualisierungen. Vorkonfigurierte Verschlüsselungsschlüssel werden durch den SP verwendet, um die Teilstücke in Schritt 620 zu entschlüsseln und auf ihre Berechtigung zu überprüfen. Die entschlüsselten Teilstücke werden dann in Schritt 630 durch den SP umgekehrt löschcodiert, um ursprüngliche Teilstücke zu erhalten. Die ursprünglichen Teilstücke werden in Schritt 640 durch den SP zu dem ursprünglichen ausführbaren Programm assembliert, wobei Sequenzierungsinformationen verwendet werden, die in dem ursprünglichen Code enthalten sind. Der ursprüngliche Programmcode wird dann in Schritt 650 durch den SP ausgeführt. Die ursprünglichen Teilstücke werden außerdem in Schritt 660 durch den SP löschcodiert. Die löschcodierten Teilstücke werden in Schritt 670 durch den SP verschlüsselt. Die verschlüsselten Teilstücke werden in Schritt 680 durch den SP an andere Einheiten übertragen.
  • Bei einer Ausführungsform empfängt ein Systemadministrator-Server ein aktualisiertes MDP. Das aktualisierte MDP wird zerlegt, löschcodiert und verschlüsselt. Die resultierenden Teilstücke werden dann als nicht funktionaler Code in eine oder mehrere Anwendungen eingefügt, die in einem Teil der Mehrzahl von vernetzten Einheiten in dem System vorhanden sind. Die gepatchten Anwendungen werden als eine Aktualisierung an die vernetzten Einheiten übertragen. Die Einheiten führen die gepatchten Anwendungen aus und ermöglichen den SPs der Einheiten so, die verschlüsselten Teilstücke zu erkennen und aus den nicht funktionalen Anweisungen zu extrahieren. Die Teilstücke werden unter Verwendung eines öffentlichen Schlüssels entschlüsselt. Die Teilstücke werden dann umgekehrt löschcodiert, um die ursprünglichen Programmteilstücke zu extrahieren, die dann zu dem aktualisierten MDP assembliert und ausgeführt werden. Die Teilstücke werden daraufhin auf das Netzwerk verteilt, wobei eine direkte Injektion durch die Mehrzahl von Einheiten in den Rest des Netzwerks verwendet wird. Die Injektion erfolgt dadurch, dass die Mehrzahl von Einheiten die Umgebung der verbleibenden Einheiten ändert, indem Licht, Magnetfelder und Geräusche usw. abgegeben werden, um Datenregister der verbleibenden Einheiten zu ändern, wenn diese in die Nähe der Mehrzahl von Einheiten kommen.
  • Bei einer Ausführungsform weist ein durch einen Computer realisiertes Verfahren auf: Akkumulieren von Teilstücken von Computercode durch einen SP einer Einheit; Assemblieren eines ausführbaren Programms aus den akkumulierten Teilstücken; und Ausführen des assemblierten Computerprogramms.
  • Diese Ausführungsform kann des Weiteren die Schritte eines Extrahierens der Teilstücke durch Überwachen eines Prozessors der Einheit enthalten, wobei der Schritt eines Extrahierens der Teilstücke durch Überwachen eines Prozessors der Einheit aufweist, dass ein SP Ausnahmebedingungen überwacht, die in Code der Einheit ausgelöst werden, oder Anweisungen in ausführbaren Code der Einheit übersetzt.
  • Diese Ausführungsform kann außerdem enthalten: Lesen von Sensordatenregistern der Einheit, Entschlüsseln eines Teilstücks einschließlich Durchführen einer Berechtigungsprüfung für das Teilstück und umgekehrtes Löschcodieren des Teilstücks.
  • Bei dieser Ausführungsform enthält der Schritt eines Ausführens des assemblierten Computerprogramms: Erzeugen einer Ausgabe; Zerlegen der Ausgabe in Teilstücke; und Übertragen der Teilstücke und optional Löschcodieren eines Teilstücks enthalten; und Übertragen des löschcodierten Teilstücks sowie Verschlüsseln des Teilstücks und Übertragen des verschlüsselten Teilstücks.
  • Diese Ausführungsform kann des Weiteren enthalten: Abrufen eines ursprünglichen Software-Teilstücks; Entschlüsseln des Software-Teilstücks; Löschcodieren und Verschlüsseln des Software-Teilstücks; und Übertragen des verschlüsselten Teilstücks.
  • Bei einer Ausführungsform enthält ein Computerprogrammprodukt zum Verteilen von Software eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen, die auf der einen oder den mehreren durch einen Computer lesbaren Speichereinheiten gespeichert werden, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, um Teilstücke von Computercode zu akkumulieren; als Reaktion auf die Akkumulation von Teilstücken Programmanweisungen, um ein ausführbares Programm aus den akkumulierten Teilstücken zu assemblieren; und als Reaktion auf die Assemblierung eines ausführbaren Programms aus den Teilstücken Programmanweisungen, um das assemblierte Programm auszuführen.
  • Diese Ausführungsform kann des Weiteren Programmcode zum Extrahieren von Teilstücken durch einen SP, der einen Hauptprozessor der Einheit überwacht, und Programmcode zum direkten Lesen von Datenregistern von Umgebungssensoren der Einheit enthalten.
  • Die Ausführungsform kann des Weiteren Programmcode enthalten zum: Abrufen eines ursprünglichen Codeteilstücks; als Reaktion auf den Abruf eines ursprünglichen Codeteilstücks Programmcode zum Löschcodieren des ursprünglichen Codeteilstücks; als Reaktion auf das Löschcodieren eines ursprünglichen Codeteilstücks Programmcode für die Verschlüsselung des löschcodierten Teilstücks; und als Reaktion auf die Verschlüsselung des löschcodierten Teilstücks Programmcode für die Übertragung des verschlüsselten Teilstücks.
  • Bei einer Ausführungsform enthält ein Computersystem zum Verteilen von Software: einen oder mehrere Computerprozessoren; eine oder mehrere durch einen Computer lesbare Speichereinheiten; Programmanweisungen, die auf der einen oder den mehreren durch einen Computer lesbaren Speichereinheiten gespeichert werden, um durch den mindestens einen Computerprozessor ausgeführt zu werden, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, um Teilstücke von Computercode zu akkumulieren; als Reaktion auf die Akkumulierung von Teilstücken Programmanweisungen, um ein ausführbares Programm aus den akkumulierten Teilstücken zu assemblieren; und als Reaktion auf die Assemblierung eines ausführbaren Programms aus den Teilstücken Programmanweisungen, um das assemblierte Programm auszuführen, die das assemblierte Computerprogramm ausführen
  • Diese Ausführungsform kann außerdem Programmcode zum Extrahieren von Teilstücken durch einen SP, der einen Hauptprozessor der Einheit überwacht, und Programmcode zum direkten Lesen von Datenregistern von Umgebungssensoren der Einheit enthalten, sowie Programmcode zum: Abrufen eines ursprünglichen Codeteilstücks; als Reaktion auf den Abruf eines ursprünglichen Codeteilstücks Löschcodieren des ursprünglichen Codeteilstücks; Verschlüsseln des löschcodierten Teilstücks; und Übertragen des verschlüsselten Teilstücks.
  • Diese Offenbarungen können als ein schlüsselfertiges System realisiert werden, bei dem alle Systemkomponenten einem Client bereitgestellt werden, woraufhin der Client die Offenbarungen installiert und die Verwendung der Offenbarungen verwaltet. Bei einer Ausführungsform können die Offenbarungen als ein Dienst realisiert werden, bei dem ein Diensteanbieter alle notwendigen Realisierungen bereitstellt und außerdem die administrativen Aspekte bereitstellt, die notwendig sind, um die Systeme und Verfahren zu verwenden und zu verwalten. Hybride Realisierungen, bei denen Aspekte von einem Client übernommen werden, während andere Aspekte von einem Diensteanbieter übernommen werden, sind ebenfalls möglich. Die Systeme und Verfahren der Offenbarung können unter Verwendung typischer vernetzter Ressourcen realisiert werden. Die Systeme und Verfahren können außerdem unter Verwendung von Cloud-Computing-Ressourcen realisiert werden.
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing enthält. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften enthalten, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (Scaleout) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Nutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die Folgenden:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten Nutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die Folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Zielsetzung, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Nutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten enthält.
  • Unter Bezugnahme auf 7 ist eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen von Cloud-Benutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (Personal Digital Assistant, PDA) oder das Mobiltelefon 54A, der Desktop Computer 54B, der Laptop Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 7 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art von Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 8 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (7) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 8 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe Computer 61; auf der RISC(Reduced Instruction Set Computer)-Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtueller Speicher 72, virtuelle Netzwerke 73, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Eine Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einer SLA bereit.
  • Eine Arbeitslastenschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Beispiele für Auslastungen und Funktionen, die von dieser Schicht bereitgestellt werden können, lauten: Zuordnung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und ein Software-Verteilungsprogramm 175.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen möglichen Grad an technischer Integration handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit darauf durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit enthalten 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 RAM, ein ROM, ein löschbarer programmierbarer Nur-LeseSpeicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer 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. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene 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 Weitverkehrsnetzwerk 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, zustandseinstellende Daten, Konfigurationsdaten für eine integrierte Schaltung oder sowohl um Quellcode als auch um 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten 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 (Local Area Network, LAN) oder ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA) 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 Blockschaubilder 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 Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern 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 des Ablaufplans und/oder des Blockschaubilds 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 der Ablaufpläne und/oder Blockschaubilder 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 durch einen Computer umgesetzten 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 Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder 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 Blockschaubildern 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 Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern 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.

Claims (20)

  1. Durch einen Computer realisiertes Verfahren zum Verteilen von Software, wobei das Verfahren aufweist: Bereitstellen von Computercode; Zerlegen des Computercodes in einen Satz von Teilstücken durch einen oder mehrere Computerprozessoren; Löschcodieren der Teilstücke durch einen oder mehrere Computerprozessoren, so dass sich löschcodierte Teilstücke ergeben; Verschlüsseln der löschcodierten Teilstücke durch einen oder mehrere Computerprozessoren, so dass sich verschlüsselte Teilstücke ergeben; und Verteilen der verschlüsselten Teilstücke an einen Spiegelprozessor einer Einheit durch einen oder mehrere Computerprozessoren, wobei der Spiegelprozessor als eine Überwachungseinheit eines Hauptprozessors und anderer Komponenten der Einheit konfiguriert wird.
  2. Durch einen Computer realisiertes Verfahren nach Anspruch 1, des Weiteren aufweisend ein Empfangen einer der Ausführung des Computercodes zugehörigen Antwort durch einen oder mehrere Computerprozessoren.
  3. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Zerlegen des Computercodes in Teilstücke durch einen oder mehrere Computerprozessoren ein Zerlegen des Computercodes in Teilstücke gemäß einem Kontaktmuster aufweist, das der Einheit zugehörig ist.
  4. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Zerlegen des Computercodes in Teilstücke durch einen oder mehrere Computerprozessoren ein Zerlegen des Computercodes in Teilstücke gemäß einem Anwendungsprofil aufweist, das der Einheit zugehörig ist.
  5. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Verteilen der Teilstücke an einen Spiegelprozessor einer Einheit durch einen oder mehrere Computerprozessoren ein Verteilen der Teilstücke gemäß einem Kontaktmuster von Peers der Einheit aufweist.
  6. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Verteilen der Teilstücke an einen Spiegelprozessor einer Einheit durch einen oder mehrere Computerprozessoren ein Verteilen der Teilstücke gemäß Injektionsquellen von Peers der Einheit aufweist.
  7. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Verteilen der Teilstücke an einen Spiegelprozessor einer Einheit durch einen oder mehrere Computerprozessoren ein Einfügen von Teilstücken in Anwendungscode der Einheit aufweist.
  8. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Verteilen der Teilstücke durch einen oder mehrere Computerprozessoren an einen Spiegelprozessor einer Einheit ein Auslösen von Laufzeitausnahmebedingungen bei einer Software-Ausführung der Einheit aufweist.
  9. Durch einen Computer realisiertes Verfahren nach Anspruch 1, wobei das Verteilen der Teilstücke an einen Spiegelprozessor einer Einheit durch einen oder mehrere Computerprozessoren ein Ändern eines erfassten Umgebungsaspektes einer Zieleinheit aufweist.
  10. Computerprogrammprodukt zum Verteilen von Software, wobei das Computerprogrammprodukt aufweist: eines oder mehrere durch einen Computer lesbare Speichermedien und gespeicherte Programmanweisungen in der einen oder den mehreren durch einen Computer lesbaren Speichereinheiten, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, um Nutzdaten-Computercode zu empfangen; Programmanweisungen, um als Reaktion auf ein Empfangen des Nutzdaten-Computercodes den empfangenen Nutzdaten-Computercode in einen Satz von Teilstücken zu zerlegen; Programmanweisungen, um den Satz von Teilstücken zu löschcodieren, so dass sich löschcodierte Teilstücke ergeben; Programmanweisungen, um die löschcodierten Teilstücke zu verschlüsseln, so dass sich verschlüsselte Teilstücke ergeben; und Programmanweisungen, um die verschlüsselten Teilstücke an einen Spiegelprozessor einer Einheit zu verteilen, wobei der Spiegelprozessor als eine Überwachungseinheit eines Hauptprozessors und anderer Komponenten der Einheit konfiguriert wird.
  11. Computerprogrammprodukt nach Anspruch 10, des Weiteren aufweisend Programmanweisungen, um die verschlüsselten Teilstücke in ausführbare Codesprache zu übersetzen.
  12. Computerprogrammprodukt nach Anspruch 11, des Weiteren aufweisend Programmanweisungen, um gepatchte Anwendungen zu verteilen, welche die ausführbare Codesprache aufweisen.
  13. Computerprogrammprodukt nach Anspruch 10, des Weiteren aufweisend Programmanweisungen, um bei einer Software-Ausführung einer Zieleinheit Laufzeitausnahmebedingungen auszulösen.
  14. Computerprogrammprodukt nach Anspruch 10, des Weiteren aufweisend Programmanweisungen, um einen erfassten Umgebungsaspekt einer Zieleinheit zu ändern.
  15. Computersystem zum Verteilen von Software, wobei das Computersystem aufweist: einen oder mehrere Prozessoren; eine oder mehrere durch einen Computer lesbare Speichereinheiten; gespeicherte Programmanweisungen in der einen oder den mehreren durch einen Computer lesbaren Speichereinheiten zur Ausführung durch den mindestens einen Computerprozessor, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, um Nutzdaten-Computercode zu empfangen; Programmanweisungen, um als Reaktion auf ein Empfangen des Nutzdaten-Computercodes den empfangenen Nutzdaten-Computercode in einen Satz von Teilstücken zu zerlegen; Programmanweisungen, um den Satz von Teilstücken zu löschcodieren, so dass sich ein Satz von löschcodierten Teilstücken ergibt; Programmanweisungen, um den löschcodierten Satz von Teilstücken zu verschlüsseln, so dass sich verschlüsselte Teilstücke ergeben; und Programmanweisungen, um die verschlüsselten Teilstücke an einen Spiegelprozessor einer Einheit zu verteilen, wobei der Spiegelprozessor als eine Überwachungseinheit eines Hauptprozessors und anderer Komponenten der Einheit konfiguriert wird.
  16. Computersystem nach Anspruch 15, des Weiteren aufweisend Programmanweisungen, um die verschlüsselten Teilstücke in ausführbare Codesprache zu übersetzen.
  17. Computersystem nach Anspruch 16, des Weiteren aufweisend Programmanweisungen, um gepatchte Anwendungen zu verteilen, welche die ausführbare Codesprache aufweisen.
  18. Computersystem nach Anspruch 15, des Weiteren aufweisend Programmanweisungen, um bei Software-Ausführung einer Zieleinheit Laufzeitausnahmebedingungen auszulösen.
  19. Computersystem nach Anspruch 15, des Weiteren aufweisend Programmanweisungen, um einen erfassten Umgebungsaspekt einer Zieleinheit zu ändern.
  20. Computersystem nach Anspruch 15, des Weiteren aufweisend Programmanweisungen, um eine Antwort von der Zieleinheit zu empfangen.
DE112019004605.5T 2018-09-14 2019-09-04 Ermöglichen einer software-verteilung Pending DE112019004605T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/131,206 US10904284B2 (en) 2018-09-14 2018-09-14 Enabling software distribution
US16/131,206 2018-09-14
PCT/IB2019/057430 WO2020053707A1 (en) 2018-09-14 2019-09-04 Enabling software distribution

Publications (1)

Publication Number Publication Date
DE112019004605T5 true DE112019004605T5 (de) 2021-07-22

Family

ID=69773466

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019004605.5T Pending DE112019004605T5 (de) 2018-09-14 2019-09-04 Ermöglichen einer software-verteilung

Country Status (6)

Country Link
US (1) US10904284B2 (de)
JP (1) JP7252696B2 (de)
CN (1) CN112654986A (de)
DE (1) DE112019004605T5 (de)
GB (1) GB2589528B (de)
WO (1) WO2020053707A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2578317B (en) * 2018-10-23 2021-11-24 Advanced Risc Mach Ltd Generating a test sequence of code based on a directed sequence of code and randomly selected instructions

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
US6643775B1 (en) 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
AU2001243365A1 (en) * 2000-03-02 2001-09-12 Alarity Corporation System and method for process protection
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US7051200B1 (en) 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US20030084322A1 (en) 2001-10-31 2003-05-01 Schertz Richard L. System and method of an OS-integrated intrusion detection and anti-virus system
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
CN101192924B (zh) * 2006-11-24 2011-01-26 北京大学 基于Reed-Solomon码的P2P存储系统编码方法
US20090007100A1 (en) 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
WO2009108245A2 (en) 2007-12-21 2009-09-03 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-t ampering and obfuscation transforms
US20100037056A1 (en) * 2008-08-07 2010-02-11 Follis Benjamin D Method to support privacy preserving secure data management in archival systems
WO2012000091A1 (en) 2010-06-28 2012-01-05 Lionstone Capital Corporation Systems and methods for diversification of encryption algorithms and obfuscation symbols, symbol spaces and/or schemas
US9635033B2 (en) 2012-11-14 2017-04-25 University Of Virginia Patent Foundation Methods, systems and computer readable media for detecting command injection attacks
CN105117303B (zh) 2012-11-23 2018-11-30 华为技术有限公司 一种数据恢复的方法及设备
US9355060B1 (en) * 2012-12-14 2016-05-31 Amazon Technologies, Inc. Storage service lifecycle policy transition management
US9436842B2 (en) 2013-08-16 2016-09-06 Vinay Purohit Distributed fragments file system
US9335986B1 (en) * 2013-12-11 2016-05-10 Amazon Technologies, Inc. Hot patching to update program code and/or variables using a separate processor
US9626196B2 (en) * 2014-03-21 2017-04-18 Intel Corporation Broadcasting management information using fountain codes
CN104580441A (zh) * 2014-12-30 2015-04-29 北京奇虎科技有限公司 局域网内的数据分发方法、服务器及终端设备
CN104754055A (zh) * 2015-04-03 2015-07-01 易云捷讯科技(北京)有限公司 一种多云环境下的安全云存储方法
WO2016164520A1 (en) 2015-04-07 2016-10-13 Kaprica Security, Inc. System and method of obfuscation through binary and memory diversity
CN106302314A (zh) 2015-05-14 2017-01-04 杭州海康威视系统技术有限公司 对采用擦除码处理的数据进行加解密的方法及装置
US9569601B2 (en) 2015-05-19 2017-02-14 Anvaya Solutions, Inc. System and method for authenticating and enabling functioning of a manufactured electronic device
US20180048622A1 (en) 2016-08-13 2018-02-15 Anthony Gaitatzis Encrypted Router for Securing Public Network Connections
CN106209919A (zh) * 2016-09-18 2016-12-07 深圳市深信服电子科技有限公司 一种网络安全防护方法及网络安全防护系统

Also Published As

Publication number Publication date
WO2020053707A1 (en) 2020-03-19
GB202103599D0 (en) 2021-04-28
GB2589528B (en) 2021-11-03
JP2022511250A (ja) 2022-01-31
CN112654986A (zh) 2021-04-13
JP7252696B2 (ja) 2023-04-05
GB2589528A (en) 2021-06-02
US10904284B2 (en) 2021-01-26
US20200092303A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
US10412104B2 (en) Data protection in a networked computing environment
Khan et al. Cloud log forensics: Foundations, state of the art, and future directions
DE112017005040T5 (de) Betriebssystem und Verfahren auf Container-Grundlage
DE112018003077T5 (de) Ein cluster von sicheren ausführungsplattformen
DE112016000915T5 (de) Sicherheit innerhalb softwaredefinierter Infrastruktur
DE112018003006T5 (de) Erkennung und entschärfung von angriffen von aussen bei der datenverarbeitung
DE112015004500T5 (de) Automatisierte Verwaltung von vertraulichen Daten in Cloud-Umgebungen
EP2887612A1 (de) Systeme und Verfahren zur Inkubation von Malware in einer virtuellen Organisation
DE112018000143T5 (de) Datenmaskierung
US20200266971A1 (en) Re-encrypting data on a hash chain
US20170244689A1 (en) Retrospective discovery of shared credentials
DE102016204698A1 (de) Verbessern des Erkennens von Steganographie am Perimeter
DE102016102424A1 (de) Auf Inhalt beruhende Hardware-Sicherheitsmodulzuweisung zu virtuellen Maschinen
DE112018004465T5 (de) Systeme und Verfahren zum Überwachen eines Köders für den Schutz von Benutzern vor Sicherheitsbedrohungen
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten
Ruan et al. Cloud forensic maturity model
US20160337348A1 (en) Security for cloud systems and virtualization cloud systems, mobile cloud systems and mobile virtualization cloud systems, and computer clusters and mobile device clusters
DE112020005373T5 (de) Mechanismus zur authentifizierung durch nutzung von positionsbestätigung
US20240080335A1 (en) Domain-Specific Language Simulant for Simulating a Threat-Actor and Adversarial Tactics, Techniques, and Procedures
DE112020003357T5 (de) Undurchsichtige verschlüsselung für datendeduplizierung
DE112019004605T5 (de) Ermöglichen einer software-verteilung
CN117459327A (zh) 一种云数据透明加密保护方法、系统及装置
US20190081950A1 (en) Preventing statistical inference attacks on data that is shared among multiple stakeholders with disjoint access privileges
DE112021004115T5 (de) Sicherheitssystem für eine Segmentierung von Computerdatei-Metadaten
Spreitzenbarth Dissecting the Droid: Forensic analysis of android and its malicious applications

Legal Events

Date Code Title Description
R012 Request for examination validly filed