Beschreibung
Verfahren und Einrichtung zum Übertragen von Programmcodes im Internet
Die Erfindung betrifft ein Verfahren zum Übertragen eines Programmcodes für eine Webanwendung von einem Server-System auf ein Client-System und eine Einrichtung hierfür.
Das Internet stellt einen weltweiten Zusammenschluss von Computer-Netzwerken dar, über die mehrere Millionen Computer miteinander verbunden sind, um einen Datenaustausch zu ermöglichen. Alle Unternetze und Computer des Internets benutzen dabei ein einheitliches Adressierungsschema sowie die TCP/IP- Protokolle zur Datenübertragung. Die Datenübertragung erfolgt in Paketform. Im Internet werden dabei verschiedenste Dienste angeboten, deren wichtigster das World Wide Web ist.
Das World Wide Web - im weiteren kurz auch Web genannt - ist ein interaktives Informationssystem, das den Austausch digitaler Dokumente zwischen Computern ermöglicht. Das Web besteht dabei aus den sogenannten Hypertext-Systemen, auch WebSites genannt. Jede Web-Site bezeichnet eine Stelle im Internet, an der ein oder mehrere zusammengehörige Web-Dokumente zu finden sind. Jeder Web-Site ist dabei eine Adresse im Internet zugewiesen, die sie von allen anderen Web-Sites unterscheidbar macht und somit einen gezielten Zugriff ermöglicht. Die Web-Sites befinden sich im allgemeinen auf einzelnen Computern, den sogenannten Web-Servern, auf denen sie mit Hilfe eines speziellen Web-Server-Programms im Internet bereitgestellt werden. Auf die Web-Sites kann dann von den übrigen Computern mit Hilfe eines Client-Programms, im allgemeinen einen Internet-Browser, zugegriffen werden.
Die Dokumente der Web-Sites werden mit einer plattformunabhängigen Beschreibungssprache, der sogenannten Hypertext Markup Language (HTML) dargestellt. Die HTML-Beschreibungs-
spräche enthält dabei Sprachelemente für den Inhalt und die Darstellung der Dokumente sowie für Interaktionen, um Daten zwischen dem Server und dem Client auszutauschen und nutzt darüber hinaus diverse Codes, um die Komponenten und die Ver- knüpfungspunkte der Dokumente auf einer Web-Site untereinander zu beschreiben.
Neben rein inhaltlichen Informationen und Darstellungen können Web-Sites bzw. die HTML-Dokumente selbstausführbare Pro- gramme, im weiteren auch Applets genannt, enthalten, die z.B. dazu dienen, Objekte zu animieren und Berechnungen durchzuführen, oder es dem Web-Benutzer ermöglichen über Schaltflächen mit der Web-Site zu interagieren. Diese Applets sind meist in den HTML-Dokumenten eingebettet und werden im all- gemeinen direkt auf dem Client-Computer ausgeführt. Zur Ausführung auf den Client-Rechner müssen die Applets vom Server auf den Client aufgespielt werden. Der Server überträgt dabei die Applets, so dass diese zunächst in einem Zwischenspeicher, der in der Regel ein festgelegter Bereich auf der Festplatte des Client-Computers ist, abgelegt werden, bis alle Anweisungen des Applets empfangen wurden. Danach werden die Anweisungen des Applets ausgeführt, wobei die Ausführung direkt durch das Darstellungsprogramm des Clients, also dem Internet-Browser, bewerkstelligt oder mit Hilfe einer in den Browser eingebetteten entsprechend geeigneten Erweiterung durchgeführt wird.
Zur Ausführung der Applets direkt durch den Internet-Browser werden die Programmanweisungen in Klartext-Form auf den Client-Rechner übertragen. Die Klartext-Anweisungen der Applets werden im allgemeinen mit Hilfe eines Editors in einer Scriptsprache, wie Javascript oder J-Script erzeugt. Alternativ zu einer Klartext-Programmierung der Applets besteht auch die Möglichkeit, eine plattformunabhängige Pro- grammsprache, wie Java einzusetzen. Bei einer Java-Programmierung werden die Programme in Bytecode-Form übertragen. Dieser Bytecode kann auf jedem Computers eines Netzwerks lau-
fen, der über eine entsprechende Erweiterung, die sogenannte virtuelle Java-Maschine, verfügt. Diese virtuelle Java- Maschine übersetzt den Bytecode dann in einen Code, der von der Hardware des Computers verarbeitet werden kann.
Nachteilig an einer Programmierung der in eine Web-Site eingebetteten Applets mit Hilfe einer plattformunabhängigen Programmiersprache wie Java oder einer Scriptsprache wie Javascript ist, dass der Programmcode für jeden Anwender nahezu offen vorliegt. Wird von einem Besucher eine Web-Site mit eingebetteten Applets aufgerufen, werden diese Applets im allgemeinen auf den Client-Computer vollständig übertragen und dort vom Internet-Browser direkt oder mit Hilfe einer entsprechenden Erweiterung ausgeführt. Die Applets sind dann bei Verwendung einer Scriptsprache wie Javascript in Klartext-Form oder bei einem Java-Einsatz als kompilierte Datei in Bytecode-Form im Zwischenspeicher des Client-Rechners abgespeichert, so dass der Programmcode ohne großen Aufwand nachvollzogen werden kann. Dies macht sowohl einen Schutz des Urheberrechts bei der Programmierung des Applets als auch eine Sicherung der Investitionen zur Programmentwicklung unmöglich. Der Anbieter der Web-Site kann also nur hoffen, dass das von ihm zur Verfügung gestellte Web-Site mit den eingebetteten Applets nur entsprechend seinen Richtlinien einge- setzt und verwendet wird.
Aufgabe der vorliegenden Erfindung ist es deshalb, ein Verfahren zum Übertragen von Programmcode für Webanwendungen und eine entsprechende Einrichtung zu schaffen, die die berech- tigten Schutzinteressen des Web-Site-Anbieters bzw. Entwicklers gewährleistet, wobei gleichzeitig die Vorteile einer plattformunabhängigen Programmierung der Webanwendungen erhalten bleiben.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und durch eine Einrichtung gemäß Anspruch 12 gelöst. Bevorzugte Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
Beim erfindungsgemäßen Verfahren und der zugehörigen Einrichtung werden zum Übertragen von Programmcodes für Webanwendungen von einem Server-System auf ein Client-System die Pro- grammcodes, die im allgemeinen als Klartext-Anweisungen oder in kompilierter Form auf der Web-Site vorliegen, vor der Übertragung verschlüsselt. Die dann verschlüsselt in einen Zwischenspeicher des Client-Systems übertragenen Programmcodes werden im Client-System nach der Übertragung dann wie- der so entschlüsselt, dass im Arbeitsspeicher des Client- Systems ein ausführbarer Programmcode erzeugt wird.
Hierdurch wird gewährleistet, dass die auf das Client-System übertragenen Programmcodes der Webanwendungen dort nicht of- fen und damit ohne großen Aufwand nachvollziehbar vorliegen. Gemäß der Erfindung wird nämlich die Entschlüsselung der auf das Client-System übertragenen Programmcodes so vorgenommen, dass eine lauffähige und damit uncodierte Programmform nur im Arbeitsspeicher des Client-Systems erzeugt wird. Dieser Ar- beitsspeicher ist bei einem Computer als nicht-permanenter
Speicher ausgelegt, auf den die Rechnerzentraleinheit schnell zugegriffen kann, wobei die Daten aber nur so lange gespeichert werden, bis die Stromzufuhr unterbrochen oder das Programm beendet wird. Ohne detaillierte Kenntnis des Client- Systems und dessen Programmierung ist aber ein Nachvollziehen der Programmcodes im Arbeitsspeicher im wesentlichen ausgeschlossen, so dass dem Anwender bzw. Entwickler der Programme ein weitgehender Schutz gegen eine unkontrollierte Weiterverwendung seines Programms gewährt wird.
Gemäß einer bevorzugten Ausführung ist das Client-System so eingerichtet, dass ein Schlüssel zur Entschlüsselung der übertragenen Programmcodes bereits vorab hinterlegt ist. Dieser kann z.B. in den Browser des Client-Systems eingebettet sein oder auch als Zusatzgerät im Client-System integriert werden. Hierdurch lässt sich eine besonders einfache Verschlüsselung zuverlässig gewährleisten, da der Schlüssel zum
Entschlüsseln sicher und nicht einfach zugänglich auf dem Client-System verwahrt wird. Ein weiterer Vorzug ist dabei, den Schlüssel als Teil einer digitalen Signatur im Client- System auszuführen, die zugleich die Identität des Benutzers am Client-System sicherstellt und somit seine Zugangsberechtigung zum Programmcode auf der Web-Site angibt.
Alternativ besteht gemäß einer weiteren bevorzugten Ausführungsform jedoch auch die Möglichkeit, den Schlüssel zum Entschlüsseln des codierten Programmcodes zusammen mit diesem vom Server-System auf das Client-System zu übertragen. Diese Verschlüsselungstechnik hat den Vorteil, dass beim Client- System zur Ausführung des erfindungsgemäßen Verfahrens weder hard- noch softwaremäßig zusätzliche Maßnahmen ergriffen wer- den müssen. Alle für die Verschlüsselungstechnik notwendigen Schritte bzw. Einrichtungen können ausschließlich auf dem Server-System vorgesehen und damit zentral eingerichtet werden.
Gemäß einer weiteren bevorzugten Ausführungsform liegen in die Web-Site eingebetteten Programmteile auf dem Server- System uncodiert vor und werden erst auf Anforderung der WebSite durch ein Client-System vor der Übertragung durch das Server-System verschlüsselt. Hierdurch wird gewährleistet, dass zum Aufbau und Programmieren der Web-Site weiterhin die herkömmlichen Programmsprachen und Programmiertechniken eingesetzt werden können.
Die Erfindung wird anhand der beigefügten Zeichnungen näher erläutert. Es zeigen:
Fig. 1 schematisch das erfindungsgemäße Verfahren zum .Übertragen von Programmcodes für Webanwendungen;
Fig. 2 eine mögliche Ausführungsform des erfindungsgemäßen Verfahrens im Detail;
Fig. 3a einen möglichen Ablauf für die Verschlüsselung; und
Fig. 3b einen möglichen Ablauf für die Entschlüsselung.
Das Internet stellt ein weltweites Geflecht miteinander verbundener Computer-Netzwerke dar, bei dem jeder angeschlossene Rechner gleichrangig mit jedem anderen Rechner kommunizieren kann. Zum Datenaustausch zwischen den Rechnern werden dabei ein einheitliches Adressierungsschema sowie Datenüber- tragungsprotokoll nach dem TCP/IP-Standard verwendet. Über das Netzwerk können so Daten unterschiedlichster Art, wie Software, Text, Nachrichten standardisiert übermittelt werden. Die zu übertragenden Daten werden zu diesem Zweck in kleine Informationseinheiten, sogenannten Datenpaketen, zer- teilt. Diese Datenpakete enthalten neben Nutzdaten auch Steuerinformationen für die Adressierung, Sendefolge, Flusskontrolle und Fehlerkorrektur. Die Datenpakete können dabei eine feste oder variable Länge haben, wobei eine Höchstgrenze spezifiziert ist. Die Datenpakete werden dann getrennt über das Internet übertragen und am Bestimmungsziel wieder zur ursprünglichen Gesamtinformation zusammengefügt.
Im Internet werden dabei verschiedenste Dienste angeboten, deren wichtigster das World Wide Web, im folgenden auch kurz Web genannt, ist, ein interaktives Informationssystem, das den Austausch digitaler Dokumente ermöglicht. Das Web besteht aus Hypertext-Systemen, den sogenannten Web-Sites, die in der Regel mehrere zusammenhängende Web-Dokumente enthalten. Die Web-Dokumente der Web-Site befinden sich dabei im allgemeinen auf einem speziellen Rechner, dem sogenannten Server, der die Web-Site den ans Internet angeschlossenen Computern, den sogenannten Clients, mit Hilfe eines speziellen Web-Server-Programms zur Verfügung stellt.
Zum Beschreiben des Seiteninhalts und des grafischen Aufbaus der Web-Dokumente, wird als AufZeichnungssprache überwiegend HTML (Hypertext Markup Language) verwendet, eine einfache und
plattformunabhängige AufZeichnungssprache. HTML-Dokumente können dabei mittels eines beliebigen Text-Editors erstellt werden, da sie selbst als ASCII-Text hinterlegt sind.
Die Web-Dokumente weisen neben der Text-und-Layout-Beschrei- bung in HTML oft auch noch zusätzliche Programmcodes auf, die kleinere Anwendungen auf der Web-Site kontrollieren oder ausführen. Diese Anwendungen im weiteren auch als Applets bezeichnet, sind oft in den HTML-Text selbst integriert, wobei als Programmsprache üblicherweise eine Scriptsprache wie
Javascript oder eine Sprache wie Java, bei der die Codes im kompilierter Form vorliegen, verwendet wird. Hierdurch wird gewährleistet, dass die Web-Anwendungen unabhängig vom Betriebssystems des jeweiligen Nutzers ausführbar sind. Neben einer Einbettung der Applets direkt in den HTML-Text besteht jedoch auch die Möglichkeit, dass die Applets als eigenständige Dateien unabhängig vom HTML-Dokument vorliegen, wobei im HTML-Dokument auf diese Dateien dann verwiesen wird.
Die Funktionsweise bei der Abarbeitung der Programmanweisung auf dem Client-Rechner erfolgt dabei herkömmlicherweise so, dass der Client-Rechner eine Web-Site vom Server anfordert und der Server daraufhin die Web-Site mit ihrem HTML-Texten und den eingebetteten Programmcodes auf den Client-Rechner überträgt, wobei die Programmcodes in einen Zwischenspeicher des Client-Rechners eingeschrieben werden. Das Einspeichern der Programmcodes in den Zwischenspeicher gewährleistet, dass vor einer Ausführung der Applets alle Programmanweisungen auf dem Client-Rechner vorliegen. Weiterhin wird der Zwischen- Speicher auch dazu verwendet, häufig auf den Client-Rechner angeforderte Web-Sites ohne vorherige Übertragung wieder zur Verfügung zu stellen. Bevor nämlich die Übertragung der WebSite vom Server auf den Client durchgeführt wird, überprüft der Clien -Rechner, ob die angeforderte Web-Site und damit die darin eingebetteten Applets in ihrer aktuellen Version nicht bereits im Zwischenspeicher vorhanden ist. Ist das der Fall, werden die betreffenden Programmcodes dem Internet-
Browser zur Ausführung direkt aus dem Zwischenspeicher übergeben.
Der Client-Rechner führt die Web-Sites mit den eingebetteten Applets mit Hilfe des Internet-Browser aus. Wenn der Programmcode als Klartext übertragen wird, also dann wenn er z.B. mit einer Scriptsprache programmiert ist, führt der Browser die Programmanwendung direkt aus. Im Falle das der Programmcode in Java vorliegt, also in Form eines Bytecode übertragen wird, muss der Browser eine zusätzliche Erweiterung, die sogenannte virtuelle Javamaschine aufweisen, um die Applets ausführen zu können. Prinzipiell gilt jedoch, dass dann, wenn der Programmcode im Zwischenspeicher des Client-Rechners in Klartext-Form oder als Bytecode vorliegt, er sich im wesentlichen ohne großen Aufwand nachvollziehen und gegebenenfalls gegen die Richtlinien des Anwenders und dessen Urheberrechtsanspruch einsetzen lässt.
Um zu gewährleisten, dass der Programmcode nur im Sinne des Anwenders und Entwicklers eingesetzt und weiterverwendet wird, wird gemäß der Erfindung - wie in Fig. 1 gezeigt - der Programmcode vor der Übertragung auf den Client-Rechner verschlüsselt. Dies kann einmal, wie am oberen Zweig in Fig. 1 gezeigt, dadurch geschehen, dass die Programmcodes auf dem Server bereits codiert vorliegen, also z.B. verschlüsselt in die HTM -Dokumente eingebaut sind. Die Web-Site mit dem Programmcode wird dann auf Anforderung durch den Client-Rechner vom Server auf den Client-Rechner übertragen, wobei der codierte Programmcode vorzugsweise auf einer Festplatte des Client-Rechners zwischengespeichert wird. Dieser zwischengespeicherte codierte Programmcode wird dann entweder durch geeignete Hardwaremittel im Client-System und/oder entsprechende Anweisungen in der Client-Software entschlüsselt, wobei das Entschlüsselungsprogramm so ausgelegt ist, dass der ausführbare Programmcode in einem nicht-permanenten und nicht frei zugänglichen Arbeitsspeicher des Client-Rechners erzeugt wird. Der Client-Rechner arbeitet dann die entschlüsselten
Anweisungen aus dem Arbeitsspeicher ab und führt damit die gewünschte Webanwendung aus . Wenn - wie erläutert - der Programmcode bereits codiert bei Anforderung des Client-Rechners auf dem Server vorliegt, kann die Entschlüsselung immer nach einem festen Schema erfolgen. Der Schlüssel kann dabei auf dem Client-Rechner in geeigneter Form, d.h. sowohl als Software als auch als eigenständige Hardware hinterlegt sein, oder vom Server zusammen mit dem codierten Programmcode übertragen werden .
Der Schlüssel kann dabei auch Teil einer digitalen Signatur sein, mit der sich die Identität des Benutzers am Client- Rechner feststellen lässt. Durch die digitale Signatur wird sichergestellt, dass ein Dokument tatsächlich vom angegebenen Absender stammt und das es auf seinem Weg durch das Internet nicht verändert wird. Die digitale Signatur kann z.B. auf einer Chipkarte gespeichert sein, auf der von einer Zertifizierungsstelle ein elektronischer Schlüssel aufgebracht ist. Mit der digitalen Signatur in Kombination mit dem Schlüssel zum Programmcode decodieren, kann dann zugleich die Zugangsberechtigung des Benutzers am Client-System, der die Web-Site mit den verschlüsselten Programmcodes aufruft, und die erforderliche Entschlüsselung zur Ausführung des Programmcodes auf dem Client-Rechner sichergestellt werden.
Neben einer festen Vorverschlüsselung des Programmcodes auf der Web-Site besteht auch die Möglichkeit einer Verschlüsselung bzw. Entschlüsselung nach einem variablen Schema. Diese Möglichkeit ist als unterer Zweig in Fig. 1 gezeigt. Hier liegt der Programmcode auf dem Server uncodiert vor und wird erst dann, wenn die entsprechende Web-Site von einem Client aufgerufen wird, zur Übertragung auf diesen Client verschlüsselt. Diese Verschlüsselung kann dabei ebenfalls nach einem festen Schlüsselschema erfolgen, das außerdem zur Entschlüsselung auf dem Client voreingespeichert ist. Alternativ besteht auch die Möglichkeit, dass der Server seinen Schlüssel selbst generiert und zusammen mit dem dann ver-
schlüsselten Programmcode auf den Client zum Entschlüsseln überträgt .
Fig. 2 zeigt einen möglichen Ablauf für eine verschlüsselte Übertragung von Programmcodes für Webanwendungen zwischen einem Server und einem Client. Wenn der Client-Computer eine Web-Site von einem Server über die entsprechende Adressierung dieser Web-Site in einem ersten Schritt anfordert, prüft der Server dann in einem zweiten Schritt, ob die Web-Site zu schützende Programmcodes enthält, d.h. insbesondere, ob die vom Client angeforderten HTML-Dokumente eingebettete Programm-Applets, die in Klartext- oder Bytecode-Form vorliegen, aufweist. Diese Programm-Applets ermöglichen es z.B. dem Web- Benutzer am Client-Rechner über Schaltflächen mit der Web- Site zu interagieren.
Wenn solche zu schützenden Programmcodes, die auf dem Client- Rechner zusammen mit den HTML-Dokumenten übertragen werden sollen, vom Server ermittelt werden, generiert der Server in einem dritten Schritt einen Schlüssel zur Verschlüsselung und verschlüsselt dann die zu übertragenden Programmcodes. In einem vierten Schritt wird dann der verschlüsselte Programmcode auf den Client-Rechner übertragen, wobei der Server gleichzeitig auch ein Entschlüsselungsprogramm mit dem entsprechen- den Schlüssel mit überträgt. Der verschlüsselte Programmcode mit dem Entschlüsselungsprogramm wird vorzugsweise auf dem Client-Rechner auf dessen Festplatte zwischengespeichert.
In einem fünften Schritt entschlüsselt dann der Client-Rech- ner den auf der Festplatte liegenden verschlüsselten Programmcode mit Hilfe des Entschlüsselungsprogramms und übersetzt dabei den Programmcode wieder in einen ausführbaren Programmcode, der in den Arbeitsspeicher des Client-Rechners geladen wird. Anschließend arbeitet dann in einem sechsten Schritt der Client-Rechner die Programmanweisungen aus dem Arbeitsspeicher ab.
Durch dieses erfindungsgemäße Verfahren wird zuverlässig gewährleistet, dass der Programmcode von Webanwendungen, der üblicherweise als Bytecode oder Klartext vorliegt, um plattformunabhängig auf dem Client-Rechner ausgeführt werden zu können, nicht ungeschützt auf den Client-Rechner übertragen wird. Ein für den Interpreter ausführbarer offener Java- oder Javascript-Programmcode liegt nämlich bei der erfindungsgemäßen verschlüsselten Übertragung zwischen Server und Client nur im schwer zugänglichen Arbeitsspeicher des Clients vor und kann deshalb nur mit zusätzlichen Kenntnissen über das
Client-System und dessen Programmierung entgegen den vom Anbieter bzw. Entwickler vorgegebenen Richtlinien weiterverwendet werden.
Anstatt, wie in Figur 2 dargestellt, den Schlüssel zum Entschlüsseln des übertragenen Programmcodes zusammen mit diesem über das Internet zu übertragen, besteht jedoch auch die Möglichkeit, den Schlüssel über einen vom Internet unabhängigen Kanal z.B. über eine Funkstrecke vom Server zum Client zu transportieren. Dies kann, wie dargestellt, gleichzeitig mit der Übertragung der Web-Site und der eingebetteten Applets vom Server auf den Client erfolgen oder unabhängig davon durchgeführt werden.
Alternativ zum vorgenannten Verfahrensablauf kann - wie bereits weiter oben erläutert - statt einer variablen Verschlüsselung und Entschlüsselung durch Generieren eines Schlüssels im Server und dessen Übertragung zusammen mit dem verschlüsselten Programmcode auf den Client auch ein festes Verschlüsselungs-/Entschlüsselungsverfahren verwendet werden, bei dem die Programmcodes bereits vor einer Anforderung der entsprechenden Web-Site auf dem Server verschlüsselt auf diesem vorliegen. Der zugehörige Schlüssel zum Entschlüsseln kann dann auch bereits auf dem Client-Rechner in geeigneter Hard- oder Softwareform hinterlegt sein oder auch wie beim dargestellten Funktionsablauf zusammen mit dem verschlüsselten Programmcode mitgeliefert werden.
In Fig. 3A ist nochmals genauer der Ablauf für die Verschlüsselung und in Fig. 3B der Ablauf für die Entschlüsselung dargestellt. Die Verschlüsselung erfolgt dabei bei dem in Zusam- menhang mit Fig. 2 erläuterten Funktionsablauf so, dass in einem ersten Schritt der Schlüssel erzeugt wird. Dieser Schlüssel wird dann gespeichert und gleichzeitig mit diesem Schlüssel das zu verschlüsselnde Programmpaket verschlüsselt. Zur Entschlüsselung wird der mit dem verschlüsselten Pro- grammcode übertragene Schlüssel verwendet. Die Schlüsseler- zeugung und Verschlüsselung können vom Server im Rahmen des Web-Server-Programms ausgeführt werden. Alternativ besteht auch die Möglichkeit, eigenständige Zusatzgeräte für die Schlüsselerzeugung und Verschlüsselung einzusetzen. Auch die Entschlüsselung kann im Client-Rechner im Rahmen des Client- Programms, d.h. des Internet-Browsers, durchgeführt werden. Es besteht jedoch auch hier die Möglichkeit, eigenständige Zusatzgeräte im Client-Rechner vorzusehen, die den übertragenen Schlüssel empfangen und die Entschlüsselung vornehmen.
Die in der vorstehenden Beschreibung, den Ansprüchen und den Zeichnungen offenbarte Merkmale der Erfindung können sowohl einzeln als auch in beliebiger Kombination für die Verwirklichung der Erfindung in ihren verschiedenen Ausgestaltungen wesentlich sein .