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

多方數(shù)據(jù)融合計(jì)算

全密態(tài)數(shù)據(jù)庫可以用于多方數(shù)據(jù)融合計(jì)算,支持?jǐn)?shù)據(jù)所有者授權(quán)第三方使用數(shù)據(jù)參與計(jì)算,實(shí)現(xiàn)聯(lián)合營銷等多種場景。

場景介紹

以某數(shù)據(jù)平臺(tái)公司業(yè)務(wù)場景為例,該平臺(tái)通過合法渠道,經(jīng)用戶授權(quán)后,收集了用戶信息,生成用戶畫像表(portrait),可以授權(quán)第三方(例如保險(xiǎn)公司)使用數(shù)據(jù)進(jìn)行多方數(shù)據(jù)融合計(jì)算,實(shí)現(xiàn)聯(lián)合營銷。

手機(jī)號(hào)(phone)

年齡(age)

是否有車(have_car)

年消費(fèi)金額(annual_consume)

13900001111

29

N

20000

13900002222

34

Y

10000

說明

上表中數(shù)據(jù)僅為示例。

保險(xiǎn)公司希望借助數(shù)據(jù)平臺(tái)公司的數(shù)據(jù),幫助保險(xiǎn)公司發(fā)展?jié)撛谟脩?,例如向有車一族定向推送車輛保險(xiǎn)。

聯(lián)合查詢應(yīng)滿足:

  • 未授權(quán)時(shí),聯(lián)合查詢SQL失敗,提示無權(quán)限。

  • 簽發(fā)BCL查詢授權(quán),聯(lián)合查詢SQL成功,并返回密文結(jié)果。

  • 簽發(fā)BCL解密授權(quán),授權(quán)結(jié)果方可以解密得到明文結(jié)果。

多方數(shù)據(jù)融合計(jì)算流程示例

本文以個(gè)人隱私保護(hù)中的保險(xiǎn)公司為例進(jìn)行舉例,請(qǐng)先參見個(gè)人隱私保護(hù)完成相關(guān)配置。

數(shù)據(jù)平臺(tái)公司

  1. DBA創(chuàng)建用戶和數(shù)據(jù)庫表。

    -------- 創(chuàng)建用戶 --------
    -- 數(shù)據(jù)平臺(tái)公司
    CREATE USER ly;
    -- 為數(shù)據(jù)平臺(tái)公司創(chuàng)建用戶畫像表
    CREATE TABLE portrait (
        phone enc_text,
        age enc_int4,
        have_car enc_text,
        annual_consume enc_int8
    );
    -- 授權(quán)數(shù)據(jù)平臺(tái)公司訪問數(shù)據(jù)表
    GRANT ALL ON portrait TO ly;
  2. 注冊(cè)數(shù)據(jù)平臺(tái)公司賬號(hào)。

    說明

    EncDB Tool工具將會(huì)基于傳入的參數(shù)自動(dòng)生成SQL語句,您需要將生成的SQL在數(shù)據(jù)庫中執(zhí)行。

    ./genEncdbSQLCommand.sh -r MEK_PROVISION --mek sample/default_mek_ly.bin -e default_enclave_public_key.pem -c ${cipher_suite}
    
    # 獲取數(shù)據(jù)平臺(tái)公司MEKID,可以通過SQL查詢獲得:SELECT encdb_get_current_mek_id();
    # 本文以6953973016013340672為例
    mekid_ly = 6953973016013340672
    ./genEncdbSQLCommand.sh -r BCL_REGISTER --mekid ${mekid_ly} --mek sample/default_mek_ly.bin --puk sample/usr_puk_ly.pem --pri sample/usr_pri_ly.pem -c ${cipher_suite}
  3. 平臺(tái)公司為用戶畫像表創(chuàng)建加密密鑰。

    說明
    • 如下命令需使用ly用戶執(zhí)行。

    • 命令中的encdb.dek_xxx()encdb.keyname_xxx()為類型轉(zhuǎn)換函數(shù),更多用法,請(qǐng)參見類型轉(zhuǎn)換函數(shù)說明。

    -- 創(chuàng)建一個(gè)dek,記錄groupid,例如 fd89d386-ee00-4e0e-9e5f-66efb4c124aa
    SELECT encdb.dek_generate(encdb.keyname_generate('ly','demo','public','portrait','phone'));
    
    -- 此處僅為示例,同步給所有列,即共用一個(gè)dek
    SELECT encdb.dek_copy_keyname(encdb.keyname_generate('ly','demo','public','portrait','age'),encdb.keyname_generate('ly','demo','public','portrait','phone'));
    SELECT encdb.dek_copy_keyname(encdb.keyname_generate('ly','demo','public','portrait','have_car'),encdb.keyname_generate('ly','demo','public','portrait','phone'));
    SELECT encdb.dek_copy_keyname(encdb.keyname_generate('ly','demo','public','portrait','annual_consume'),encdb.keyname_generate('ly','demo','public','portrait','phone'));

    正常情況下,不允許用戶直接通過SQL加密數(shù)據(jù)(不安全),用戶需要明確授權(quán)該行為。

    1. 編輯BCL內(nèi)容,將目標(biāo)dek的授權(quán)范圍(包括groupid)更新到BCL中。

      ./setGroupIdBCL.sh -l fd89d386-ee00-4e0e-9e5f-66efb4c124aa
      說明

      本示例中的fd89d386-ee00-4e0e-9e5f-66efb4c124aa僅為示例,實(shí)際取值請(qǐng)從如下命令中獲取:

      SELECT encdb.dek_generate(encdb.keyname_generate('ly','demo','public','portrait','phone'));
    2. 簽發(fā)BCL。

      ./genEncdbSQLCommand.sh -r BCL_ISSUE --subject_sign --spriv sample/usr_pri_ly.pem --spuk sample/usr_puk_ly.pem --ipuk sample/usr_puk_ly.pem --bcl sample/bcl_for_ly_insert.txt -c ${cipher_suite}
      ./genEncdbSQLCommand.sh -r BCL_ISSUE --issuer_sign --ipriv sample/usr_pri_ly.pem --spuk sample/usr_puk_ly.pem --ipuk sample/usr_puk_ly.pem --bcl sample/bcl_for_ly_insert.txt -c ${cipher_suite}
  4. 數(shù)據(jù)平臺(tái)公司寫入數(shù)據(jù)。

    說明

    如下命令需使用ly用戶執(zhí)行。

    INSERT INTO portrait VALUES(encdb.enc_text_encrypt('13900001111',encdb.keyname_generate('ly','demo','public','portrait','phone')),
                                encdb.enc_int4_encrypt('29',encdb.keyname_generate('ly','demo','public','portrait','age')),
                                encdb.enc_text_encrypt('N',encdb.keyname_generate('ly','demo','public','portrait','have_car')),
                                encdb.enc_int8_encrypt('2',encdb.keyname_generate('ly','demo','public','portrait','annual_consume')));
    INSERT INTO portrait VALUES(encdb.enc_text_encrypt('13900002222',encdb.keyname_generate('ly','demo','public','portrait','phone')),
                                encdb.enc_int4_encrypt('34',encdb.keyname_generate('ly','demo','public','portrait','age')),
                                encdb.enc_text_encrypt('Y',encdb.keyname_generate('ly','demo','public','portrait','have_car')),
                                encdb.enc_int8_encrypt('1',encdb.keyname_generate('ly','demo','public','portrait','annual_consume')));

保險(xiǎn)公司

保險(xiǎn)公司銷售部門為了向有車一族推送車輛保險(xiǎn),發(fā)起聯(lián)合查詢:

SELECT * FROM person ps JOIN portrait pt ON ps.phone = pt.phone WHERE hava_car = 'Y';
  1. 保險(xiǎn)公司銷售部門授權(quán)encrypt權(quán)限。

    1. 編輯BCL內(nèi)容,將目標(biāo)dek的授權(quán)范圍(包括groupid)更新到BCL中。

      ./setGroupIdBCL.sh -s 7903d109-f3e0-4f3e-b815-3682cb8bd6db
      說明

      本示例中的7903d109-f3e0-4f3e-b815-3682cb8bd6db僅為示例,銷售使用默認(rèn)密鑰進(jìn)行加密,對(duì)應(yīng)groupid可以通過如下命令查詢:

      # 獲取銷售部門賬號(hào)MEKID,以2715553450389700608為例
      SELECT encdb_get_current_mek_id(); 
      
      # 獲取groupid
      SELECT groupid FROM encdb.encdb_internal_dek_table WHERE mekid = 2715553450389700608;
    2. 簽發(fā)BCL。

    ./genEncdbSQLCommand.sh -r BCL_ISSUE --subject_sign --spriv sample/usr_pri_sale.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_sale.pem --bcl sample/bcl_for_sale_insert.txt -c ${cipher_suite}
    ./genEncdbSQLCommand.sh -r BCL_ISSUE --issuer_sign --ipriv sample/usr_pri_sale.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_sale.pem --bcl sample/bcl_for_sale_insert.txt -c ${cipher_suite}
  2. 保險(xiǎn)公司銷售部門查詢數(shù)據(jù)。

    • 銷售部門未得到數(shù)據(jù)平臺(tái)公司授權(quán),使用數(shù)據(jù)平臺(tái)公司數(shù)據(jù):

      說明

      如下命令需使用ins_sale用戶執(zhí)行。

      SELECT * FROM person ps JOIN portrait pt ON ps.phone = pt.phone WHERE pt.have_car = encdb.enc_text_encrypt('Y',encdb.keyname_generate('ins_sale','demo', Null, Null, Null));
       WARNING:  -- encdb -- -- Untrusted log -- 4 - src/core/untrusted/src/encdb_untrusted_enclave.cpp,256,encdb_ecall: Select BCL (subject_mekid: 2715553450389700608, issuer_mekid: 6953973016013340672) from table fail - returned 0xfa030000
       ERROR:  pg_enc_cmp_eq: encrypted type equal errno: fa030000
      說明

      如果出現(xiàn)ERROR: permission denied for table portrait的錯(cuò)誤時(shí),執(zhí)行GRANT SELECT ON portrait TO ins_sale;授權(quán)訪問表。

    • 銷售部門獲得數(shù)據(jù)平臺(tái)公司及數(shù)據(jù)部門授權(quán)后,使用數(shù)據(jù)平臺(tái)公司數(shù)據(jù)。

      1. 銷售部門向平臺(tái)公司發(fā)起授權(quán),平臺(tái)公司審批后,簽發(fā)授權(quán)。

        # 銷售部門發(fā)起授權(quán)請(qǐng)求:SUBJECT申請(qǐng)方簽名確認(rèn)
        ./genEncdbSQLCommand.sh -r BCL_ISSUE --subject_sign --spriv sample/usr_pri_sale.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_ly.pem --bcl sample/bcl_ly_for_sale_select.txt -c ${cipher_suite}
        # 平臺(tái)公司審批后確認(rèn)授權(quán)、并簽發(fā)BCL:ISSUER授權(quán)方簽名確認(rèn)
        ./genEncdbSQLCommand.sh -r BCL_ISSUE --issuer_sign --ipriv sample/usr_pri_ly.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_ly.pem --bcl sample/bcl_ly_for_sale_select.txt -c ${cipher_suite}
      2. 銷售部門向數(shù)據(jù)部門發(fā)起授權(quán),數(shù)據(jù)部門審批后,簽發(fā)授權(quán)。

        # 銷售部門發(fā)起授權(quán)請(qǐng)求:SUBJECT申請(qǐng)方簽名確認(rèn)
        ./genEncdbSQLCommand.sh -r BCL_ISSUE --subject_sign --spriv sample/usr_pri_sale.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_data.pem --bcl sample/bcl_data_for_sale_select.txt -c ${cipher_suite}
        # 數(shù)據(jù)部門審批后確認(rèn)授權(quán)、并簽發(fā)BCL:ISSUER授權(quán)方簽名確認(rèn)
        ./genEncdbSQLCommand.sh -r BCL_ISSUE --issuer_sign --ipriv sample/usr_pri_data.pem --spuk sample/usr_puk_sale.pem --ipuk sample/usr_puk_data.pem --bcl sample/bcl_data_for_sale_select.txt -c ${cipher_suite}
      3. 銷售部門可以正確執(zhí)行聯(lián)合查詢拿到密文計(jì)算結(jié)果。

        說明

        如下命令需使用ins_sale用戶執(zhí)行。

        SELECT * FROM person ps JOIN portrait pt ON ps.phone = pt.phone WHERE pt.have_car = encdb.enc_text_encrypt('Y',encdb.keyname_generate('ins_sale','demo', Null, Null, Null));
        -- 可以查詢得到聯(lián)合查詢密文結(jié)果