Archiv-Verschlüsselung
Mit der Vonage Videoverschlüsselung können Sie Archive erstellen, in denen die Daten niemals unverschlüsselt ruhen.
Sie können Ihre Archive auf folgende Weise sichern:
- Archivspeicher-Fallback deaktivieren - Vonage speichert standardmäßig eine Archivdatei auf seinen Servern, wenn es nicht in der Lage war, die Datei auf den von Ihnen angegebenen Amazon S3- oder Microsoft Azure-Server hochzuladen. Sie können diesen Fallback-Speicher verhindern, indem Sie die REST-API verwenden, um das Ziel für den Archiv-Upload festzulegen.
- Verwenden Sie die Vonage Videoverschlüsselung - Damit können Sie Archive erstellen, in denen die Daten niemals unverschlüsselt ruhen. Dies bietet den höchsten Grad an Sicherheit.
- Verwenden Sie die serverseitige Verschlüsselung von Amazon S3 - Dies verwendet von Amazon S3 verwaltete Verschlüsselungsschlüssel zur Verschlüsselung. Für Details, siehe dieses Entwicklerhandbuch.
Bei der Vonage-Videoverschlüsselung werden die Video- und Audiodaten in einem Vonage-Archiv mit einem öffentlichen Schlüsselzertifikat verschlüsselt, das Sie Vonage zur Verfügung stellen.
Das ist wichtig: Die Verschlüsselungsfunktion von Vonage ist verfügbar als Add-on-Feature. Kontakt um diese Funktion für Ihre Projektschlüssel zu aktivieren.
Überblick über die Funktionen
Die verschlüsselte Archivierungsfunktion der Vonage Video-Plattform ermöglicht es Ihnen, Archive zu erstellen, in denen die Daten niemals unverschlüsselt ruhen.
Erstellen Sie zunächst ein öffentliches und ein privates RSA-Schlüsselpaar zur Verwendung mit Ihren Archiven. Über einen REST-API-Aufruf teilen Sie das Zertifikat des öffentlichen Schlüssels mit Vonage. (Mit demselben REST-Aufruf senden Sie Details zum Amazon S3- oder Microsoft Azure-Upload-Ziel, das Sie für Ihre Archive verwenden möchten.
Für die verschlüsselte Archivierung müssen Sie ein Upload-Ziel festlegen). Sie speichern den privaten Schlüssel lokal für Ihre nur für den privaten Gebrauch.
Vonage verschlüsselt dann jedes Archiv mit einem zufällig generierten Passwort, verschlüsselt es mit dem Zertifikat und speichert das verschlüsselte Passwort auf unseren Servern.
Wenn das Archiv fertig ist, werden Sie über einen Rückruf an Ihren Server benachrichtigt und können das Passwort abfragen. Vonage speichert zu keinem Zeitpunkt das unverschlüsselte Passwort und hat keine Möglichkeit, das Passwort zu entschlüsseln (nur der Inhaber des privaten Schlüssels kann das Passwort entschlüsseln).
Sie können dann das Kennwort mit Hilfe des privaten Schlüssels entschlüsseln und das Kennwort zur Entschlüsselung des verschlüsselten Archivs verwenden. Die entschlüsselte Archivdatei liegt im MPEG-TS-Format vor.
Vonage verwendet den AES-256-Algorithmus zur Verschlüsselung des Archivs.
Das generierte Kennwort wird mit RSA-Verschlüsselung und OAEP-Padding verschlüsselt. Beachten Sie, dass Sie die verschlüsselte Archivierung nur mit zusammengesetzten Archiven verwenden können, nicht mit einzelnen Stream-Archiven.
In diesem Leitfaden werden wir uns mit den folgenden Punkten befassen:
Erstellung eines verschlüsselten Archivierungszertifikats
Übermittlung des verschlüsselten Archivierungszertifikats an Vonage
Deaktivieren der verschlüsselten Archivierung
Erstellung eines verschlüsselten Archivierungszertifikats
Erstellen Sie ein X.509 PEM-Zertifikat und einen entsprechenden privaten Schlüssel für die Verwendung mit Ihren Archiven:
(Hinweis: Dies wurde mit OpenSSL 1.0.1 getestet).
Sie senden das Zertifikat an Vonage, das daraus ein verschlüsseltes Passwort generiert, das zur Entschlüsselung des Archivs benötigt wird. Das Passwort kann mit Ihrem privaten Schlüssel entschlüsselt werden, und das Archiv kann mit dem Passwort entschlüsselt werden. Das Passwort ist für jedes Archiv unterschiedlich.
Die Größe des Schlüssels muss 2048 Bit oder weniger betragen. Sie werden das Zertifikat in JSON-Daten an die Vonage Video-REST-API senden, um das Archivierungsziel festzulegen (siehe nächster Abschnitt). Da das Zertifikat in JSON-Daten enthalten sein wird, senden Sie die Daten base64-kodiert oder ersetzen Sie Zeilenumbrüche im Zertifikat durch "\n".
Das folgende Beispiel kodiert das Zertifikat mit base64:
Eine Base64-kodierte Zertifikatszeichenfolge sieht wie folgt aus:
"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0..."
Eine Zertifikatszeichenfolge mit ersetzten Zeilenumbrüchen sieht wie folgt aus:
"-----BEGIN CERTIFICATE-----\n...\n...\n -----END CERTIFICATE-----"
Übermittlung des verschlüsselten Archivierungszertifikats an Vonage
Um das Zertifikat einzustellen und die Archivverschlüsselung zu aktivieren, senden Sie eine HTTP-PUT-Anfrage an die folgende URL:
/v2/project/archive/storage
Ersetzen Sie appId mit Ihrer Projekt-App-ID.
Authentifizieren Sie die REST-API-Anfrage mit der Autorisierungskopf:
Authorization: Basic base64(APP_ID:API_SECRET)
Erstellen Sie das JSON-Web-Token mit den folgenden Angaben:
{
"iss": "your_app_id",
"ist": "project",
"iat": current_timestamp_in_seconds,
"exp": expire_timestamp_in_seconds,
"jti": "jwt_nonce"
}
- Satz
isszu Ihrer Vonage Video App ID (die Sie in Ihrem Vonage Account auf der Seite Projekt). - Satz
istzu "Projekt". - Satz
iatauf den aktuellen Unix-Epochenzeitstempel (wann das Token erstellt wurde) in Sekunden. - Satz
expauf die Ablaufzeit für das Token. Aus Sicherheitsgründen empfehlen wir, dass Sie eine Ablaufzeit verwenden, die nahe an der Erstellungszeit des Tokens liegt (z. B. 3 Minuten nach der Erstellung) und dass Sie für jeden REST-API-Aufruf ein neues Token erstellen. Die maximal zulässige Ablaufzeitspanne beträgt 5 Minuten. - Satz
jtiauf einen eindeutigen Bezeichner für das JWT. Dies ist optional. Siehe die JSON-Web-Token-Spezifikation für Einzelheiten.
Verwenden Sie Ihren privaten Projektschlüssel als JWT-Geheimschlüssel und signieren Sie diesen mit dem Verschlüsselungsalgorithmus HMAC-SHA256. (Ihr privater Schlüssel wird Ihnen in Ihrem Video API-Konto auf der Projektseite). Der folgende Python-Code erstellt zum Beispiel ein Token, das in einem REST-API-Aufruf verwendet werden kann:
import jwt # See https://pypi.python.org/pypi/PyJWT
import time
import uuid
print jwt.encode({"iss": "my-project-API-key",
"iat": int(time.time()),
"exp": int(time.time()) + 180,
"ist": "project",
"jti": str(uuid.uuid4())()},
'my-project-API-secret',
algorithm='RS256')
Ersetzen Sie my-project-API-key und my-project-API-secret mit der App-ID und dem Geheimnis des Vonage Video-Projekts.
Setzen Sie die Content-type Header für den REST-API-Aufruf an application/json:
Content-Type:application/json
Ersetzen Sie die Zeilenumbruchzeichen im Zertifikat durch "\n"so dass Sie es im String-Literal in den JSON-Daten verwenden können. Übergeben Sie das Zertifikat des öffentlichen Schlüssels als eine Eigenschaft der JSON-Daten, die Sie senden, wenn Sie die REST-Methode zum Einstellen des Archivspeichers aufrufen. Siehe die nächsten Abschnitte.
Einrichten der verschlüsselten Archivierung für ein Amazon S3-Ziel
Um ein öffentliches Schlüsselzertifikat zur Verwendung mit einem Amazon S3-Ziel anzugeben, legen Sie die JSON-Daten im REST-API-Aufruf so fest, dass das folgende Format verwendet wird:
{
"type": "s3",
"config": {
"bucket": "example.com.archive-bucket",
"secretKey": "BvKwyshsmEATx5mngeloHwgKrYMbP+",
"accessKey": "AWFS7BAO536E6MXA"
},
"fallback": "none",
"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0..."
}
Satz bucket auf den Namen des Amazon S3-Buckets, den Sie für den Archiv-Upload verwenden möchten. Setzen Sie den secretKey und accessKey Eigenschaften auf den geheimen Amazon S3-Schlüssel und den Zugriffsschlüssel für diesen Bucket.
Setzen Sie die Fallback-Eigenschaft auf "none" um zu verhindern, dass Archivdateien in der Vonage Video-Cloud gespeichert werden, wenn der Upload fehlschlägt. Setzen Sie die Eigenschaft auf "opentok" um das Archiv auf Ihrem Dashboard verfügbar zu haben, falls der Upload fehlschlägt.
Setzen Sie die Zertifikatseigenschaft auf das öffentliche Schlüsselzertifikat, das Vonage zur Verschlüsselung des Archivs verwenden wird. Stellen Sie sicher, dass das Zertifikat base64-kodiert ist oder ersetzen Sie Zeilenumbrüche im Zertifikat durch "\n"so dass Sie es im String-Literal in den JSON-Daten verwenden können.
Einrichten der verschlüsselten Archivierung für ein Microsoft Azure-Ziel
Um ein öffentliches Schlüsselzertifikat zur Verwendung mit einem Microsoft Azure-Ziel anzugeben, legen Sie die JSON-Daten im REST-API-Aufruf so fest, dass sie das folgende Format verwenden:
{
"type": "azure",
"config": {
"accountName":"myAccountname",
"accountKey":"myAccountKey",
"container": "containerName"
},
"fallback": "none",
"certificate" : "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0...
}
Stellen Sie den Container so ein, dass er dem Namen Ihres Microsoft Azure-Containers entspricht. Setzen Sie die accountName und accountKey Eigenschaften mit Ihren Microsoft Azure-Speicheranmeldeinformationen übereinstimmen.
Setzen Sie die fallback Eigenschaft zu "none" um zu verhindern, dass Archivdateien in der Vonage Video-Cloud gespeichert werden, wenn der Upload fehlschlägt. Setzen Sie die Eigenschaft auf "opentok" um das Archiv auf dem Dashboard verfügbar zu haben, wenn der Upload fehlschlägt.
Setzen Sie die certificate auf das öffentliche Schlüsselzertifikat, das Vonage zur Verschlüsselung des Archivs verwenden wird. Stellen Sie sicher, dass das Zertifikat base64-kodiert ist oder ersetzen Sie Zeilenumbrüche im Zertifikat durch "\n"so dass Sie es im String-Literal in den JSON-Daten verwenden können. Eine Base64-kodierte Zertifikatszeichenfolge sieht wie folgt aus:
"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0..."
REST-API-Antworten
- Eine Antwort mit dem Statuscode 200 zeigt den Erfolg an.
- Eine Antwort mit einem 400-Statuscode zeigt an, dass Sie ungültige JSON-Daten eingefügt haben oder dass Sie das Upload-Ziel nicht angegeben haben.
- Eine Antwort mit einem 403-Statuscode zeigt an, dass Sie eine ungültige Projekt-App-ID oder einen ungültigen privaten Schlüssel eingegeben haben.
Beispiele
Das folgende Befehlszeilenbeispiel legt das Zertifikat fest, das Vonage beim Verschlüsseln von Archiven, die in einen Amazon S3-Bucket hochgeladen werden sollen, sicher verwendet:
Legen Sie den Wert für app_id zu Ihrer Vonage Video Projekt App ID.
Legen Sie die Werte für your-s3-bucket und your-s3-access-key mit Ihren Amazon S3-Anmeldeinformationen übereinstimmen. Ersetzen Sie den Zertifikatswert durch die Zertifikatszeichenfolge.
Das folgende Befehlszeilenbeispiel legt das Zertifikat fest, das Vonage beim Verschlüsseln von Archiven, die in einen Microsoft Azure-Bucket hochgeladen werden sollen, sicher verwendet:
Legen Sie den Wert für app_id zu Ihrer Vonage Video Projekt App ID.
Legen Sie die Werte für your-azure-account-name, your-azure-account-nameund your-azure-container mit Ihren Amazon S3-Anmeldeinformationen übereinstimmen. Ersetzen Sie den Zertifikatswert durch die Zertifikatszeichenfolge.
Entschlüsseln eines Archivs
Sie können über das Dashboard einen Archivstatus-Rückruf einstellen. Siehe "Archivstatusänderungen" im Abschnitt Leitfaden für Entwickler zur Archivierung.
Nach der Erstellung des Archivs enthalten die POST-Anfragen zum Archivstatus an Ihre Callback-URL eine Kennworteigenschaft:
{
"id" : "b40ef09b-3811-4726-b508-e41a0f96c68f",
"event": "archive",
"createdAt" : 1384221380000,
"duration" : 328,
"name" : "Foo",
"partnerId" : 123456,
"reason" : "",
"sessionId" : "2_MX40NzIwMzJ-flR1ZSBPERUIDIwMTN-MC45NDQ2MzE2NH4",
"size" : 18023312,
"status" : "uploaded",
"password" : "e42c...d23"
}
Das Passwort ist ein zertifikatsverschlüsselter AES-Schlüssel und ein Initialisierungsvektor in Form von base64-kodierten Binärdaten.
Die ersten drei Bytes der Binärdaten stehen für die Version (ein Byte), den Algorithmus (ein Byte) und den Modus (ein Byte). In dieser Version ist die Länge auf 1, der Algorithmus auf 1 (AES-256) und der Modus auf 1 (CBC) gesetzt.
Die nächsten 32 Bytes sind der Schlüssel. Die restlichen 16 Bytes sind der Initialisierungsvektor.
Entschlüsseln Sie zunächst das Kennwort und dann mit Ihrem privaten Schlüssel:
Verwenden Sie dann das Passwort, um die Archivdatei zu entschlüsseln:
-K ist der Schlüssel
-iv ist der Initialisierungsvektor
xxd wandelt das binär dekodierte und entschlüsselte Passwort in Hex um, so dass es an openssl übergeben werden kann. Lesen Sie die xxd-Manualseite für weitere Informationen zu den Schaltern.
Deaktivieren der verschlüsselten Archivierung
Um die verschlüsselte Archivierung zu deaktivieren, senden Sie eine HTTP-PUT-Anfrage an die Archivspeicher-URL (siehe Übermittlung des verschlüsselten Archivierungszertifikats an Vonage), aber setzen Sie das Zertifikat in den JSON-Daten, die Sie mit der Anfrage senden, auf null.
Deaktivieren der verschlüsselten Archivierung für ein Amazon S3-Ziel
Um ein öffentliches Schlüsselzertifikat für ein Amazon S3-Archivziel zu entfernen (und die Verschlüsselung aus den Archiven zu entfernen), rufen Sie die REST-API mit den folgenden JSON-Daten auf:
{
"type": "s3",
"config": {
"bucket": "example.com.archive-bucket",
"secretKey": "BvKwyshsmEATx5mngeloHwgKrYMbP+",
"accessKey": "AWFS7BAO536E6MXA"
},
"fallback": "none",
"certificate" : null
}
Satz bucket auf den Namen des Amazon S3-Buckets, den Sie für den Archiv-Upload verwenden möchten.
Setzen Sie den secretKey und accessKey Eigenschaften auf den geheimen Amazon S3-Schlüssel und den Zugriffsschlüssel für diesen Bucket.
Setzen Sie die fallback Eigenschaft to "none" um zu verhindern, dass Archivdateien in der Vonage Cloud gespeichert werden, wenn der Upload fehlschlägt.
Setzen Sie die Eigenschaft auf "opentok" um das Archiv im Vonage-Dashboard verfügbar zu haben, falls der Upload fehlschlägt.
Setzen Sie die certificate Eigenschaft auf Null.
Deaktivieren der verschlüsselten Archivierung für ein Microsoft Azure-Ziel
Um ein öffentliches Schlüsselzertifikat für ein Microsoft Azure-Archivierungsziel zu entfernen (und die Verschlüsselung aus den Archiven zu entfernen), rufen Sie die REST-API mit den folgenden JSON-Daten auf:
{
"type": "azure",
"config": {
"accountName":"myAccountname",
"accountKey":"myAccountKey",
"container": "containerName"
},
"certificate" : null
}
Satz container um den Namen Ihres Microsoft Azure-Containers anzupassen.
Setzen Sie die accountName und accountKey Eigenschaften mit Ihren Microsoft Azure-Speicheranmeldeinformationen übereinstimmen.
Legen Sie die fallback Eigenschaft zu "none" um zu verhindern, dass Archivdateien in der Vonage Cloud gespeichert werden, wenn der Upload fehlschlägt.
Setzen Sie die Eigenschaft auf "opentok" um das Archiv im Vonage-Dashboard verfügbar zu haben, falls der Upload fehlschlägt.
Setzen Sie die certificate Eigenschaft zu null.
REST-API-Antworten
- Eine Antwort mit dem Statuscode 200 zeigt an, dass die Deaktivierung der Verschlüsselung erfolgreich war.
- Eine Antwort mit einem 400-Statuscode zeigt an, dass Sie ungültige JSON-Daten eingefügt haben oder dass Sie das Upload-Ziel nicht angegeben haben.
- Eine Antwort mit dem Statuscode 403 bedeutet, dass Sie eine ungültige Projekt-App-ID oder ein ungültiges Partnergeheimnis eingegeben haben.
Beispiel
Das folgende Befehlszeilenbeispiel deaktiviert die verschlüsselte Archivierung für ein S3-Ziel:
Legen Sie den Wert für app_id zu Ihrer Vonage Video App ID.
Legen Sie die Werte für your-s3-bucket und your-s3-access-key mit Ihren Amazon S3-Anmeldedaten übereinstimmen.
Bekannte Probleme
Die Dauer eines verschlüsselten Archivs wird in allen Vonage Video REST API-Aufrufen, in Methoden der Vonage Video Server SDKs und in Archivstatus-Änderungs-Callbacks immer mit 0 angegeben.