DE69936384T2 - System und verfahren für die sicherheit eines kodes - Google Patents

System und verfahren für die sicherheit eines kodes Download PDF

Info

Publication number
DE69936384T2
DE69936384T2 DE69936384T DE69936384T DE69936384T2 DE 69936384 T2 DE69936384 T2 DE 69936384T2 DE 69936384 T DE69936384 T DE 69936384T DE 69936384 T DE69936384 T DE 69936384T DE 69936384 T2 DE69936384 T2 DE 69936384T2
Authority
DE
Germany
Prior art keywords
network
keyword
executable code
distinguishable
language
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.)
Expired - Fee Related
Application number
DE69936384T
Other languages
English (en)
Other versions
DE69936384D1 (de
Inventor
James C. Sunnyvale LIU
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69936384D1 publication Critical patent/DE69936384D1/de
Application granted granted Critical
Publication of DE69936384T2 publication Critical patent/DE69936384T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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 
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Einführen und Durchsetzen von Sicherheitsfunktionen in Netzwerken wie etwa Computer- und Kommunikationsnetzwerken. Insbesondere bezieht sich die Erfindung auf eine Vorrichtung, ein Verfahren und ein System zum Bereitstellen von Netzwerksicherheit für ausführbaren Code in Computer- oder Kommunikationsnetzwerken.
  • Hintergrund der Erfindung
  • Netzwerksicherheit ist ein zunehmend wichtiges Thema für Netzwerkanwender, sowohl innerhalb von Unternehmen, die ein Intranet betreiben, als auch für größere und globalere Daten-, Computer- und Kommunikationsnetzwerke wie etwa das Internet und das World Wide Web. Wesentliche Technologien sind für das Bereitstellen von Netzwerksicherheitsfunktionalität entwickelt worden, einschließlich Zugangskontrolle, geschützter Kommunikation, Sicherheitsunterstützung und Sicherheitsrichtlinienmanagement.
  • Zugangskontrolle betrifft eine Entscheidung, ob einem bestimmten Anwender oder einem Endsystem oder einer von einem Anwender initiierten Kommunikation zu einer bestimmten Computer- oder Kommunikationsressource Zugang gewährt werden soll. Zum Beispiel kann bestimmten Anwendern oder Kategorien von Anwender Zugang zur E-Mail-Funktionalität, aber nicht zur Rechnungswesen-Funktionalität gewährt werden, die alle auf demselben Netzwerk wie etwa einem Unternelmens-Intranet zur Verfügung stehen können.
  • Ähnlich betrifft andere Sicherheitsfunktionalität (die als gesicherte Kommunikation bezeichnet wird) Verfahren zum Sicherstellen, dass Informationen oder andere Daten nicht autorisierten Personen nicht zugänglich gemacht werden, z. B., dass nicht autorisierte Anwender darauf nicht zugreifen können, sie nicht modifizieren, lesen oder kopieren können. Andere Sicherheitsfunktionalität umfasst das Bereitstellen von Unterstützung in verschiedenen Netzwerkgeräten zum Sichern von anderen Teilen des Netzwerksystems und das Verwalten der aktuellen Netzwerkdaten, die die Sicherheitsrichtlinien des Netzwerks festlegen.
  • So wie sich Sicherheitsmaßnahmen entwickelt haben, wurden Taktiken zum Durchbrechen der Sicherheit allerdings zunehmend raffinierter. Passwortschutz und persönliche Identifikationsnummern („PIN"-Nummern) sind bekannte Sicherheitsmaßnahmen, die dazu verwendet werden, um physische Sicherheit von Geräten wie etwa Computer zu bieten und um Zugangskontrolle zu Computersystemen und Inhalten zu bieten, wie etwa Zugangskontrolle zu Konten (accounts), Aufzeichnungen (records), Programmen und anderen sensitiven Informationen. Verschiedene Versuche zum Umgehen solcher Sicherheitsmaßnahmen umfassen einen Angriff mit einem „trojanischen Pferd", bei dem (unbemerkt für den Anwender) ein schädliches Programm (rogue program) oder eine andere Anwendung ein richtiges Programm oder Anwendung ersetzt. Wenn der Anwender versucht, das richtige Programm oder die Anwendung zu verwenden, wird stattdessen das schädliche Programm oder die Anwendung ausgeführt, mit begleitenden und häufig schädlichen Konsequenzen. Verschiedene bekannte Angriffe mit „trojanischen Pferden", die durch Computer- „Hacker" verwendet werden, umfassen die Installation von Programmen, die nach der Ausführung das Passwort oder die Zugangs-PIN-Nummer an den Hacker senden. Ein solcher Angriff ermöglicht eine entsprechende Verletzung der Sicherheit jedes Systems, das vorher durch das Passwort oder die PIN-Nummer des Anwenders gesichert wurde, wie z. B. ein Bankkonto des Anwenders.
  • Die Sprache Java®, deren Compiler und Interpreter und die gesamte Java-Architektur (einzeln und zusammen als „Java" oder „Java-Architektur" bezeichnet) wurde von Sun Microsystems, Inc. („Sun") für Computer- und Kommunikationsnetzwerke und andere Anwendungen entwickelt. Java ist so gestaltet, um solchen „trojanischen Pferden" oder anderen Angriffen, die aus einem Netzwerk stammen (d. h. von der Seite des Netzwerkservers oder eines Client-Server-Netzwerkes) entgegen zu wirken. Für das World Wide Web („web") und andere Internet-Anwendungen sind viele derzeitige Webbrowser mit Java ausgestattet (Java enabled) (d. h. dass der Webbrowser Programmanweisungen für eine virtuelle Java-Maschine (Java Virtual Machine, „JVM") umfasst), die eine lokale Ausführung von Java Byte Code bietet. Wenn ein Netzwerkanwender Informationen von einer Website mit einem Java-unterstützten Browser anfordert und darauf zugreift, kann eine ausführbare Anwendung oder ein Programmpaket, das als „Applet" oder „Applet-Paket" bezeichnet wird, in Byte Code-Form auf das Endsystem des Anwenders (die Client-Seite des Client-Server-Netzwerks) herunter geladen werden. Das Applet (in Byte Code-Form) wird dann durch die JVM des Webbrowsers ausgeführt, der, zusammen mit allen aus dem Netzwerk herunter geladenen Daten, eine lokal laufende Anwendung auf dem Endsystem des Anwenders bereitstellt. Solche lokal laufenden Anwendungen können eine interaktive Website, eine interaktive Spieleanwendung oder ein interaktives Arbeitsblatt (spreadsheet) umfassen.
  • Angenommen ein solcher letztlich fremder Programmcode wird zur lokalen Ausführung herunter geladen, dann können inhärente Sicherheitsprobleme entstehen, die deshalb im Vorhinein innerhalb der Java-Architektur berücksichtigt und vermieden werden. Die Java-Architektur umfasst Sicherheitsmerkmale, die verhindern, dass solche herunter geladenen Programme Auswirkungen auf private oder Nicht-Netzwerkressourcen des Anwenders haben. Bezeichnet als die Java Sandbox, verhindert die Java-Architektur, dass ein nicht vertrauenswürdiges oder potentiell bösartiges Applet (herunter geladen von einen entfernten Webserver auf das lokale Endsystem) von privaten Ressourcen wie etwa der lokalen Festplatte liest, darauf schreibt oder sie ausführt. Neben anderen Sicherheitsmerkmalen ist die Sprache Java eine „type safe"-Sprache, die es Zeigern nicht erlaubt, beliebige Speicherorte zu lesen oder darauf zu schreiben. Vor der Ausführung eines ankommenden Applets wird das Applet zusätzlich durch einen Java Byte Code Verifizierer geschickt, der den Byte Code auf potentiell illegale Anweisungen bin untersucht, so dass nur zu lässige Applets durch die JVM auf dem lokalen Endsystem ausgeführt werden. Siehe zum Beispiel das Java Security White Paper, das auf den Webseiten von Sun java.sun.com und javasoft.com verfügbar ist; A. Tanenbaum, Computer Networks (Prentice-Hall, 3rd ed 1996), S. 718-20; D. Flanagan, Java in a Nutshell (O'Reilly, 2d ed 1997), bei 7, S. 139-43.
  • Während die Java-Architektur Verletzungen der Sicherheit verhindert, die aus einem Netzwerk (oder einem Netzwerkserver) stammen, bleibt die Notwendigkeit, potentiellen Verletzungen der Sicherheit entgegen zu wirken, die von einem lokalen Anwender (d. h. aus einem lokalen Endsystem oder der Client-Seite eines Client-Server-Netzwerkes) stammen. Wenn z. B. die physische Sicherheit eines lokalen Endsystems verletzt oder auf andere Weise in Frage gestellt wird, kann ein schädliches Programme oder ein Virus lokal auf dem Endsystem gespeichert werden, wie z. B. ein schädliches Programm zur Emulation oder Manipulation („spoofing") eines Applets. Es bleibt deshalb die Notwendigkeit zu verhindern, dass jedes solche lokal geladene Programme oder Applet unwissentlich durch einen ahnungslosen Anwender ausgeführt wird und potentiell die Netzwerksicherheit des Anwenders eines solchen Applets oder anderen Programms in Frage stellt. Solche zusätzlichen Sicherheitsmaßnahmen sollten auch ohne zusätzliche Netzwerk-Hardware implementiert werden, sie sollten kosteneffektiv und für den Anwender transparent sein.
  • Aus der WO 97/42728 sind ein Verfahren und eine Vorrichtung bekannt, bei denen zwei oder mehr Parteien denselben Medieninhalt im Internet betrachten können, während sie kommunizieren. In einem Beispiel verlangt ein Anwendercomputer einen Produktvergleich zu sehen, worauf hin ein zweiter Computer ein Script erzeugen kann, um den Produktvergleich in dem gemeinsamen Inhalt zur Verfügung zu stellen, der auf beiden Computern sichtbar ist.
  • Darüber hinaus beschreibt die EP 0 824 236 A2 eine Browser-Software, die auf einem Computer läuft, in der eine Datenseite eine Referenz auf Code umfassen kann, die der Browser auch über das Netzwerk beziehen und dann auf der Computer-Workstation ausführen kann. Der Referenz auf den Code ist auch eine Referenz auf eine weitere Datei zugeordnet, die wiederum über das Netzwerk zugänglich ist, und die Informationen enthält, die den Code wie etwa die Größe des Codes betreffen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung gewährleistet eine solche erhöhte Netzwerksicherheit gegen Verletzungen, die von einer Client-Seite eines Netzwerkes stammen können, wie etwa aus einem lokalen Endsystem in einem Netzwerk von Servern und Routern einschließlich dem Internet. Dieses zusätzliche Sicherheitsmerkmal wird vorzugsweise als Software oder als Programmanweisungen innerhalb eines Netzwerkservers implementiert und erfordert als Konsequenz keine zusätzliche Netzwerkhardware und ist kosteneffektiv. Wenn die vorliegende Erfindung in einer Netzwerkserverausführungsform implementiert wird, ist sie völlig transparent (unsichtbar) für den Anwender, von dem nicht verlangt wird, irgendwelche zusätzlichen Schritte auszuführen und der höchstwahrscheinlich die Implementierung dieses zusätzlichen Sicherheitsmerkmals nicht bemerkt.
  • Das Verfahren der vorliegenden Erfindung beginnt, wenn ein Anwender an seinem oder ihren lokalen Endsystem wie etwa einem persönlichen oder Netzwerkcomputer Netzwerkinformationen anfordert. Diese Netzwerkinformationen können z. B. eine Website sein. Wenn der entfernte Server die Anforderung für Netzwerkinformationen erhält, stellt der entfernte Server fest, ob die angeforder ten Netzwerkinformationen Schlüsselwörter enthalten sollten, die, wenn sie aufgerufen werden, ausführbaren Code herunter laden. Der entfernte Server stellt z. B. für Webseiten fest, ob die angeforderte Webseite ein Applet Tag (als ein Schlüsselwort) aufweist, das, wenn es durch den Anwender aufgerufen wird, von dem entfernten Server das Herunterladen von Java Byte Code zu dem Anwender anfordert.
  • Wenn die angeforderten Netzwerkinformationen Schlüsselwörter wie etwa Applet Tag enthalten, erzeugt der entfernte Server Schlüsselwörter, die bestimmte Referenzen auf entsprechenden ausführbaren Code haben und speichert den entsprechenden ausführbaren Code unter Verwendung der neuen unterscheidbaren Referenz. Weiter in Bezug auf Java als Beispiel wird ein Applet Tag erzeugt, der einen neuen unterscheidbaren Java-Klassennamen aufweist und der entsprechende Applet Byte Code wird unter diesem neuen Klassennamen gespeichert. Die angeforderten Netzwerkinformationen wie etwa eine Webseite, wird dann erzeugt und an den Anwender übertragen, mit allen Schlüsselwörtern (wie etwa Applet Tags), die unterscheidbare Referenzen wie etwa eindeutige Applet-Klassennamen aufweisen.
  • Daraufhin kann ein Anwender ein Schlüsselwort aufrufen, in dem er z. B. mit der Maus auf eine graphische Benutzerschnittstelle auf einer Webseite klickt. Das aufgerufene Schlüsselwort bezeichnet jetzt eindeutig für den Anwender, auf unbekannt oder transparent Weise, den entsprechenden Code, der nur auf dem entfernten Server gespeichert wird. Wenn der entfernte Server die Anfrage für den Code empfängt, so wie er über den Webbrowser des Anwenders aufgerufen wurde, wird der entsprechende ausführbare Code, der die unterscheidbare Referenz aufweist, dann für den Anwender zur lokalen Ausführung herunter geladen.
  • Es ist für einen „Hacker" höchst unwahrscheinlich wenn nicht unmöglich, vorher genau zu wissen, welche unterscheidbare Referenz auf einer Webseite durch den entfernten Server erzeugt und darauf hin durch den Anwender aufgerufen wird.
  • Wenn es eine Verletzung der lokalen Sicherheit gäbe und ausführbarer Code (wie etwa ein schädliches Applet) lokal gespeichert würde, wäre es nicht unter der unterscheidbaren Referenz gespeichert (die separat und voraussichtlich zu einer anderen Zeit durch den entfernten Server erzeugt wird). Wenn das Schlüsselwort mit der unterscheidbaren Referenz darauf hin durch den Anwender aufgerufen wird, wird z. B. ein schädliches Applet oder anderer ausführbarer Code (der eine andere Referenz aufweist) nicht durch den lokalen Anwender ausgeführt, ohne dass er es weiß. Vielmehr wird, in Übereinstimmung mit der vorliegenden Erfindung, nur der entsprechende Code mit der unterscheidbaren Referenz ausgeführt.
  • Die vorliegende Erfindung stellt damit sicher, dass alle ausführbaren Codes, die aus einem Netzwerk herunter geladen werden, nicht durch ein lokal gespeichertes schädliches Programm manipuliert oder imitiert werden. Vielmehr wird ein solcher ausführbarer Code für jeden Webzugriff neu herunter geladen, voraussichtlich von einer bekannten oder vertrauenswürdigen Quelle, auf die direkt durch den Anwender zugegriffen wird. Als Konsequenz wird die Netzwerksicherheit des Anwenders erhalten, trotz einer angenommenen Verletzung der lokalen physischen Sicherheit (die ermöglicht hatte, dass schädlicher Code lokal gespeichert wurde). Zusätzlich wird in der bevorzugten Ausführungsform die vorliegende Erfindung innerhalb eines Netzwerkservers verkörpert und alle seine Operationen beim Erzeugen von unterscheidbaren Referenzen und entsprechendem Code sind vollständig transparent für einen Anwender: Der Anwender muss keine bestimmten Anweisungen, Codes oder Passwörter eingeben oder verwenden, und es muss ihm nicht einmal bewusst sein, dass diese zusätzliche Sicherheitsmaßnahme implementiert wurde. Zahllose andere Vorteile und Merkmale der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der Erfindung und ihrer Ausführungsformen, aus den Ansprüchen und aus den beigefügten Zeichnungen direkt deutlich.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Zustandsdiagramm, das eine Systemausführung in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • 2 ist ein Blockdiagramm, das ein repräsentatives Netzwerk mit einer Systemausführung in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • 3 ist ein Flussdiagramm, das eine bevorzugte Verfabrensausführung in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • 4 ist ein Flussdiagramm, das eine allgemeine Verfahrensausführung in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • 5 ist ein Blockdiagramm, das eine Vorrichtungs-Ausführungsform in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • 6 ist ein Blockdiagramm, das eine bevorzugte Vorrichtungs-Ausführungsform in Übereinstimmung mit der vorliegenden Erfindung darstellt.
  • Detaillierte Beschreibung der Erfindung
  • Wie oben erwähnt besteht eine Notwendigkeit, die Effekte von potentiellen Verletzungen der Netzwerksicherheit zu beseitigen, die von einem lokalen Anwender (d. h. von einem lokalen Endsystem oder der Client-Seite eines Client-Server Netzwerkes) stammen. Wenn die physische Sicherheit eines lokalen Endsystems beeinträchtigt wird, so dass ein Netzwerksprachenprogramm oder eine Anwendung wie etwa ein Applet lokal gespeichert werden, dann wird in Übereinstimrung mit der vorliegenden Erfindung ein solches lokal geladenes Programm oder Applet nicht durch einen ahnungslosen Anwender ausgeführt, ohne dass er es weiß. Angenommen, dass ein „trojanisches Pferd" oder ein anderes schädliches Programm, das ein Applet fälscht, lokal installiert wäre, verhindert die vorliegende Erfindung trotz einer solchen Verletzung der Sicherheit, dass ein solches schädliches Programm die Netzwerksicherheit des lokalen Anwenders potentiell beeinträchtigt. Dieses zusätzliche Sicherheitsmerkmal wird vorzugsweise als Software oder als andere Programmanweisungen innerhalb eines Netzwerkservers implementiert und erfordert deshalb keine zusätzliche Netzwerkhardware und ist kosteneffektiv. Wenn die vorliegende Erfindung in einer Netzwerkserverausführungsform implementiert wird, ist sie für den Anwender zudem transparent, von dem nicht verlangt wird, irgendwelche zusätzlichen Schritte auszuführen, und dem höchstwahrscheinlich dieses zusätzliche Sicherheitsmerkmal nicht bewusst ist.
  • 1 ist ein Zustandsdiagramm, das eine Systemausführungsform 60 zeigt, um eine Gesamtübersicht des Verfahrens und des Betriebes der vorliegenden Erfindung zu bieten. Wie in 1 dargestellt, besteht die Systemausführungsform 60 aus einem lokalen Endsystem 150 wie z. B. einem persönlichen oder einem Netzwerkcomputer und einem entfernten Server 110. Der entfernte Server 110 ist typischerweise Teil eines entfernten Serversystem 65, das auch Speicher oder andere Speichermöglichkeiten umfasst. Wie auch in 1 dargestellt, werden durchgezogene Linien und unterbrochene Linien verwendet, um verschiedene Zeitdauern anzugeben, wobei die durchgezogenen Linien eine anfängliche Zeitdauer darstellen und die unterbrochenen Linien eine darauf folgende Zeitdauer darstellen.
  • Mit Bezug auf 1 überträgt das lokale Endsystem 150 über einen Webbrowser oder ein anderes Internet-Kommunikationsprogramm eine Anfrage für Netzwerkinformationen (Zustand 10) wie z. B. eine Anfrage für eine Webseite. Diese Anfrage wird durch den entfernten Server 110 empfangen (Zustand 15). Der entfernte Server 110 ermittelt dann, ob die angeforderten Netzwerkinformationen ein oder mehrere Schlüsselwörter wie etwa Applet Tags aufweisen, die zum Aufrufen von ausführbaren Codes verwendet werden (Zustand 20). Wenn die Netzwerkin formationen solche Schlüsselwörter aufweisen, erzeugt der entfernte Server 110 die Schlüsselwörter, wobei jedes Schlüsselwort eine neue unterscheidbare Referenz aufweist, z. B. einen neuen Java Applet Klassennamen (Zustand 25). Der ausführbare Code, der jedem solchem Schlüsselwort entspricht, wird gespeichert (Zustand 30), innerhalb des entfernten Servers 110 oder innerhalb von zusätzlichen Speicherkapazitäten. Der entfernte Server 110 erzeugt dann die angeforderten Netzwerkinformationen, wobei jedes enthaltene Schlüsselwort eine unterscheidbare Referenz aufweist (Zustand 35), und überträgt die Netzwerkinformationen an das lokale Endsystem (Zustand 40). Darauf hin kann das lokale Endsystem 150 ein Schlüsselwort aufrufen, indem eine Anforderung für ausführbaren Code übertragen wird, unter Verwendung oder mit der unterscheidbaren Referenz (Zustand 45). Wenn der entfernte Server 110 die Anforderung empfängt (Zustand 50), überträgt er den entsprechenden ausführbaren Code an das lokale Endsystem 150 (Zustand 55).
  • 2 ist ein Blockdiagramm, das ein repräsentatives Netzwerk 180 mit einer Systemausführungsform in Übereinstimmung mit der vorliegenden Erfindung darstellt, z. B. Server 130 und den genauer bezeichneten entfernten Server 110 und den lokalen Server 120. Wie in 2 dargestellt, umfasst das Netzwerk 180 eine Mehrzahl von verbindbaren oder verbundenen Geräten und anderen Systemen wie etwa Routern 125, Servern 130 (und insbesondere dem entfernten Server 110 und dem lokalen Server 120), lokalen Netzwerken (local area networks, „LANs") 165, Weitverkehrsnetzen (wide area networks, „WANs") 115, andere Netzwerke 140 und eine Mehrzahl von Endsystemen 150. Die Endsysteme 150 können z. B. Personal Computer, Konstruktionsarbeitsstationen (engineering work stations), Netzwerkcomputer und andere Netzwerke umfassen, die zu Netzwerkverbindungen fähig sind, wie z. B. ein Web-Fernsehsystem oder ein persönlicher digitaler Assistent. Das Netzwerk 180 und andere Netzwerke 140 können jeden Typ von Kommunikationskanälen 160 umfassen, wie z. B. T1, E1, ISDN, Kabel- oder faseroptische Verbindungen, und sie können jeden Typ von Netzwerkverbindungen wie etwa leitungsvermittelte oder paketvermittelte Netzwerkverbindungen umfassen. Zum Beispiel kann es sich bei den verschiedenen Kommunikationskanälen 160 um Hybridfaser-Koaxialkabel an einigen Orten und twisted-pair-Verbindungen an anderen Orten handeln, während die anderen Netzwerke 140 ein öffentliches (oder allgemeines) Telefonnetz oder ein öffentliches oder ein backbone Internet routing-System umfassen können. Die verschiedenen Server 130 wie etwa der entfernte Server 110 und der lokale Server 120 bieten typischerweise verschiedene Dienste für verbundene Endsysteme 150, LANs 165 und WANs 115 wie etwa Dateispeicherung, Programmspeicherung, Datenbanken und sie können auch Internet- und Intraet-Dienste bereitstellen. Zum Beispiel kann der lokale Server 120 ein Internet Service Provider sein, der Internetverbindungen an verschiedene andere Server 130 wie etwa den entfernten Server 110 bereitstellt. Die verschiedenen anderen Server 130 wie etwa der entfernte Server 110, ebenfalls als Beispiel, kann auch durch einzelne Personen, Unternehmen oder Institutionen bereitgestellt werden, wie z. B Banken, Aktienhändler oder jede andere Einheit die Websites bereitstellt oder sonst wie Webseiten, Online-Dienste, Online-Marketing oder Online-Verkäufe bereitstellt. Die verschiedenen Server 130 einschließlich dem entfernten Server 110 und dem lokalen Server 120 können auch mit zusätzlichem Speicher 145 oder anderen Speicherkapazitäten oder -zugriff verbunden sein oder darüber verfügen wie etwa Systemfestplatten oder andere magnetische oder optische Speichergeräte. Wie unten genauer besprochen, werden die Vorrichtung und das Verfahren in Übereinstimmung mit der vorliegenden Erfindung vorzugsweise innerhalb eines Systems wie etwa dem Server 130, einem entfernten Server 110 oder einem lokalen Server 120 verkörpert, wie in 2 dargestellt. Wie ebenfalls oben genauer mit Bezug auf die Vorrichtungsausführungsformen besprochen, die in 5 und 6 dargestellt sind, kann das System auch interne Speicherkapazität oder externe Speicherkapazität umfassen, wie z. B. den Speicher 145, der in 2 dargestellt ist.
  • Ein Endsystem 150 wie etwa ein Personal Computer kann durch einen lokalen Server 120 auf eine Website im Internet zugreifen, in dem es im Allgemeinen eine Internetbrowser-Anwendung verwendet. Wie oben erwähnt, kann ein solcher Browser in der Lage sein, eine Netzwerkprogrammiersprache wie etwa Java auszuführen oder laufen zu lassen. Typischerweise fordert das Endsystem 150 über den Browser eine Webseite an, die in Paket-basierter Form von einem entfernten Server 110 (oder einem anderen Server 130) durch den lokalen Server 120 zur Anzeige auf dem Endsystem 150 herunter geladen wird. Eine solche Webseite kann erzeugt werden, indem eine Standardsprache wie etwa Hypertext Markup Language („HTML"), dynamisches HTML, eine Skriptsprache wie etwa JavaScript, Per1 oder Tc1 oder jeder andere äquivalente Sprache verwendet wird, insbesondere da sich Grenzen oder Unterscheidungen zwischen und unter Markup-Sprachen, Script-Sprachen und Programmiersprachen verwischen (daher werden alle solchen Sprachen, die herunterladbaren und ausführbaren Code bereitstellen, einzeln und zusammen hier als „Netzwerksprachen" oder „Netzwerkprogrammiersprachen” bezeichnet, einschließlich Sprachen wie etwa Java und JavaScript).
  • Weiter mit 2 kann die angeforderte Webseite spezielle oder bezeichnete Schlüsselworte enthalten, die dazu bestimmt sind, eine Netzwerkprogrammiersprache zu starten, aufzurufen oder zu spezifizieren. Zum Bespiel werden Java Anwendungen aufgerufen, in dem ein Schlüsselwort verwendet wird, das als ein „Tag" und insbesondere als ein „Applet" Tag („<APPLET>") bezeichnet wird (andere Versionen von HTML wie etwa HTML 4.0 sind auch dazu ausgelegt, um einen neuen Tag zu unterstützen, der als ein object tag („<OBJECT>") bezeichnet wird, der als eine Erweiterung oder ein Ersatz des Applet Tags geplant ist; daher soll ein Bezug auf einen Applet Tag, wie er hier gebraucht wird, auch einen Bezug auf andere Schlüsselwörter oder Tags bedeuten und umfassen, die eine ausführbare Netzwerkprogrammiersprache wie etwa den object tag aufrufen). Ein Schlüsselwort wie etwa ein Applet Tag hat typischerweise notwendige oder wünschenswerte Attribute, im Allgemeinen einen Namen oder ein Referenzattribut und eine Menge an Raun (Höhen- und Breiten-Attribute), die das Applet bei der Anzeige verwendet. Für den Gebrauch hier muss das Schlüsselwort nur über einen Namen oder ein Referenzattribut verfügen, das den ausführbaren Code bezeichnet oder ihm sonst wie entspricht, d. h. der Name oder das Referenzattribut entspricht oder bezeichnet den Code (wo er immer er sich befindet), der zur Ausführung herunter geladen wird, wenn das Schlüsselwort aufgerufen wird. Genauer in Bezug auf Java ist ein Java-Programm, das herunter geladen und ausgeführt werden soll, in Computer-lesbarer Byte Code Form, die eine „class"-Erweiterung aufweist, das aus Java-Quellcode unter Verwendung eines Java-Compilers umgewandelt wird. Als objektorientierte Programmiersprache definiert Java eine „Klasse" als eine Ansammlung von Daten und Verfahren (Prozeduren oder Funktionen), die mit den Daten arbeiten. Als Ergebnis verwendet ein Java Applet als ein solches Referenzattribut einen Parameter, der als „CODE" bekannt ist, um die Klasse von Java Byte Code zu benennen oder zu bezeichnen, die zur Ausführung durch den Webbrowser herunter geladen werden soll. Zusätzlich und allgemeiner kann solcher Java Byte Code auch unter Verwendung eines Parameters „CODE BASE" bezeichnet werden, um einen Namen und Ort der Klasse von Java Byte Code zu spezifizieren, der auf einem anderen Server 130 vorhanden ist, d. h., dass er auf einem Server 130 vorhanden ist, der nicht der Server ist, der die Webseite bereitstellt, oder solcher Java Byte Code kann unter Verwendung eines Archivparameters bezeichnet werden, um eine ganze Gruppe von Java-Klassen-Dateien zu spezifizieren für schnelleres, gleichzeitiges herunterladen.
  • Weiter mit 2, wenn ein Endsystem 150 eine Webseite anfordert, wird die Webseite von einem entfernten Server 110 (durch einen lokalen Server 120) herunter geladen und enthält typischerweise Text (der unter Verwendung von HTML formatiert ist), scripting (Skripte) und Schlüsselwörter einer Netzwerksprache wie etwa Applet Tags. Wenn das Endsystem 150 ein Schlüsselwort wie etwa ein Applet tag aufruft, in dem z. B. mit einer Maus auf Hypertext oder einen Knopf einer graphischen Benutzeroberfläche geklickt wird, überträgt der Browser eine Anfrage an den entfernten Server 110 zum Herunterladen des angeforderten Applets, wobei die Anforderung eine entsprechende Referenz aufweist oder enthält, wie z. B. den Klassennamen, der in dem Applet Tag bezeichnet ist. Der entfernte Server 110 überträgt dann den entsprechenden angeforderten Code (und alle angeforderten Daten), und dieser Code kann dann durch den Browser des Endsystems 150 wie etwa die JVM ausgeführt werden. Wie oben erwähnt, da ausführbarer Code von einer potentiell unbekannten oder nicht vertrauenswürdigen Quelle herunter geladen wird, wurde die Java-Architektur so ausgelegt, um Verletzungen der Sicherheit zu verhindern, die ihren Ursprung in einem Netzwerk wie etwa einem entfernten Server 110 haben, in dem Merkmale wie etwa die Java Sandbox und der Java Byte Code-Verifizierer verwendet werden. Wie ebenfalls oben erwähnt, bietet die vorliegende Erfindung zusätzlichen Schutz gegen Verletzungen der Sicherheit, die ihren Ursprung lokal, d. h. in einem lokalen Endsystem 150 oder in einem lokalen Server 120, haben.
  • Insbesondere mit Bezug auf Java als eine bestimmte Netzwerksprache, wie detaillierter unten mit Bezug auf 3 und 4 beschrieben und in Übereinstimmung mit der dynamischen Java-Klassenbenennung der vorliegenden Erfindung, wenn ein Endsystem 150 eine Webseite von einem Server 130 anfordert (z. B. von dem entfernten Server 110), erzeugt der Server 130 eine neue Webseite, in der alle Java Applets neue, unterscheidbare (oder eindeutige) Klassennamen haben und speichert den entsprechenden ausführbaren Java Byte Code, wobei der jeweilige unterscheidbare (oder eindeutige) Klassenname jedes Applets verwendet wird. Damit das Endsystem 150 den ausführbaren Java Byte Code anfordern kann, muss es darauf hin den neuen unterscheidbaren (oder eindeutigen) Klassennamen verwenden, der mit der Webseite geliefert wird, und der entsprechende ausführbare Byte Code wird dann zu diesem Zeitpunkt von dem Server 130 herunter geladen. Da jeder andere Java Byte Code, der lokal gespeichert sein könnte, d. h. auf dem Endsystem 150 oder dem lokalen Server 120, unter Verwendung eines vorher erzeugten und anderen Namens gespeichert worden wäre, kann solcher Java Byte Code nicht unbeabsichtigt durch das Endsystem 150 ausgeführt werden; vielmehr wird die JVM des Endsystems 150 den neuen, unterscheidbar benannten Java Byte Code aufrufen, der nur auf dem spezifischen Server 130 (wie etwa den entfernten Server 110) verfügbar ist und der (noch) nicht auf dem Endsystem 150 oder dem lokalen Server 120 verfügbar ist. Die Vorrichtung, das Verfahren und das System der vorliegenden Erfindung bieten dadurch erhöhte Netzwerksicher heit, da es extrem unwahrscheinlich ist, dass irgendein vorher und lokal gespeicherter Java Byte Code unter Verwendung des genau identischen Namens gespeichert worden wäre wie der neue, unterscheidbare (oder eindeutige) Klassenname (der separat und unabhängig aufs Neue (de novo) erzeugt und in dem Applet Tag der neu erzeugten Webseite bereit gestellt wird). Abhängig von dem gewünschten Grad der Sicherheit könnten z. B. vollständig neue Applet-Klassennamen erzeugt werden, z. B. unter Verwendung eines Zufallsgenerators; lokal gespeicherter Byte Code würde nur ausgeführt, wenn er vorher gespeichert würde unter Verwendung von a priori Wissen des zufällig erzeugten, eindeutigen Klassennamens, was höchst unwahrscheinlich, wenn nicht unmöglich ist. Angenommen, dass eine Verletzung der physischen Sicherheit eines Endsystems 150 vorläge, bei der schädlicher Java Byte Code lokal gespeichert worden wäre, würde daher dieser lokal gespeicherte Byte Code nicht ausgeführt. Stattdessen wird die JVM des Webbrowsers in dem Endsystem 150 nur den unterscheidbar benannten Byte Code anfordern und daraufhin ausführen. Trotz der angenommenen Verletzung der physischen Sicherheit, in dem potentiell schädlicher Byte Code lokal gespeichert wurde, wird deshalb kein weiterer Schaden durch die unbekannte, potentielle Ausführung von Java Byte Code durch die JVM des Webbrowsers folgen, da die dynamische Benennung der vorliegenden Erfindung hilft sicher zu stellen, dass aller solcher auszuführender Byte Code unmittelbar aufs Neue empfangen wird, vermutlich direkt von einer bekannten oder vertrauenswürdigen Quelle. Die dynamische Benennung der vorliegenden Erfindung verhindert dadurch die unbewusste Ausführung von potentiell schädlichen, lokal gespeichertem Byte Code.
  • 3 ist ein Flussdiagramm, das eine bevorzugte Ausführungsform eines Verfahrens in Übereinstimmung mit der folgenden Erfindung zeigt, nämlich dynamische Java-Klassenbenennung als ein bevorzugtes Verfahren zum Bereitstellen von Netzwerksicherheit für ausführbaren Code. Mit Bezug auf 3 beginnt das Verfahren beim Startschritt 200 mit dem Empfangen einer Anforderung für eine Webseite, z. B. einer Webseite „ABC" (Schritt 205). Eine solche Anfrage wird typischerweise durch ein Endsystem 150 (durch seinen Webbrowser) übertragen und durch einen entfernten Server 110 (über einen lokalen Server 120) empfangen. Das Verfahren bestimmt dann, typischerweise durch den entfernten Server 110, ob die angeforderte Webseite einen oder mehrere Java Apple Tags oder andere Schlüsselwörter aufweist (oder aufweisen sollte), die zum Aufrufen von ausführbarem Code bestimmt sind (Schritt 210). Wenn die angeforderte Webseite solche Applet Tags nicht erfordert, kann die angeforderte Webseite bereitgestellt werden (Schritt 215), und das Verfahren endet mit dem Return-Schritt 255. Wenn die angeforderte Webseite ein oder mehrere Applet Tags oder andere Schlüsselwörter bei Schritt 210 erfordert, schreitet das Verfahren zu Schritt 220 fort und erzeugt einen Applet Tag mit einem neuen, unterscheidbaren oder eindeutigen Klassennamen als dem Referenzattribut, z. B. einem erforderlichen Namen, Code, Codebasis oder Archivattribut. Das Verfahren speichert dann bei Schritt 125 den Byte Code für dieses Applet mit oder unter demselben unterscheidbaren oder eindeutigen Klassennamen. Das Verfahren bestimmt dann, ob zusätzliche Applet Tags für die angeforderte Webseite erforderlich sind (Schritt 230). Wenn bei Schritt 230 zusätzliche Applet Tags benötigt werden, geht das Verfahren zu den Schritten 220 und 225 zurück und fährt damit fort, ein zweites Applet Tag, das eine zweiten unterscheidbaren oder eindeutigen Klassennamen aufweist, zu erzeugen und den Byte Code für das zweite Applet mit oder unter seinem zweiten unterscheidbaren oder eindeutigen Klassennamen zu speichern. Das Verfahren fährt wiederholt die Schritte 220 und 225 für jedes solche zusätzliches Applet, erzeugt unterscheidbare Namen und speichert Byte Code für solche dritten, vierten ... bis zu n-ten Applets, bis bei Schritt 230 kein weiteres Applet mehr angefordert wird und das Verfahren dann zu Schritt 235 fortfährt. Bei Schritt 235 wird durch das Verfahren die angeforderte Webseite mit allen seinen Applet Tags, die die jeweiligen neuen, unterscheidbaren (oder eindeutigen) Klassennamen aufweisen, erzeugt und bereitgestellt. Wenn daraufhin bei Schritt 240 eine Anfrage nach einem oder mehreren Applets (Applet-Klassen oder Applet-Klassenpaketen) mit ihrem (oder ihren) jeweiligen unterscheidbaren oder eindeutigen Klassennamen erhalten wird, dann überträgt das Verfahren bei Schritt 245 den entsprechenden Applet Byte Code mit dem jeweiligen unterscheidbaren oder eindeutigen Klas sennamen. Der übertragene, unterscheidbar benannte Applet Byte Code kann dann ausgeführt werden, z. B. durch das bestimmte Endsystem 150, das den Applet Byte Code durch seinen unterscheidbaren Klassennamen angefordert hatte. Nach den Schritten 240 oder 245, wenn ein oder mehrere zusätzliche Webseiten wie etwa „DEF" oder „GHI" angefordert werden (Schritt 250), wird das Verfahren dann für jede solche zusätzliche Webseite wiederholt und kehrt zu Schritt 210 zurück. Wenn bei Schritt 250 keine Webseiten mehr angefordert werden, kann das Verfahren bei Return-Schritt 255 enden.
  • Es gibt eine große Anzahl von Verfahren oder Prozeduren, die in 3 nicht zusätzlich dargestellt sind, die bei Schritt 220 verwendet werden können, um ein Schlüsselwort mit einer unterscheidbaren Referenz auf ausführbaren Code zu erzeugen, z. B. ein Applet Tag mit einen unterscheidbaren oder eindeutigen Klassennamen. Wie oben erwähnt, in Abhängigkeit von dem gewünschten Grad der Sicherheit, können Applet-Klassennamen entweder eindeutig unterscheidbar für jeden Zugriff auf eine Webseite durch jeden Browser eines Endsystems 150 erzeugt werden (durch einen Server 130). Zum Beispiel können für sehr hohe Sicherheit Applet-Klassennamen neu und eindeutig zu dem Zeitpunkt erzeugt werden zu dem die Webseite angefordert wird, unter Verwendung eines Zufallsgenerators oder einer anderen Methodologie oder Algorithmus, die Namen erzeugen, die in keiner Weise leicht vorhergesehen werden können. Dieses Zufallsverfahren kann mehr Verarbeitungszeit erfordern, als es für viele Anwendungen wünschenswert ist, da es Editieren der Applet-Klasse selbst und Neuübersetzung des neu editierten Java Quellcodes erfordern kann. Während dies beträchtliche Sicherheit bietet, kann die potentiell längere Verarbeitungszeit des Zufallsverfahrens andere weniger sichere Verfahren für eine gegebene Anwendung wünschenswerter machen. Zum Beispiel können viele Gebrauchsanwendungen, die nicht mit wesentlichen Sicherheitsproblemen verbunden sind, eine hohe Geschwindigkeit für eine Zufriedenheit des Verbrauchers erfordern, z. B. die Fähigkeit, eine Textseite innerhalb von 10 Sekunden dynamisch zu laden und zu übertragen. Entsprechend kann ein anderes Verfahren das Erzeugen eines vorbestimmten Satzes von Schlüsselwortreferenzen und entsprechenden ausführbaren Code umfassen, z. B. einer Bibliothek von Applet-Klassennamen von jeder gewünschten Größe, die wiederum in keiner Weise leicht vorhergesagt werden kann. Zum Beispiel könnten Bibliotheken von Hunderten bis zu Tausenden von unterscheidbaren oder eindeutigen Applet-Klassennamen im Vorhinein erzeugt und gespeichert werden, zusammen mit dem entsprechenden Applet-Klassen Byte Code. Während dies potentiell mehr Speicher oder Speicherkapazität verbraucht, könnte dieses Bibliotheksverfahren sowohl den gewünschten Grad von Sicherheit als auch die gewünschte Schnelligkeit der Verarbeitung bieten, so dass unterscheidbar benannte Applet Tags zum Einfügen in die angeforderten Webseiten greifbar sind und dass die entsprechenden unterscheidbar benannten Applet Byte Code-Klassen zum Herunterladen greifbar sind, wenn und falls sie angefordert werden.
  • Ebenfalls in Abhängigkeit von dem gewünschten Grad der Sicherheit können die dynamisch erzeugten Klassennamen für jeden Zugriff auf eine Webseite vollständig eindeutig oder in höchstem Maße unterscheidbar sein, oder sie können eine geringere Unterscheidbarkeit aufweisen oder einen gewissen Grad an Wiederholung beinhalten, so dass manche Namen (und der entsprechende gespeicherte Byte Code) periodisch wieder verwendet oder bei anderen Gelegenheiten einfach wieder verwendet werden. Zum Beispiel könnte eine Bibliothek von Tausenden von Namen und entsprechendem Code erzeugt und periodisch für mehr als einen Zugriff auf eine Webseite verwendet werden unter einer Sicherheitsannahme, dass es höchst unwahrscheinlich ist, dass ein „Hacker" die gesamte Bibliothek (oder wesentliche Teil der Bibliothek) duplizieren und den entsprechenden Code auf einem Endsystem 150 oder einem lokalen Server 120 lokal speichern könnte, ohne Wissen des Anwenders oder ohne dass sonst die Verletzung der physischen Sicherheit entdeckt würde. In Verbindung mit höheren Sicherheitsebenen können vollständig eindeutige Klassennamen wünschenswert sein.
  • Wie oben erwähnt, betrifft der Bereich der vorliegenden Erfindung das Bereitstellen von zusätzlicher Sicherheitsfunktionalität für ausführbaren Code, der über ein Netzwerk herunter geladen werden kann, und er ist nicht auf Java als Netzwerkprogrammiersprache beschränkt, auf JavaScript als eine Scriptsprache, auf HTML als eine Markup-Sprache oder auf Applet Tags oder object tags als Schlüsselwörter, die das Herunterladen des ausführbaren Codes herbeiführen. 4 ist daher ein Flussdiagramm, das allgemeiner ein Verfahren zum Bereitstellen von Netzwerksicherheit für ausführbaren Code in Übereinstimmung mit der vorliegenden Erfindung zeigt, das in einem breiteren Netzwerkkontext für jeden Typ von herunterladbarem, ausführbarem Code verwendet werden kann. Das Verfahren beginnt bei Startschritt 300 mit dem Empfangen einer Anfrage nach Netzwerkinformationen, die typischerweise von einem Endsystem 150 an einen entfernten Server 110 oder ein anderes System (wie in 2 gezeigt) übertragen wird. Die Netzwerkinformationen können in der Form einer Seite des World Wide Web oder in jedem anderen Typ von Format oder Inhalt vorliegen. Das Verfahren bestimmt dann bei Schritt 310, ob die angeforderten Informationen ein oder mehrere Schlüsselwörter aufweisen (oder aufweisen sollten), die ausführbaren Code aufrufen, wie z. B. die Applet Tags oder object tags von Java. Wenn die angeforderten Netzwerkinformationen solche Schlüsselwörter nicht enthalten oder enthalten sollen (Schritt 310), werden die angeforderten Netzwerkinformationen bereitgestellt (Schritt 315), und das Verfahren kann enden (Return-Schritt 350). Wenn die angeforderten Netzwerkinformationen ein Schlüsselwort enthalten (Schritt 310), erzeugt das Verfahren ein Schlüsselwort mit einer unterscheidbaren oder eindeutigen Referenz auf entsprechenden ausführbaren Code (Schritt 320) wie z. B. das Erzeugen eines Applet Tags mit einem unterscheidbaren Java-Klassennamen, der auf entsprechenden ausführbaren Java Byte Code verweist. Der entsprechende ausführbare Code wird mit oder unter der unterscheidbaren Referenz gespeichert oder ist darunter zugänglich (Schritt 325), z. B. als Speichern von entsprechendem Java Byte Code unter seinem unterscheidbaren Klassennamen. Wie oben mit Bezug auf 3 erwähnt, kann eine solche Schlüsselworterzeugung bei Schritt 320 auf vielfältige Weise durchgeführt werden, einschließlich durch Zufallserzeugung und durch Erzeugung mittels eines vorbestimmten Datensatzes (Bibliothek). Nach den Schritten 320 und 325 bestimmt das Verfahren, ob zusätzliche Schlüsselwörter in den angeforderten Netzwerkinformationen erforderlich sind (Schritt 330), und falls ja, werden die Schritte 320 und 325 für jedes solche zusätzliche Schlüsselwort wiederholt, indem für jedes Schlüsselwort unterscheidbare Referenzen erzeugt und entsprechender Code gespeichert wird. Wenn bei Schritt 330 keine zusätzlichen Schlüsselwörter benötigt werden, stellt das Verfahren die Netzwerkinformationen mit allen Schlüsselwörtern, die ihre jeweiligen unterscheidbaren Referenzen aufweisen, bereit (Schritt 335), z. B. als Bereitstellen einer Webseite mit allen Applet Tags oder object tags mit ihren jeweiligen eindeutigen Applet-Klassennamen. Wenn daraufhin eine Anfrage mit der unterscheidbaren Referenz erhalten wird (Schritt 340), stellt das Verfahren den entsprechenden ausführbaren Code bereit (Schritt 345), z. B. als Bereitstellen des entsprechenden Java Byte Codes zur Ausführung durch eine JVM eines Webbrowsers. Nach den Schritten 315 und 345 oder wenn keine Anforderungen erhalten werden (Schritt 340), kann das Verfahren enden (Return-Schritt 350).
  • 5 ist ein Blockdiagramm, das eine Vorrichtung 400 in Übereinstimmung mit der vorliegenden Erfindung zeigt. Wie oben erwähnt, ist in der bevorzugten Ausführungsform die Vorrichtung 400 in einem System enthalten, umfasst oder verkörpert wie z. B. einem Server 130 oder insbesondere einem entfernten Server 110 oder einem lokalen Server 120; ein solches System kann auch zusätzlichen Speicher 145 oder weitere Speicherkapazität umfassen. Mit Bezug auf 5 umfasst die Vorrichtung 400 einen Empfänger (oder Mittel zum Empfangen) 410, einen Ermittler (oder Mittel zum Ermitteln) 420, einen Erzeuger (oder Mittel zum Erzeugen) 430, Speicher (oder Mittel zum Speichern) 440, und einem Transmitter (oder Mittel zum Übertragen) 450. Wie unten detaillierter besprochen, verfügt die Vorrichtung 400 über die Zustände und führt das Verfahren aus, das in den 1, 3 und 4 dargestellt ist. Der Empfänger 410 und der Transmitter 450 können jede Eingabe- bzw. Ausgabeschnittstelle (Input/Output, I/O) sein, die für den gewünschten oder ausgewählten Netzwerkkanal geeignet sind, wie z. B. eine T1-Schnittstelle, wenn sie an das Netzwerk 180 über eine T1-Telekommunikationsverbindung, eine geeignete ISDN-Schnittstelle, eine Koaxi alkabel- oder eine faseroptische Schnittstelle oder eine analoge Schnittstelle verbunden sind. Der Empfänger 410 und der Transmitter 450 werden jeweils für den Empfang und die Übertragung von Informationen, Code, Anfragen oder anderen Nachrichten verwendet, typischerweise in Paket-basierten Formaten wie z. B. Internet-Protokollpaketen. Zum Beispiel wird der Empfänger 410 für den Empfang von Anfragen für Webseiten oder andere Netzwerkinformationen verwendet, und der Transmitter 450 wird zum Übertragen von angeforderten Webseiten und für das Übertragen von ausführbarem Code wie etwa Java Byte Code verwendet. Der Speicher 440 ist typischerweise ein Speichersystem wie z. B. ein elektromagnetisches Festplattenlaufwerk. Beim Speicher 440 kann es sich um jede Form von elektromagnetischem, optischem oder anderem Typ von Speicher oder Speicherkomponenten handeln, und er kann innerhalb des Speichers 145 für Systemausführungsformen enthalten sein (und nicht als eine separate Komponente einer Vorrichtung 400 betrachtet werden). In der bevorzugten Ausführungsform und wie unten detaillierter mit Bezug auf 6 besprochen, sind der Ermittler 420 und der Erzeuger 430 in einem Prozessor verkörpert wie z. B. einem Mikroprozessor, einem digitalen Signalprozessor, einem anwendungsspezifischen integrierten Schaltkreis (Application Specific Integrated Circuit, „ASIC") oder einer Gruppierung von solchen Prozessoren oder ICs.
  • Weiter in Bezug auf 5, wenn der Empfänger 410 eine Anforderung für Netzwerkinformationen empfängt (typischerweise übertragen von einem Endsystem 150), z. B. eine Anfrage für eine Webseite, bestimmt der Ermittler 420, ob die angeforderten Informationen ein oder mehrere Schlüsselwörter aufweisen (oder aufweisen sollten), die ausführbaren Code aufrufen, wie z. B. die Applet Tags oder object tags von Java. Wenn die angeforderten Netzwerkinformationen solche Schlüsselwörter nicht enthalten, weist der Ermittler 420 den Erzeuger 430 an, die angeforderten Netzwerkinformationen bereit zu stellen, die wiederum durch den Transmitter 450 übertragen werden (an ein Endsystem 150 über verschiedene Router 125 und Server 130). Wenn die angeforderten Netzwerkinformationen ein Schlüsselwort enthalten, weist der Ermittler 420 den Erzeuger 430 an, ein Schlüs selwort mit einer unterscheidbaren oder eindeutigen Referenz auf entsprechenden ausführbaren Code zu erzeugen, z. B. durch Erzeugen eines Applet Tags mit einem unterscheidbaren Java-Klassennamen, der auf entsprechenden ausführbaren Java Byte Code verweist. Der Erzeuger 430 speichert auch den entsprechenden ausführbaren Code in dem Speicher 440 mit, unter oder zugreifbar durch die unterscheidbare Referenz, wie z. B. durch Speichern des entsprechenden Java Byte Codes mit seinem unterscheidbaren Klassennamen. Wie oben in Bezug auf 3 und 4 erwähnt, kann solche Schlüsselworterzeugung auf vielfältige Weise durch den Generator 430 erfolgen, einschließlich durch Zufallserzeugung und durch Erzeugung mittels einer Bibliothek (vorbestimmter Datensatz). Der Ermittler 420 stellt dann fest, ob zusätzliche Schlüsselwörter in den angeforderten Netzwerkinformationen erforderlich sind und wenn ja, weist er den Erzeuger 430 für jedes solche zusätzliche Schlüsselwort an, unterscheidbare Referenzen zu erzeugen und entsprechenden ausführbaren Code für jedes Schlüsselwort zu speichern (im Speicher 440). Wenn keine zusätzlichen Schlüsselwörter benötigt werden, stellt der Generator 430 (zur Netzwerkübertragungen durch den Transmitter 450) die Netzwerkinformationen mit allen Schlüsselwörtern und ihren jeweiligen unterscheidbaren Referenzen bereit wie z. B. durch Bereitstellen einer Webseite mit allen Applet Tags oder object tags mit ihren jeweiligen eindeutigen Applet-Klassennamen. Wenn daraufhin eine Anfrage mit der unterscheidbaren Referenz durch den Empfänger 410 empfangen wird wie durch den Ermittler 420 festgestellt, liefert der Generator 430 (ebenso für Netzwerkübertragung durch den Transmitter 450) den entsprechenden ausführbaren Code wie z. B. durch Bereitstellen von entsprechendem Java Byte Code zur Ausführung durch eine JVM eines Webbrowsers.
  • 6 ist ein Blockdiagramm das eine bevorzugte Vorrichtung 500 in Übereinstimmung mit der vorliegenden Erfindung zeigt. Wie oben erwähnt, ist in der bevorzugten Ausführungsform die Vorrichtung 500 in einem System enthalten, umfasst oder verkörpert, wie z. B. einem Server 130 oder insbesondere einem entfernten Server 110 oder einem lokalen Server 120; ein solches System kann auch zusätzlichen Speicher 145 oder andere Speicherkapazität umfassen. Bezug nehmend auf 6 umfasst die Vorrichtung 500 eine Netzwerkschnittstelle 520, einen Prozessor 510 und ein Speichersystem 530. Die Netzwerkschnittstelle 420 kann jede Eingabe- und Ausgabeschnittstelle (I/O) sein, die für den gewünschten oder ausgewählten Netzwerkkanal geeignet ist wie z. B. eine T1-Schnittstelle, wenn sie mit dem Netzwerk 180 über eine T1-Telekommunikationsverbindung, eine geeignete ISDN-Schnittstelle, eine Koaxialkabel- oder eine faseroptische Schnittstelle oder eine analoge Schnittstelle verbunden ist. Die Netzwerkschnittstelle 520 wird für den Empfang und das Übertragen von Informationen, Code, Anfragen und anderen Nachrichten verwendet, typischerweise in Paket-basierten Formaten wie z. B. Internet-Protokollpaketen (und führt die Funktionen des Empfängers 410 und des Transmitters 450 aus, die oben mit Bezug auf 5 besprochen wurde). Zum Beispiel wird die Netzwerkschnittstelle 520 für den Empfang von Anfragen nach Webseiten oder anderen Netzwerkinformationen, zur Übertragung von angeforderten Webseiten und zum Übertragen von ausführbarem Code wie z. B. Java Byte Code verwendet. Das Speichersystem 530 kann jede Form magnetischem, optischem oder anderem Typ von Speicher oder Speicherkomponente sein, und es kann innerhalb des Speichers 145 für Systemausführungsformen enthalten sein (und nicht als eine separate Komponente einer Vorrichtung 500 betrachtet werden). Ein Prozessor 510 ist mit der Netzwerkschnittstelle 520 über einen Bus 515 (z. B. einen PCI-Bus) verbunden und kann auch mit dem Speichersystem 530 verbunden sein (wenn ein solches Speichersystem 530 separat in der Vorrichtung 500 enthalten ist und nicht in dem Speicher 145 enthalten ist, der mit einem Server 130 verbunden sein kann). Der Prozessor 510 kann einen einzelnen integrierten Schaltkreis („IC") umfassen, oder er kann eine Mehrzahl von integrierten Schaltkreisen oder anderen verbundenen, angeordneten oder zusammen gruppierten Komponenten umfassen wie z. B. Mikroprozessoren, digitale Signalprozessoren, ASICs, zugeordneten Speicher (wie z. B. RAM und ROM) und andere ICs und Komponenten. Als Resultat sollte der hier gebrauchte Begriff Prozessor so verstanden werden, dass er gleichwertig bedeutet und umfasst einen einzelnen Prozessor oder eine Anordnung von Prozessoren, Mikroprozessoren, Controller oder eine andere Gruppierung von integrierten Schaltkreisen, die die Funktionen ausführen, die unten detaillierter besprochen werden, mit zugeordnetem Speicher wie etwa Mikroprozessorspeicher oder zusätzliches RAM, ROM, EPROM oder E2PROM. Der Prozessor 510 führt die Funktionen des Ermittlers 420 und des Erzeugers 430 aus, die oben mit Bezug auf 5 besprochen wurden. Wie oben auch mit Bezug auf 3 und 4 besprochen, kann die Methodologie der Erfindung als ein Satz von Programmanweisungen zur nachfolgenden Verarbeitung in dem Prozessor 510 mit seinem zugeordneten Speicher und anderen äquivalenten Komponenten programmiert und gespeichert werden.
  • In der bevorzugten Ausführungsform ist die Netzwerkschnittstelle 520 bereit zum Empfangen von Anfragen für Netzwerkinformationen, wie z. B. Anfragen nach Webseiten, und ist bereit zum Übertragen von Netzwerkinformationen wie etwa Webseiten und ausführbarem Code. Der Prozessor 510 reagiert durch einen Satz von Programmanweisungen, wenn er operativ verbunden ist (d. h. angeschaltet und hochgefahren), um festzustellen, ob angeforderte Netzwerkinformationen ein oder mehrere Schlüsselwörter aufweisen (oder aufweisen sollten), die ausführbaren Code aufrufen wie z. B. die Applet Tags oder object tags von Java. Wenn die angeforderten Netzwerkinformationen solche Schlüsselwörter nicht enthalten oder nicht enthalten sollen, reagiert der Prozessor 510 mit dem Bereitstellen der angeforderten Netzwerkinformationen, die wiederum durch die Netzwerkschnittstelle 520 übermittelt werden (an ein Endsystem 150 über verschiedene Router 125 und Server 130). Wenn die angeforderten Netzwerkinformationen ein Schlüsselwort enthalten, reagiert der Prozessor 510 mit dem Erzeugen eines Schlüsselwortes, das eine unterscheidbare oder eindeutige Referenz auf entsprechenden ausführbaren Code aufweist, z. B. als Erzeugen eines Applet Tags mit einem unterscheidbaren Java-Klassennamen, der auf entsprechenden ausführbaren Java Byte Code verweist, und dem Speichern des entsprechenden ausführbaren Codes in dem Speichersystem 530 mit, unter oder zugreifbar durch die unterscheidbare Referenz, z. B. durch Speichern des entsprechenden Java Byte Codes mit seinem unterscheid baren Klassennamen. Wie oben mit Bezug auf 3 und 4 erwähnt, kann eine solche Schlüsselworterzeugung auf vielfältige Weise durch den Prozessor 510 erfolgen, einschließlich durch Zufallserzeugung und durch Erzeugung mittels eines vorbestimmten Datensatzes (Bibliothek). Der Prozessor 510 reagiert dann weiterhin mit dem Feststellen, ob zusätzliche Schlüsselwörter in den angeforderten Netzwerkinformationen erforderlich sind und wenn ja, erzeugt der Prozessor 510 die unterscheidbaren Referenzen und speichert den entsprechenden ausführbaren Code für jedes solche Schlüsselwort in dem Speichersystem 530. Wenn keine zusätzlichen Schlüsselwörter benötigt werden, reagiert der Prozessor 510 mit dem Bereitstellen (für Netzwerkübertragung durch die Netzwerkschnittstelle 520) der Netzwerkinformationen mit allen Schlüsselwörtern mit ihren jeweiligen unterscheidbaren Referenzen, z. B. durch Bereitstellen einer Webseite mit allen Applet Tags oder object tags, die ihren jeweiligen eindeutigen Applet-Klassennamen haben. Wenn daraufhin eine Anfrage mit unterscheidbarer Referenz durch die Netzwerkschnittstelle 520 empfangen wird, wie es durch den Prozessor 510 festgestellt wird, reagiert der Prozessor 510 mit dem Bereitstellen (für Netzwerkübertragung durch die Netzwerkschnittstelle 520) des entsprechenden ausführbaren Codes, wie z. B. durch Bereitstellen des entsprechenden Java Byte Codes zur Ausführung durch eine JVM eines Webbrowsers.
  • Zahllose Vorteile der verschiedenen Ausführungsformen der vorliegenden Erfindungen sind offensichtlich. Erstens und vor allem verhindert die vorliegende Erfindung die unwissentliche oder ahnungslose Ausführung eines schädlichen Applets oder anderen „trojanischen Pferdes" als Netzwerksprachenprogramm oder Anwendung. Angenommen, dass die physische Sicherheit eines lokalen Endsystems verletzt wurde, um ein schädliches Programm einzuschleusen, wird deshalb aus der Nutzung des Netzwerksprachenprogramms, z. B. einem Java Applet, kein weiterer Schaden entstehen. Die dynamische Java-Klassenbenennung der vorliegenden Erfindung angenommen und wenn z. B. ein schädliches Applet lokal gespeichert wurde, würde das schädliche Applet nicht ausgeführt; vielmehr wird durch den Server ein anderer Java-Klassenname erzeugt, der dann entsprechend durch das Endsystem für die selbe Funktionalität (oder Objektorientierung) aufgerufen wird.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist die Leichtigkeit der Implementierung. Die vorliegende Erfindung wird vorzugsweise als ein Satz von Programmanweisungen verkörpert, die auf einem Netzwerkserver liegen, und erfordert keine Änderung der Hardware oder zusätzliche Hardware. Als ein Ergebnis kann die vorliegende Erfindung mit erheblichen Kostenersparnissen implementiert werden.
  • Ein noch weiterer Vorteil der vorliegenden Erfindung ist ihre Transparenz für den Anwender. Die vorliegende Erfindung kann innerhalb eines Netzwerkservers implementiert werden, und innerhalb eines lokalen Endsystems sind keine Änderungen, Hinzufügungen oder Anweisungen nötig. Darüber hinaus kann der Anwender von diesen zusätzlichen Sicherheitsmerkmalen profitieren, ohne Wissen über seinen Ablauf, ohne irgendwelche Kommandos oder Anweisungen eingeben zu müssen und ohne irgendeine Unbequemlichkeit. Aus denn Vorangehenden kann erschlossen werden, dass zahllose Änderungen und Abwandlungen bewirkt werden können, ohne vom Bereich des neuen Konzepts der Erfindung abzuweichen. Es ist selbstverständlich, dass keine Beschränkung in Bezug auf die spezifischen Verfahren und Vorrichtungen, die hier gezeigt werden, beabsichtigt ist oder abgeleitet werden sollte. Es ist selbstverständlich beabsichtigt, mit den angehängten Ansprüchen alle solchen Abweichungen abzudecken, die in den Bereich der Ansprüche fallen.

Claims (26)

  1. Verfahren für die Bereitstellung von Netzwerksicherheit für einen ausführbaren Code, wobei das Verfahren aufweist: a) Empfangen einer Anfrage für eine Netzwerkinformation (15, 305); gekennzeichnet durch das b) Feststellen, ob die Netzwerkinformation ein Netzwerkspracheschlüsselwort beinhaltet, das ausführbaren Code herunterladen wird (20, 310), wenn es aufgerufen wird; c) Erzeugen eines Netzwerkspracheschlüsselwortes, das eine neue unterscheidbare Referenz auf einen entsprechenden ausführbaren Code aufweist und Speichern des entsprechenden ausführbaren Codes mittels der neuen unterscheidbaren Referenz in Antwort auf die Präsenz des Netzwerkspracheschlüsselwortes (25, 320); d) Übertragen der Netzwerkinformation, in der das Netzwerkspracheschlüsselwort die unterscheidbare Referenz (40, 335) beinhaltet; und e) Bereitstellen des entsprechenden ausführbaren Codes (55, 345), wenn das Netzwerkspracheschlüsselwort, das die unterscheidbare Referenz beinhaltet, aufgerufen wird (45, 340).
  2. Verfahren gemäß Anspruch 1, wobei Schritt c) ferner aufweist: Speichern des entsprechenden ausführbaren Codes (30).
  3. Verfahren gemäß Anspruch 1 ferner aufweisend: f) Erzeugen einer entsprechenden Mehrzahl von jeweiligen unterscheidbaren Referenzen auf den entsprechenden ausführbaren Code in Antwort auf die Netzwerkinformation, die eine Mehrzahl von Netzwerkspracheschlüsselwörter beinhaltet; g) Bereitstellen der Netzwerkinformation, in der jedes Netzwerkspracheschlüsselwort der Mehrzahl von Netzwerkspracheschlüsselwörtern eine jeweilige unterscheidbare Referenz beinhaltet; und h) Bereitstellen des entsprechenden ausführbaren Codes, wenn ein Netzwerkspracheschlüsselwort, das eine jeweilige unterscheidbare Referenz beinhaltet, aufgerufen wird.
  4. Verfahren gemäß Anspruch 3 ferner aufweisend: Erzeugen von mehreren Mehrzahlen von Netzwerkspracheschlüsselwörtern, wobei jede Mehrzahl der mehreren Mehrzahlen von Netzwerkspracheschlüsselwörtern einer separaten Anfrage für Netzwerkinformationen entspricht, wobei jedes Netzwerkspracheschlüsselwort von jeder Mehrzahl von Netzwerkspracheschlüsselwörtern eine jeweilige unterscheidbare Referenz auf einen entsprechenden ausführbaren Code beinhaltet.
  5. Verfahren gemäß Anspruch 1, wobei die Netzwerkinformation eine Internet-Seite (world wide web Page) ist.
  6. Verfahren gemäß Anspruch 1, wobei das Netzwerkspracheschlüsselwort ein Applet Tag ist.
  7. Verfahren gemäß Anspruch 1, wobei das Netzwerkspracheschlüsselwort ein HTML-Schlüsselwort ist.
  8. Verfahren gemäß Anspruch 1, wobei das Netzwerkspracheschlüsselwort ein Schlüsselwort einer Scriptsprache (scripting language) ist.
  9. Verfahren gemäß Anspruch 1, wobei die unterscheidbare Referenz zufällig generiert wird.
  10. Verfahren gemäß Anspruch 1, wobei die unterscheidbare Referenz aus einem vorbestimmten Satz von unterscheidbaren Referenzen ausgewählt wird.
  11. Verfahren gemäß Anspruch 1, wobei die unterscheidbare Referenz ein Name einer JAVA-Klasse (JAVA class name) ist.
  12. Verfahren gemäß Anspruch 1, wobei der entsprechende ausführbare Code ein Bytecode der JAVA-Programmiersprache ist.
  13. Vorrichtung für die Bereitstellung von Netzwerksicherheit für ausführbaren Code, wobei die Vorrichtung aufweist: eine Netzwerkschnittstelle (520), die geeignet ist zum a) Empfangen einer Anfrage für Netzwerkinformation (15, 305); und einen Prozessor, dadurch gekennzeichnet, dass der Prozessor geeignet ist zum b) Feststellen, ob die Netzwerkinformation ein Netzwerkspracheschlüsselwort beinhaltet, welches ausführbaren Code herunterlädt (20, 310), wenn es aufgerufen wird; c) Erzeugen des Netzwerkspracheschlüsselwortes, das eine neue unterscheidbare Referenz auf einen entsprechenden ausführbaren Code aufweist und Speichern des entsprechenden ausführbaren Codes mittels der neuen unterscheidbaren Referenz in Antwort auf die Präsenz des Netzwerkspracheschlüsselwortes (25, 320); d) Übertragen der Netzwerkinformation, in der das Netzwerkspracheschlüsselwort die unterscheidbare Referenz (40, 335) beinhaltet, durch die Netzwerkschnittstelle; und e) Bereitstellen des entsprechenden ausführbaren Codes (55, 345) zur Übertragung durch die Netzwerkschnittstelle, wenn das Netzwerkspracheschlüsselwort, das die unterscheidbare Referenz beinhaltet, aufgerufen wird (45, 340).
  14. Vorrichtung gemäß Anspruch 13, ferner aufweisend: ein Speichersystem (520), das mit dem Prozessor (510) gekoppelt ist, zum Speichern des entsprechenden ausführbaren Codes.
  15. Vorrichtung gemäß Anspruch 13, wobei der Prozessor (510) ferner geeignet ist, wenn die Netzwerkinformation eine Mehrzahl von Netzwerkspracheschlüsselwörtern hat, eine Mehrzahl von jeweiligen, unterscheidbaren Referenzen auf einen entsprechenden ausführbaren Code zu erzeugen; zum Bereitstellen der Netzwerkinformation, in der jedes Netzwerkspracheschlüsselwort der Mehrzahl von Netzwerkspracheschlüsselwörtern eine jeweilige, unterscheidbare Referenz beinhaltet, zur Übertragung durch die Netzwerkschnittstelle; und zum Bereitstellen des entsprechenden ausführbaren Codes, zur Übertragung durch die Netzwerkschnittstelle (520) wenn ein Netzwerk spracheschlüsselwort der Mehrzahl von Netzwerkspracheschlüsselwörtern, das eine jeweilige, unterscheidbare Referenz beinhaltet, aufgerufen wird.
  16. Vorrichtung gemäß Anspruch 15, wobei der Prozessor (510) ferner dazu geeignet ist mehrere Mehrzahlen von Netzwerkspracheschlüsselwörtern zu generieren, wobei jede Mehrzahl von den mehreren Mehrzahlen der Netzwerkspracheschlüsselwörter eine separate Anfrage für Netzwerkinformation entspricht und wobei jedes Netzwerkspracheschlüsselwort von der Mehrzahl der Netzwerkspracheschlüsselwörter eine jeweilige, unterscheidbare Referenz auf einen entsprechenden, ausführbaren Code beinhaltet.
  17. Vorrichtung gemäß Anspruch 13, wobei die Netzwerkinformation eine Internet-Seite (world wide web Page) ist.
  18. Vorrichtung gemäß Anspruch 13, wobei das Netzwerkspracheschlüsselwort ein Applet Tag ist.
  19. Vorrichtung gemäß Anspruch 13, wobei das Netzwerkspracheschlüsselwort ein Object Tag ist.
  20. Vorrichtung gemäß Anspruch 13, wobei das Netzwerkspracheschlüsselwort ein HTML-Schlüsselwort ist.
  21. Vorrichtung gemäß Anspruch 13, wobei das Netzwerkspracheschlüsselwort ein Schlüsselwort einer Scriptsprache (scripting language) ist.
  22. Vorrichtung gemäß Anspruch 13, wobei der Prozessor ferner dazu geeignet ist die unterscheidbare Referenz zufällig zu generieren.
  23. Vorrichtung gemäß Anspruch 13, wobei der Prozessor ferner dazu geeignet ist die unterscheidbare Referenz aus einem vordefinierten Satz von unterscheidbaren Referenzen auszuwählen.
  24. Vorrichtung gemäß Anspruch 13, wobei die unterscheidbare Referenz der Name einer JAVA-Klasse (JAVA class name) ist.
  25. Vorrichtung gemäß Anspruch 13, wobei der entsprechende ausführbare Code ein Bytecode der JAVA-Programmiersprache ist.
  26. Vorrichtung gemäß Anspruch 13, wobei die Vorrichtung durch einen Server verkörpert ist.
DE69936384T 1998-05-22 1999-05-21 System und verfahren für die sicherheit eines kodes Expired - Fee Related DE69936384T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US84444 1998-05-22
US09/084,444 US6058482A (en) 1998-05-22 1998-05-22 Apparatus, method and system for providing network security for executable code in computer and communications networks
PCT/US1999/011345 WO1999062227A1 (en) 1998-05-22 1999-05-21 System and method for security of code

Publications (2)

Publication Number Publication Date
DE69936384D1 DE69936384D1 (de) 2007-08-09
DE69936384T2 true DE69936384T2 (de) 2008-03-06

Family

ID=22185007

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69936384T Expired - Fee Related DE69936384T2 (de) 1998-05-22 1999-05-21 System und verfahren für die sicherheit eines kodes

Country Status (6)

Country Link
US (1) US6058482A (de)
EP (1) EP1088427B1 (de)
JP (1) JP4184604B2 (de)
AT (1) ATE366012T1 (de)
DE (1) DE69936384T2 (de)
WO (1) WO1999062227A1 (de)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6324574B1 (en) * 1997-11-07 2001-11-27 International Business Machines Corporation Relay server for unsigned applets
JPH11261627A (ja) * 1998-03-09 1999-09-24 Fujitsu Ltd 電子メール配信装置
US6611864B2 (en) * 1999-09-10 2003-08-26 Intel Corporation Extensible policy-based network management architecture
US20020052781A1 (en) * 1999-09-10 2002-05-02 Avantgo, Inc. Interactive advertisement mechanism on a mobile device
US6654784B1 (en) * 2000-01-14 2003-11-25 Nexaweb Technologies, Inc Computing architecture
WO2001079999A2 (en) * 2000-04-12 2001-10-25 Microsoft Corporation Method and system for accepting precompiled information
US7155606B1 (en) 2000-04-12 2006-12-26 Microsoft Corporation Method and system for accepting preverified information
CA2406001A1 (en) 2000-04-14 2001-10-25 American Express Travel Related Services Company, Inc. A system and method for using loyalty points
US20070129955A1 (en) * 2000-04-14 2007-06-07 American Express Travel Related Services Company, Inc. System and method for issuing and using a loyalty point advance
US20040073617A1 (en) 2000-06-19 2004-04-15 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail
US7366896B1 (en) * 2000-08-29 2008-04-29 Microsoft Corporation Systems and methods for limiting access to potentially dangerous code
US7398226B2 (en) 2000-11-06 2008-07-08 American Express Travel Related Services Company, Inc. System and method for networked loyalty program
US7398225B2 (en) 2001-03-29 2008-07-08 American Express Travel Related Services Company, Inc. System and method for networked loyalty program
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
EP1233333A1 (de) * 2001-02-19 2002-08-21 Hewlett-Packard Company Verfahren zur Ausführung eines herunterladbaren Dienstes mittels des Empfangs einschränkender Zugriffrechte mindestens einer Profildatei
US7584149B1 (en) 2001-02-26 2009-09-01 American Express Travel Related Services Company, Inc. System and method for securing data through a PDA portal
US7222101B2 (en) * 2001-02-26 2007-05-22 American Express Travel Related Services Company, Inc. System and method for securing data through a PDA portal
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
GB0121064D0 (en) * 2001-08-31 2001-10-24 Transitive Technologies Ltd Obtaining translation of generic code representation
WO2003028283A1 (en) * 2001-09-21 2003-04-03 Telefonaktiebolaget Lm Ericsson (Publ) Arrangement and method for execution of code
US7124438B2 (en) 2002-03-08 2006-10-17 Ciphertrust, Inc. Systems and methods for anomaly detection in patterns of monitored communications
US20060015942A1 (en) 2002-03-08 2006-01-19 Ciphertrust, Inc. Systems and methods for classification of messaging entities
US7870203B2 (en) 2002-03-08 2011-01-11 Mcafee, Inc. Methods and systems for exposing messaging reputation to an end user
US8561167B2 (en) 2002-03-08 2013-10-15 Mcafee, Inc. Web reputation scoring
US20030172291A1 (en) 2002-03-08 2003-09-11 Paul Judge Systems and methods for automated whitelisting in monitored communications
US8132250B2 (en) 2002-03-08 2012-03-06 Mcafee, Inc. Message profiling systems and methods
US7693947B2 (en) 2002-03-08 2010-04-06 Mcafee, Inc. Systems and methods for graphically displaying messaging traffic
US7903549B2 (en) 2002-03-08 2011-03-08 Secure Computing Corporation Content-based policy compliance systems and methods
US8578480B2 (en) 2002-03-08 2013-11-05 Mcafee, Inc. Systems and methods for identifying potentially malicious messages
US7694128B2 (en) 2002-03-08 2010-04-06 Mcafee, Inc. Systems and methods for secure communication delivery
US7277404B2 (en) * 2002-05-20 2007-10-02 Airdefense, Inc. System and method for sensing wireless LAN activity
US20040203764A1 (en) * 2002-06-03 2004-10-14 Scott Hrastar Methods and systems for identifying nodes and mapping their locations
US7042852B2 (en) * 2002-05-20 2006-05-09 Airdefense, Inc. System and method for wireless LAN dynamic channel change with honeypot trap
US7086089B2 (en) * 2002-05-20 2006-08-01 Airdefense, Inc. Systems and methods for network security
US7532895B2 (en) 2002-05-20 2009-05-12 Air Defense, Inc. Systems and methods for adaptive location tracking
US7383577B2 (en) * 2002-05-20 2008-06-03 Airdefense, Inc. Method and system for encrypted network management and intrusion detection
US7058796B2 (en) 2002-05-20 2006-06-06 Airdefense, Inc. Method and system for actively defending a wireless LAN against attacks
US7322044B2 (en) * 2002-06-03 2008-01-22 Airdefense, Inc. Systems and methods for automated network policy exception detection and correction
US7343626B1 (en) * 2002-11-12 2008-03-11 Microsoft Corporation Automated detection of cross site scripting vulnerabilities
US7324804B2 (en) * 2003-04-21 2008-01-29 Airdefense, Inc. Systems and methods for dynamic sensor discovery and selection
US7359676B2 (en) * 2003-04-21 2008-04-15 Airdefense, Inc. Systems and methods for adaptively scanning for wireless communications
US20040210654A1 (en) * 2003-04-21 2004-10-21 Hrastar Scott E. Systems and methods for determining wireless network topology
US7522908B2 (en) * 2003-04-21 2009-04-21 Airdefense, Inc. Systems and methods for wireless network site survey
US7355996B2 (en) 2004-02-06 2008-04-08 Airdefense, Inc. Systems and methods for adaptive monitoring with bandwidth constraints
US7526804B2 (en) * 2004-02-02 2009-04-28 Microsoft Corporation Hardware assist for pattern matches
US20060123133A1 (en) * 2004-10-19 2006-06-08 Hrastar Scott E Detecting unauthorized wireless devices on a wired network
US8196199B2 (en) * 2004-10-19 2012-06-05 Airdefense, Inc. Personal wireless monitoring agent
US8635690B2 (en) 2004-11-05 2014-01-21 Mcafee, Inc. Reputation based message processing
US20060107323A1 (en) * 2004-11-16 2006-05-18 Mclean Ivan H System and method for using a dynamic credential to identify a cloned device
US7937480B2 (en) 2005-06-02 2011-05-03 Mcafee, Inc. Aggregation of reputation data
US7577424B2 (en) 2005-12-19 2009-08-18 Airdefense, Inc. Systems and methods for wireless vulnerability analysis
JP2007183838A (ja) * 2006-01-06 2007-07-19 Fujitsu Ltd クエリーパラメーター出力ページ発見プログラム、クエリーパラメーター出力ページ発見方法およびクエリーパラメーター出力ページ発見装置
US7715800B2 (en) 2006-01-13 2010-05-11 Airdefense, Inc. Systems and methods for wireless intrusion detection using spectral analysis
US20070218874A1 (en) * 2006-03-17 2007-09-20 Airdefense, Inc. Systems and Methods For Wireless Network Forensics
US7971251B2 (en) * 2006-03-17 2011-06-28 Airdefense, Inc. Systems and methods for wireless security using distributed collaboration of wireless clients
US20090021343A1 (en) * 2006-05-10 2009-01-22 Airdefense, Inc. RFID Intrusion Protection System and Methods
US8668146B1 (en) 2006-05-25 2014-03-11 Sean I. Mcghie Rewards program with payment artifact permitting conversion/transfer of non-negotiable credits to entity independent funds
US9704174B1 (en) 2006-05-25 2017-07-11 Sean I. Mcghie Conversion of loyalty program points to commerce partner points per terms of a mutual agreement
US8342399B1 (en) 2006-05-25 2013-01-01 Mcghie Sean I Conversion of credits to funds
US7703673B2 (en) 2006-05-25 2010-04-27 Buchheit Brian K Web based conversion of non-negotiable credits associated with an entity to entity independent negotiable funds
US8162209B2 (en) 2006-05-25 2012-04-24 Buchheit Brian K Storefront purchases utilizing non-negotiable credits earned from a game of chance
US8376224B2 (en) 2006-05-25 2013-02-19 Sean I. Mcghie Self-service stations for utilizing non-negotiable credits earned from a game of chance
US10062062B1 (en) 2006-05-25 2018-08-28 Jbshbm, Llc Automated teller machine (ATM) providing money for loyalty points
US8684265B1 (en) 2006-05-25 2014-04-01 Sean I. Mcghie Rewards program website permitting conversion/transfer of non-negotiable credits to entity independent funds
US7970013B2 (en) 2006-06-16 2011-06-28 Airdefense, Inc. Systems and methods for wireless network content filtering
US8281392B2 (en) * 2006-08-11 2012-10-02 Airdefense, Inc. Methods and systems for wired equivalent privacy and Wi-Fi protected access protection
US8250178B2 (en) * 2006-09-15 2012-08-21 Emc Corporation Protecting client-side code
US7779156B2 (en) 2007-01-24 2010-08-17 Mcafee, Inc. Reputation based load balancing
US7949716B2 (en) 2007-01-24 2011-05-24 Mcafee, Inc. Correlation and analysis of entity attributes
US8179798B2 (en) 2007-01-24 2012-05-15 Mcafee, Inc. Reputation based connection throttling
US8763114B2 (en) 2007-01-24 2014-06-24 Mcafee, Inc. Detecting image spam
US8214497B2 (en) 2007-01-24 2012-07-03 Mcafee, Inc. Multi-dimensional reputation scoring
US8185930B2 (en) 2007-11-06 2012-05-22 Mcafee, Inc. Adjusting filter or classification control settings
US8045458B2 (en) 2007-11-08 2011-10-25 Mcafee, Inc. Prioritizing network traffic
US8160975B2 (en) 2008-01-25 2012-04-17 Mcafee, Inc. Granular support vector machine with random granularity
US8589503B2 (en) 2008-04-04 2013-11-19 Mcafee, Inc. Prioritizing network traffic
US8621638B2 (en) 2010-05-14 2013-12-31 Mcafee, Inc. Systems and methods for classification of messaging entities
FR2967275B1 (fr) * 2010-11-10 2012-12-28 Oberthur Technologies Procede, programme d'ordinateur et dispositif de securisation de code intermediaire de programmation pour son execution par une machine virtuelle
US9087071B2 (en) * 2011-08-03 2015-07-21 Amazon Technologies, Inc. Gathering transaction data associated with locally stored data files
US9819436B2 (en) 2013-08-26 2017-11-14 Coriant Operations, Inc. Intranodal ROADM fiber management apparatuses, systems, and methods
US11095735B2 (en) 2019-08-06 2021-08-17 Tealium Inc. Configuration of event data communication in computer networks
US11146656B2 (en) 2019-12-20 2021-10-12 Tealium Inc. Feature activation control and data prefetching with network-connected mobile devices
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864494A (en) * 1986-03-21 1989-09-05 Computerized Data Ssytems For Mfg., Inc. Software usage authorization system with key for decrypting/re-encrypting/re-transmitting moving target security codes from protected software
US5305456A (en) * 1991-10-11 1994-04-19 Security Integration, Inc. Apparatus and method for computer system integrated security
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
CA2253867A1 (en) * 1996-05-07 1997-11-13 Webline Communications Corporation Method and apparatus for coordinating internet multi-media content with telephone and audio communications
US6134583A (en) * 1996-07-01 2000-10-17 Sun Microsystems, Inc. Method, system, apparatus and article of manufacture for providing identity-based caching services to a plurality of computer systems (#16)
GB2315140A (en) * 1996-07-11 1998-01-21 Ibm Multi-layered HTML documents
GB2316200A (en) * 1996-08-08 1998-02-18 Ibm Accessing information about executable code
US5940590A (en) * 1997-05-31 1999-08-17 International Business Machines Corporation System and method for securing computer-executable program code using task gates

Also Published As

Publication number Publication date
DE69936384D1 (de) 2007-08-09
US6058482A (en) 2000-05-02
WO1999062227A1 (en) 1999-12-02
JP4184604B2 (ja) 2008-11-19
JP2002517053A (ja) 2002-06-11
ATE366012T1 (de) 2007-07-15
EP1088427B1 (de) 2007-06-27
EP1088427A1 (de) 2001-04-04
EP1088427A4 (de) 2005-08-03

Similar Documents

Publication Publication Date Title
DE69936384T2 (de) System und verfahren für die sicherheit eines kodes
DE69736697T2 (de) Verfahren und Gerät zur Steuerung von Zugriff auf Systembetriebsmittel
DE60308489T2 (de) Anwendungsfensterschließung als Reaktion auf ein Ereignis in einem Parent-Fenster
DE69926459T2 (de) Verfahren und vorrichtung zur umlenkung von serverexternen hyperlink-referenzen
US7359976B2 (en) Method and system for improved internet security via HTTP-only cookies
DE69732323T2 (de) Unterstützung für die Verteilung von vertrauter Software
DE69922857T2 (de) Rechnersicherheit durch Virusuntersuchung
US8959628B2 (en) Method and apparatus for preventing unwanted code execution
DE69922015T2 (de) Verfahren und vorrichtung zum übersetzen und ausführen von arteigenem code in einer umgebung mit virtuellen maschinen
US5983348A (en) Computer network malicious code scanner
DE69838378T2 (de) Verfahren und gerät um sicherheit, für server die anwenderprogramme ausführen, die über&#39;s netzwerk empfangen wurden, zu gewährleisten
EP1073939B1 (de) Intelligentes sicherheitsverwaltungsverfahren und -system
DE112010002445T9 (de) Identifizierung von Bots
DE60102555T2 (de) Verhinderung der map-aktivierten modulmaskeradeangriffe
DE60214993T2 (de) Firewall zur dynamischen Zugangsgewährung und -verweigerung auf Netzwerkressoursen
DE69933329T2 (de) Vorrichtung und Verfahren für sichere übertragung von Dokumenten die von einem Webmittel gesendet werden
DE60017319T2 (de) Verfahren und Vorrichtung zur Bereitstellung adaptierbarer Sicherheits- und Aufzeichnungsprotokolle in einer Servleteinrichtung
DE10052313B4 (de) Verfahren und Vorrichtung zur Beschränkung des freien Verweisens (Hyperlinking) auf Webseiten der ursprünglichen Inhaltserzeuger (Content producers) durch Internet-Inhaltsverteiler (Content distributors)
DE112011103164T5 (de) Datenverteilungsvorrichtung, Datenverteilungssystem, Client-Vorrichtung, Datenverteilungsverfahren, Datenempfangsverfahren, Programm und Datenträger,
DE202014010889U1 (de) Vorrangige statische gehostete Webanwendungen
DE10126752A1 (de) Virusprüfung und -meldung für Suchergebnisse von Computerdatenbanken
DE112012001389T5 (de) Sichere Ausführung einer ungesicherten App auf einem Gerät
DE102008016197A1 (de) Identifizieren eines Anwendungsbenutzers als Quelle einer Datenbank-Aktivität
DE60304005T2 (de) Änderung von Ladeadressen von ausführbaren Programmodulen
DE19953055C2 (de) Vorrichtung und Verfahren zur geschützten Ausgabe eines elektronischen Dokuments über ein Datenübertragungsnetz

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee