媒体流加密

更新时间: 2024/03/15 17:25:07

在金融行业等对用户隐私数据要求较高的行业场景中,往往需要额外采用媒体流加密方式保障用户数据在网络传输过程中的安全性、保障用户的信息安全和数据安全。网易云信在默认加密算法的基础上,提供了内置国密加密,进一步保障数据安全。

功能介绍

媒体流加密指在音视频流传输过程中对音视频数据进行加密,网易云信提供内置国密加密,使用 NERTC SDK 预置的国密加密模式给媒体流加密。

注意事项

  • 同一房间内,所有调用 enableEncryption 方法开启媒体流加密的用户必须使用相同的加密模式、密钥等,否则加入房间时会报错 ENGINE_ERROR_ENCRYPT_NOT_SUITABLE(30113)
  • 安全起见,若您选择 SDK 内置加密算法,建议每次启用媒体流加密时都更换新的密钥。

功能原理

内置加密.png


启用内置国密加密的实现步骤

  1. 您的服务端生成密钥并加密传输给客户端。
  2. 用户 A 采集音视频流之后,通过 enableEncryption 其中EncryptionMode选择GMCryptoSM4ECB,启用加密并传入加密模式和密钥,SDK 会用您选择的加密算法对音视频流进行加密,并将加密后的音视频流传输到网易云信音视频服务。
  3. 网易云信音视频服务中转加密的音视频流。
  4. 用户 B 收到音视频流之后,通过 enableEncryption 其中EncryptionMode选择GMCryptoSM4ECB,传入相同的加密模式和密钥,SDK 会使用同样的加密算法和密钥对媒体流解密,并解码与渲染。

开通媒体流加密

  1. 登录网易云信控制台

  2. 在首页单击指定应用名称。

  3. 产品总览区域,单击音视频通话 2.0 产品选项卡中的功能配置

    功能配置.png

  4. 单击高级功能页签,单击 音视频媒体流加密 的开关按钮,开启媒体流加密。

    开通媒体流加密.png

  5. 单击确定

配置步骤

  1. 在您的服务端生成密钥。参考以下命令通过 OpenSSL 随机生成 String 型、16 字节的密钥。
// 随机生成一个 string 型、16 字节的密钥,并将该密钥传入 `enableEncryption` 的 `config` 参数。
openssl rand -hex 16dba643c8ba6b6dc738df43d9fd624293b4b12d87a60f518253bd10ba98c48453
  1. 客户端从服务端获取 String 型密钥,并在加入房间前调用 enableEncryption 方法开启媒体流加密功能,设置媒体加密模式为 GMCryptoSM4ECB,并在 configkey 参数中传入密钥。
  • 加密模式目前仅支持国密 SM4 对称加密算法。
  • 密钥由服务端生成,格式为 String 类型的字符串。

示例代码

// enable , before joinChannel
NERtcEncryptionConfig encryptionConfig = NERtcEncryptionConfig(NERtcEncryptionMode.GMCryptoSM4ECB,gmEncryptKey);
await _engine.enableEncryption(true,encryptionConfig);

//disable (default option), before joinChannel
NERtcEncryptionConfig encryptionConfig = new NERtcEncryptionConfig(NERtcEncryptionConfig.EncryptionMode.GMCryptoSM4ECB, '');
NERtcEx.getInstance().enableEncryption(false, encryptionConfig);
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 功能原理
  • 开通媒体流加密
  • 配置步骤
  • 示例代码