Enkripsi proprietary Alibaba Cloud dapat mengenkripsi live stream. Topik ini menjelaskan manfaat, arsitektur, dan metode penggunaan enkripsi proprietary Alibaba Cloud.
Video hanya dapat dihasilkan dalam format HTTP Live Streaming (HLS) dan Flash Video (FLV).
Anda hanya dapat menggunakan Pemutar Video Apsara untuk memutar video yang dienkripsi menggunakan enkripsi privat Alibaba Cloud.
Untuk informasi tentang kompatibilitas HTML5, lihat deskripsi fitur Pemutaran video yang dienkripsi menggunakan enkripsi privat Alibaba Cloud di Fitur pemain HTML5 yang didukung oleh browser.
Informasi latar belakang
Pengguna dapat membayar biaya satu kali untuk live stream dan mengunduh file video dari URL streaming legal yang dilindungi hotlink. Setelah file video diunduh, redistribusi file tersebut tidak terkendali. Oleh karena itu, perlindungan hotlink tidak cukup untuk melindungi hak cipta live stream.
Manfaat
Enkripsi proprietary Alibaba Cloud mengenkripsi data video. File video yang diunduh ke perangkat lokal dienkripsi, mencegah redistribusi tanpa izin. Enkripsi ini mencegah kebocoran video dan hotlinking, serta dapat diterapkan pada berbagai bidang video berhak cipta online seperti pendidikan online, keuangan, pelatihan industri, dan acara TV premium.
Alibaba Cloud memanfaatkan algoritma enkripsi privat untuk memberikan tingkat keamanan tinggi, yang memungkinkan Anda melindungi sumber daya video Anda dengan cara yang nyaman, efisien, dan aman.
Setiap file media memiliki kunci enkripsi khusus. Ini mencegah banyak file video terpapar jika satu kunci bocor.
ApsaraVideo Live menyediakan sistem manajemen izin yang komprehensif. Anda dapat membuat pengguna RAM dan menggunakan kredensial pemutaran untuk mengontrol izin akses.
ApsaraVideo Live menggunakan kunci teks sandi dan teks biasa untuk menyediakan sistem enkripsi amplop. Kunci teks biasa tidak disimpan dan hanya digunakan untuk memproses data di memori.
ApsaraVideo Live menyediakan SDK kernel pemain yang aman.
Arsitektur keseluruhan
Proses enkripsi proprietary Alibaba Cloud mencakup enkripsi dan transkoding, serta pemutaran setelah dekripsi.
Enkripsi dan transkoding: Langkah 1 hingga 3 dalam bagan alur berikut.
Setelah streamer memasukkan live stream ke pusat live, ApsaraVideo Live menggunakan KMS untuk menghasilkan kunci teks biasa dan kunci teks sandi. Kemudian, ApsaraVideo Live menggunakan kunci teks biasa untuk melakukan enkripsi symmetric pada audio dan video live stream, serta mengenkapsulasi kunci teks sandi dalam video.
Dekripsi dan pemutaran: Langkah 4 hingga 11 dalam bagan alur berikut.
Untuk memutar live stream, klien pemutaran mengirim permintaan pemutaran ke AppServer untuk mendapatkan URL streaming. Kemudian, klien pemutaran menggunakan URL streaming untuk meminta aliran video dari ApsaraVideo Live. ApsaraVideo Live mentransmisikan video yang telah ditranskode dan dienkripsi serta kunci teks sandi ke ApsaraVideo Player SDK.
Klien pemutaran menggunakan kunci teks sandi untuk meminta kunci teks biasa yang dienkripsi dari ApsaraVideo Live. Kemudian, ApsaraVideo Live menggunakan kunci teks sandi untuk meminta kunci teks biasa dari KMS. Klien pemutaran mentransmisikan kunci teks biasa yang didekripsi ke ApsaraVideo Player SDK, yang kemudian mendekripsi dan memutar video.
Metode penggunaan
Enkripsi privat Alibaba Cloud dikonfigurasi menggunakan template transkoding. Anda dapat menggunakan Konsol ApsaraVideo Live atau memanggil Operasi API untuk mengonfigurasi template.
Untuk menggunakan enkripsi proprietary Alibaba Cloud, Anda harus menentukan ID kunci KMS. Jika Anda tidak memiliki kunci, buka konsol KMS untuk membuat satu. Pastikan wilayah kunci sama dengan wilayah tempat nama domain berada. Untuk informasi lebih lanjut, lihat Buat CMK.
Metode 1: Anda dapat menggunakan Konsol ApsaraVideo Live. Untuk informasi lebih lanjut, lihat transcoding default dan transcoding kustom.
Metode 2: Panggil operasi API untuk mengonfigurasi enkripsi proprietary Alibaba Cloud.
Untuk mengonfigurasi template transkoding enkripsi video, panggil operasi AddLiveStreamTranscode untuk menambahkan konfigurasi transcoding default, atau panggil operasi AddCustomLiveStreamTranscode untuk menambahkan konfigurasi transcoding kustom. Kemudian, atur parameter
EncryptParameters. Dalam parameter ini, aturEncryptTypemenjadialiyun.Kode contoh berikut memberikan contoh tentang cara menggunakan server SDK untuk Java untuk menambahkan konfigurasi transkoding default:
// File ini dibuat secara otomatis, jangan edit. Terima kasih. package demo; import com.aliyun.auth.credentials.Credential; import com.aliyun.auth.credentials.provider.StaticCredentialProvider; import com.aliyun.core.http.HttpClient; import com.aliyun.core.http.HttpMethod; import com.aliyun.core.http.ProxyOptions; import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder; import com.aliyun.sdk.service.live20161101.models.*; import com.aliyun.sdk.service.live20161101.*; import com.google.gson.Gson; import darabonba.core.RequestConfiguration; import darabonba.core.client.ClientOverrideConfiguration; import darabonba.core.utils.CommonUtil; import darabonba.core.TeaPair; //import javax.net.ssl.KeyManager; //import javax.net.ssl.X509TrustManager; import java.net.InetSocketAddress; import java.time.Duration; import java.util.*; import java.util.concurrent.CompletableFuture; import java.io.*; public class AddLiveStreamTranscode { public static void main(String[] args) throws Exception { // Konfigurasi HttpClient /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder() .connectionTimeout(Duration.ofSeconds(10)) // Atur waktu habis koneksi. Default adalah 10 detik. .responseTimeout(Duration.ofSeconds(10)) // Atur waktu habis respons. Default adalah 20 detik. .maxConnections(128) // Atur ukuran kolam koneksi. .maxIdleTimeOut(Duration.ofSeconds(50)) // Atur waktu habis kolam koneksi. Default adalah 30 detik. // Konfigurasikan proxy. .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001)) .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>")) // Untuk koneksi HTTPS, konfigurasikan sertifikat atau abaikan sertifikat menggunakan .ignoreSSL(true). .x509TrustManagers(new X509TrustManager[]{}) .keyManagers(new KeyManager[]{}) .ignoreSSL(false) .build();*/ // Konfigurasikan kredensial, termasuk ID AccessKey, Rahasia AccessKey, dan token. StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah diatur. .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // gunakan token STS .build()); // Konfigurasikan Client. AsyncClient client = AsyncClient.builder() .region("<Your RegionId>") // ID wilayah. //.httpClient(httpClient) // Gunakan HttpClient yang dikonfigurasi. Jika tidak, HttpClient Apache default digunakan. //.serviceConfiguration(Configuration.create()) // Konfigurasi tingkat layanan. // Timpa konfigurasi tingkat klien. Anda dapat mengatur parameter seperti endpoint dan parameter permintaan HTTP. .overrideConfiguration( ClientOverrideConfiguration.create() // Untuk endpoint, lihat https://api.aliyun.com/product/live. .setEndpointOverride("live.aliyuncs.com") //.setConnectTimeout(Duration.ofSeconds(30)) ) .build(); // Atur parameter untuk permintaan API. AddLiveStreamTranscodeRequest addLiveStreamTranscodeRequest = AddLiveStreamTranscodeRequest.builder() .regionId("<Your RegionId>") .domain("<Your Domain>") .app("<Your App Name>") .template("<Your Template>") .encryptParameters("<Your EncryptParameters>") // Timpa konfigurasi tingkat permintaan. Anda dapat mengatur parameter seperti header permintaan HTTP. // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders())) .build(); // Ambil respons API secara asinkron. CompletableFuture<AddLiveStreamTranscodeResponse> response = client.addLiveStreamTranscode(addLiveStreamTranscodeRequest); // Ambil respons API secara sinkron. AddLiveStreamTranscodeResponse resp = response.get(); System.out.println(new Gson().toJson(resp)); // Proses respons secara asinkron. /*response.thenAccept(resp -> { System.out.println(new Gson().toJson(resp)); }).exceptionally(throwable -> { // Tangani pengecualian. System.out.println(throwable.getMessage()); return null; });*/ // Tutup klien. client.close(); } }CatatanJika ada perubahan yang dibuat pada konfigurasi transkoding, Anda harus memasukkan ulang stream agar konfigurasi tersebut berlaku.
Untuk informasi lebih lanjut tentang server SDK untuk Java, lihat Gunakan server SDK untuk Java.
Operasi API terkait lainnya:
Operasi API
Deskripsi
Memperbarui konfigurasi transkoding default.
Memperbarui konfigurasi transkoding kustom.
Mengquery konfigurasi transkoding dari domain streaming.
Menghapus konfigurasi transkoding.
Referensi
Saat menggunakan fitur enkripsi video, peran AliyunServiceRoleForLiveKes dibuat secara otomatis untuk mendapatkan izin akses pada KMS. Untuk informasi lebih lanjut, lihat Kelola peran terkait layanan untuk enkripsi video.