日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過阿里云物聯(lián)網(wǎng)平臺使用AI算法保護

1. 簡介

  1. AI算法保護,提供內(nèi)容的加密保護和全生命周期管理;授權(quán)過程的自動化和授權(quán)管理的統(tǒng)一化,防止內(nèi)容的拷貝和泄漏,以及提供商業(yè)售賣的靈活性、安全性和管理成本。

  • 內(nèi)容加密保護,一次性加密,多種許可分發(fā)和管理,支持不同的授權(quán)管理策略,滿足不同場景的需求。

  • 基于IoT安全自建的設(shè)備認(rèn)證產(chǎn)品(ID2),為內(nèi)容保護提供全鏈路的安全保護。

  1. 本文說明基于客戶物聯(lián)網(wǎng)平臺提供的消息傳輸通道,使用AI算法保護,進行內(nèi)容的加密保護和授權(quán)管理。

2. 角色劃分

接入AI算法保護會劃分為兩類角色,廠商需要根據(jù)不同的角色按步驟接入。

?

  1. 算法廠商:擁有AI算法的核心能力,在業(yè)務(wù)場景中會把算法授權(quán)到其它設(shè)備廠商使用。

  2. 設(shè)備廠商:擁有自己的IoT設(shè)備,計劃在IoT設(shè)備使用算法廠商所提供的算法。

3. 對接流程

3.1 整體接入流程

image.png

3.2 算法廠商接入

3.2.1 服務(wù)開通(線下)

  1. 通過IoT安全中心官網(wǎng)AI算法保護模塊,聯(lián)系我們進行線下開通。

image.png

3.2.2 模型加密(離線)

  1. 加密工具下載:服務(wù)開通后,通過點擊AI算法保護-算法模型-離線加密工具,下載加密工具到本地,對原始的模型進行處理。

  1. 模型加密工具:content_packager(Release Package/tools目錄),運行在Ubuntu的可執(zhí)行程序。

  2. 模型加密工具 - 選項說明

參數(shù) (均為string類型)

說明

附注

--help

打印該使用說明

--version

打印內(nèi)容打包工具的版本

--input

待保護的文件

通過格式判定

--license

支持2種情況:

  1. 許可證配置文件(.json)

  2. 導(dǎo)入已生成的license文件(.bin)

  1. 如果是.json則根據(jù)配置來創(chuàng)建新的License,并利用新的License加密文件。

  2. 如果導(dǎo)入已生成的license,則工具會基于導(dǎo)入的license加密文件

--config

保護配置文件(.json)

用于配置模型文件的加密方式

--company

公司名稱

長度在4~8之間

  1. 授權(quán)配置文件:

  • 打開license配置文件模板license_config.json,配置如下參數(shù):

參數(shù)

類型

說明

license_id

string

  1. 指定的License許可唯一標(biāo)識,有效長度8 ~ 48字節(jié)。

  2. 設(shè)置為空時,由工具自動生成。

extras

string

用戶數(shù)據(jù),最長256 字節(jié),超過會截斷。

machine

string

授權(quán)的設(shè)備id, 空則不綁定

valid_count

uint32

有效使用次數(shù)(-1 則無限制

valid_period_days

uint32

有效使用天數(shù)(-1 則無限制

?

  1. 保護配置文件

  • 打開保護配置文件模板protect_config.json,配置如下參數(shù):

參數(shù)

類型

說明

enc_type

string

加密保護的內(nèi)容類型:

  • "file" - 基于文件數(shù)據(jù)流的加密保護。

  • "dict" - 基于詞典條目(json字符串)的加密保護。

enc_model

bool

true :打開分層加密

false:關(guān)閉分層加密(不改造算法模型)

max_size

float

最大加密的數(shù)據(jù)量(單位: MB):

  • 如果文件小于max_size,則全文件數(shù)據(jù)加密

  • 如果文件大于max_size,工具會切片加密文件數(shù)據(jù),保證總的加密數(shù)據(jù)量不超過 max_size

sec_level

uint32

模型加密的安全強度(Security Level):

0 - 標(biāo)準(zhǔn)的AES加密

1 - 輕量的AES加密

  1. 模型加密工具 - 使用示例:

  • 授權(quán)配置文件 - license_info.json,保護配置文件 - protect_config.json,模型文件 - googlenet.caffemodel:

./content_packager --input googlenet.caffemodel --license license_info.json --config protect_config.json --company alibaba

  • 輸出如下:

<PACK_TOOL> version: 1.2.0

<PACK_TOOL> folder ./LD-0100-alibaba-2944-20210104095107 is created

<PACK_TOOL> License: ./LD-0100-alibaba-2944-20210104095107/LD-0100-alibaba-2944-20210104095107.lic

<PACK_TOOL> Encrypted Content: ./LD-0100-alibaba-2944-20210104095107/googlenet.caffemodel.enc

<PACK_TOOL> Content Packager Finished

  • 生成的加密文件為 <原始文件名稱>.enc,License文件為 <license id>.lic 存放在以licence id命名的文件夾中。

3.2.3 算法模型創(chuàng)建

如果算法廠商準(zhǔn)備授權(quán)一種新的算法到設(shè)備廠商,首先需要對模型進行離線加密處理,然后完成算法模型創(chuàng)建。

  1. 點擊新增算法模型按鈕,會彈出新增算法模型窗口。

  2. 輸入算法廠商名稱和算法模型名稱。

  3. 上傳授權(quán)許可文件,該文件由離線加密工具輸出<license_id>.lic。

  4. 點擊確認(rèn)按鈕完成算法模型新增。

image.png

3.2.4 設(shè)備廠商授權(quán)

?

算法廠商首先完成算法模型創(chuàng)建,然后通過此步驟把算法授權(quán)到設(shè)備廠商。完成該步驟后,設(shè)備廠商擁有使用該算法的權(quán)限,設(shè)備廠商可以按照設(shè)備廠商角色相關(guān)步驟進行后續(xù)的接入操作。

  1. 請點擊新增授權(quán)按鈕,彈出新增授權(quán)窗口。

  2. 輸入授權(quán)名稱、設(shè)備廠商阿里云賬號UID,所關(guān)聯(lián)的算法模型。(請確保輸入有效的設(shè)備廠商阿里云賬號UID)

  3. 指定產(chǎn)品使用的授權(quán)配額,允許設(shè)備廠商特定數(shù)量的IoT設(shè)備使用所關(guān)聯(lián)的算法模型。

  4. 指定AI算法授權(quán)到期時間。(當(dāng)AI算法到期后,IoT設(shè)備不能再使用所關(guān)聯(lián)的算法模型)

  5. 配置最大離線時間,(0~10000)小時,0表示允許永久離線。(當(dāng)離線間隔到期后,IoT設(shè)備需要聯(lián)網(wǎng)更新才能繼續(xù)使用)

  6. 點擊確認(rèn)按鈕完成授權(quán)新增。

image.png

3.2.5 查看使用記錄

  1. 請點擊AI算法保護-使用記錄,可查看設(shè)備廠商的IoT設(shè)備連接云端平臺獲取授權(quán)的使用記錄信息。

  2. 數(shù)據(jù)總覽界面。

  3. 已購買授權(quán):表示算法廠商購買的授權(quán)總額度。

  4. 已分配:表示算法廠商已經(jīng)分配到設(shè)備廠商的授權(quán)額度。

  5. 已使用:表示算法廠商所授權(quán)的設(shè)備廠商已使用的授權(quán)數(shù)量。

  6. AI算法模型:表示算法廠商所創(chuàng)建的算法模型數(shù)量。

3.3 設(shè)備廠商接入

3.3.1 服務(wù)開通?

  1. 請聯(lián)系提供AI算法的算法廠商,并把自己阿里云賬號UID提供到算法廠商,由算法廠商為其進行授權(quán)。

  2. 當(dāng)算法廠商授權(quán)完成后,設(shè)備廠商可以登錄IoT安全中心 AI算法保護模塊,查看算法授權(quán)信息。包括算法廠商名稱,算法模型名稱,LicenseID,授權(quán)有效期,以及授權(quán)額度等信息。

3.3.2 創(chuàng)建產(chǎn)品

  • 點擊資產(chǎn)管理-直連設(shè)備-創(chuàng)建產(chǎn)品,彈出創(chuàng)建產(chǎn)品的窗口,選擇我需要通過阿里云物聯(lián)網(wǎng)平臺,管理該產(chǎn)品下的設(shè)備。

image.png

  • 跳轉(zhuǎn)到物聯(lián)網(wǎng)平臺控制臺

  • 點擊選擇的實例,在左側(cè)導(dǎo)航欄,選擇設(shè)備管理 > 產(chǎn)品,單擊創(chuàng)建產(chǎn)品:

  • 選擇設(shè)備管理->設(shè)備,單擊添加設(shè)備

  • 查看設(shè)備詳細(xì),獲取設(shè)備證書(ProductKey、DeviceName、DeviceSecret)信息。

3.3.3 關(guān)聯(lián)產(chǎn)品

?

設(shè)備廠商首先完成產(chǎn)品創(chuàng)建,并記錄產(chǎn)品的productKey信息,通過此步驟完成算法授權(quán)和產(chǎn)品的關(guān)聯(lián)。完成該操作后,允許該產(chǎn)品下指定授權(quán)數(shù)量的IoT設(shè)備可以使用算法廠商所提供的算法。

  1. 選擇需要進行關(guān)聯(lián)的授權(quán)記錄,點擊關(guān)聯(lián)產(chǎn)品。

  2. 輸入需要關(guān)聯(lián)的產(chǎn)品ProductKey,如果還沒完成產(chǎn)品創(chuàng)建請先完成產(chǎn)品創(chuàng)建

  3. 點擊確認(rèn)按鈕完成產(chǎn)品關(guān)聯(lián)。

image.png

3.3.4 設(shè)備端對接

3.3.4.1 SAM SDK框架

image.png

  1. IoT Application:

  • 設(shè)備端需授權(quán)保護的應(yīng)用模塊,調(diào)用授權(quán)SDK接口進行許可鑒權(quán),通過LP Linkkit進行授權(quán)許可消息上報和下發(fā)。

  1. IoT Linkkit:

  • 阿里云物聯(lián)網(wǎng)平臺的接入SDK,提供IoT設(shè)備安全連接到阿里云IoT平臺,提供數(shù)據(jù)連云的安全通道,以及業(yè)務(wù)數(shù)據(jù)的管理。

  1. IoT安全SDK:

  • SAM:IoT授權(quán)許可模塊。

  • ID2:IoT設(shè)備認(rèn)證模塊,SDK v3.1.0及以上。

  • OSA:操作系統(tǒng)適配接口,廠商需根據(jù)使用的OS,重新進行接口適配。

  • HAL:硬件適配接口,提供算法庫和Soft-KM的適配接口,廠商需根據(jù)選擇的硬件平臺,重新進行接口適配。

3.3.4.2 SAM SDK獲取

  1. SAM SDK下載:

  1. SAM Release Package目錄:

目錄/文件

說明

app

測試用例,包括HAL和SAM

example

演示和試用代碼, 二級目錄說明如下:

deps: IoT Linkkit v2.3代碼,只用作演示;項目如有需要,通過官網(wǎng)下載

HTTP - 提供基于HTTP協(xié)議的試用工程,包括demo app、License管理配置和消息轉(zhuǎn)發(fā)

mqtt - 提供基于mqtt的端側(cè)示例代碼

include

頭文件

libs

靜態(tài)庫

makefile

編譯腳本

make.rules

編譯系統(tǒng)配置文件,可配置編譯工具鏈和編譯參數(shù)

sample

示例代碼,本地環(huán)境的性能測試和試用

src

需適配的OSA和HAL接口和參考實現(xiàn)

tools

內(nèi)容打包工具和配置模板

  • libs默認(rèn)提供ID2-KM載體的靜態(tài)庫,其他載體如ID2-SE,可基于已適配和驗證的ID2靜態(tài)庫進行替換,方法如下:

  • 獲取ID2-SE的靜態(tài)庫:libid2.a, libicrypt.a和libkm.a

  • 打包生成最終的ID2靜態(tài)庫:

    ar -x libid2.a
    ar -x libicrypt.a
    ar -x libkm.a
    ar rc libid2.a *.o
    ranlib libid2.a
    rm -rf *.o
    rm -rf libicrypt.a
    rm -rf libkm.a

3.3.4.3 SAM SDK適配

  1. OSA接口適配:

  • 實現(xiàn)src/osa/ls_osa.c中的接口:

  • 已提供Linux系統(tǒng)的參考實現(xiàn)?

?

  1. HAL接口適配:

  • ID2-KM載體:

  • KM HAL接口適配:

  • 實現(xiàn)deps/src/hal/km/demo/ls_hal_km.c中的接口:

  • 已提供Linux系統(tǒng)的參考實現(xiàn):

image.png

  • 單獨預(yù)留的KM安全分區(qū)大于2K, 且需保證在系統(tǒng)升級和重啟時,分區(qū)數(shù)據(jù)不被破壞。

  • ls_hal_get_id接口,需使用設(shè)備硬件唯一標(biāo)識。

  • SST HAL接口適配:

  • 實現(xiàn)deps/src/hal/sst/demo/ls_hal_sst.c中的接口:

  • 已提交Linux文件系統(tǒng)的參考實現(xiàn):

image.png

  • 需要配置到真實的存儲目錄,且需保證在系統(tǒng)升級和重啟時,分區(qū)數(shù)據(jù)不被破壞。

?

  • ID2-SE載體:

  • SST HAL接口適配:

  • 實現(xiàn)deps/src/hal/sst/demo/ls_hal_sst.c中的接口:

  • 已提供Linux文件系統(tǒng)的參考實現(xiàn):

image.png

  • 需要配置到真實的存儲目錄,且需保證在系統(tǒng)升級和重啟時,分區(qū)數(shù)據(jù)不被破壞。

?

  1. SDK接口測試:

  • 修改makefile.rules的編譯配置文件:

  • 配置目標(biāo)平臺(pLat := xxx)。

  • CROSS_COMPILE設(shè)置對應(yīng)的編譯工具鏈。

  • CFLAGS設(shè)置編譯的配置參數(shù)。

  • 執(zhí)行編譯"make clean & make"。

  • HAL適配接口測試:

  • 正確運行程序hal_app,可得到如下成功日志:

  • " ============================> HAL SST Test Pass.“

........

  • " ============================> HAL KM Test Pass.“ ->【只針對ID2-KM載體】

  • SAM接口單元測試:

  • 正確運行程序sam_test,可得到如下成功日志:

  • " =================>SAM Client Unit Test Pass.“

3.3.4.4 SAM SDK集成

  1. 授權(quán)初始化:

主要完成授權(quán)SDK的初始化、上行安全通道和上行消息事件的注冊,示例代碼如下:

#include "sam_api.h"

#define SAM_SST_PATH     "./"                       // 安全存儲路徑
#define SAM_DEV_UUID     "1234-5678-8765-4321"      // 設(shè)備唯一硬件標(biāo)識,如block id, chip id

static sam_context context = {0};

static int on_publish(const char *topic,
       const uint8_t *msg, uint32_t size, void *channel, const void *data)
{
     /*
      * TODO, Wrap and send SAM message through channel
      */
    
    return 0;
}

static void on_message(void *handle, void *channel, iotx_mqtt_event_msg_pt msg)
{
   if (!memcmp(SAM_SUB_TOPIC, ptopic_info->ptopic, ptopic_info->topic_len)) {
        sam_on_message(handle,
                       (uint8_t *)ptopic_info->payload,
                       (size_t)ptopic_info->payload_len);
    }

    return;
}

int License_Initiaze(char *product_name, char *device_name, void *channel)
{
    int ret = 0;
    sam_result result = SAM_SUCCESS;
    sam_config config;
    char pub_topic[128] = {0};
    char sub_topic[128] = {0};
 
    config.sst_path = SAM_SST_PATH;
    config.dev_uuid = SAM_DEV_UUID;
    config.timeout_ms = 10000;
    result = sam_set_config(&config);
    if (result != SAM_SUCCESS) {
        printf("sam set config fail, 0x%x\n", result);
        return -1;
    }
 
    result = sam_init_context(product_name, device_name, &context);
    if (result != SAM_SUCCESS) {
        printf("SAM init context fail, 0x%x\n", result);
        return -1;
    }

    result = sam_set_pub_handle(&context, on_publish, channel);
    if (result != SAM_SUCCESS) {
        printf("SAM set pub_handle fail, 0x%x\n", result);
        goto _out;
    }

    HAL_Snprintf(pub_topic, 128,
        SAM_PUB_TOPIC, product_name, device_name);
    HAL_Snprintf(sub_topic, 128,
        SAM_SUB_TOPIC, product_name, device_name);
    
    result = sam_set_pub_topic(&context, pub_topic);
    if (result != SAM_SUCCESS) {
        printf("SAM set pub topic fail, 0x%x\n", result);
        goto _out;
    }
    
    ret = IOT_MQTT_Subscribe(pclient,
              sub_topic, IOTX_MQTT_QOS1, on_message, &context);
    if (ret < 0) {
        printf("subscribe error");
        result = SAM_ERROR_GENERIC;
        goto _out;
    }

_out:
    if (result != SAM_SUCCESS) {
        sam_final_context(&context);
        return -1;
    } else {
        return 0;
    }
}

void License_Finalize(sam_context *context)
{
     sam_final_context(context);
}
  • product_name指產(chǎn)品標(biāo)識(需是LP ProductKey),device_name設(shè)備唯一標(biāo)識(可使用LP DeviceName,或其他設(shè)備硬件唯一標(biāo)識),在同個產(chǎn)品product_name下唯一。

  • 在調(diào)用授權(quán)初始化時,需先完成安全通道的創(chuàng)建,其中channel為安全通道的句柄。

  • 授權(quán)初始化在應(yīng)用/系統(tǒng)進程中,只需調(diào)用一次。

  • 注冊的上行通道pub_handle,只需完成消息的上報。

  • 根據(jù)安全通道協(xié)議的特性,完成授權(quán)下行消息的識別和處理(如MQTT消息訂閱)。

  • 可在sam_config中進行授權(quán)全局配置:

  • 設(shè)置請求超時時間(timeout_ms),超時時間有效值為1000ms - 20000ms, 當(dāng)timeout_ms = 0時,使用默認(rèn)的值10000ms。

  • 許可存儲目錄sst_path:SAM靜態(tài)庫集成時,使用HAL接口中設(shè)置,此處配置不生效。

  • 設(shè)備唯一標(biāo)識dev_uuid:SAM靜態(tài)庫集成時,使用HAL接口中設(shè)置,此處配置不生效。

  1. 授權(quán)內(nèi)容解密:

主要完成授權(quán)加密內(nèi)容的解密,接口中會自動觸發(fā)授權(quán)的申請、存儲、加載和校驗等動作,示例代碼如下:

int license_content_decrypt(sam_context *context,
          char *license_name, uint8_t *in, uint32_t in_len, uint8_t *out, uint32_t *out_len)
{
    sam_result result;
    sam_session session;
    uint32_t lic_err = 0;

    result = sam_open_session(context, &session, license_name);
    if (result != SAM_SUCCESS) {
        printf("SAM open session fail, 0x%x\n", result);
        return -1;
    }
    
    result = sam_on_decryption(&session, in, in_len, out, out_len);
    if (result != SAM_SUCCESS) {
        printf("sam_on_decryption, 0x%x\n", result);

        if (result == SAM_ERROR_LICENSE_ERROR) {
            sam_get_lic_error_code(&session, &lic_err);
            printf("license error code, %d\n", lic_err);
        }

        goto _out;;
    }

    result = SAM_SUCCESS;
    
_out:
    sam_close_session(&session);
    
    if (result != SAM_SUCCESS) {
        return -1;
    } else {
        return 0;
    }
}
  • sam_on_decryption接口中包含sam_chk_lic_rights(授權(quán)許可的申請、存儲和校驗等)。

  • license_name,即時License ID,使用內(nèi)容加密生成的許可文件名(不包含后綴),如不相同,程序會報錯。

  • sam_on_decryption中調(diào)用sam_chk_lic_rights觸發(fā)授權(quán)連云申請和校驗,因此sam_on_decryption同樣可能阻塞當(dāng)前線程,因此sam_on_decryption和下行消息的處理需在不同線程中。

?

  1. 注意事項:

  • SDK接口中product_name、device_name和license_name是字符串格式,有最大值限制(48、100、48)。

  • 配置的SDK的安全存儲目錄需預(yù)先創(chuàng)建,里面會保存授權(quán)相關(guān)的密鑰和許可,此目錄在正常使用、設(shè)備重啟和系統(tǒng)升級時不會被擦除。

  • 單機授權(quán)在授權(quán)申請,以及發(fā)現(xiàn)異常(如撤銷、過期、時間回滾等)會要求連網(wǎng)進行授權(quán)的云端校驗,如此時網(wǎng)絡(luò)不通/異常,接口sam_chk_lic_rights/sam_on_decryption會返回相應(yīng)的錯誤,可在應(yīng)用程序中顯示對應(yīng)的提示信息:

  • SAM_ERROR_REVOKED - 設(shè)備已經(jīng)被撤銷。

  • SAM_ERROR_LICENSE_ERROR - 設(shè)備授權(quán)錯誤,sam_get_lic_error_code獲得錯誤碼。

  • SAM_ERROR_TIMEOUT - 設(shè)備消息請求響應(yīng)超時。

  • SAM_ERROR_CONMMUNICATION - 設(shè)備消息上報錯誤,需要連網(wǎng)。

?

  1. 參考實現(xiàn):

  • 離線環(huán)境 - 內(nèi)容本地解密:

  • 示例代碼:Release Package/sample/sam/sam_sample.c

  • 可基于此,進行內(nèi)容解密的性能測試。

  • 聯(lián)網(wǎng)環(huán)境 - 授權(quán)許可下發(fā):

  • 示例代碼:sample/sam/mqtt_sam_sample.c

  • 授權(quán)服務(wù)已經(jīng)同LP打通,設(shè)備端可直接調(diào)用授權(quán)消息Topic進行授權(quán)許可消息的上報和下發(fā)。

  • 示例中的LP設(shè)備證書(ProductKey、DeviceName、DeviceSecret)和許可ID,需要替換成真實的數(shù)據(jù)。

  • LP Linkkit版本不同,Linkkit的接口可能不同,但授權(quán)消息Topic和調(diào)用接口保持不變。

  • LP Linkkit SDK獲取:

  • Linkkit v4.x:獲取C Link SDK

  • Linkkit其他發(fā)布版本:SDK獲取

3.3.5 調(diào)試驗證

  1. 軟件集成驗證:

  • 模塊集成SAM SDK后,在每次內(nèi)容解密時,接口內(nèi)部自動調(diào)用許可鑒權(quán)接口進行校驗。

  • 在內(nèi)容第一次解密時,由于設(shè)備上不存在許可緩存,因此需聯(lián)網(wǎng)申請和下發(fā)許可。

  • 當(dāng)設(shè)備上成功下發(fā)和存儲授權(quán)許可,通過許可鑒權(quán)時,且內(nèi)容解密成功,可通過日志查看許可信息:

image.png

  • License ID:許可唯一標(biāo)識,SDK初始化時,由sam_open_session接口參數(shù)license_name傳入。

  • License interval:許可的離線間隔,超過離線間隔,設(shè)備需再次聯(lián)網(wǎng)更新許可。

  • License usage left_time:許可的有效剩余時間,單位為毫秒。

  • License usage count:許可的有效使用次數(shù)。

  • CRC32:保護內(nèi)容的完整性校驗因子,解密后,通過CRC32校驗,說明內(nèi)容解密正確。

3.3.6 查看使用記錄

  1. 請點擊AI算法保護-使用記錄,可查看IoT設(shè)備連接云端平臺獲取授權(quán)的使用記錄信息。

  2. 數(shù)據(jù)總覽界面。

  3. 已擁有授權(quán):表示算法廠商為其授權(quán)的總配額信息。

  4. 已使用:表示設(shè)備廠商已經(jīng)使用的授權(quán)數(shù)量。