Cloud HSM-Architektur

Der Inhalt dieses Dokuments wurde im November 2023 zum letzten Mal aktualisiert und stellt den Stand zum Zeitpunkt der Erstellung dar. Die Sicherheitsrichtlinien und -systeme von Google können sich aber in Zukunft ändern, da wir den Schutz unserer Kundinnen und Kunden kontinuierlich verbessern.

Damit Sie Unternehmens- und Compliancevorschriften erfüllen können, können Sie mit Cloud HSM Ihre Verschlüsselungsschlüssel generieren und kryptografische Vorgänge auf FIPS 140-2 Level 3 zertifizierten Hardware-Sicherheitsmodulen (HSM) durchführen.

In diesem Artikel wird die Cloud HSM-Architektur beschrieben, einschließlich der Verwaltung der Hardware und der Bestätigung und Erstellung der Schlüssel.

Überblick

Kryptografische Vorgänge umfassen das Verschlüsseln ruhender Daten, den Schutz der privaten Schlüssel für Certificate Authority Service und den Schutz von Datenverschlüsselungsschlüsseln, damit sie zusammen mit den verschlüsselte Daten gespeichert werden können. Cloud HSM verwendet Marvell LiquidSecurity HSMs (Modelle CNL3560-NFBE-2.0-G und CNL3560-NFBE-3.0-G) mit den Firmwareversionen 3.4 Build 09. Weitere Informationen zu unserer Zertifizierung finden Sie unter Zertifikat Nr. 3718.

Cloud HSM ist vollständig verwaltet, sodass Sie Ihre Arbeitslasten schützen können, ohne einen HSM-Cluster verwalten zu müssen. Der Dienst bietet folgende Vorteile:

  • Globale Verfügbarkeit
  • Eine konsistente und einheitliche API
  • Autoscaling nach Nutzung
  • Zentrale Verwaltung und Einhaltung gesetzlicher Vorschriften

Cloud HSM ist in jeder Google Cloud-Region weltweit verfügbar, einschließlich multiregionaler Regionen, die sich über größere Geografien erstrecken. Sobald Sie Cloud HSM aktiviert haben, können Sie HSM-gestützte Schlüssel zum Schutz Ihrer Daten erstellen und verwenden. Dies gilt auch für Daten, die Sie in anderen Google Cloud-Diensten wie BigQuery, Cloud Storage und Persistent Disk speichern.

Da Cloud HSM und die HSM-Hardware von Google verwaltet werden, müssen Sie die HSM-gestützten Schlüssel in der Produktion nicht verwalten. Wenn Sie Cloud HSM verwenden, werden Ihre Daten strikt von anderen Mandanten und Diensten in Google Cloud isoliert. Mit der Cloud HSM API für Datenebene, die Teil der Cloud Key Management Service API ist, können Sie HSM-gestützte Schlüssel programmatisch verwalten.

Cloud HSM unterstützt HSM-gestützte, vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK), wenn CMEK-Schlüssel in Google Cloud unterstützt werden. Beispielsweise können Sie Daten in Cloud Storage-Buckets oder Cloud SQL-Tabellen mit einem von Ihnen verwalteten Cloud HSM-Schlüssel verschlüsseln.

Cloud HSM-Verwaltung

Innerhalb von Cloud HSM werden Cluster von HSMs von einem Team aus Site Reliability Engineers (SREs) sowie von Technikern an jedem Standort des Google Cloud-Rechenzentrums verwaltet. Google kümmert sich um die physische Sicherheit, logische Sicherheit, Infrastruktur, Kapazitätsplanung, Geoerweiterung und Notfallwiederherstellungsplanung in Rechenzentren.

Abstraktion von HSM-Hardware

In der Regel kommunizieren Anwendungen direkt mit HSMs über PKCS#11 und über eine API zur Clusterverwaltung. Für diese Kommunikation müssen Sie speziellen Code für Arbeitslasten pflegen, die HSM-gestützte Schlüssel verwenden oder verwalten.

Bei Cloud HSM wird die Kommunikation vom HSM weg abstrahiert. Dazu werden Anfragen für HSM-gestützte Schlüssel über die Cloud Key Management Service API per Proxy weitergeleitet. Durch die Abstraktion ist kein HSM-spezifischem Code nötig. Cloud HSM übernimmt die enge Integration mit Cloud KMS.

Die enge Integration mit Cloud KMS bietet erhebliche Sicherheitsvorteile. Die Cloud Key Management Service API reduziert die Bandbreite der verfügbaren HSM-Schnittstelle erheblich. So verringert sich das Risiko bei einer Kundensicherheitsverletzungen. Ein Angreifer kann beispielsweise keine vollständigen HSMs löschen. Standardmäßig wird der Versuch, einzelne Schlüssel zu löschen, über einen standardmäßigen Sicherheitszeitraum von 24 Stunden behoben. Sie können die Organisationsrichtlinie constraints/cloudkms.minimumDestroyScheduledDuration so festlegen, dass eine Mindestlänge erzwungen wird für den Status Löschen geplant für neue Schlüssel und die constraints/cloudkms.disableBeforeDestroy Organisationsrichtlinie so festlegen, dass sie Schlüsselversionen nur löscht, wenn sie deaktiviert sind. Weitere Informationen finden Sie unter Löschen der Schlüsselversion steuern.

Sie können den Zugriff auf HSM-Ressourcen mithilfe von Identity and Access Management (IAM) steuern. Die IAM-Konfiguration ist weniger anfällig für Fehlkonfigurationen und Programmfehler als eine benutzerdefinierte HSM-Lösung.

Grafik: Cloud HSM-Architektur

Strikte geografische Trennung von Grund auf

In Cloud HSM können Sie Schlüssel global verfügbar machen oder strenge geografische Einschränkungen für Schlüssel erzwingen, die sie benötigen.

HSMs sind häufig in Partitionen unterteilt, sodass ein einzelnes physisches Gerät als mehrere logische Geräte arbeiten kann. Sie können Partitionen verwenden, um die Bereitstellungskosten zu reduzieren, wenn Sie die HSM-Verwaltung und -Schlüssel trennen müssen.

Jeder regionale Cloud HSM-Standort ist einem separaten Verpackungsschlüssel zugeordnet. Der Verpackungsschlüssel wird auf jede Partition in jedem HSM am Standort geklont, verlässt aber nie das HSM des Standorts. Durch Klonen können HSMs in derselben Region dieselben Kundenschlüssel bereitstellen. Außerdem wird sichergestellt, dass HSMs außerhalb der Region diese Schlüssel nicht bedienen können.

Cloud HSM erstellt auch Multiregionen mit Verpackungsschlüsseln. Alle Kundenschlüssel für eine Multiregion werden mit einem Verpackungsschlüssel in einer Partition an allen Standorten verpackt, die die Multiregion bilden. Der Dienst nutzt dieselbe Hardware für mehrere Regionen, bietet jedoch die gleiche starke Isolation zwischen Regionen und Multiregionen, die zwischen verschiedenen Regionen vorhanden sind.

Grafik: Cloud HSM-Geografie

Das Regionalisierungsschema erfordert, dass Verpackungsschlüssel nur in geeignete Partitionen repliziert werden. Jede Konfigurationsänderung muss von mehreren Mitgliedern des Cloud HSM-Teams genehmigt werden, bevor sie aktiv wird. Rechenzentrumstechniker können nicht auf eine HSM-Konfiguration, HSM-Laufzeit oder einen HSM-Speicher vor Ort zugreifen.

Zentrale Verwaltung

In einem traditionellen Rechenzentrum, in dem HSMs gehostet werden, ist die Verwaltung der HSMs und ihrer Ressourcen vollständig von der Verwaltung anderer kryptografischer Ressourcen getrennt. Cloud HSM ist eng in Google Cloud eingebunden, sodass Sie Ihre Cloud HSM-Ressourcen nahtlos verwalten können. Sie können beispielsweise Folgendes verwalten:

  • Sie verwalten Ihre HSM-gestützten Ressourcen zusammen mit Ihren anderen Schlüsseln in Cloud KMS und extern verwalteten Schlüsseln im Cloud External Key Manager (Cloud EKM).
  • Sie verwalten den Zugriff auf HSM-gestützte Ressourcen in IAM.
  • Kostenberichte für kryptografische Vorgänge mit HSM-gestützten Schlüsseln werden in Cloud Billing gemeldet.
  • Sie können HSM-gestützte Schlüssel in allen Google Cloud-Diensten transparent verwenden, die das Verschlüsseln von Ressourcen mit CMEK unterstützen. Bei CMEK-Integrationen müssen sich der CMEK-Schlüssel und die verschlüsselten Daten an kompatiblen geografischen Standorten befinden. Aufgrund der strengen geografischen Beschränkung der Cloud HSM-Schlüssel sind auch die gesamten Ver- und Entschlüsselungen der CMEK-Daten auch geografisch eingeschränkt.
  • Verwaltungsvorgänge für HSM-gestützte Ressourcen werden immer auf der API-Ebene in Cloud-Audit-Logs protokolliert. Sie können auch das Datenzugriffs-Logging aktivieren. Weitere Informationen finden Sie unter Audit-Logging-Informationen in Cloud KMS.
  • Google arbeitet direkt mit dem HSM-Hersteller zusammen, um die Hardware und Software auf jedem HSM zu aktualisieren und Probleme in Echtzeit zu beheben. Im Falle eines Zero-Day-Exploits auf dem HSM kann Google betroffene Pfade für die betroffenen HSM-Cluster selektiv deaktivieren, bis der Exploit behoben ist.

Entwickler- und Nutzerfreundlichkeit

Da Google für die HSM-Verwaltung verantwortlich ist, bietet Cloud HSM Entwicklern und Endnutzern erhebliche Vorteile.

HSMs auf Google-Niveau

Wenn Sie sich auf Hardware verlassen, die lokal oder in Rechenzentren vorhanden ist, kann die Hardware einen Leistungsengpass verursachen oder zu einem Single Point of Failure werden. Cloud HSM ist so konzipiert, dass es äußerst unvorhersehbare Arbeitslasten und Hardwarefehler aufweist. Das Cloud HSM-Backend verwendet einen Pool von HSMs in jeder Region, um Hochverfügbarkeit und Skalierbarkeit zu gewährleisten. Durch diesen Pool von HSMs kann Cloud HSM auch einen hohen Durchsatz bieten. Weitere Informationen finden Sie unter Cloud KMS-Kontingente überwachen und anpassen.

Alle Kundenschlüssel werden mit einem regionalen Verpackungsschlüssel in der Cloud KMS-Datenbank gespeichert und können nur von einem HSM in der Region entpackt werden als Teil eines kryptografischen Vorgangs. Dieses Verpacken hat die folgenden Vorteile:

  • Die Langlebigkeit eines Schlüssels ist nicht an ein bestimmtes HSM oder eine Teilmenge von HSMs in einer Region gebunden.
  • Jeder Cloud HSM-Kunde nutzt die vollständige Skalierbarkeit und Verfügbarkeit der Cloud HSM-Cluster, die ihre Schlüssel bereitstellen.
  • Cloud HSM kann einen viel größeren Satz von Schlüsseln verarbeiten, die auf einem HSM gespeichert werden können.
  • Das Hinzufügen oder Ersetzen eines HSM ist schnell und sicher.

Einheitliches API-Design

Cloud HSM und Cloud KMS haben eine gemeinsame API für Verwaltung und Datenebene. Die internen Details der Kommunikation mit einem HSM werden vom Aufrufer abstrahiert.

Daher sind keine Codeänderungen erforderlich, um eine vorhandene Anwendung zu aktualisieren, die Softwareschlüssel im Cloud Key Management Service verwendet, um HSM-gestützte Schlüssel zu unterstützen. Stattdessen aktualisieren Sie den Ressourcennamen des zu verwendenden Schlüssels.

PKCS#11-Unterstützung

Sie können die Cloud Key Management Service API verwenden, um Ihre vorhandenen Anwendungen mit Cloud HSM zu verbinden, um kryptografische Schlüssel zu verwalten. In der PKCS#11-Bibliothek können Sie HSM-gestützte Schlüssel verwenden, um Ihre Binärdateien zu signieren und TLS-Websitzungen bereitzustellen.

Sicherheit und gesetzliche Vorschriften

Cloud HSM hält zahlreicher Vorschriften ein, einschließlich FedRAMP High, C5:2020 und OSPAR. Darüber hinaus können Sie mit Cloud HSM die Compliance mit Vorschriften für Ihre Arbeitslasten in der Cloud erzwingen.

Attestierung von kryptografischem Schlüssel

Jedes Mal, wenn Sie einen Cloud HSM-Schlüssel generieren oder importieren, generiert das HSM eine Attestierungserklärung, die mit einem Signierschlüssel signiert ist, der der Partition zugeordnet ist. Die Anweisung enthält Informationen zu den Attributen Ihres Schlüssels. Der Signierschlüssel wird durch Zertifikatsketten gesichert, die sowohl in Google als auch im HSM-Hersteller gerootet sind. Sie können die Attestierungserklärung und die Zertifikate herunterladen, um die Authentizität der Anweisung zu prüfen und die Attribute des Schlüssels und des HSM zu validieren, das ihn erzeugt oder importiert hat.

Mit der Zertifikatskette können Sie Folgendes prüfen:

  • Die HSM-Hardware und -Firmware sind echt.
  • Die HSM-Partition und HSM werden von Google verwaltet.
  • Das HSM befindet sich im FIPS-Modus.

Mit dem Inhalt der Attestierungserklärung können Sie Folgendes prüfen:

  • Der Schlüssel kann nicht extrahiert werden.
  • Der Schlüssel wurde für Ihre CryptoKeyVersion generiert.
  • Der öffentliche Schlüssel in einem asymmetrischen Schlüsselpaar entspricht einem privaten HSM-gestützten Schlüssel.
  • Das Schlüsselmaterial eines importierten symmetrischen Schlüssels entspricht dem verpackten Wert.

Sicherer Schlüsselimport direkt in HSMs

Sie können vorhandene Schlüssel sicher in Cloud HSM importieren, um eine Sicherung Ihres Schlüsselmaterials außerhalb von Google Cloud zu verwalten oder bestimmte Arbeitslasten zu Google Cloud zu migrieren. Der Schlüsselimportprozess erlaubt Google keinen direkten Zugriff auf das entpackte Schlüsselmaterial. Cloud HSM stellt Ihnen eine Attestierungserklärung für den von HSM generierten Verpackungsschlüssel zur Verfügung, um zu prüfen, ob ein Zugriff aufgetreten ist.

Der Schlüsselimport erhöht das Sicherheits- und Compliance-Risiko, da Nutzer Schlüssel aus unbekannten Quellen importieren können. Mithilfe separater IAM-Rollen können Sie jedoch genau steuern, wer Schlüssel in ein Projekt importieren kann. Importierte Schlüssel können durch die Attestierungserklärung unterschieden werden, die das HSM beim Import generiert.

Weitere Informationen finden Sie unter Schlüssel in den Cloud Key Management Service importieren.

Strikte Sicherheitsverfahren schützen die HSM-Hardware

Gemäß FIPS 140-2 Level 3 haben HSM-Geräte integrierte Mechanismen, um die physische Manipulation zu schützen und Beweise zu liefern.

Zusätzlich zu den Zusicherungen, die von der HSM-Hardware selbst bereitgestellt werden, wird die Infrastruktur für Cloud HSM gemäß dem Sicherheitsdesign der Infrastruktur von Google verwaltet.

Dokumentierte, überprüfbare Verfahren schützen die Integrität jedes HSM während der Nutzerverwaltung, Bereitstellung und in der Produktion:

  • Alle HSM-Konfigurationen müssen von mehreren Cloud HSM-SREs geprüft werden, bevor das HSM in einem Rechenzentrum bereitgestellt werden kann.
  • Nach der Inbetriebnahme eines HSM kann die Konfigurationsänderung nur von mehreren Cloud HSM-SREs initiiert und geprüft werden.
  • Ein HSM kann nur Firmware empfangen, die vom HSM-Hersteller signiert ist.
  • HSM-Hardware ist nicht direkt mit einem Netzwerk verbunden.
  • Server, auf denen HSM-Hardware gehostet wird, können keine nicht autorisierten Prozesse ausführen.

Die Aufgaben für Systemoperatoren werden in Standardbetriebsverfahren definiert. Es wird verhindert, dass Systemoperatoren bei der Ausführung von Aufgaben auf Kundenschlüsselmaterial zugreifen, es verwenden oder extrahieren.

Dienst- und Mandantenisolation

Die Cloud HSM-Architektur stellt sicher, dass HSMs vor böswilligen oder versehentlichen Störungen durch andere Dienste oder Mandanten geschützt sind.

Ein HSM, das Teil dieser Architektur ist, akzeptiert nur Anfragen von Cloud HSM und der Cloud HSM-Dienst akzeptiert nur Anfragen von Cloud KMS. Cloud KMS erzwingt, dass Aufrufer die entsprechenden IAM-Berechtigungen für die Schlüssel haben, die sie verwenden möchten. Nicht autorisierte Anfragen erreichen keine HSMs.

HSM-gestützte Schlüssel unterliegen auch Kontingenten für kryptografische Vorgänge. Diese Kontingente schützen Ihre Fähigkeit, Ihre Arbeitslasten auszuführen, da unbeabsichtigte oder böswillige Versuche einer Überlastung des Dienstes verhindert werden. Die Standardkontingente, 3.000 QPM für asymmetrische kryptografische Vorgänge und 30.000 QPM für symmetrische kryptografische Vorgänge basieren auf beobachteten Nutzungsmustern. Die Kontingente liegen deutlich unter der Dienstkapazität und können auf Anfrage erhöht werden.

Anfrageabläufe

In diesem Abschnitt wird gezeigt, wie die oben dargestellten Architekturarbeiten in der Praxis durch die Schritte für verschiedene Anfragetypen umgesetzt werden. Diese Abläufe hervorheben die Cloud HSM-spezifischen Teile. Weitere Informationen zu den allgemeinen Schritten für alle Schlüssel finden Sie unter Cloud Key Management Service im Detail.

Schlüssel erstellen

Wenn Sie einen HSM-gestützten Schlüssel erstellen, erstellt die Cloud Key Management Service API das Schlüsselmaterial nicht, sondern fordert das HSM zum Erstellen des Schlüssels an.

Ein HSM kann Schlüssel nur an Standorten erstellen, die es unterstützt. Jede Partition auf einem HSM enthält einen Verpackungsschlüssel, der dem Speicherort eines Cloud Key Management Service entspricht. Der Verpackungsschlüssel wird von allen Partitionen gemeinsam genutzt, die den Standort des Cloud Key Management Service unterstützen. Der Schlüsselerstellungsprozess sieht so aus:

  1. Der Google Front End Service (GFE) leitet die Anfrage zur Schlüsselerstellung an einen Cloud Key Management Service-Server an dem Standort weiter, der der Anfrage entspricht.
  2. Die Cloud Key Management Service API prüft die Identität des Aufrufers und die Berechtigung des Anrufers, Schlüssel im Projekt zu erstellen. Außerdem muss der Aufrufer ein ausreichendes Kontingent für Schreibanfragen haben.
  3. Die Cloud Key Management Service API leitet die Anfrage an Cloud HSM weiter.
  4. Cloud HSM verbindet sich direkt mit dem HSM. Das HSM:
    1. Erstellt den Schlüssel und verpackt ihn mit dem standortspezifischen Verpackungsschlüssel.
    2. Erstellt die Attestierungserklärung für den Schlüssel und signiert sie mit dem Partitionssignaturschlüssel.
  5. Nachdem Cloud HSM den verpackten Schlüssel und die Attestierung an den Cloud Key Management Service zurückgibt, verpackt die Cloud Key Management Service API den mit HSM verpackten Schlüssel gemäß der Schlüsselhierarchie des Cloud Key Management Service und schreibt ihn in das Projekt.

Dieses Design stellt sicher, dass der Schlüssel nicht außerhalb eines HSM entpackt oder verwendet werden kann, nicht aus dem HSM extrahiert werden kann und nur im entpackten Zustand an den von Ihnen angegebenen Speicherorten vorhanden ist.

Das folgende Diagramm zeigt die Unterschiede beim Erstellen von Cloud HSM-Schlüsseln und Softwareschlüsseln in Cloud KMS.

Diagramm: HSM-Schlüsselerstellung

Kryptografische Vorgänge

Wenn Sie einen kryptografischen Vorgang im Cloud Key Management Service ausführen, müssen Sie nicht wissen, ob Sie einen HSM-gestützten oder Softwareschlüssel verwenden. Wenn die Cloud Key Management Service API feststellt, dass ein Vorgang einen HSM-gestützten Schlüssel umfasst, leitet er die Anfrage an ein HSM am selben Standort weiter. Die folgenden Schritte sind die für einen kryptografischen Vorgang:

  1. Das GFE leitet die Anfrage an den entsprechenden Standort an einen Cloud Key Management Service-Server weiter. Die Cloud Key Management Service API verifiziert die Identität des Aufrufers, die Berechtigung des Aufrufers für den Zugriff auf den Schlüssel und die Ausführung des Vorgangs und das Kontingent des Projekts für kryptografische Vorgänge.
  2. Die Cloud Key Management Service API ruft den verpackten Schlüssel aus dem Datenspeicher ab und entschlüsselt eine Ebene der Verschlüsselung mithilfe des Cloud KMS-Masterschlüssels. Der Schlüssel ist weiterhin mit dem HSM-Verpackungsschlüssel für den KMS-Standort verpackt.
  3. Die Cloud Key Management Service API erkennt, dass das Schutzlevel HSM ist, und sendet den teilweise entpackten Schlüssel zusammen mit den Eingaben an den kryptografischen Vorgang an Cloud HSM.
  4. Cloud HSM verbindet sich direkt mit dem HSM. Das HSM führt die folgenden Vorgänge aus:
    1. Prüft, ob der verpackte Schlüssel und seine Attribute nicht geändert wurden.
    2. Entpackt den Schlüssel und lädt ihn in den HSM-Speicher.
    3. Führt den kryptografischen Vorgang aus und gibt das Ergebnis zurück.
  5. Die Cloud Key Management Service API übergibt das Ergebnis an den Aufrufer.

Kryptografische Vorgänge mit HSM-gestützten Schlüsseln werden vollständig innerhalb eines HSM am konfigurierten Standort ausgeführt und nur das Ergebnis ist für den Aufrufer sichtbar.

Dieses Diagramm zeigt den Unterschied zwischen dem Erstellen von Cloud HSM-Schlüsseln und Softwareschlüsseln in Cloud KMS.

Diagramm: HSM-Verschlüsselungsvorgänge

CMEK-Integrationen

Mit CMEK und Cloud HSM können Sie Ihre Daten in ausgewählten Google Cloud-Diensten mit HSM-Schlüsseln schützen. Wenn Sie einen CMEK-fähigen Dienst für die Verwendung von Cloud HSM-Schlüsseln konfigurieren möchten, müssen Sie nur einen Schlüssel mit einem HSM-Schutzlevel auswählen, wenn Sie der dienstspezifischen Anleitung folgen.

Wenn ein Aufrufer Daten in einen CMEK-fähigen Dienst liest oder schreibt, benötigt er weder eine direkte Berechtigung zur Verwendung des Schlüssels noch muss er wissen, ob der Schlüssel in einem HSM gespeichert ist.

Der Ablauf für einen CMEK-Vorgang ähnelt sehr dem für einen normalen kryptografischen Vorgang mit den folgenden Ausnahmen:

  • Die Anfrage vom CMEK-fähigen Dienst wird im Google-Netzwerk initiiert und muss das GFE nicht durchlaufen.
  • Die Cloud Key Management Service API prüft, ob das Dienstkonto für den CMEK-fähigen Dienst die erforderlichen Berechtigungen zur Verwendung des Schlüssels hat. Die Cloud Key Management Service API validiert keine Berechtigungen für den Endnutzer des CMEK-fähigen Dienstes.

Cloud HSM ist der Hardwareschlüsselverwaltungsdienst von Google Cloud. Es bietet eine Reihe unterschiedlicher Vorteile für Nutzer, die inaktive Daten mit HSM-Schlüsseln schützen möchten. Der Dienst wurde mit dem Prinzip des gesperrten API-Zugriffs auf die HSMs, einem mühelosen Skalierungsvorgang und einer engen Regionalisierung der Schlüssel entwickelt.

Cloud HSM bietet CMEK-Unterstützung für die wichtigsten Dienste und das Vorhandensein von Cloud HSM in jeder Google Cloud-Region (einschließlich Multiregionen und globaler Regionen). Der Dienst trägt dazu bei, Ihre sensiblen Daten überall einfach zu schützen, und zwar mit einem Schlüssel, der durch FIPS 140-2 Level 3-Geräte geschützt ist.

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Ressourcen: