DE60115072T3 - System und verfahren zum unterschreiben eines software-kodes - Google Patents

System und verfahren zum unterschreiben eines software-kodes Download PDF

Info

Publication number
DE60115072T3
DE60115072T3 DE60115072T DE60115072T DE60115072T3 DE 60115072 T3 DE60115072 T3 DE 60115072T3 DE 60115072 T DE60115072 T DE 60115072T DE 60115072 T DE60115072 T DE 60115072T DE 60115072 T3 DE60115072 T3 DE 60115072T3
Authority
DE
Germany
Prior art keywords
software application
signature
api
digital signature
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60115072T
Other languages
English (en)
Other versions
DE60115072D1 (de
DE60115072T2 (de
Inventor
P. David YACH
S. Michael BROWN
A. Herbert LITTLE
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.)
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=27398521&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60115072(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of DE60115072D1 publication Critical patent/DE60115072D1/de
Publication of DE60115072T2 publication Critical patent/DE60115072T2/de
Application granted granted Critical
Publication of DE60115072T3 publication Critical patent/DE60115072T3/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/067Network architectures or network communication protocols for network security for supporting key management in a packet data network using one-time keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Description

  • HINTERGRUND
  • 1. GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft im Allgemeinen den Bereich von Sicherheitsprotokollen für Softwareanwendungen. Insbesondere sieht die Erfindung ein Code-signierendes System und ein Verfahren vor, die insbesondere gut geeignet sind für JavaTM-Anwendungen für mobile Kommunikationsvorrichtungen, wie PDAs (Personal Digital Assistants), zellulare Telefone und drahtlose Zweiweg-Kommunikationsvorrichtungen (insgesamt hier als „mobile Vorrichtungen” oder einfach „Vorrichtungen” bezeichnet).
  • 2. BESCHREIBUNG DES STANDES DER TECHNIK
  • Sicherheitsprotokolle, die Software-Code-Signierschemen umfassen, sind bekannt. Typischerweise werden derartige Sicherheitsprotokolle verwendet, um die Zuverlässigkeit von Softwareanwendungen sicherzustellen, die aus dem Internet heruntergeladen werden. In einem typischen Software-Code-Signierschema wird eine digitale Signatur an die Softwareanwendung angehängt, welche den Software-Entwickler identifiziert. Sobald die Software von einem Benutzer heruntergeladen ist, muss der Benutzer typischerweise sein oder ihr Urteilsvermögen benutzen, um zu bestimmen, ob die Softwareanwendung zuverlässig ist, basierend einzig auf seiner oder ihrer Kenntnis des Rufs des Software-Entwicklers. Dieser Typ von Code-signierendem Schema stellt nicht sicher, dass eine von einer dritten Partei für eine mobile Vorrichtung geschriebene Softwareanwendung mit den ursprünglichen Anwendungen und anderen Ressourcen der Vorrichtung richtig zusammenarbeiten wird. Da typische Code-Signierprotokolle nicht sicher sind und nur von dem Urteilsvermögen des Benutzers abhängen, gibt es ein ernsthaftes Risiko, dass zerstörerische Softwareanwendungen des Typs „Trojanisches Pferd” heruntergeladen und in einer mobilen Vorrichtung installiert werden können.
  • Die Veröffentlichung US 5,978,484 zeigt ein System zur Verteilung von digital signierten ausführbaren Objekten unter Verwendung eines RSA-verschlüsselten SHA-Hashwerts.
  • Es bleibt auch ein Bedarf für Netzbetreiber, ein System und ein Verfahren zu besitzen, um eine Steuerung darüber zu haben, welche Softwareanwendungen auf mobilen Vorrichtungen aktiviert werden.
  • Es verbleibt ein weiterer Bedarf in 2.5G- und 3G-Netzen, wo Unternehmen oder Netzbetreiber die Typen von Software auf den Vorrichtungen, die an die Angestellten ausgegeben werden, zu steuern wünschen.
  • ZUSAMMENFASSUNG
  • Ein Code-signierendes System und ein Verfahren sind vorgesehen. Das Code-signierende System arbeitet in Verbindung mit einer Softwareanwendung, die eine digitale Signatur hat, und umfasst eine Anwendungsplattform, eine Schnittstelle für das Anwendungsprogramm (API – application programming interface) und eine virtuelle Maschine. Die API ist konfiguriert, die Softwareanwendung mit der Anwendungsplattform zu verbinden. Die virtuelle Maschine verifiziert die Au thentizität der digitalen Signatur, um einen Zugang zu der API für die Softwareanwendung zu steuern.
  • Ein Code-signierendes System zum Betrieb in Verbindung mit einer Softwareanwendung, die eine digitale Signatur hat, weist gemäß einem weiteren Ausführungsbeispiel der Erfindung eine Anwendungsplattform, eine Vielzahl von APIs, von denen jede konfiguriert ist, die Softwareanwendung mit einer Ressource auf der Anwendungsplattform zu verbinden, und eine virtuelle Maschine auf, welche die Authentizität der digitalen Signatur verifiziert, um einen Zugang zu der API für die Softwareanwendung zu steuern, wobei die virtuelle Maschine die Authentizität der digitalen Signatur verifiziert, um einen Zugang zu der Vielzahl von APIs für die Softwareanwendung zu steuern.
  • Gemäß einem weiteren Ausführungsbeispiel der Erfindung weist ein Verfahren zum Steuern eines Zugangs zu sensiblen bzw. sensitiven Schnittstellen für das Anwendungsprogramm auf einer mobilen Vorrichtung die Schritte auf eines Ladens einer Softwareanwendung in der mobilen Vorrichtung, die einen Zugang zu einer sensitiven API erfordert, eines Bestimmens, ob die Softwareanwendung eine digitale Signatur umfasst, die zu der sensitiven API gehört, oder nicht, und, wenn die Softwareanwendung keine zu der sensitiven API gehörende digitale Signatur umfasst, dann Verweigern der Softwareanwendung den Zugang zu der sensitiven API.
  • In einem weiteren Ausführungsbeispiel der Erfindung weist ein Verfahren zum Steuern eines Zugangs zu einer Anwendungsprogrammschnittstelle (API) in einer mobilen Vorrichtung durch eine von einem Software-Entwickler erzeugte Softwareanwendung die Schritte auf eines Empfangens der Softwareanwendung von dem Software-Entwickler, eines Überprüfens der Softwareanwendung, um zu bestimmen, ob sie auf die API zugreifen kann, dann eines Anhängens einer digita len Signatur an die Softwareanwendung, eines Verifizierens der Authentizität einer an die Softwareanwendung angehängten digitalen Signatur und eines Gewährens eines Zugangs zu der API für Softwareanwendungen, für welche die angehängte digitale Signatur authentisch ist.
  • Ein Verfahren zum Einschränken eine Zugangs zu einer sensitiven API in einer mobilen Vorrichtung weist gemäß einem weiteren Ausführungsbeispiel der Erfindung die Schritte auf eines Registrierens eines Software-Entwicklers oder mehrerer Software-Entwickler, der/die vertrauenswürdig ist/sind, zum Gestalten von Softwareanwendungen, die auf die sensitive API zugreifen, eines Empfangens eines Hash-Werts einer Softwareanwendung, eines Bestimmens, ob die Softwareanwendung von einem der registrierten Software-Entwickler gestaltet wurde, und wenn die Softwareanwendung von einem der registrierten Software-Entwickler gestaltet wurde, dann eines Erzeugens einer digitalen Signatur unter Verwendung des Hash-Werts der Softwareanwendung, wobei die digitale Signatur an die Softwareanwendung angehängt werden kann, und dann verifiziert die mobile Vorrichtung die Authentizität der digitalen Signatur, um einen Zugang zu der sensitiven API durch die Softwareanwendung zu steuern.
  • In einem weiteren Ausführungsbeispiel weist ein Verfahren zum Beschränken eines Zugangs zu Schnittstellen für Anwendungsprogramme in einer mobilen Vorrichtung die Schritte auf eines Ladens einer Softwareanwendung in die mobile Vorrichtung, die einen Zugang zu einer oder mehreren API(s) erfordert, eines Bestimmens, ob die Softwareanwendung eine zu der mobilen Vorrichtung gehörende digitale Signatur umfasst oder nicht, und wenn die Softwareanwendung keine zu der mobilen Vorrichtung gehörende digitale Signatur umfasst, dann eines Verweigerns der Softwareanwendung eines Zugangs zu der einen oder den mehreren API(s).
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Diagramm, das ein Code-signierendes Protokoll gemäß einem Ausführungsbeispiel der Erfindung zeigt;
  • 2 ist ein Flussdiagramm des oben unter Bezugnahme auf 1 beschriebenen Code-signierenden Protokolls;
  • 3 ist eine Blockdarstellung eines Code-signierenden Systems in einer mobilen Vorrichtung;
  • 3A ist eine Blockdarstellung eines Code-signierenden Systems in einer Vielzahl von mobilen Vorrichtungen;
  • 4 ist ein Flussdiagramm, das den Betrieb des oben unter Bezugnahme auf 3 und 3A beschriebenen Code-signierenden Systems darstellt;
  • 5 ist ein Flussdiagramm, das die Verwaltung der unter Bezugnahme auf 3A beschriebenen Code-signierenden Autoritäten darstellt; und
  • 6 ist eine Blockdarstellung einer mobilen Kommunikationsvorrichtung, in der ein Code-signierendes System und Verfahren implementiert werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme nun auf die Zeichnungen ist 1 ein Diagramm, das ein Code-signierendes Protokoll gemäß einem Ausführungsbeispiel der Erfindung zeigt. Ein Anwendungsentwickler 12 erzeugt eine Softwareanwendung 14 (Anwendung Y) für eine mobile Vorrichtung, die einen Zugang zu einer oder mehreren sensitiven API(s) in der mobilen Vorrichtung erfordert. Die Softwareanwendung Y 14 kann zum Beispiel eine Java-Anwendung sein, die auf einer in der mobilen Vorrichtung installierten virtuellen Java-Maschine arbeitet. Eine API ermöglicht der Softwareanwendung Y, sich mit einer Anwendungsplattform zu verbinden, die zum Beispiel Ressourcen aufweisen kann, wie die Hardware der Vorrichtung, das Betriebssystem und Kern-Software und Datenmodelle. Um Funktionsanrufe zu tätigen oder anderweitig mit derartigen Ressourcen zu interagieren, muss eine Softwareanwendung Y auf eine oder mehrere API(s) zugreifen. APIs können somit gewissermaßen eine Softwareanwendung und zugehörige Vorrichtungsressourcen miteinander verbinden. In dieser Beschreibung und den angehängten Ansprüchen sollten Referenzen auf einen API-Zugang interpretiert werden als einen Zugang zu einer API aufweisend derart, um einer Softwareanwendung Y zu ermöglichen, mit einer oder mehreren entsprechenden Vorrichtungsressource(n) zu interagieren. Ein Vorsehen eines Zugangs zu einer API ermöglicht somit einer Softwareanwendung Y, mit zugehörigen Vorrichtungsressourcen zu interagieren, wohingegen ein Verweigern eines Zugangs zu einer API, die Softwareanwendung Y daran hindert, mit den zugehörigen Ressourcen zu interagieren. Zum Beispiel kann eine Datenbank-API mit einem Datei- oder Datenspeichersystem einer Vorrichtung kommunizieren und ein Zugang zu der Datenbank-API würde eine Interaktion zwischen der Softwareanwendung Y und dem Datei- oder Datenspeichersystem vorsehen. Eine Benutzerschnittstelle(UI – user interface)-API würde mit Steuereinrichtungen und/oder Steuerungssoftware für derartige Vorrichtungskomponenten, wie ein Bildschirm, eine Tastatur und andere Vorrichtungskomponenten, die eine Ausgabe an einen Benutzer liefern oder eine Eingabe von einem Benutzer akzeptieren, kommunizieren. In einer mobilen Vorrichtung kann auch eine Funk-API als eine Schnittstelle zu drahtlosen Kommunikationsressourcen vorgesehen werden, wie ein Sender und Empfänger. Ähnlich kann eine kryptographi sche API vorgesehen werden, um mit einem Verschlüsselungs(crypto)-Modul zu interagieren, das Verschlüsselungsalgorithmen in einer Vorrichtung implementiert. Dies sind nur veranschaulichende Beispiele von APIs, die auf einer Vorrichtung vorgesehen werden können. Eine Vorrichtung kann beliebige dieser Beispiels-APIs umfassen oder andere APIs statt oder zusätzlich zu den oben beschriebenen.
  • Vorzugsweise kann eine API als sensitiv bzw. sensibel klassifiziert werden von einem Hersteller einer mobilen Vorrichtung oder möglicherweise von einem API-Autor, einem Betreiber eines drahtlosen Netzes, einem Besitzer oder Betreiber einer Vorrichtung oder einer anderen Einheit, die von einem Virus oder bösartigen Code in einer Softwareanwendung für die Vorrichtung betroffen sein kann. Zum Beispiel kann ein Hersteller einer mobilen Vorrichtung diejenigen APIs als sensitiv klassifizieren, die eine Schnittstelle haben mit kryptographischen Routinen, Funktionen drahtloser Kommunikation oder proprietären Datenmodellen, wie Adressbuch- oder Kalendereinträge. Um gegen einen unbefugten Zugang zu diesen sensitiven APIs zu schützen, muss der Anwendungsentwickler 12 eine oder mehrere digitale Signaturen von dem Hersteller der mobilen Vorrichtung oder einer anderen Einheit, die APIs als sensitiv klassifiziert, oder von einer Code-signierenden Autorität 16, die im Namen des Herstellers oder der anderen Einheit mit einem Interesse am Schutz des Zugangs zu sensitiven APIs von Vorrichtungen handelt, besorgen und die Signatur(en) an die Softwareanwendung Y 14 anhängen.
  • In einem Ausführungsbeispiel wird eine digitale Signatur besorgt für jede sensitive API oder Bibliothek, die eine sensitive API umfasst, auf welche die Softwareanwendung einen Zugang erfordert. In einigen Fällen sind mehrere Signaturen wünschenswert. Dies würde es einem Diensteanbieter, einem Unternehmen oder einem Netzbetreiber ermöglichen, einige oder alle Softwareanwendungen zu beschränken, die in einen bestimmten Satz von mobilen Vorrichtungen geladen oder aktualisiert werden. In diesem Szenario mit mehreren Signaturen werden alle APIs beschränkt und gesperrt, bis eine „globale” Signatur für eine Softwareanwendung verifiziert wird. Zum Beispiel kann ein Unternehmen zu verhindern wünschen, dass seine Angestellten Softwareanwendungen in ihren Vorrichtungen ausführen, ohne zuerst eine Erlaubnis von einer Abteilung für Informationstechnologie (IT) oder Computerdienste des Unternehmens einzuholen. Alle derartigen firmeneigenen mobilen Vorrichtungen können dann konfiguriert werden, eine Verifizierung von zumindest einer globalen Signatur zu erfordern, bevor eine Softwareanwendung ausgeführt werden kann. Zugang zu sensitiven Vorrichtungs-APIs und Bibliotheken, falls vorhanden, kann dann abhängig von einer Verifizierung von jeweiligen entsprechenden digitalen Signaturen weiter eingeschränkt werden.
  • Die binär ausführbare Darstellung der Softwareanwendung Y 14 kann unabhängig von dem bestimmten Typ der mobilen Vorrichtung oder dem Modell einer mobilen Vorrichtung sein. Die Softwareanwendung Y 14 kann zum Beispiel in einem „schreibe einmal, laufe überall” (write-once-run-anywhere) binären Format sein, wie es der Fall bei Java-Softwareanwendungen ist. Es kann jedoch wünschenswert sein, eine digitale Signatur für jeden Typ oder Modell einer mobilen Vorrichtung oder alternativ für jede Plattform oder jeden Hersteller einer mobilen Vorrichtung zu haben. Deshalb kann die Softwareanwendung Y 14 an mehrere Code-signierende Autoritäten eingereicht werden, wenn die Softwareanwendung Y 14 mehrere mobile Vorrichtungen zum Ziel hat.
  • Die Softwareanwendung Y 14 wird von dem Anwendungsentwickler 12 an die Code-signierende Autorität 16 gesendet. In dem in 1 gezeigten Ausführungsbeispiel überprüft die Code-signierende Autorität 16 die Softwareanwendung Y 14, obwohl, wie detaillierter im Folgenden beschrieben wird, in Erwägung gezogen werden kann, dass die Code-signierende Autorität 16 zusätzlich oder stattdessen die Identität des Anwendungsentwicklers 12 berücksichtigen kann, um zu bestimmen, ob die Softwareanwendung Y 14 signiert werden soll oder nicht. Die Code-signierende Autorität 16 ist vorzugsweise ein Repräsentant oder mehrere Repräsentanten des Herstellers der mobilen Vorrichtung, der Autoren von jeglichen sensitiven APIs oder möglicherweise Anderer, die Kenntnis des Betriebs der sensitiven APIs haben, für welche die Softwareanwendung Y 14 einen Zugang erfordert.
  • Wenn die Code-signierende Autorität 16 bestimmt, dass die Softwareanwendung Y 14 auf die sensitive API zugreifen kann und folglich signiert werden sollte, dann wird eine Signatur (nicht gezeigt) von der Code-signierende Autorität 16 für die Softwareanwendung Y 14 erzeugt und an die Softwareanwendung Y 14 angehängt. Die signierte Softwareanwendung Y 22, welche die Softwareanwendung Y 14 und die digitale Signatur aufweist, wird dann an den Anwendungsentwickler 12 zurückgesendet. Die digitale Signatur ist vorzugsweise eine Kennzeichnung (tag), die unter Verwendung eines privaten Signaturschlüssels 18 erzeugt wird, der nur von der Code-signierenden Autorität 16 geführt wird. Zum Beispiel kann gemäß einem Signaturschema ein Hash-Wert der Softwareanwendung Y 14 erzeugt werden unter Verwendung eines Hash-Algorithmus', wie dem sicheren Hash-Algorithmus SHA1 (Secure Hash Algorithm), und dann wird der private Signaturschlüssel 18 verwendet, um die digitale Signatur zu erzeugen. In einigen Signaturschemen wird der private Signaturschlüssel verwendet, um einen Hash-Wert von zu signierender Information zu verschlüsseln, wie die Softwareanwendung Y 14, wohingegen in anderen Schemen der private Schlüssel auf andere Weise verwendet werden kann, um eine Signatur aus der zu signierenden Information oder einer transformierten Version der Information zu erzeugen.
  • Die signierte Softwareanwendung Y 22 kann dann an eine mobile Vorrichtung 28 gesendet werden oder von der mobilen Vorrichtung 28 über ein drahtloses Netzwerk 24 heruntergeladen werden. Es sollte jedoch angemerkt werden, dass ein Code-signierendes Protokoll gemäß der vorliegenden Erfindung nicht auf Soft wareanwendung beschränkt ist, die über ein drahtloses Netzwerk heruntergeladen werden. Zum Beispiel kann in alternativen Ausführungsbeispielen die signierte Softwareanwendung Y 22 über ein Computernetzwerk auf einen Personalcomputer heruntergeladen werden und über eine serielle Verbindung auf die mobile Vorrichtung geladen werden oder von dem Anwendungsentwickler 12 auf eine andere Weise erlangt und auf die mobile Vorrichtung geladen werden. Sobald die signierte Softwareanwendung Y 22 auf die mobile Vorrichtung 28 geladen ist, wird jede digitale Signatur vorzugsweise mit einem öffentlichen Signaturschlüssel 20 verifiziert, bevor der Softwareanwendung Y 14 ein Zugang zu einer „sensitive APIs”-Bibliothek gewährt wird. Obwohl die signierte Softwareanwendung Y 22 auf eine Vorrichtung geladen wird, sollte angemerkt werden, dass die Softwareanwendung, die schließlich auf der Vorrichtung ausgeführt wird, die Softwareanwendung Y 14 ist. Wie oben beschrieben umfasst die signierte Softwareanwendung Y 22 die Softwareanwendung Y 14 und eine oder mehrere angehängte digitale Signatur(en) (nicht gezeigt). Wenn die Signaturen verifiziert sind, kann die Softwareanwendung Y 14 auf der Vorrichtung ausgeführt werden und auf alle APIs zugreifen, für die entsprechende Signaturen verifiziert wurden.
  • Der öffentliche Signaturschlüssel 20 korrespondiert dem privaten Signaturschlüssel 18, der von der Code-signierenden Autorität 16 geführt wird, und ist vorzugsweise auf der mobilen Vorrichtung zusammen mit der sensitiven API installiert. Jedoch kann der öffentliche Schlüssel 10 stattdessen von einem Aufbewahrungsort (nicht gezeigt) für öffentliche Schlüssel unter Verwendung der Vorrichtung 28 oder möglicherweise eines Personalcomputersystems erlangt werden und wie erforderlich auf der Vorrichtung 28 installiert werden. Gemäß einem Ausführungsbeispiel eines Signaturschemas berechnet die mobile Vorrichtung 28 einen Hash-Wert der Softwareanwendung Y 14 in der signierten Softwareanwendung Y 22 unter Verwendung desselben Hashing-Algorithmus wie die Code-signierende Autorität 16 und verwendet die digitale Signatur und den öffentlichen Signaturschlüssel 20, um den von der signierenden Autorität 16 berechneten Hash-Wert wiederherzustellen. Der resultierende lokal berechnete Hash-Wert und der aus der digitalen Signatur wiederhergestellte Hash-Wert werden dann verglichen, und wenn die Hash-Werte übereinstimmen, ist die Signatur verifiziert. Die Softwareanwendung Y 14 kann dann auf der Vorrichtung 28 ausgeführt werden und auf alle sensitiven APIs zugreifen, für welche die entsprechende(n) Signatur(en) verifiziert wurde(n). Wie oben beschrieben ist die Erfindung in keinster Weise auf dieses bestimmte erläuternde Beispielssignaturschema beschränkt. Andere Signaturschemen, einschließlich weitere öffentliche Schlüssel-Signaturschemen, können ebenfalls in Verbindung mit den hier beschriebenen Code-signierenden Verfahren und Systemen verwendet werden.
  • 2 ist ein Flussdiagramm 30 des oben unter Bezugnahme auf 1 beschriebenen Code-signierenden Protokolls. Das Protokoll beginnt in Schritt 32. In Schritt 34 schreibt ein Softwareentwickler die Softwareanwendung Y für eine mobile Vorrichtung, die einen Zugang zu einer sensitiven API oder Bibliothek, die eine sensitive API freilegt (API-Bibliothek A), erfordert. Wie oben diskutiert können einige oder alle APIs auf einer mobilen Vorrichtung als sensitiv klassifiziert werden, folglich erfordern sie eine Verifizierung einer digitalen Signatur zum Zugang durch jede Softwareanwendung, wie die Softwareanwendung Y. In Schritt 36 wird die Anwendung Y von dem Softwareentwickler vorzugsweise unter Verwendung eines Vorrichtungssimulators getestet, in dem die Verifizierungsfunktion für die digitale Signatur deaktiviert wurde. Auf diese Weise kann der Softwareentwickler in der Softwareanwendung Y Fehler suchen und beseitigen (debuggen), bevor die digitale Signatur von der Code-signierenden Autorität erlangt wird. Sobald die Softwareanwendung Y geschrieben und debuggt wurde, wird sie in Schritt 38 an die Code-signierende Autorität weitergeleitet.
  • In den Schritten 40 und 42 prüft die Code-signierende Autorität die Softwareanwendung Y, um zu bestimmen, ob ihr Zugang zu der sensitiven API gewährt werden soll oder nicht, und akzeptiert die Softwareanwendung oder weist sie zurück.
  • Die Code-signierende Autorität kann eine Anzahl von Kriterien anwenden, um zu bestimmen, ob der Softwareanwendung Zugang zu der sensitiven API gewährt werden soll oder nicht, einschließlich zum Beispiel die Größe der Softwareanwendung, die Vorrichtungsressourcen, auf die von der API zugegriffen werden, die wahrgenommene Brauchbarkeit der Softwareanwendung, die Interaktion mit anderen Softwareanwendungen, der Einschluss eines Virus oder anderen bösartigen Codes und ob der Entwickler eine vertragliche Bindung oder eine andere Geschäftsvereinbarung mit dem Hersteller der mobilen Vorrichtung hat oder nicht. Weitere Details zur Verwaltung von Code-signierenden Autoritäten und Entwicklern werden im Folgenden unter Bezugnahme auf 5 beschrieben.
  • Wenn die Code-signierende Autorität die Softwareanwendung Y akzeptiert, dann werden eine digitale Signatur und vorzugsweise eine Signaturidentifizierung an die Softwareanwendung Y in Schritt 46 angehängt. Wie oben beschrieben, kann die digitale Signatur durch Verwendung eines Hash-Werts der Softwareanwendung Y und eines privaten Signaturschlüssels 18 erzeugt werden. Die Signaturidentifizierung wird im Folgenden unter Bezugnahme auf die 3 und 4 beschrieben. Sobald die digitale Signatur und die Signaturidentifizierung an die Softwareanwendung Y angehängt sind, um eine signierte Softwareanwendung zu erzeugen, wird die signierte Softwareanwendung Y in Schritt 48 an den Softwareentwickler zurückgesendet. Der Softwareentwickler kann dann die signierte Softwareanwendung Y zum Laden auf eine mobile Vorrichtung lizensieren (Schritt 50). Wenn jedoch die Code-signierende Autorität die Softwareanwendung Y zurückweist, dann wird vorzugsweise eine Ablehnungsbenachrichtigung an den Softwareentwickler gesendet (Schritt 44) und die Softwareanwendung Y kann nicht auf zu der Signatur gehörende API(s) zugreifen.
  • In einem alternativen Ausführungsbeispiel kann der Softwareentwickler der Code-signierenden Autorität nur einen Hash-Wert der Softwareanwendung Y liefern oder die Softwareanwendung Y in einem Typ eines gekürzten Formats liefern.
  • Wenn die Softwareanwendung Y eine Java-Anwendung ist, dann können die Vorrichtungs-unabhängigen binären *.Klasse-Dateien in der Hashing-Operation verwendet werden, obwohl Vorrichtungs-abhängige Dateien, wie von der Anmelderen der vorliegenden Anmeldung verwendete *.cod-Dateien, stattdessen in Hashing- oder anderen „digitale Signatur”-Operationen verwendet werden können, wenn Softwareanwendungen zum Betrieb auf bestimmten Vorrichtungen oder Vorrichtungstypen vorgesehen sind. Durch Vorsehen nur eines Hash-Werts oder einer gekürzten Version der Softwareanwendung Y kann der Softwareentwickler die Softwareanwendung Y signiert bekommen, ohne der Code-signierenden Autorität einen proprietären Code zu offenbaren. Der Hash-Wert der Softwareanwendung Y zusammen mit dem privaten Schlüssel 18 kann dann von der Code-signierenden Autorität verwendet werden, um die digitale Signatur zu erzeugen. Wenn eine ansonsten gekürzte Version der Softwareanwendung Y an die Code-signierenden Autorität gesendet wird, dann kann die gekürzte Version ähnlich verwendet werden, um die digitale Signatur zu erzeugen, vorausgesetzt, dass das verkürzende Schema oder der Algorithmus, wie ein Hash-Algorithmus, unterschiedliche Ausgaben für unterschiedliche Eingaben erzeugt. Dies stellt sicher, dass jede Softwareanwendung eine andere gekürzte Version hat, und somit kann eine andere Signatur nur verifiziert werden, wenn sie an die bestimmte entsprechende Softwareanwendung angehängt ist, aus der die gekürzte Version erzeugt wurde. Da dieses Ausführungsbeispiel der Code-signierenden Autorität nicht ermöglicht, die Softwareanwendung auf Viren und anderen bösartigen Code zu überprüfen, kann jedoch auch ein Registrierungsprozess zwischen dem Softwareentwickler und der Code-signierenden Autorität erforderlich sein. Zum Beispiel kann die Code-signierende Autorität im Voraus zustimmen, einem vertrauenswürdigen Softwareentwickler Zugang zu einem begrenzten Satz von sensitiven APIs zu gewähren.
  • In einem weiteren alternativen Ausführungsbeispiel kann eine Softwareanwendung Y an mehr als eine signierende Autorität eingereicht werden. Jede signieren de Autorität kann zum Beispiel verantwortlich sein für ein Signieren von Softwareanwendungen für bestimmte sensitive APIs oder für APIs auf einem bestimmten Modell einer mobilen Vorrichtung oder einem Satz von mobilen Vorrichtungen, der die von einer Softwareanwendung erforderlichen sensitiven APIs unterstützt. Ein Hersteller, ein Netzbetreiber für mobile Kommunikation, ein Diensteanbieter oder ein Unternehmenskunde zum Beispiel kann somit eine signierende Autorität haben über die Verwendung von sensitiven APIs für sein bestimmtes Modell/seine bestimmten Modelle einer mobilen Vorrichtung oder für die mobilen Vorrichtungen, die auf einem bestimmten Netzwerk arbeiten, die einen oder mehrere bestimmte Dienste abonnieren, oder die an die Angestellten des Unternehmen verteilt werden. Eine signierte Softwareanwendung kann somit eine Softwareanwendung und zumindest eine angehängte digitale Signatur, die von einer der signierenden Autoritäten angehängt wird, umfassen. Obwohl die signierenden Autoritäten in diesem Beispiel eine Signatur für dieselbe Softwareanwendung erzeugen würden, können den unterschiedlichen signierenden Autoritäten verschiedene Signier- und Signatur-Verifizierungsschemen zugeordnet werden.
  • 3 ist eine Blockdarstellung eines Code-signierenden Systems 60 für eine mobile Vorrichtung 62. Das System 60 umfasst eine virtuelle Maschine 64, eine Vielzahl von Softwareanwendungen 6670, eine Vielzahl von API-Bibliotheken 7278 und eine Anwendungsplattform 80. Die Anwendungsplattform 80 umfasst vorzugsweise alle Ressourcen in der mobilen Vorrichtung 62, auf die von den Softwareanwendungen 6670 zugegriffen werden können. Zum Beispiel kann die Anwendungsplattform eine Vorrichtungs-Hardware 82, das Betriebssystem 84 der mobilen Vorrichtung oder Kern-Software- und Datenmodelle 86 aufweisen. Jede API-Bibliothek 7278 umfasst vorzugsweise eine Vielzahl von APIs, die mit einer in der Anwendungsplattform verfügbaren Ressource verbunden sind. Zum Beispiel kann eine API-Bibliothek alle APIs umfassen, die mit einem Kalenderprogramm und Kalendereintragdatenmodellen verbunden sind. Eine andere API-Bibliothek kann alle APIs umfassen, die mit den Übertragungsschaltungen und -funktionen der mobilen Vorrichtung 62 verbunden sind. Eine weitere API-Bibliothek kann alle APIs umfassen, die zu einer Verbindung mit untergeordneten Diensten fähig sind, die von dem Betriebssystem 84 der mobilen Vorrichtung durchgeführt werden. Zusätzlich kann die Vielzahl von API-Bibliotheken 7278 sowohl Bibliotheken umfassen, die eine sensitive API freilegen, 74 und 78, wie eine Schnittstelle zu einer Verschlüsselungsfunktion, als auch Bibliotheken 72 und 76, auf die ohne eine Freilegung von sensitiven APIs zugegriffen werden kann. Ähnlich kann die Vielzahl von Softwareanwendungen 6670 sowohl signierte Softwareanwendungen 66 und 70, die einen Zugang zu einer oder mehreren sensitiven API(s) erfordern, als auch nichtsignierte Softwareanwendungen, wie 68, umfassen. Die virtuelle Maschine 64 ist vorzugsweise eine objektorientierte Laufzeitumgebung, wie J2METE (Java 2 Platform, Micro Edition) von Sun Micro Systems, welche die Ausführung aller auf der mobilen Vorrichtung 62 arbeitenden Softwareanwendungen 6670 verwaltet und die Softwareanwendungen 6670 mit den verschiedenen API-Bibliotheken 7278 verbindet.
  • Die Softwareanwendung Y 70 ist ein Beispiel einer signierten Softwareanwendung. Jede signierte Softwareanwendung umfasst vorzugsweise eine tatsächliche Softwareanwendung, wie die Softwareanwendung Y, die zum Beispiel einen Softwarecode aufweist, der auf der Anwendungsplattform 80 ausgeführt werden kann, eine oder mehrere Signaturidentifizierung(en) 94 und eine oder mehrere digitale Signatur(en) 96. Vorzugsweise entspricht jede digitale Signatur 96 und zugehörige Signaturidentifizierung 94 in einer signierten Softwareanwendung 66 oder 70 einer „sensitive APIs”-Bibliothek 74 oder 78, für welche die Softwareanwendung X oder die Softwareanwendung Y einen Zugang erfordert. Die „sensitive APIs”-Bibliothek 74 oder 78 kann eine oder mehrere sensitive API(s) umfassen. In einem alternativen Ausführungsbeispiel können die signierten Softwareanwendung 66 oder 70 eine digitale Signatur 96 für jede sensitive API in einer API-Bibliothek 74 oder 78 umfassen. Die Signaturidentifizierungen 94 können eindeutige Ganzzahlen oder andere Mittel sein, um eine digitale Signatur 96 mit einer bestimmten API-Bibliothek 74 oder 78, einer API, der Anwendungsplattform 80 oder einem Modell einer mobilen Vorrichtung 62 in Beziehung zu setzen.
  • Die API-Bibliothek A 78 ist ein Beispiel einer API-Bibliothek, die eine sensitive API freilegt. Jede API-Bibliothek 74 und 78, die eine sensitive API umfasst, sollte vorzugsweise umfassen eine Beschreibungszeichenfolge 88, einen öffentlichen Signaturschlüssel 20 und eine Signaturkennung 92. Die Signaturkennung 92 korrespondiert vorzugsweise zu einer Signaturidentifizierung 94 in einer signierten Softwareanwendung 66 oder 70 und ermöglicht der virtuellen Maschine 64, eine digitale Signatur 96 schnell mit einer API-Bibliothek 74 oder 78 abzugleichen. Der öffentliche Signaturschlüssel 20 korrespondiert zu dem privaten Signaturschlüssel 18, der von der Code-signierenden Autorität geführt wird, und wird verwendet, um die Authentizität einer digitalen Signatur 96 zu verifizieren. Die Beschreibungszeichenfolge 88 kann zum Beispiel eine Textmeldung sein, die auf der mobilen Vorrichtung angezeigt wird, wenn eine signierte Softwareanwendung 66 oder 70 geladen ist oder alternativ, wenn eine Softwareanwendung X oder Y auf eine sensitive API zuzugreifen versucht.
  • In Betrieb, wenn eine signierte Softwareanwendung 6870, die jeweils eine Softwareanwendung X, Z oder Y umfasst, die eine Zugang zu einer „sensitive API”-Bibliothek 74 oder 78 fordert, auf eine mobile Vorrichtung geladen wird, durchsucht die virtuelle Maschine 64 die signierte Softwareanwendung nach einer angehängten digitalen Signatur 96, die zu der API-Bibliothek 74 oder 78 gehört. Vorzugsweise wird die passende digitale Signatur 96 von der virtuellen Maschine 64 gefunden durch Vergleichen der Signaturkennung 92 in der API-Bibliothek 74 oder 78 mit einer Signaturidentifizierung 94 in der signierten Softwareanwendung. Wenn die signierte Softwareanwendung die passende digitale Signatur 96 umfasst, dann verifiziert die virtuelle Maschine 64 ihre Authentizität unter Verwendung des öffentlichen Signaturschlüssels 20. Sobald die passende digitale Signatur 96 gefunden und verifiziert wurde, wird die Beschreibungszeichenfolge 88 vorzugsweise auf der mobilen Vorrichtung angezeigt, bevor die Softwareanwendung X oder Y ausgeführt wird und auf die sensitive API zugreift. Zum Beispiel kann die Beschreibungszeichenfolge 88 eine Meldung anzeigen, die besagt, dass „Anwendung Y versucht auf API-Bibliothek A zuzugreifen”, und somit dem Benutzer der mobilen Vorrichtung die letzte Kontrolle geben, einen Zugang zu der sensitiven API zu gewähren oder zu verweigern.
  • 3A ist eine Blockdarstellung eines Code-signierenden Systems 61 in einer Vielzahl von mobilen Vorrichtungen 62E, 62F und 62G. Das System 61 umfasst eine Vielzahl von mobilen Vorrichtungen, von denen nur drei dargestellt sind, die mobilen Vorrichtungen 62E, 62F und 62G. Ebenso wird eine signierte Softwareanwendung 70 gezeigt, einschließlich einer Softwareanwendung Y, an die zwei digitale Signaturen 96E und 96F mit entsprechenden Signaturidentifizierungen 94E und 94F angehängt wurden. In dem Beispielsystem 61 entspricht jedes aus einer digitalen Signatur und einer Identifizierung bestehende Paar, 94E/96E und 94F/96F, einem Modell einer mobilen Vorrichtung 62, API-Bibliothek 78 oder zugehörigen Plattform 80. Wenn die Signaturidentifizierungen 94E und 94F unterschiedlichen Modellen der mobilen Vorrichtung 62 entsprechen, dann durchsucht, wenn eine signierte Softwareanwendung 70, die eine Softwareanwendung Y umfasst, die einen Zugang zu einer „sensitive API”-Bibliothek 78 erfordert, auf die mobile Vorrichtung 62E geladen wird, die virtuelle Maschine 64 die signierte Softwareanwendung 70 nach einer digitalen Signatur 96E, die zu der API-Bibliothek 78 gehört, durch Vergleichen des Identifikators 94E mit der Signaturkennung 92. Ähnlich durchsucht, wenn eine signierte Softwareanwendung 70, mit einer Softwareanwendung Y, die einen Zugang zu einer „sensitive API”-Bibliothek 78 erfordert, auf eine mobile Vorrichtung 62F geladen wird, die virtuelle Maschine 64 in der Vorrichtung 62F die signierte Softwareanwendung 70 nach einer digitalen Signatur 96F, die zu der API-Bibliothek 78 gehört. Wenn jedoch eine Softwareanwendung Y in einer signierten Softwareanwendung 70, die einen Zugang zu einer „sensitive API”-Bibliothek 78 erfordert, auf ein Modell einer mobilen Vorrichtung geladen wird, für das der Anwendungsentwickler keine digitale Signatur erhalten hat, die Vorrichtung 62G in dem Beispiel von 3A, findet die virtuelle Maschine 64 in der Vorrichtung 64G keine an die Softwareanwendung Y angehängte digitale Signatur und folglich wird ein Zugang zu der API-Bibliothek 78 auf der Vorrichtung 62G verweigert. Es sollte aus der vorangehenden Beschreibung angemerkt werden, dass eine Softwareanwendung, wie die Softwareanwendung Y, mehrere Vorrichtungs-spezifische, Bibliotheks-spezifische oder API-spezifische Signaturen oder eine Kombination derartiger Signaturen angehängt haben kann. Ähnlich können unterschiedliche Anforderungen zur Signaturverifikation für die unterschiedlichen Vorrichtungen konfiguriert werden. Zum Beispiel kann die Vorrichtung 62E eine Verifikation sowohl einer globalen Signatur als auch von zusätzlichen Signaturen für jede sensitive API erfordern, für die eine Softwareanwendung einen Zugang erfordert, damit die Softwareanwendung ausgeführt werden kann, wohingegen die Vorrichtung 62F eine Verifikation nur der globalen Signatur erfordern kann und die Vorrichtung 62G eine Verifikation von Signaturen nur für ihre sensitiven APIs erfordern kann. Es sollte ebenso offensichtlich sein, dass ein Kommunikationssystem Vorrichtungen (nicht gezeigt) umfassen kann, auf denen eine Softwareanwendung Y, die als Teil einer signierten Softwareanwendung, wie 70, empfangen wird, ohne eine Signaturverifikation ablaufen kann. Obwohl eine signierte Softwareanwendung eine oder mehrere Signaturen angehängt hat, kann die Softwareanwendung Y möglicherweise auf einigen Vorrichtungen ausgeführt werden, ohne dass zuerst ihre Signatur(en) verifiziert werden. Ein Signieren einer Softwareanwendung hat vorzugsweise keine Auswirkungen auf ihre Ausführung auf Vorrichtungen, auf denen eine Verifikation von digitalen Signaturen nicht implementiert ist.
  • 4 ist ein Flussdiagramm 100, das den Betrieb des oben unter Bezugnahme auf 3 und 3A beschriebenen Code-signierenden Systems darstellt. In Schritt 102 wird eine Softwareanwendung in eine mobile Vorrichtung geladen. Sobald die Softwareanwendung geladen ist, bestimmt die Vorrichtung vorzugsweise un ter Verwendung einer virtuellen Maschine, ob die Softwareanwendung einen Zugang zu API-Bibliotheken erfordert, die eine sensitive API freilegen, oder nicht (Schritt 104). Wenn nicht, wird die Softwareanwendung mit allen erforderlichen API-Bibliotheken verbunden und ausgeführt (Schritt 118). Wenn die Softwareanwendung jedoch einen Zugang zu einer sensitiven API erfordert, verifiziert die virtuelle Maschine in den Schritten 106116, dass die Softwareanwendung eine gültige digitale Signatur aufweist, die zu den sensitiven APIs gehört, für die ein Zugang erforderlich ist.
  • In Schritt 106 ruft die virtuelle Maschine den öffentlichen Signaturschlüssel 20 und die Signaturkennung 92 aus der „sensitive API”-Bibliothek ab. Die Signaturkennung 92 wird dann in Schritt 108 von der virtuellen Maschine verwendet, um zu bestimmen, ob die Softwareanwendung eine angehängte digitale Signatur 96 mit einer entsprechenden Signaturidentifizierung 94 aufweist oder nicht. Wenn nicht, wurde die Softwareanwendung für einen Zugang zu der sensitiven API von einer Code-signierenden Autorität nicht freigegeben und die Ausführung der Softwareanwendung wird vorzugsweise in Schritt 116 verhindert. In alternativen Ausführungsbeispielen kann eine Softwareanwendung ohne eine gültige digitale Signatur 96 aus der mobilen Vorrichtung gelöscht werden oder ihr wird der Zugang zu der API-Bibliothek verwehrt, welche die sensitive API freilegt, aber sie wird zu dem Umfang ausgeführt, der ohne einen Zugang zu der API-Bibliothek möglich ist. Es wird auch in Betracht gezogen, einen Benutzer zu einer Eingabe aufzufordern, wenn eine Verifikation einer Signatur fehlschlägt, wodurch dem Benutzer eine Kontrolle solcher nachfolgender Operationen, wie ein Löschen der Softwareanwendung von der Vorrichtung, gegeben wird.
  • Wenn eine der „sensitive API”-Bibliothek entsprechende digitale Signatur 96 an die Softwareanwendung angehängt ist und von der virtuellen Maschine gefunden wird, dann verwendet die virtuelle Maschine den öffentlichen Schlüssel 20, um die Authentizität der digitalen Signatur 96 in Schritt 110 zu verifizieren. Dieser Schritt kann ausgeführt werden zum Beispiel durch Verwendung des oben beschriebenen Signaturverifizierungsschemas oder andere alternative Signaturschemen. Wenn die digitale Signatur 96 nicht authentisch ist, dann wird die Softwareanwendung vorzugsweise entweder nicht ausgeführt, gelöscht oder gehindert, auf die sensitive API zuzugreifen, wie oben unter Bezugnahme auf Schritt 116 beschrieben wurde. Wenn jedoch die digitale Signatur 96 authentisch ist, dann wird vorzugsweise die Beschreibungszeichenfolge 88 in Schritt 112 angezeigt, die den Benutzer der mobilen Vorrichtung warnt, dass die Softwareanwendung einen Zugang zu einer sensitiven API erfordert, und den Benutzer möglicherweise zu einer Autorisierung auffordert, die Softwareanwendung auszuführen oder zu laden (Schritt 114). Wenn mehr als eine Signatur für eine Softwareanwendung zu verifizieren ist, werden die Schritte 104110 vorzugsweise für jede Signatur wiederholt, bevor der Benutzer in Schritt 112 aufgefordert wird. Wenn der Benutzer der mobilen Vorrichtung in Schritt 114 die Softwareanwendung autorisiert, kann sie ausgeführt und mit der „sensitive API”-Bibliothek in Schritt 118 verbunden werden.
  • 5 ist ein Flussdiagramm 200, das die Verwaltung der unter Bezugnahme auf 3A beschriebenen Code-signierenden Autoritäten darstellt. In Schritt 210 hat ein Anwendungsentwickler eine neue Softwareanwendung entwickelt, die auf einem oder mehreren Modellen) oder Typ(en) von Zielvorrichtung ausführbar sein soll. Die Zielvorrichtungen können Sätze von Vorrichtungen von unterschiedlichen Herstellern, Sätze von Vorrichtungsmodellen oder -typen von demselben Hersteller oder allgemein Sätze von Vorrichtungen mit bestimmten Signatur- und Verifikationsanforderungen umfassen. Der Begriff „Zielvorrichtung” betrifft jeden derartigen Satz von Vorrichtungen mit einer gemeinsamen Signaturanforderung. Zum Beispiel kann ein Satz von Vorrichtungen, der eine Verifikation einer Vorrichtungs-spezifischen globalen Signatur zur Ausführung aller Softwareanwendungen erfordert, eine Zielvorrichtung aufweisen und Vorrichtungen, die sowohl eine globale Signatur als auch weitere Signaturen für sensitive APIs erfordern, können Teil von mehr als einem Zielvorrichtungssatz sein. Die Softwareanwendung kann auf eine Vorrichtungs-unabhängige Weise unter Verwendung von zumindest einer bekannten API geschrieben werden, unterstützt auf zumindest einer Zielvorrichtung mit einer API-Bibliothek. Vorzugsweise soll die entwickelte Softwareanwendung auf mehreren Zielvorrichtungen ausführbar sein, von denen jede ihre eigene zumindest eine API-Bibliothek aufweist.
  • In Schritt 220 empfangt eine Code-signierende Autorität für eine Zielvorrichtung eine Ziel-signierende Anforderung von dem Entwickler. Die Ziel-signierende Anforderung umfasst die Softwareanwendung oder einen Hash-Wert der Softwareanwendung, einen Entwickler-Identifikator sowie zumindest einen Zielvorrichtungsidentifikator, der die Zielvorrichtung identifiziert, für die eine Signatur angefordert wird. In Schritt 230 konsultiert die signierende Autorität eine Entwickler-Datenbank 235 oder andere Aufzeichnungen, um zu bestimmen, ob ein Entwickler 220 vertrauenswürdig ist oder nicht. Diese Bestimmung kann gemäß mehreren oben diskutierten Kriterien durchgeführt werden, wie zum Beispiel ob der Entwickler eine vertragliche Bindung oder einen anderen Typ von Geschäftsvereinbarung mit einem Hersteller der Vorrichtung, einem Netzbetreiber, einem Diensteanbieter oder einem Hersteller der Vorrichtung hat oder nicht. Wenn der Entwickler vertrauenswürdig ist, geht das Verfahren zu Schritt 240. Wenn jedoch der Entwickler nicht vertrauenswürdig ist, dann wird die Softwareanwendung zurückgewiesen (250) und von der signierenden Autorität nicht signiert. Angenommen, der Entwickler ist vertrauenswürdig, stellt in Schritt 240 die signierende Autorität fest, ob sie den privaten Zielschlüssel hat, der dem eingereichten Zielidentifikator entspricht, durch Konsultieren eines Privatschlüsselspeichers, wie eine Datenbank 245 für private Zielschlüssel. Wenn der private Zielschlüssel gefunden ist, dann wird in Schritt 260 eine digitale Signatur für die Softwareanwendung erzeugt und die digitale Signatur oder eine signierte Softwareanwendung mit der an die Softwareanwendung angehängten digitalen Signatur wird an den Entwickler in Schritt 280 zurückgesendet. Wenn jedoch in Schritt 240 der private Zielschlüssel nicht gefunden wird, dann wird die Softwareanwendung in Schritt 270 zurückgewiesen und es wird keine digitale Signatur für die Softwareanwendung erzeugt.
  • Vorteilhafterweise kann, wenn Ziel-signierende Autoritäten kompatiblen Ausführungsbeispielen des in 5 dargestellten Verfahrens folgen, ein Netzwerk von Ziel-Signierautoritäten aufgebaut werden, um Code-signierende Autoritäten und einen Entwicklergemeinschafts-Code-signierenden Prozess sinnvoll zu verwalten, was zu signierten Softwareanwendungen für mehrere Ziele mit einer geringen Wahrscheinlichkeit von zerstörerischem Code führt.
  • Sollte ein zerstörerischer oder anderweitig problematischer Code in Softwareanwendungen gefunden oder vermutet werden aufgrund von gezeigtem Verhalten, wenn eine Softwareanwendung auf einer Vorrichtung ausgeführt wird, kann/können die Registrierung oder die Privilegien des entsprechenden Anwendungsentwicklers bei einigen oder allen signierenden Autoritäten ebenso ausgesetzt oder zurückgenommen werden, da die digitale Signatur einen Prüfpfad vorsieht, durch den der Entwickler einer problematischen Softwareanwendung identifiziert werden kann. In einem derartigen Fall können Vorrichtungen von dem Rückruf informiert werden, indem sie konfiguriert sind, zum Beispiel regelmäßig Signaturrückrufverzeichnisse herunterzuladen. Wenn Softwareanwendungen, für welche die entsprechenden digitalen Signaturen zurückgerufen wurden, auf einer Vorrichtung laufen, kann die Vorrichtung dann die Ausführung einer derartigen Softwareanwendung anhalten und möglicherweise die Softwareanwendung aus ihrem lokalen Speicher löschen. Wenn bevorzugt, können Vorrichtungen auch konfiguriert werden, Verifikationen von digitaler Signatur erneut auszuführen, zum Beispiel regelmäßig oder wenn ein neues Rückrufverzeichnis heruntergeladen wird.
  • Obwohl eine von einer signierenden Autorität erzeugte digitale Signatur abhängig von einer Authentisierung des Anwendungsentwicklers und einer Bestätigung ist, dass der Anwendungsentwickler ordnungsgemäß registriert ist, wird die digitale Signatur vorzugsweise aus einem Hash-Wert oder einer anderweitig transformierten Version der Softwareanwendung erzeugt und ist somit Anwendungs-spezifisch. Dies steht im Kontrast zu bekannten Code-signierenden Schemen, in denen ein API-Zugang allen Softwareanwendungen erteilt wird, die von vertrauenswürdigen Anwendungsentwicklern oder -autoren eintreffen. In den hier beschriebenen Code-signierenden Systemen und Verfahren wird ein API-Zugang auf einer Anwendung-per-Anwendungs-Basis erteilt und kann somit genauer gesteuert oder reguliert werden.
  • 6 ist eine Blockdarstellung einer mobilen Kommunikationsvorrichtung, in der ein Code-signierendes System und Verfahren implementiert werden können. Die mobile Kommunikationsvorrichtung 610 ist vorzugsweise eine Zweiweg-Kommunikationsvorrichtung mit zumindest Sprach- und Datenkommunikationsfähigkeiten. Die Vorrichtung weist vorzugsweise die Fähigkeit auf, mit anderen Computersystemen auf dem Internet zu kommunizieren. Abhängig von der von der Vorrichtung vorgesehenen Funktionalität kann die Vorrichtung als eine Datenmeldungs(messaging)-Vorrichtung, ein Zweiweg-Pager, ein zellulares Telefon mit Datenmeldungsfähigkeiten, ein drahtloses Internetgerät oder eine Datenkommunikationsvorrichtung (mit oder ohne Telefonfähigkeiten) bezeichnet werden.
  • Wenn die Vorrichtung 610 für Zweiweg-Kommunikationen eingerichtet ist, weist die Vorrichtung ein Kommunikations-Teilsystem 611 auf, einschließlich einem Empfänger 612, einem Sender 614 und zugehörigen Komponenten, wie ein oder mehrere vorzugsweise integrierte oder interne Antennenelement(e) 616 und 618, lokale Oszillatoren (LOs – local oscillators) 613 und ein Verarbeitungsmodul, wie ein digitaler Signalprozessor (DSP – digital signal processor) 620. Wie für Fachleute auf dem Gebiet von Kommunikationen offensichtlich sein dürfte, ist die spe zielle Gestaltung des Kommunikations-Teilsystems 611 abhängig von dem Kommunikationsnetz, in dem die Vorrichtung arbeiten soll. Zum Beispiel kann eine für einen nordamerikanischen Markt bestimmte Vorrichtung 610 ein Kommunikations-Teilsystem 611 aufweisen, das zum Betrieb in dem mobilen MobitexTM-Kommunikationssystem oder dem mobilen DataTACTM-Kommunikationssystem vorgesehen ist, wohingegen eine zur Verwendung in Europa vorgesehene Vorrichtung 610 ein GPRS(General Packet Radio Service)-Kommunikations-Teilsystem 611 enthalten kann.
  • Netzwerkzugangsanforderungen variieren auch abhängig von dem Typ des Netzwerks 919. Zum Beispiel werden in den Mobitex- und DataTAC-Netzen mobile Vorrichtungen, wie 610, in dem Netz unter Verwendung einer eindeutigen zu jeder Vorrichtung gehörenden Identifizierungsnummer registriert. In GPRS-Netzwerken gehört ein Netzzugang zu einem Teilnehmer oder Benutzer einer Vorrichtung 610. Eine GPRS-Vorrichtung erfordert somit ein Teilnehmeridentitätsmodul (nicht gezeigt), das allgemein als eine SIM-Karte bezeichnet wird, um auf einem GPRS-Netzwerk zu funktionieren. Ohne eine SIM-Karte ist eine GPRS-Vorrichtung nicht voll funktionsfähig. Lokale oder nicht-netzabhängige Kommunikationsfunktionen (wenn vorhanden) können betriebsfähig sein, aber die Vorrichtung 610 kann keine Funktionen ausführen, die Kommunikationen über das Netzwerk 919 beinhalten, außer gesetzlich erforderliche Operationen, wie der „911”-Notruf.
  • Wenn erforderliche Vorgehen zur Netzregistrierung oder -aktivierung abgeschlossen sind, kann eine Vorrichtung 610 Kommunikationssignale über das Netzwerk 919 senden und empfangen. Von der Antenne 616 durch ein Kommunikationsnetzwerk 619 empfangene Signale werden in den Empfänger 612 eingegeben, der so allgemeine Empfängerfunktionen durchführen kann wie Signalverstärkung, Frequenzabwärtswandlung, Filtern, Kanalauswahl und Ähnliches und in dem in 6 gezeigten Beispielssystem eine Analog-Digital-Wandlung. Eine Analog-Digital-Wandlung eines empfangenen Signals ermöglicht, dass komplexere Kommunikationsfunktionen, wie eine Demodulation und Decodierung, in dem DSP 620 durchgeführt werden. Auf ähnliche Weise werden zu übertragende Signale von dem DSP 620 verarbeitet, einschließlich zum Beispiel eine Modulation und Codierung, und in den Sender 614 eingegeben zur Digital-Analog-Wandlung, Frequenzaufwärtswandlung, Filterung, Verstärkung und Übertragung über das Kommunikationsnetz 619 über die Antenne 618.
  • Der DSP 620 verarbeitet nicht nur Kommunikationssignale, sondern sieht auch eine Empfänger- und Sendersteuerung vor. Zum Beispiel können die Verstärkungen, die in dem Empfänger 612 und dem Sender 614 auf Kommunikationssignale angelegt werden, durch in dem DSP 620 implementierte automatische Verstärkungssteuerungs-Algorithmen adaptiv gesteuert werden.
  • Die Vorrichtung 610 umfasst vorzugsweise einen Mikroprozessor 638, der den Gesamtbetrieb der Vorrichtung steuert. Kommunikationsfunktionen, einschließlich von zumindest Daten- und Sprachkommunikationen, werden durch das Kommunikations-Teilsystem 611 durchgeführt. Der Mikroprozessor 638 interagiert auch mit weiteren Teilsystemen oder Ressourcen der Vorrichtung, wie der Anzeige 622, einem Flash-Speicher 624, dem Arbeitsspeicher (RAM – random access memory) 626, Hilfs-Ein-Ausgabe(I/O – input/Output)-Teilsystemen 628, einem seriellen Anschluss 630, einer Tastatur 632, einem Lautsprecher 634, einem Mikrofon 636, einem Nahbereichs-Kommunikations-Teilsystem 640 und jedem anderen Vorrichtungs-Teilsystem, im Allgemeinen als 642 bezeichnet. APIs, einschließlich sensitive APIs, die eine Verifikation von einer oder mehreren digitalen Signaturen erfordern, bevor ein Zugang gewährt wird, können in der Vorrichtung 610 vorgesehen sein, um eine Schnittstelle zwischen Softwareanwendungen und den in 6 gezeigten Ressourcen zu bilden.
  • Einige der in 6 gezeigten Teilsysteme führen Kommunikations-bezogene Funktionen durch, während andere Teilsysteme „residente” Funktionen oder Funktionen in der Vorrichtung vorsehen. Besonders können einige Teilsysteme, wie zum Beispiel die Tastatur 632 und die Anzeige 622, sowohl für Kommunikations-bezogene Funktionen, wie Eingabe einer Textmeldung zur Übertragung über ein Kommunikationsnetzwerk, als auch Vorrichtungs-residente Funktionen, wie eine Rechenmaschine oder ein Aufgabenverzeichnis, verwendet werden.
  • Betriebssystemsoftware, die von dem Mikroprozessor 638 verwendet wird und möglicherweise von den APIs, auf die von Softwareanwendungen zugegriffen wird, wird vorzugsweise in einem dauerhaften Speicher gespeichert, wie dem Flash-Speicher 624, der auch ein Festwertspeicher (ROM – read only memory) oder ein ähnliches Speicherelement sein kann (nicht gezeigt). Für Fachleute ist offensichtlich, dass das Betriebssystem, bestimmte Softwareanwendungen der Vorrichtung oder Teile davon temporär in einen flüchtigen Speicher, wie den RAM 626, geladen werden können. Es wird in Betracht gezogen, dass empfangene und gesendete Kommunikationssignale ebenfalls in dem RAM 626 gespeichert werden können.
  • Der Mikroprozessor 638 ermöglicht zusätzlich zu seinen Betriebssystemfunktionen vorzugsweise eine Ausführung von Softwareanwendungen auf der Vorrichtung. Ein vorgegebener Satz von Anwendungen, der grundlegende Operationen der Vorrichtung steuert, einschließlich zum Beispiel zumindest von Daten- und Sprachkommunikation, wird normalerweise in der Vorrichtung 610 während der Herstellung installiert. Eine bevorzugte Anwendung, die auf die Vorrichtung geladen werden kann, kann eine PIM(Personal Information Manager)-Anwendung sein mit der Fähigkeit, den Benutzer der Vorrichtung betreffende Datenelemente, wie E-Mail, Kalenderereignisse, Voice-Mail, Termine und Aufgabenelemente, aber nicht darauf beschränkt, zu organisieren und zu verwalten. Selbstverständlich sind ein oder mehrere Speicher in der Vorrichtung verfügbar, um eine Speiche rung von PIM-Datenelementen in der Vorrichtung zu speichern. Eine derartige PIM-Anwendung hätte vorzugsweise die Fähigkeit, Datenelemente über das drahtlose Netzwerk zu senden und zu empfangen. In einem bevorzugten Ausführungsbeispiel werden die PIM-Datenelemente nahtlos integriert, synchronisiert und über das drahtlose Netzwerk aktualisiert mit den entsprechenden Datenelementen des Benutzers der Vorrichtung, die in einem Hostcomputersystem gespeichert sind oder dazu gehören, wodurch ein gespiegelter Hostcomputer in der mobilen Vorrichtung zumindest bezüglich der Datenelemente erzeugt wird. Dies wäre insbesondere vorteilhaft in dem Fall, in dem das Hostcomputersystem das Bürocomputersystem des Benutzers der mobilen Vorrichtung ist. Weitere Anwendungen, einschließlich signierter Softwareanwendungen wie oben beschrieben, können ebenfalls über das Netzwerk 619, ein Hilfs-Ein-Ausgabe-Teilsystem 628, einen seriellen Anschluss 630, ein Nahbereichs-Kommunikations-Teilsystem 640 und jedes andere geeignete Teilsystem 642 in die Vorrichtung 610 geladen werden. Der Mikroprozessor 638 der Vorrichtung kann dann alle globale Signaturen verifizieren, möglicherweise sowohl „globale” Vorrichtungssignaturen als auch API-spezifische Signaturen umfassend, die an eine derartige Softwareanwendung angehängt sind, bevor die Softwareanwendung von dem Mikroprozessor 638 ausgeführt werden kann und/oder auf zugehörige sensitive APIs zugreifen kann. Eine derartige Flexibilität bei der Anwendungsinstallierung erhöht die Funktionalität der Vorrichtung und kann verbesserte Funktionen in der Vorrichtung, Kommunikations-bezogene Funktionen oder beides liefern. Zum Beispiel können sichere Kommunikationsanwendungen ermöglichen, dass Funktionen des elektronischen Handels und andere derartige finanzielle Transaktionen unter Verwendung der Vorrichtung 610 über eine Verschlüsselungs-API und ein Verschlüsselungs-Modul, das Verschlüsselungsalgorithmen in der Vorrichtung implementiert (nicht gezeigt), durchgeführt werden.
  • In einem Datenkommunikationsmodus wird ein empfangenes Signal, wie eine Textmeldung oder eine heruntergeladene Webseite, von dem Kommunikations- Teilsystem 611 verarbeitet und in den Mikroprozessor 638 eingegeben, der vorzugsweise das empfangene Signal zur Ausgabe an die Anzeige 622 oder alternativ an eine Hilfs-Ein-Ausgabe-Vorrichtung 628 weiter verarbeitet. Ein Benutzer der Vorrichtung 610 kann auch Datenelemente verfassen, wie zum Beispiel E-Mail-Meldungen unter Verwendung der Tastatur 632, die vorzugsweise eine vollständige alphanumerische Tastatur oder eine Telefon-typische Tastatur ist, in Verbindung mit der Anzeige 622 und möglicherweise einer Hilfs-Ein-Ausgabe-Vorrichtung 628. Derartige verfasste Elemente können dann über ein Kommunikationsnetz durch das Kommunikations-Teilsystem 611 übertragen werden.
  • Für Sprachkommunikationen ist der Gesamtbetrieb der Vorrichtung 610 im Wesentlichen gleich, außer dass empfangene Signale vorzugsweise an einen Lautsprecher 634 ausgegeben werden und Signale zur Übertragung von einem Mikrofon 636 erzeugt werden. Alternative Sprach- oder Audio-Ein-Ausgabe-Teilsysteme, wie ein Voice-Messaging-Aufzeichnungsteilsystem, können ebenfalls in die Vorrichtung 610 implementiert werden. Obwohl eine Sprach- oder Audio-Signalausgabe vorzugsweise im Wesentlichen durch den Lautsprecher 634 erzielt wird, kann auch die Anzeige 622 verwendet werden, um zum Beispiel eine Anzeige der Identität einer anrufenden Partei, der Dauer eines Sprachanrufs oder andere Sprachanruf-bezogene Information zu liefern.
  • Der serielle Anschluss 630 in 6 wird normalerweise in einer PDA(personal digital assistant)-artigen Kommunikationsvorrichtung implementiert, für die eine Synchronisierung mit einem Desktop-Computer (nicht gezeigt) des Benutzers wünschenswert sein kann, aber sie ist eine optionale Vorrichtungskomponente. Ein derartiger Anschluss 630 würde es einem Benutzer ermöglichen, Präferenzen durch eine externe Vorrichtung oder Softwareanwendung zu setzen, und würde die Fähigkeiten der Vorrichtung durch Liefern von Information oder Softwaredownloads an die Vorrichtung 610 außer über ein drahtloses Kommunikationsnetz erweitern. Der alternative Pfad zum Herunterladen kann zum Beispiel verwendet werden, um einen Verschlüsselungsschlüssel über eine direkte und somit zuverlässige und vertrauenswürdige Verbindung in die Vorrichtung zu laden, um dadurch eine sichere Vorrichtungskommunikation zu ermöglichen.
  • Ein Nahbereichs-Kommunikations-Teilsystem 640 ist eine weitere optionale Komponente, die eine Kommunikation zwischen der Vorrichtung 624 und unterschiedlichen Systemen oder Vorrichtungen, die nicht notwendigerweise gleiche Vorrichtungen sein müssen, vorsehen kann. Zum Beispiel kann das Teilsystem 640 eine Infrarot-Vorrichtung und zugehörige Schaltungen und Komponenten oder ein BluetoothTM-Kommunikationsmodul umfassen, um eine Kommunikation mit ähnlich aktivierten Systemen oder Vorrichtungen vorzusehen.
  • Die hier beschriebenen Ausführungsbeispiel sind Beispiele von Strukturen, Systemen oder Verfahren mit Elementen, die den Elementen der in den Ansprüchen rezitierten Erfindung entsprechen. Diese schriftliche Beschreibung kann Fachleuten ermöglichen, Ausführungsbeispiele mit alternativen Elementen, die genauso den Elementen der in den Ansprüchen rezitierten Erfindung entsprechen, herzustellen und zu verwenden. Der beabsichtige Umfang der Erfindung umfasst somit andere Strukturen, Systeme oder Verfahren, die sich nicht von der wörtlichen Sprache der Ansprüche unterscheiden, und umfasst weiter andere Strukturen, Systeme oder Verfahren mit unwesentlichen Unterschieden von der wörtlichen Sprache der Ansprüche.
  • Wenn zum Beispiel in Schritt 250 in dem in 5 gezeigten Verfahren eine Softwareanwendung zurückgewiesen wird, kann die signierende Autorität fordern, dass der Entwickler einen Vertrag unterzeichnet oder eine Geschäftsbeziehung mit einem Hersteller von Vorrichtungen oder einer anderen Entität eingeht, in dessen Namen die signierende Autorität arbeitet. Ähnlich kann, wenn in Schritt 270 eine Softwareanwendung zurückgewiesen wird, die Autorität zum Signieren der Softwareanwendung an eine andere signierende Autorität übertragen werden. Das Signieren einer Softwareanwendung nachfolgend auf eine Übertragung des Signierens der Softwareanwendung an die unterschiedliche Autorität kann im Wesentlichen wie in 5 gezeigt ablaufen, wobei die Ziel-Signierautorität, welche die ursprüngliche Anforderung von dem vertrauenswürdigen Entwickler in Schritt 220 empfangen hat, fordert, dass die Softwareanwendung von der anderen signierenden Autorität im Namen des vertrauenswürdigen Entwicklers von der Ziel-Signierautorität signiert wird. Sobald eine vertrauenswürdige Beziehung zwischen den Code-signierenden Autoritäten hergestellt wurde, können private Ziel-Code-signierende Schlüssel zwischen den Code-signierenden Autoritäten gemeinsam verwendet werden, um eine Leistung des Verfahrens in Schritt 240 zu verbessern, oder eine Vorrichtung kann konfiguriert werden, digitale Signaturen von jeder der vertrauenswürdigen Code-signierenden Autoritäten zu validieren.
  • Zusätzlich können, obwohl sie vorrangig in Zusammenhang mit Softwareanwendungen beschrieben wurden, Code-signierende Systeme und Verfahren gemäß der vorliegenden Erfindung ebenso auf andere Vorrichtungs-bezogene Komponenten angewendet werden, einschließlich, aber in keinster Weise darauf beschränkt, Anweisungen und zugehörige Anweisungsargumente und Bibliotheken, die konfiguriert sind, mit Vorrichtungsressourcen eine Schnittstelle zu bilden. Derartige Anweisungen und Bibliotheken können an die mobilen Vorrichtungen durch Hersteller von Vorrichtungen, Besitzern von Vorrichtungen, Netzbetreibern, Diensteanbieter, Entwicklern von Softwareanwendungen und Ähnlichen gesendet werden. Es wäre wünschenswert, die Ausführung jeder Anweisung, die den Betrieb der Vorrichtung betrifft, wie zum Beispiel eine Anweisung zur Änderung eines Vorrichtungsidentifikationscodes oder einer Adresse eines drahtlosen Kommunikationsnetzes, zu steuern, indem eine Verifikation einer oder mehrerer digitaler Signaturen gefordert wird, bevor eine Anweisung auf einer Vorrichtung ausgeführt werden kann, gemäß den Code-signierenden Systemen und Verfahren, die hier beschrieben und beansprucht werden.

Claims (19)

  1. Code-signierendes System zum Betreiben in Verbindung mit einer Softwareanwendung (66), welche eine digitale Signatur (96) und eine Signaturidentifizierung (94) aufweist, wobei die digitale Signatur der Signaturidentifizierung zugeordnet ist, welches umfaßt: – eine Anwendungsplattform; – eine Schnittstelle für das Anwendungsprogramm (API), welche eine zugeordnete Signaturkennung (92) aufweist, wobei besagte Schnittstelle (API) so konfiguriert ist, dass sie die Softwareanwendung mit der Anwendungsplattform verbindet; und – wobei die Echtheit der digitalen Signatur durch eine virtuelle Maschine (69) überprüft wird, um den Zugang zur API durch die Softwareanwendung zu kontrollieren, wenn die Signaturkennung der Signaturidentifizierung entspricht; – wobei die digitale Signatur durch Anwenden eines privaten Signaturschlüssels auf einen Hash-Wert der Softwareanwendung erzeugt wird, und die virtuelle Maschine die Echtheit der digitalen Signatur überprüft durch Erzeugen eines Hash-Werts der Softwareanwendung, um einen erzeugten Hash-Wert zu erhalten, Anwenden eines öffentlichen Signaturschlüssels auf die Signatur, um einen wiederhergestellten Hash-Wert zu erhalten, und Vergleichen des erzeugten Hash-Werts mit dem wiederhergestellten Hash-Wert.
  2. Code-signierendes System nach Anspruch 1, wobei (i) die virtuelle Maschine der Softwareanwendung den Zugang zur API verweigert, falls die digitale Signatur nicht bestätigt wird, oder (ii) wobei die virtuelle Maschine die Softwareanwendung entfernt, wenn die digitale Signatur nicht bestätigt wird.
  3. Code-signierendes System nach Anspruch 1 oder 2, wobei (iii) das Code-signierende System in einer mobilen Vorrichtung installiert ist, oder (iv) wobei die digitale Signatur durch eine Code-signierende Autorität erzeugt wird.
  4. Code-signierendes System nach einem der Ansprüche 1 bis 3, welches weiter umfasst: – eine Vielzahl von API-Bibliotheken, wobei jede API-Bibliothek aus der Vielzahl der API-Bibliotheken eine Vielzahl von APIs enthält, wobei die virtuelle Maschine den Zugang zur Vielzahl der API-Bibliotheken durch die Softwareanwendung regelt.
  5. Code-signierendes System nach einem der Ansprüche 1 bis 4, – wobei wenigstens eine aus der Vielzahl der API-Bibliotheken als sensibel eingeordnet wird; – wobei der Zugang zu einer sensiblen API-Bibliothek eine digitale Signatur erfordert, welche einer Signaturidentifizierung zugeordnet ist, wobei die Signaturidentifizierung einer Signaturkennung entspricht, die der sensiblen API-Bibliothek zugeordnet ist; – wobei die Softwareanwendung wenigstens eine digitale Signatur und wenigstens eine zugeordnete Signaturidentifizierung zum Zugang sensibler API-Bibliotheken enthält; und – wobei die virtuelle Maschine die Softwareanwendung zum Zugang der sensiblen API-Bibliothek durch Überprüfen der einen digitalen Signatur berechtigt, welche in der Softwareanwendung enthalten ist, die eine Signaturidentifizierung aufweist, die der Signaturkennung der sensiblen API-Bibliothek entspricht.
  6. Code-signierendes System nach Anspruch 3, wobei die API weiter umfasst: – eine Beschreibungszeichenfolge, die durch die mobile Vorrichtung angezeigt wird, wenn die Softwareanwendung den Zugang zur API versucht.
  7. Code-signierendes System nach einem der Ansprüche 1 bis 6, wobei die Anwendungsplattform (i) ein Betriebssystem umfaßt, oder (ii) eine oder mehrere Kernfuktionen einer mobilen Vorrichtung umfaßt, oder (iii) eine Hardware in einer mobilen Vorrichtung umfaßt.
  8. Code-signierendes System nach Anspruch 7, wobei die Hardware eine Karte für ein Teilnehmeridentifizierungsmodul (SIM) umfaßt.
  9. Code-signierendes System nach einem der Ansprüche 1 bis 8, wobei die Softwareanwendung eine Java-Anwendung für eine tragbare Vorrichtung ist.
  10. Code-signierendes System nach einem der Ansprüche 1 bis 9, wobei (i) die API sich an ein Verschlüsselungsprogramm in der Anwendungsplattform anschließen lässt, oder wobei (ii) die API sich an ein proprietäres Datenmodell in der Anwendungsplattform anschließen lässt.
  11. Code-signierendes System nach einem der Ansprüche 1 bis 10, wobei die virtuelle Maschine eine virtuelle Java-Maschine ist, die in einer mobilen Vorrichtung installiert ist.
  12. Verfahren zur Regelung des Zugangs zu sensiblen Schnittstellen für Anwendungsprogramme in einer mobilen Vorrichtung (62), welches die folgenden Schritte umfaßt: – Laden einer Softwareanwendung (66) in der mobilen Vorrichtung, welche den Zugang zu einer sensiblen Schnittstelle für ein Anwendungsprogramm (API) mit einer Signaturkennung (92) fordert; – Bestimmen, ob die Softwareanwendung eine digitale Signatur (96) und eine Signaturidentifizierung (94) enthält; – Verweigern der Softwareanwendung den Zugang zur sensiblen API, wenn die digitale Signatur nicht der Signaturkennung entspricht; – Überprüfen der Echtheit der digitalen Signatur, wenn die Signaturidentifizierung der Signaturkennung entspricht, wobei der Zugang zu der sensiblen API durch die Softwareanwendung auf dem Überprüfen der Echtheit der digitalen Signatur basiert; – wobei die digitale Signatur durch Anwenden eines privaten Signaturschlüssels auf einen Hash-Wert der Softwareanwendung erzeugt wird, und wobei der Schritt des Überprüfens der Echtheit der digitalen Signatur durch Schritte ausgeführt wird, welche umfassen: – Speichern eines öffentlichen Signaturschlüssels, welcher dem privaten Signaturschlüssel in der mobilen Vorrichtung entspricht; – Erzeugen eines Hash-Werts der Softwareanwendung, um einen erzeugten Hash-Wert zu erhalten; – Anwenden des öffentlichen Signaturschlüssels auf die digitale Signatur, um einen wiederhergestellten Hash-Wert zu erhalten; und – Vergleichen des erzeugten Hash-Werts mit dem wiederhergestellten Hash-Wert.
  13. Verfahren nach Anspruch 12, welches den folgenden zusätzlichen Schritt enthält: – Entfernen der Softwareanwendung aus der mobilen Vorrichtung, wenn die Signaturidentifizierung nicht der Signaturkennung entspricht.
  14. Verfahren nach Anspruch 12 oder 13, wobei die digitale Signatur und die Signaturidentifizierung durch eine Code-signierende Autorität erzeugt werden.
  15. Verfahren nach einem der Ansprüche 12 bis 14, welches den folgenden zusätzlichen Schritt aufweist: – Verweigern der Softwareanwendung den Zugang zur sensiblen API, wenn die digitale Signatur nicht bestätigt wird.
  16. Verfahren nach Anspruch 15, welches den folgenden zusätzlichen Schritt umfaßt: – Entfernen der Softwareanwendung aus der mobilen Vorrichtung, wenn die digitale Signatur nicht bestätigt wird.
  17. Verfahren nach einem der Ansprüche 12 bis 16, wobei eine Beschreibungszeichenfolge einem Benutzer angezeigt wird, wenn die Softwareanwendung den Zugang zu wenigstens einer der APIs versucht.
  18. Verfahren nach einem der Ansprüche 12 bis 17, welches den folgenden zusätzlichen Schritt umfaßt: – Anzeigen einer Beschreibungszeichenfolge, welche einem Benutzer der mobilen Vorrichtung anzeigt, dass die Softwareanwendung den Zugang zur sensiblen API fordert.
  19. Verfahren nach Anspruch 18, welches den zusätzlichen folgenden Schritt umfaßt: – Empfangen eines Kommandos vom Benutzer, welches der Softwareanwendung Zugang zur sensiblen API gewährt oder verweigert.
DE60115072T 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes Expired - Lifetime DE60115072T3 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US23415200P 2000-09-21 2000-09-21
US234152P 2000-09-21
US23535400P 2000-09-26 2000-09-26
US235354P 2000-09-26
US27066301P 2001-02-20 2001-02-20
US270663P 2001-02-20
PCT/CA2001/001344 WO2002025409A2 (en) 2000-09-21 2001-09-20 Software code signing system and method

Publications (3)

Publication Number Publication Date
DE60115072D1 DE60115072D1 (de) 2005-12-22
DE60115072T2 DE60115072T2 (de) 2006-07-27
DE60115072T3 true DE60115072T3 (de) 2010-04-01

Family

ID=27398521

Family Applications (3)

Application Number Title Priority Date Filing Date
DE60115072T Expired - Lifetime DE60115072T3 (de) 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes
DE60142992T Expired - Lifetime DE60142992D1 (de) 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes
DE60142991T Expired - Lifetime DE60142991D1 (de) 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE60142992T Expired - Lifetime DE60142992D1 (de) 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes
DE60142991T Expired - Lifetime DE60142991D1 (de) 2000-09-21 2001-09-20 System und verfahren zum unterschreiben eines software-kodes

Country Status (11)

Country Link
US (8) US8489868B2 (de)
EP (8) EP1626324B1 (de)
CN (4) CN101694687B (de)
AT (4) ATE553426T1 (de)
AU (1) AU2001293563A1 (de)
BR (1) BRPI0114066B1 (de)
CA (3) CA2923740C (de)
DE (3) DE60115072T3 (de)
ES (6) ES2360005T3 (de)
HK (7) HK1055629A1 (de)
WO (1) WO2002025409A2 (de)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1626324B1 (de) 2000-09-21 2012-04-11 Research In Motion Limited System und verfahren zum unterschreiben eines software-kodes
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US20030191943A1 (en) * 2002-04-05 2003-10-09 Poisner David I. Methods and arrangements to register code
JP2003337716A (ja) * 2002-05-20 2003-11-28 Ntt Docomo Inc 電子機器、データ共用方法、プログラム及び記憶媒体
FR2840134B1 (fr) * 2002-05-21 2004-08-13 France Telecom Procede de controle d'acces a des ressources cryptographiques, plate-forme informatique et module logiciel utilisables dans la mise en oeuvre du procede
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
FR2849230B1 (fr) * 2002-12-24 2005-04-22 Francois Bangui Procede et dispositif de verification de l'integrite d'une application logicielle sans cle de chiffrement/dechiffrement
US7096005B2 (en) * 2003-01-23 2006-08-22 Inventec Appliances Corp. Method of carrying out a safe remote electronic signing by cellular phone
US7565551B2 (en) * 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US7600251B2 (en) 2003-03-10 2009-10-06 Igt Universal peer-to-peer game download
US7802087B2 (en) 2003-03-10 2010-09-21 Igt Universal method for submitting gaming machine source code software to a game certification laboratory
US7921302B2 (en) 2003-03-10 2011-04-05 Igt Universal game download methods and system for legacy gaming machines
US7337330B2 (en) 2003-03-10 2008-02-26 Cyberview Technology, Inc. Universal game download system for legacy gaming machines
EP1611708A4 (de) 2003-03-10 2009-12-30 Cyberview Technology Inc Dynamische konfiguration eines spielsystems
US8491391B2 (en) 2003-03-10 2013-07-23 Igt Regulated gaming—agile media player for controlling games
US7966493B2 (en) * 2003-11-18 2011-06-21 Oracle International Corporation Method of and system for determining if an electronic signature is necessary in order to commit a transaction to a database
JP2007525748A (ja) * 2004-01-22 2007-09-06 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンテンツへのアクセスを認証する方法
US20050289350A1 (en) * 2004-06-25 2005-12-29 Markus Schmidt-Karaca Method and system for secure synchronization between an enterprise system and a device
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US9313214B2 (en) 2004-08-06 2016-04-12 Google Technology Holdings LLC Enhanced security using service provider authentication
GB2422919B (en) * 2004-11-02 2009-05-27 T Mobile Int Ag & Co Kg Software application security access management in mobile communication devices
US8954738B2 (en) * 2004-11-22 2015-02-10 Core Wireless Licensing, S.a.r.l. Method and device for verifying the integrity of platform software of an electronic device
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US20060236100A1 (en) * 2005-04-19 2006-10-19 Guruprasad Baskaran System and method for enhanced layer of security to protect a file system from malicious programs
GB2442895B (en) * 2005-06-30 2010-05-05 Advanced Micro Devices Inc Secure patch system
DE102005030590B4 (de) * 2005-06-30 2011-03-24 Advanced Micro Devices, Inc., Sunnyvale Sicheres Patchsystem
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US8320880B2 (en) * 2005-07-20 2012-11-27 Qualcomm Incorporated Apparatus and methods for secure architectures in wireless networks
JP2007081482A (ja) * 2005-09-09 2007-03-29 Canon Inc 端末認証方法及びその装置、プログラム
US8340289B2 (en) 2005-09-29 2012-12-25 Research In Motion Limited System and method for providing an indication of randomness quality of random number data generated by a random data service
US7797545B2 (en) 2005-09-29 2010-09-14 Research In Motion Limited System and method for registering entities for code signing services
US20070074033A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Account management in a system and method for providing code signing services
US20070074032A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Remote hash generation in a system and method for providing code signing services
US20070074031A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited System and method for providing code signing services
US20070083378A1 (en) * 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
JP4854000B2 (ja) * 2005-11-02 2012-01-11 株式会社日立ソリューションズ 機密ファイル保護方法
SE530662C2 (sv) * 2005-11-09 2008-08-05 Noll Och Ett Data Ab Förfarande och anordning
EP1998269A4 (de) * 2006-02-21 2012-02-29 Nec Corp Programmausführungs-steuersystem, ausführungssteuerverfahren, ausführungssteuer-computerprogramm
JP2007328770A (ja) * 2006-05-10 2007-12-20 Ricoh Co Ltd 情報処理装置、アクセス制御方法、アクセス制御プログラム、記録媒体、及び画像形成装置
US8341747B2 (en) * 2006-08-08 2012-12-25 International Business Machines Corporation Method to provide a secure virtual machine launcher
US8615801B2 (en) * 2006-08-31 2013-12-24 Microsoft Corporation Software authorization utilizing software reputation
EP2009565A1 (de) * 2007-06-28 2008-12-31 Gemplus Verfahren zum sicheren Laden einer Client-Anwendung in einem tragbaren elektronischen Gerät
US8364978B2 (en) * 2007-11-26 2013-01-29 Koolspan, Inc. System for and method of auto-registration with cryptographic modules
US8842836B2 (en) * 2007-11-26 2014-09-23 Koolspan, Inc. System for and method of cryptographic provisioning
US9223938B2 (en) * 2007-12-31 2015-12-29 Google Technology Holdings LLC Location bound secure domains
EP2248366A4 (de) * 2008-01-29 2014-04-09 Qualcomm Inc Sichere anwendungssignierung
US20090228704A1 (en) * 2008-03-04 2009-09-10 Apple Inc. Providing developer access in secure operating environments
CN102016864A (zh) * 2008-03-04 2011-04-13 苹果公司 在安全操作环境中为软件开发者管理代码权利
KR101648521B1 (ko) * 2009-03-06 2016-08-16 제말토 에스에이 스마트 카드들로의 브라우저-기반의 액세스에 보안을 제공하는 시스템 및 방법
US8818412B2 (en) * 2009-03-18 2014-08-26 Wavemarket, Inc. System for aggregating and disseminating location information
US20100242097A1 (en) 2009-03-20 2010-09-23 Wavemarket, Inc. System and method for managing application program access to a protected resource residing on a mobile device
US8683554B2 (en) * 2009-03-27 2014-03-25 Wavemarket, Inc. System and method for managing third party application program access to user information via a native application program interface (API)
US8839458B2 (en) * 2009-05-12 2014-09-16 Nokia Corporation Method, apparatus, and computer program for providing application security
US20110137817A1 (en) * 2009-06-01 2011-06-09 Wavemarket, Inc. System and method for aggregating and disseminating personal data
CN102087689B (zh) * 2009-12-04 2013-04-03 北大方正集团有限公司 一种软件重用模块的保护方法及装置
WO2011075825A1 (en) 2009-12-21 2011-06-30 Kik Interactive, Inc. Systems and methods for accessing and controlling media stored remotely
CN102130907B (zh) * 2010-01-20 2014-05-07 微软公司 开发者电话注册
US9264448B2 (en) 2010-01-20 2016-02-16 Blackberry Limited Apparatus, and an associated method, for facilitating secure operations of a wireless device
US8533811B2 (en) * 2010-01-20 2013-09-10 Microsoft Corporation Developer phone registration
JP2012003679A (ja) * 2010-06-21 2012-01-05 Kyocera Mita Corp 画像形成装置用追加アプリケーションのセキュリティ確保方法、画像形成システム及び画像形成装置
US20120089733A1 (en) * 2010-10-12 2012-04-12 Ansca, Inc. Managing Access to an Application
US20120089978A1 (en) * 2010-10-12 2012-04-12 I O Interconnect, Ltd. Method for managing applications of portable devices
US8621591B2 (en) * 2010-10-19 2013-12-31 Symantec Corporation Software signing certificate reputation model
US8938809B2 (en) * 2011-06-24 2015-01-20 Google Technology Holdings LLC Retrieval of data across multiple partitions of a storage device using digital signatures
US8572368B1 (en) 2011-09-23 2013-10-29 Symantec Corporation Systems and methods for generating code-specific code-signing certificates containing extended metadata
US8745616B1 (en) * 2011-09-23 2014-06-03 Symantec Corporation Systems and methods for providing digital certificates that certify the trustworthiness of digitally signed code
KR101430240B1 (ko) * 2011-12-19 2014-08-19 주식회사 케이티 어플리케이션 서명 장치 및 방법
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
KR101876297B1 (ko) * 2012-03-16 2018-07-10 삼성전자주식회사 전자 서명 검증 장치 및 방법
US9009705B2 (en) 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
EP2750065A1 (de) * 2012-12-27 2014-07-02 Telefonica S.A. Verfahren, System und Computerprogramm zum Verwalten von Operationen von Dienstendgeräten
US8894485B2 (en) * 2013-03-18 2014-11-25 Cadillac Jack, Inc. Electronic gaming system with ROM-based media validation
IN2013MU01235A (de) * 2013-03-28 2015-04-10 Tata Consultancy Services Ltd
US9158932B2 (en) 2013-05-08 2015-10-13 Sap Se Modeled authorization check implemented with UI framework
US9515832B2 (en) * 2013-06-24 2016-12-06 Microsoft Technology Licensing, Llc Process authentication and resource permissions
US9385869B1 (en) * 2014-03-26 2016-07-05 Symantec Corporation Systems and methods for trusting digitally signed files in the absence of verifiable signature conditions
US20160048688A1 (en) * 2014-08-14 2016-02-18 Google Inc. Restricting System Calls using Protected Storage
US10050993B2 (en) * 2014-09-24 2018-08-14 Mcafee, Llc Non-invasive whitelisting
US9843451B2 (en) * 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
US10303891B2 (en) * 2014-12-30 2019-05-28 Data I/O Corporation Automated manufacturing system with job packaging mechanism and method of operation thereof
US9536080B2 (en) * 2015-05-29 2017-01-03 Apple Inc. Method for validating dynamically loaded libraries using team identifiers
US10044701B2 (en) * 2016-05-24 2018-08-07 Vantiv, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10419224B2 (en) * 2016-06-14 2019-09-17 International Business Machines Corporation Preventing monoculture in application distribution
CN108259413B (zh) 2016-12-28 2021-06-01 华为技术有限公司 一种获取证书、鉴权的方法及网络设备
SE541713C2 (en) * 2017-05-03 2019-12-03 Enigio Time Ab Method and system for registering digital documents
WO2019017883A1 (en) * 2017-07-17 2019-01-24 Hewlett-Packard Development Company, L.P AUTHENTICATION OF CERTIFICATES OF EMPOWERMENT
US20190026442A1 (en) * 2017-07-24 2019-01-24 Microsoft Technology Licensing, Llc Offline activation for application(s) installed on a computing device
CN108768664B (zh) * 2018-06-06 2020-11-03 腾讯科技(深圳)有限公司 密钥管理方法、装置、系统、存储介质和计算机设备
US10719373B1 (en) * 2018-08-23 2020-07-21 Styra, Inc. Validating policies and data in API authorization system
US11520877B2 (en) * 2018-12-12 2022-12-06 Raytheon Company Resilient multi-variant execution verification
RU2706873C1 (ru) * 2018-12-28 2019-11-21 Акционерное общество "Лаборатория Касперского" Система и способ проверки ЭЦП файла
US10897361B1 (en) * 2019-09-04 2021-01-19 Garantir LLC Automated hash validation
US11645410B2 (en) 2019-10-09 2023-05-09 Intertrust Technologies Corporation Content management systems and methods
KR102644153B1 (ko) * 2019-10-31 2024-03-07 삼성에스디에스 주식회사 데이터 보안 장치 및 방법
US11244077B2 (en) * 2020-01-31 2022-02-08 Fortanix, Inc. Securing data integrity for an application
US11431510B1 (en) * 2020-04-30 2022-08-30 Wells Fargo Bank, N.A. Code-sign white listing (CSWL)
US11003498B1 (en) 2020-08-10 2021-05-11 Coupang Corp. Computerized systems and methods for fail-safe loading of information on a user interface using a circuit breaker
US11334345B2 (en) * 2020-10-08 2022-05-17 Pelion Technology, Inc. Differential firmware update generation
US20220141029A1 (en) * 2020-10-29 2022-05-05 Microsoft Technology Licensing, Llc Using multi-factor and/or inherence-based authentication to selectively enable performance of an operation prior to or during release of code
US11057215B1 (en) 2021-01-27 2021-07-06 Garantir LLC Automated hash validation
US20220318431A1 (en) * 2021-03-31 2022-10-06 Seagate Technology Llc Code-based signatures for secure programs

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5005200A (en) 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
KR0161361B1 (ko) 1993-04-28 1999-03-20 사또 후미오 구동 회로 장치
US5421013A (en) 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
US6135646A (en) 1993-10-22 2000-10-24 Corporation For National Research Initiatives System for uniquely and persistently identifying, managing, and tracking digital objects
US5625690A (en) * 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
NZ329891A (en) * 1994-01-13 2000-01-28 Certco Llc Method of upgrading firmware of trusted device using embedded key
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5680619A (en) 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5657378A (en) 1995-04-11 1997-08-12 M Power Corporation Digital screen phone terminal with graphical user interface
US5966714A (en) 1995-04-28 1999-10-12 Intel Corporation Method and apparatus for scaling large electronic mail databases for devices with limited storage
US5845282A (en) 1995-08-07 1998-12-01 Apple Computer, Inc. Method and apparatus for remotely accessing files from a desktop computer using a personal digital assistant
US5797089A (en) 1995-09-07 1998-08-18 Telefonaktiebolaget Lm Ericsson (Publ) Personal communications terminal having switches which independently energize a mobile telephone and a personal digital assistant
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US6253027B1 (en) * 1996-06-17 2001-06-26 Hewlett-Packard Company System, method and article of manufacture for exchanging software and configuration data over a multichannel, extensible, flexible architecture
US6067582A (en) 1996-08-13 2000-05-23 Angel Secure Networks, Inc. System for installing information related to a software application to a remote computer over a network
US6023509A (en) * 1996-09-30 2000-02-08 Intel Corporation Digital signature purpose encoding
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5958051A (en) 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5903882A (en) 1996-12-13 1999-05-11 Certco, Llc Reliance server for electronic transaction system
US6009176A (en) 1997-02-13 1999-12-28 International Business Machines Corporation How to sign digital streams
US5935249A (en) * 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
EP1004992A3 (de) * 1997-03-24 2001-12-05 Visa International Service Association System und Verfahren für eine Mehranwendungschipkarte zum Vereinfachen des Fernladens einer Anwendung nach der Kartenausgabe
ATE281680T1 (de) * 1997-03-24 2004-11-15 Visa Int Service Ass System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht
US6212636B1 (en) * 1997-05-01 2001-04-03 Itt Manufacturing Enterprises Method for establishing trust in a computer network via association
JP2002502524A (ja) 1997-05-29 2002-01-22 サン・マイクロシステムズ・インコーポレーテッド オブジェクトに署名し、封印する方法とその装置
US6389534B1 (en) 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US5940379A (en) 1997-07-23 1999-08-17 Motorola, Inc. Apparatus and method for using multiple spreading codes for data transmission in a satellite communication system
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6996722B1 (en) * 1997-12-19 2006-02-07 British Telecommunications Public Limited Company Data communications
US8489860B1 (en) * 1997-12-22 2013-07-16 Texas Instruments Incorporated Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device
EP1053536B1 (de) 1998-02-03 2003-09-10 Mondex International Limited System und verfahren zur kontrolle des zugangs zu dem computercode in einer chipkarte
US6131166A (en) 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6324650B1 (en) * 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US20010044901A1 (en) * 1998-03-24 2001-11-22 Symantec Corporation Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption
US6374357B1 (en) * 1998-04-16 2002-04-16 Microsoft Corporation System and method for regulating a network service provider's ability to host distributed applications in a distributed processing environment
US6256393B1 (en) 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6085321A (en) * 1998-08-14 2000-07-04 Omnipoint Corporation Unique digital signature
US6230184B1 (en) 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6748541B1 (en) * 1999-10-05 2004-06-08 Aladdin Knowledge Systems, Ltd. User-computer interaction method for use by a population of flexibly connectable computer systems
JP4764536B2 (ja) * 1998-11-17 2011-09-07 株式会社リコー 画像計測機器
US6390374B1 (en) * 1999-01-15 2002-05-21 Todd Carper System and method for installing/de-installing an application on a smart card
US6298354B1 (en) 1999-02-19 2001-10-02 Sun Microsystems, Inc. Mechanism and process to transform a grammar-derived intermediate form to an object-oriented configuration database
US6256737B1 (en) * 1999-03-09 2001-07-03 Bionetrix Systems Corporation System, method and computer program product for allowing access to enterprise resources using biometric devices
US6223291B1 (en) * 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6574636B1 (en) * 1999-05-04 2003-06-03 Accenture Llp Method and article of manufacture for isolating data within a computer program
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
US6895507B1 (en) * 1999-07-02 2005-05-17 Time Certain, Llc Method and system for determining and maintaining trust in digital data files with certifiable time
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US6526513B1 (en) * 1999-08-03 2003-02-25 International Business Machines Corporation Architecture for dynamic permissions in java
EP1076279A1 (de) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computerplattformen und deren Betriebsverfahren
US6289382B1 (en) * 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
DE69927590T2 (de) * 1999-08-31 2006-07-06 Swisscom Ag Mobiler Roboter und Steuerverfahren für einen mobilen Roboter
US20050160272A1 (en) * 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US20020112078A1 (en) * 1999-12-03 2002-08-15 David Yach Virtual machine web browser
US6931546B1 (en) 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
US7162035B1 (en) * 2000-05-24 2007-01-09 Tracer Detection Technology Corp. Authentication method and system
US6687837B1 (en) 2000-06-15 2004-02-03 Cisco Technology, Inc. Method and system for controlling the supply of power to a circuit card in a card shelf through an activation signal
US6981262B1 (en) * 2000-06-27 2005-12-27 Microsoft Corporation System and method for client interaction in a multi-level rights-management architecture
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
US6678887B1 (en) 2000-07-11 2004-01-13 Networks Associates Technology, Inc. Customizing business logic and data sources by modifying methods defined within an API
US6721809B1 (en) 2000-08-21 2004-04-13 Oracle International Corporation Method and apparatus for configuring extensible application programming interfaces
WO2002017587A2 (en) * 2000-08-25 2002-02-28 Research In Motion Limited System and method for implementing an enhanced transport layer security protocol
EP1626324B1 (de) 2000-09-21 2012-04-11 Research In Motion Limited System und verfahren zum unterschreiben eines software-kodes
US7295836B2 (en) * 2001-03-09 2007-11-13 Research In Motion Limited Advanced voice and data operations in a mobile data communication device
EP1410293A2 (de) * 2001-06-12 2004-04-21 Research In Motion Limited System und verfahren zum komprimieren sicherer e-mails zum austausch mit einer mobildatenkommunikationseinrichtung
CA2450584C (en) * 2001-06-12 2011-01-04 Research In Motion Limited Certificate management and transfer system and method
ATE375686T1 (de) * 2001-07-12 2007-10-15 Research In Motion Ltd System und verfahren zum datenzugriff für ein mobiles telekommunikationsendgerät
US7526572B2 (en) * 2001-07-12 2009-04-28 Research In Motion Limited System and method for providing remote data access for a mobile communication device
CN103178963A (zh) * 2001-07-16 2013-06-26 捷讯研究有限公司 用于在移动通信设备上支持多证书授权的系统和方法
CA2394503A1 (en) * 2001-07-23 2003-01-23 Research In Motion Limited System and method for pushing information to a mobile device
US8019081B2 (en) * 2001-08-06 2011-09-13 Research In Motion Limited System and method for processing encoded messages
US20030063772A1 (en) 2001-09-06 2003-04-03 Smith Joshua R. System and method for authentication and tracking of a workpiece that includes an optically active medium
WO2003036887A1 (en) * 2001-10-25 2003-05-01 Research In Motion Limited Multiple-stage system and method for processing encoded messages
US20040166334A1 (en) 2003-02-26 2004-08-26 Shigeo Kawabata Decorative film-like material
EP1783580A4 (de) * 2004-08-12 2011-03-23 Fujitsu Ltd Java-applet, jar-dateierzeugungsverfahren, jar-dateierzeugungsprogramm und jar-dateierzeugungseinrichtung
US9194375B2 (en) 2008-12-02 2015-11-24 Vestas Wind Systems A/S Method for installing a wind turbine, a nacelle for a wind turbine, and method for transporting elements of a wind turbine
US20110162074A1 (en) 2009-12-31 2011-06-30 Sap Portals Israel Ltd Apparatus and method for remote processing while securing classified data
US7944079B1 (en) 2010-04-21 2011-05-17 General Electric Company Systems and methods for assembling a gearbox handling assembly for use in a wind turbine
WO2012105971A1 (en) 2011-02-02 2012-08-09 Smith Matthew K Nacelle-mounted maintenance system for wind turbines

Also Published As

Publication number Publication date
EP1320795B2 (de) 2009-08-26
AU2001293563A1 (en) 2002-04-02
CA2923740C (en) 2018-07-10
US9922175B2 (en) 2018-03-20
US9507920B2 (en) 2016-11-29
CA2923740A1 (en) 2002-03-28
ES2360005T3 (es) 2011-05-31
ES2385565T3 (es) 2012-07-26
BRPI0114066B1 (pt) 2016-08-02
US10437967B2 (en) 2019-10-08
HK1091666A1 (en) 2007-01-26
US20150026457A1 (en) 2015-01-22
HK1156409A1 (en) 2012-06-08
CN101694688B (zh) 2014-07-16
EP2306259B1 (de) 2015-05-27
CN101694688A (zh) 2010-04-14
DE60115072D1 (de) 2005-12-22
US8489868B2 (en) 2013-07-16
EP1626325A3 (de) 2009-06-17
HK1154427A1 (en) 2012-04-20
EP1320795A2 (de) 2003-06-25
EP2284644B1 (de) 2014-03-05
EP1320795B1 (de) 2005-11-16
ATE553426T1 (de) 2012-04-15
ATE479930T1 (de) 2010-09-15
DE60142991D1 (de) 2010-10-14
EP2278429B1 (de) 2014-03-12
US20180330065A1 (en) 2018-11-15
ATE310271T1 (de) 2005-12-15
DE60142992D1 (de) 2010-10-14
EP1626324B1 (de) 2012-04-11
EP2306259A2 (de) 2011-04-06
DE60115072T2 (de) 2006-07-27
US11030278B2 (en) 2021-06-08
US8984278B2 (en) 2015-03-17
ATE479931T1 (de) 2010-09-15
EP1626324A3 (de) 2009-06-17
BR0114066A (pt) 2004-02-10
ES2545791T3 (es) 2015-09-15
EP2306260A2 (de) 2011-04-06
HK1091667A1 (en) 2007-01-26
ES2253426T3 (es) 2006-06-01
ES2465967T3 (es) 2014-06-09
HK1055629A1 (en) 2004-01-16
HK1153829A1 (en) 2012-04-05
EP2306259A3 (de) 2011-07-20
CA3006733A1 (en) 2002-03-28
CN100573402C (zh) 2009-12-23
HK1091665A1 (en) 2007-01-26
US10032007B1 (en) 2018-07-24
US20170076071A1 (en) 2017-03-16
EP1626324A2 (de) 2006-02-15
CN101694687B (zh) 2017-04-12
EP1626326A3 (de) 2009-06-17
EP2284644A1 (de) 2011-02-16
US20130145150A1 (en) 2013-06-06
EP2306260A3 (de) 2011-07-20
EP1626326A2 (de) 2006-02-15
CN101714201A (zh) 2010-05-26
US20190392115A1 (en) 2019-12-26
US20040025022A1 (en) 2004-02-05
US20120179917A1 (en) 2012-07-12
EP1626325A2 (de) 2006-02-15
CA2422917A1 (en) 2002-03-28
WO2002025409A2 (en) 2002-03-28
EP2278429A1 (de) 2011-01-26
US20180211015A1 (en) 2018-07-26
EP1626326B1 (de) 2010-09-01
EP1626325B1 (de) 2010-09-01
WO2002025409A3 (en) 2002-06-13
EP2306260B1 (de) 2014-02-26
ES2352556T3 (es) 2011-02-21
CN1541350A (zh) 2004-10-27
CN101694687A (zh) 2010-04-14
CN101714201B (zh) 2016-02-03
ES2253426T5 (es) 2009-12-14
CA2422917C (en) 2016-03-29

Similar Documents

Publication Publication Date Title
DE60115072T3 (de) System und verfahren zum unterschreiben eines software-kodes
CN110636492B (zh) 使用区块链切换移动服务提供商
US11494344B2 (en) Customized endorsement logic for blockchain
CN112005236A (zh) 区块链网络上的文档访问
CN110598434B (zh) 基于区块链网络的房屋信息处理方法、装置、电子设备及存储介质
US10992455B2 (en) Consensus based ad-hoc group creation
CN112154434A (zh) 区块链上智能合约组的自动数据投影
CN111949651A (zh) 追踪数据传输
CN115552441A (zh) 低信任特权访问管理
CN110674128A (zh) 区块链的链上治理
CN112507668A (zh) 项目数据存证方法、存证系统、终端设备及可读存储介质
DE102010004786A1 (de) Verfahren zum rechnergestützten Bereitstellen einer Entwicklungsumgebung zur Implementierung von Sicherheitsanwendungen in einer Fahrzeug-Architektur
DE102005041055A1 (de) Verfahren zur Verbesserung der Vertrauenswürdigkeit von elektronischen Geräten und Datenträger dafür
Jensen et al. Policy expression and enforcement for handheld devices
CN111414412A (zh) 基于机器学习的视频压缩

Legal Events

Date Code Title Description
8363 Opposition against the patent
8328 Change in the person/name/address of the agent

Representative=s name: SCHMIT CHRETIEN SCHIHIN & MAHLER, 80469 MUENCHEN

8328 Change in the person/name/address of the agent

Representative=s name: MERH-IP, 80336 MUENCHEN

8366 Restricted maintained after opposition proceedings