衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

存儲(chǔ)密鑰與文件加密密鑰介紹

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-11-21 11:43 ? 次閱讀

可信應(yīng)用的存儲(chǔ)密鑰

可信應(yīng)用的存儲(chǔ)密鑰(Trusted Applicant Storage Key, TSK)是生成FEK時(shí)使用到的密鑰。

TSK是使用SSK作為密鑰對(duì)TA的UUID經(jīng)HMAC計(jì)算獲得,類似于HMAC(SSK, UUID)的方式生成TSK。

在調(diào)用tee_fs_fek_crypt函數(shù)時(shí)會(huì)計(jì)算TSK的值。TSK最終會(huì)被用來(lái)生成FEK, FEK會(huì)在使用安全存儲(chǔ)功能保存數(shù)據(jù)時(shí)被用來(lái)加密數(shù)據(jù)。

圖片

文件加密密鑰

文件加密密鑰(File Encryption Key, FEK)是安全存儲(chǔ)功能用于對(duì)數(shù)據(jù)進(jìn)行加密時(shí)使用的AES密鑰,該密鑰在生成文件時(shí)會(huì) 使用PRNG算法隨機(jī)產(chǎn)生 ,產(chǎn)生的 FEK會(huì)使用TSK進(jìn)行加密 ,然后保存到head.enc_fek變量中。

(PRNGPRNG(pseudorandom number generator)偽隨機(jī)數(shù)生成器是指通過(guò)特定算法生成一系列的數(shù)字,使得這一系列的數(shù)字看起來(lái)是隨機(jī)的,但是實(shí)際是確定的,所以叫偽隨機(jī)數(shù)。)

TA在每次使用 安全存儲(chǔ)功能創(chuàng)建一個(gè)安全文件時(shí)就會(huì)生成一個(gè)隨機(jī)數(shù)作為FEK ,即每個(gè)TA 中的每個(gè)安全文件都有一個(gè)FEK用于加密對(duì)應(yīng)文件中的數(shù)據(jù) 。(安全加倍啊)

關(guān)于FEK的產(chǎn)生可簡(jiǎn)單理解為如下公式,使用的初始化向量IV值為0:

AES_CBC(in_key, TSK)

OP-TEE通過(guò)調(diào)用tee_fs_fek_crypt函數(shù)來(lái)生成一個(gè)FEK,該函數(shù)代碼如下:

TEE_Result tee_fs_fek_crypt(const TEE_UUID *uuid, TEE_OperationMode mode,
                      const uint8_t *in_key, size_t size,
                      uint8_t *out_key)
        {
            TEE_Result res;
            uint8_t *ctx = NULL;
            size_t ctx_size;
            uint8_t tsk[TEE_FS_KM_TSK_SIZE];
            uint8_t dst_key[size];
            /* 檢查輸入的用于生成FEK的隨機(jī)數(shù)in_key和用于存放生成的out_key地址是否合法 */
            if (! in_key || ! out_key)
                return TEE_ERROR_BAD_PARAMETERS;
            /* 檢查in_key長(zhǎng)度 */
            if (size ! = TEE_FS_KM_FEK_SIZE)
                return TEE_ERROR_BAD_PARAMETERS;
            /* 判定SSK是否已經(jīng)被初始化 */
            if (tee_fs_ssk.is_init == 0)
                return TEE_ERROR_GENERIC;
            /* 如果調(diào)用時(shí)參數(shù)uuid不為0,則調(diào)用HMAC算法生成TSK。如果UUID的值為0,則默認(rèn)生成TSK
            使用的原始數(shù)據(jù)為0 */
            if (uuid) {
                res = do_hmac(tsk, sizeof(tsk), tee_fs_ssk.key,
                          TEE_FS_KM_SSK_SIZE, uuid, sizeof(*uuid));
                if (res ! = TEE_SUCCESS)
                    return res;
            } else {
                uint8_t dummy[1] = { 0 };
                res = do_hmac(tsk, sizeof(tsk), tee_fs_ssk.key,
                          TEE_FS_KM_SSK_SIZE, dummy, sizeof(dummy));
                if (res ! = TEE_SUCCESS)
                      return res;
              }
              /* 獲取調(diào)用AEC_CBC操作需要的context的大小 */
              res = crypto_ops.cipher.get_ctx_size(TEE_FS_KM_ENC_FEK_ALG, &ctx_size);
              if (res ! = TEE_SUCCESS)
                  return res;
              /* 分配一份進(jìn)行AES_CBC操作時(shí)需要的context空間 */
              ctx = malloc(ctx_size);
              if (! ctx)
                  return TEE_ERROR_OUT_OF_MEMORY;
              /* 使用TSK作為進(jìn)行AES_CBC計(jì)算使用的key,而IV值默認(rèn)為0 */
              res = crypto_ops.cipher.init(ctx, TEE_FS_KM_ENC_FEK_ALG, mode, tsk,
                              sizeof(tsk), NULL, 0, NULL, 0);
              if (res ! = TEE_SUCCESS)
                  goto exit;
              /* 將輸入的in_key填充到context中,做完AES_CBC操作之后,輸出的數(shù)據(jù)將會(huì)被保存到dst_
              key中 */
              res = crypto_ops.cipher.update(ctx, TEE_FS_KM_ENC_FEK_ALG,
                      mode, true, in_key, size, dst_key);
              if (res ! = TEE_SUCCESS)
                  goto exit;
              /* 執(zhí)行AES_CBC的加密運(yùn)算,生成FEK */
              crypto_ops.cipher.final(ctx, TEE_FS_KM_ENC_FEK_ALG);
              /* 將生成的FEK的值復(fù)制到輸出參數(shù)中 */
              memcpy(out_key, dst_key, sizeof(dst_key));
          exit:
              free(ctx);
              return res;
          }
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4353

    瀏覽量

    86169
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3846

    瀏覽量

    64685
  • 密鑰
    +關(guān)注

    關(guān)注

    1

    文章

    141

    瀏覽量

    19851
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)CYW20719是否支持“加密密鑰大小控制增強(qiáng)”?

    CYW20719 是否支持“加密密鑰大小控制增強(qiáng)”此 BT 5.3 功能?
    發(fā)表于 07-05 07:04

    BF70x加密密鑰的產(chǎn)生步驟

    BF70X系列幫助文件中中提到BF70x的加密密鑰的產(chǎn)生步驟,起初按照方法始終無(wú)法成功,現(xiàn)將成功版本進(jìn)行一次分享步驟1:官網(wǎng)下載Python2.7.7版本并安裝至相應(yīng)的英文目錄下;步驟2:將
    發(fā)表于 03-05 14:19

    請(qǐng)問(wèn)如何才能安全地存儲(chǔ)加密密鑰

    大家好!我用的是PIC32MZ2048EFM144。我需要安全地存儲(chǔ)加密密鑰。我知道這個(gè)PIC有一個(gè)密碼引擎,但是顯然,它不像PIC24密碼引擎,它不存儲(chǔ)密鑰。你能告訴我如何安全地
    發(fā)表于 06-13 08:24

    NAS網(wǎng)絡(luò)存儲(chǔ)上如何創(chuàng)建和使用加密文件夾?

    文件夾,輸入加密密鑰并選擇是否啟用回收站; 4.為加密文件夾設(shè)置訪問(wèn)權(quán)限,點(diǎn)擊下一步; 5.確認(rèn)設(shè)置后請(qǐng)點(diǎn)擊創(chuàng)建; 備注:為了保證你的數(shù)據(jù)安全,在使用完畢后,請(qǐng)將
    發(fā)表于 09-24 11:00

    介紹一種芯片AES加密密鑰生成工具

    芯片AES加密密鑰生成工具前言:嵌入式單片機(jī)開(kāi)發(fā),為了防止別人將芯片內(nèi)的代碼讀取出來(lái)通過(guò)反編譯手段拿到源碼,常用的手段是對(duì)芯片和燒錄文件進(jìn)行加密。大部分的芯片廠商都會(huì)提供一個(gè)加密燒錄和
    發(fā)表于 02-14 06:43

    什么是秘密密鑰密碼技術(shù)

    什么是秘密密鑰密碼技術(shù) 秘密密鑰加密使用一個(gè)密鑰,即秘密密鑰,既進(jìn)行加密又進(jìn)行解密消息,這也稱
    發(fā)表于 03-20 15:50 ?2975次閱讀

    密鑰加密方法大全

    密鑰加密方法大全 密鑰加密技術(shù)用于加密和解密數(shù)據(jù)。密鑰是與
    發(fā)表于 03-20 15:54 ?2989次閱讀

    一種自主群組密鑰管理方案

    針對(duì)分布式網(wǎng)絡(luò)群組密鑰更新中非更新成員參與共享密鑰計(jì)算增加交互延時(shí)問(wèn)題,提出一種自主密鑰更新模型,通過(guò)DH協(xié)議和多項(xiàng)式設(shè)計(jì)一種自主群組密鑰管理方案,具有單
    發(fā)表于 12-05 09:17 ?0次下載
    一種自主群組<b class='flag-5'>密鑰</b>管理方案

    明文存儲(chǔ)的Signal Desktop 應(yīng)用程序消息解密密鑰

    逆向工程研究員納撒尼爾·蘇西(Nathaniel Suchy)發(fā)現(xiàn),SignalDesktop應(yīng)用程序明文儲(chǔ)存消息解密密鑰,將密鑰暴露于黑客攻擊之下。
    的頭像 發(fā)表于 10-28 09:28 ?3825次閱讀
    明文<b class='flag-5'>存儲(chǔ)</b>的Signal Desktop 應(yīng)用程序消息解<b class='flag-5'>密密鑰</b>

    賽靈思研發(fā)提供能生成獨(dú)特的器件“指紋碼”的密鑰加密密鑰

    賽靈思的最新 PUF IP 由 Verayo 提供,能生成獨(dú)特的器件“指紋碼”,也就是只有器件自己知道的具有強(qiáng)大加密功能的密鑰加密密鑰(KEK)。PUF 利用 CMOS 制造工藝變量?jī)?yōu)勢(shì)(諸如閾值電壓、氧化物厚度、金屬外形、電阻
    的頭像 發(fā)表于 07-30 09:22 ?2749次閱讀

    芯片AES加密密鑰生成工具

    芯片AES加密密鑰生成工具前言:嵌入式單片機(jī)開(kāi)發(fā),為了防止別人將芯片內(nèi)的代碼讀取出來(lái)通過(guò)反編譯手段拿到源碼,常用的手段是對(duì)芯片和燒錄文件進(jìn)行加密。大部分的芯片廠商都會(huì)提供一個(gè)加密燒錄和
    發(fā)表于 12-09 14:36 ?6次下載
    芯片AES<b class='flag-5'>加密密鑰</b>生成工具

    量子物理學(xué)啟用下一個(gè)加密密鑰

    加密的強(qiáng)度在很大程度上取決于加密密鑰的質(zhì)量。QuintessenceLabs 是一家使用量子物理學(xué)構(gòu)建更強(qiáng)大的數(shù)據(jù)安全工具的澳大利亞網(wǎng)絡(luò)安全公司,它開(kāi)發(fā)了一個(gè) qStream 量子隨機(jī)數(shù)生成器 (QRNG),它提供具有全熵的加密密鑰
    的頭像 發(fā)表于 07-26 16:35 ?1371次閱讀
    量子物理學(xué)啟用下一個(gè)<b class='flag-5'>加密密鑰</b>

    密鑰分層管理體制

    密鑰用于加密密鑰交換密鑰和數(shù)據(jù)密鑰作本地存儲(chǔ)
    的頭像 發(fā)表于 01-24 10:05 ?878次閱讀
    <b class='flag-5'>密鑰</b>分層管理體制

    鴻蒙開(kāi)發(fā):Universal Keystore Kit 密鑰管理服務(wù) 加密導(dǎo)入密鑰 ArkTS

    加密導(dǎo)入ECDH密鑰對(duì)為例,涉及業(yè)務(wù)側(cè)加密密鑰的[密鑰生成]、[協(xié)商])等操作不在本示例中體現(xiàn)。
    的頭像 發(fā)表于 07-08 14:22 ?423次閱讀
    鴻蒙開(kāi)發(fā):Universal Keystore Kit <b class='flag-5'>密鑰</b>管理服務(wù) <b class='flag-5'>加密</b>導(dǎo)入<b class='flag-5'>密鑰</b> ArkTS

    鴻蒙開(kāi)發(fā):Universal Keystore Kit密鑰管理服務(wù) 加密導(dǎo)入密鑰C、C++

    加密導(dǎo)入ECDH密鑰對(duì)為例,涉及業(yè)務(wù)側(cè)加密密鑰的[密鑰生成]、[協(xié)商]等操作不在本示例中體現(xiàn)。
    的頭像 發(fā)表于 07-08 15:26 ?421次閱讀
    鴻蒙開(kāi)發(fā):Universal Keystore Kit<b class='flag-5'>密鑰</b>管理服務(wù) <b class='flag-5'>加密</b>導(dǎo)入<b class='flag-5'>密鑰</b>C、C++
    百家乐代理在线游戏可信吗网上哪家平台信誉好安全 | 水果机器| 永康百家乐官网赌博| 百家乐分析仪有真的吗| 新田县| 网上百家乐投注法| 娱乐城注册送18| 单耳房做生意的风水| 78棋牌游戏| 在线百家乐官网策略| 顶级赌场371betcwm| 大世界百家乐官网娱乐网| 大发888娱乐场 注册| 百家乐官网羸钱法| 大发888真人网站| A8百家乐官网的玩法技巧和规则 | 龙博线上娱乐| 风水上看做生意养金毛好吗| 外围博彩| 百家乐博彩博彩网| 金山区| 百家乐赌博详解| 线上百家乐官网开户| 威尼斯人娱乐城| 百家乐官网出千手法| 大发888娱乐场下载英皇国际| 苹果百家乐官网的玩法技巧和规则| 元游棋牌游戏大厅| 七乐百家乐现金网| 广丰县| 月华百家乐的玩法技巧和规则| 至尊百家乐官网网| 大发888 王博| 百家乐规则博彩正网| 网上百家乐官网注册彩金| 网上百家乐游戏哪家信誉度最好| 电脑赌百家乐官网可靠吗| 芝加哥百家乐的玩法技巧和规则| 如何玩百家乐官网赢钱技巧| 察哈| 威尼斯人娱乐城官方网|