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

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

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

一文看懂碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品應(yīng)用(二): 國密算法●中篇

碼靈半導(dǎo)體 ? 2022-06-06 18:06 ? 次閱讀

歡迎再次來到“碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品應(yīng)用介紹”連載專題。通過上期對CFW32C7UL系列支持的國密算法種類的介紹,相信您對CFW327UL系列的國密硬件模塊有了初步了解,那么這些國密模塊如何使用?應(yīng)用是否便捷?加解密的速度如何?帶著這些疑問,我們今天從真隨機數(shù)發(fā)生器TRNG和SM3算法模塊的調(diào)用開始談起。

一、真隨機數(shù)發(fā)生器TRNG模塊
說到隨機,有兩個必須要搞清楚的概念即“真隨機數(shù)生成器”(TRNG)和偽隨機數(shù)生成器(PRNG)。大部分計算機程序和語言中的隨機函數(shù),都是偽隨機數(shù)生成器,它們都是由確定的算法,通過一個“種子”(如“時間”)來產(chǎn)生“看起來隨機”的結(jié)果值。毫無疑問,只要知道算法和種子,或者是之前已經(jīng)產(chǎn)生了的隨機數(shù),那么就有可能獲得接下來隨機數(shù)序列的信息,因此它們帶有可預(yù)測性。這種可預(yù)測性在密碼學(xué)上并不安全,所以我們稱其為“偽隨機”。
與“偽隨機”相對應(yīng)的是“真隨機”,真正的隨機數(shù)僅存在于量子力學(xué)中,而我們需要的是一種不可預(yù)測的、統(tǒng)計意義上的、高安全性的隨機數(shù)。在碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品中我們提供了四組這種真隨機數(shù)源,用以產(chǎn)生真隨機數(shù),同時該功能模塊是采用硬件方式實現(xiàn)的,并且通過了NIST統(tǒng)計檢測程序的隨機性測試。
下面我們具體介紹下CFW32C7UL系列產(chǎn)品的真隨機數(shù)發(fā)生器TRNG模塊是如何通過碼靈半導(dǎo)體官方提供的SDK函數(shù)來進行調(diào)用的。目前碼靈半導(dǎo)體官方提供了兩種SDK,即裸機SDK和Linux SDK。
開發(fā)模式一:裸機SDK
裸機SDK與提供的freeRTOSuCOS SDK中相同。
① 產(chǎn)生一個真隨機數(shù)
調(diào)用HAL_TRNG_GetValue()
uint32_t HAL_TRNG_GetValue() 函數(shù)返回值為一個真隨機數(shù)
② 使用范例
uint32_t random = HAL_TRNG_GetValue();
單個函數(shù)看不出硬件實現(xiàn)和軟件實現(xiàn)有什么不同,那下面展現(xiàn)一下函數(shù)源碼:
uint32_t HAL_HRNG_GetValue()
{
uint32_t ret;
HRNG->CMPRES = 0x02;
HRNG->CTRL |= (HRNG_CTRL_RNG_EN0 | HRNG_CTRL_RNG_EN1 | HRNG_CTRL_RNG_EN2 | HRNG_CTRL_RNG_EN3 | HRNG_CTRL_SCLK_SEL);
while((HRNG->STATUS& HRNG_STATUS_FIFO_NOT_EMPTY) ==0);
ret= HRNG->LFSR;
return ret;
}
上面所述的就是對寄存器HRNG->CMPRE、HRNG->CTRL進行一個配置后,等待HRNG->STATUS,之后HRNG->LFSR寄存器中取出隨機數(shù)。
開發(fā)模式二:Linux SDK
通過操作linux系統(tǒng)中/dev/wokoo_trng,就可以進行產(chǎn)生真隨機數(shù)。
① TRNG算法底層接口
? open:打開設(shè)備節(jié)點
? read:讀取隨機數(shù)的數(shù)據(jù)
② 接口描述
? open
函數(shù)原型:static int uac_open(struct inode *inode, struct file * file)
參數(shù):file:文件名
返回值:成功0,其它失敗
? read
函數(shù)原型:static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
參數(shù):file:文件名,buffer:讀出數(shù)據(jù)緩存,size:讀出數(shù)據(jù)長度
返回值:成功0,其它失敗
③ 使用示例
trng_fd = open("/dev/wokoo_trng", O_RDWR); //打開trng的節(jié)點
read(trng_fd, (unsigned char *)&trng_data, 1); //讀取真隨機數(shù)
CFW32C7UL系列的TRNG效率
目前碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品產(chǎn)生隨機數(shù)的速率是75kb/s,每秒可以產(chǎn)生75kb的真隨機數(shù)。
二、SM3雜湊硬件算法模塊
SM3算法為國密雜湊算法,數(shù)據(jù)分組長度為512bit,雜湊值長度為256bit?;具\算流程為:對輸入數(shù)據(jù)流做填充,構(gòu)成整數(shù)個512bit長度的數(shù)據(jù)流;再對數(shù)據(jù)做分組;然后對每個分組做擴展和替換壓縮操作,得到中間的臨時雜湊值,反復(fù)進行直到所有分組處理完畢,最后一個計算得到的雜湊值作為整個數(shù)據(jù)流的最終雜湊值輸出。
開發(fā)模式一:裸機SDK
調(diào)用SM3_Hash產(chǎn)生SM3 最終hash 值。
void SM3_Hash(uint32_t *pDataIn,uint32_t DataLen,uint32_t *pDigest)
① 函數(shù)參數(shù)說明
pDataIn: 輸入的數(shù)據(jù)指針( big endian)
DataLen :數(shù)據(jù)的bit 長度
pDigest: 輸出的最終hash值
② 使用范例
SM3_Hash (message,32,tempbuf);
//message 是原始數(shù)據(jù),數(shù)據(jù)長度為32,tempbuf是產(chǎn)生的256位hash值
開發(fā)模式二:Linux SDK
通過操作linux系統(tǒng)中/dev/wokoo_sm3 ,就可以進行SM3雜湊算法的運算。
① SM3算法底層接口
? open:打開設(shè)備節(jié)點
? read:讀取加密后的數(shù)據(jù)
? write:寫入加密的數(shù)據(jù)
② 接口描述
? Open
函數(shù)原型: static int uac_open(struct inode *inode, struct file * file)
參數(shù):file:文件名
返回值:成功0,其它失敗
? Read
函數(shù)原型:static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
參數(shù):file:文件名,buffer:讀出數(shù)據(jù)緩存,size:讀出數(shù)據(jù)長度
返回值:成功0,其它失敗
? Write
函數(shù)原型: static ssize_t uac_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
參數(shù):file:文件名,buf:寫入數(shù)據(jù)緩存,count:寫入數(shù)據(jù)長度
返回值:成功0,其它失敗
③ 使用示例
sm3_fd = open("/dev/wokoo_sm3", O_RDWR); //打開sm3節(jié)點
write(sm3_fd, &sm3_data.datain, sm3_data.datalen); //寫入需雜湊的數(shù)據(jù)
read(sm3_fd, &sm3_data.dataout, NULL); //讀出雜湊完的結(jié)果
CFW32C7UL系列SM3算法的效率
通過輸入128KB數(shù)據(jù),完成雜湊運算后輸出運算結(jié)果,統(tǒng)計時間如下圖

在這里插入圖片描述

目前碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品可以實現(xiàn)45Mbps的雜湊速率。
通過以上對CFW32C7UL系列產(chǎn)品的真隨機數(shù)發(fā)生器TRNG和SM3算法模塊的介紹,相信大家對國密模塊的如何使用有了初步了解,那么SM2和SM4算法在CFW32C7UL系列產(chǎn)品中如何具體使用呢?讓我們帶著這些問題,在下期中繼續(xù)探尋吧。
今天的專題就到這兒,更多關(guān)于碼靈半導(dǎo)體CFW32C7UL系列產(chǎn)品的介紹,我們下期見!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49674

    瀏覽量

    417331
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16681

    瀏覽量

    347908
  • MPU
    MPU
    +關(guān)注

    關(guān)注

    0

    文章

    333

    瀏覽量

    48611
  • 掃碼
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    5078
收藏 人收藏

    評論

    相關(guān)推薦

    【展會預(yù)告】半導(dǎo)體@上海工博會(IAS)

    亮相本次展會,并在ETG聯(lián)合展臺(展位:6.1H-D129)帶來產(chǎn)品展示。展品方面,此次半導(dǎo)體將攜CF110x系列EtherCAT從站控
    的頭像 發(fā)表于 09-12 08:07 ?117次閱讀
    【展會預(yù)告】<b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導(dǎo)體</b>@上海工博會(IAS)

    半導(dǎo)體攜眾多產(chǎn)品及EtherCAT方案精彩亮相2024深圳國際電子展

    作為亞太地區(qū)頗具影響力的前沿科技成果展會,elexcon2024深圳國際電子展已于8月27日盛大開幕,半導(dǎo)體攜帶最新產(chǎn)品以及豐富的行業(yè)應(yīng)用解決方案精彩亮相。2024深圳國際電子展于
    的頭像 發(fā)表于 08-30 12:44 ?252次閱讀
    <b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導(dǎo)體</b>攜眾多<b class='flag-5'>產(chǎn)品</b>及EtherCAT方案精彩亮相2024深圳國際電子展

    紫光芯攜存儲系列產(chǎn)品出席2024慕尼黑上海電子展

    2024年7月8日至10日,西安紫光半導(dǎo)體股份有限公司(簡稱:紫光芯,證券代碼:874451)精彩亮相慕尼黑上海電子展。紫光芯聚焦人
    的頭像 發(fā)表于 07-11 11:28 ?603次閱讀

    半導(dǎo)體入選2024年度福建省數(shù)字經(jīng)濟核心產(chǎn)業(yè)創(chuàng)新企業(yè)

    日前,福建省發(fā)展和改革委員會網(wǎng)站公示了“2024年度福建省數(shù)字經(jīng)濟核心產(chǎn)業(yè)領(lǐng)域創(chuàng)新企業(yè)”名單,廈門半導(dǎo)體技術(shù)有限公司(以下簡稱“
    的頭像 發(fā)表于 06-18 08:23 ?430次閱讀
    <b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導(dǎo)體</b>入選2024年度福建省數(shù)字經(jīng)濟核心產(chǎn)業(yè)創(chuàng)新企業(yè)

    半導(dǎo)體邀您相約2024年華南國際工業(yè)博覽會

    2024年華南國際工業(yè)博覽會將于2024年6月19-21日在深圳國際會展中心(寶安新館)盛大舉行。工業(yè)級芯片供應(yīng)商,半導(dǎo)體將出席此次盛會,并在ETG聯(lián)合展臺(展位:12H-A055)帶來最新
    的頭像 發(fā)表于 06-14 08:23 ?232次閱讀
    <b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導(dǎo)體</b>邀您相約2024年華南國際工業(yè)博覽會

    美新半導(dǎo)體發(fā)布eOIS影像穩(wěn)定系列產(chǎn)品MSD4100WA

    近日,全球MEMS傳感技術(shù)領(lǐng)軍者美新半導(dǎo)體重磅發(fā)布了款新的eOIS影像穩(wěn)定驅(qū)動系列產(chǎn)品——MSD4100WA。這款產(chǎn)品集成了高精度、低噪聲的硅基線性霍爾傳感器,為影像穩(wěn)定系統(tǒng)提供了前
    的頭像 發(fā)表于 05-17 10:34 ?426次閱讀

    晶科能源Tiger Neo系列產(chǎn)品榮獲全球首家UL 2000V認證

    近期,晶科能源Tiger Neo系列產(chǎn)品,通過了第三方權(quán)威機構(gòu)UL在今年2月發(fā)布的UL61730關(guān)于2000V光伏組件的認證要求決議中一系列嚴(yán)格的安全和性能評估,被認可能夠承受2000
    的頭像 發(fā)表于 03-25 11:18 ?399次閱讀
    晶科能源Tiger Neo<b class='flag-5'>系列產(chǎn)品</b>榮獲全球首家<b class='flag-5'>UL</b> 2000V認證

    Nexperia發(fā)布全新模擬開關(guān)系列產(chǎn)品

    全球基礎(chǔ)半導(dǎo)體器件領(lǐng)域的領(lǐng)軍企業(yè)Nexperia(安世半導(dǎo)體)最近發(fā)布了全新的專用于監(jiān)測和保護1.8V電子系統(tǒng)的4通道和8通道模擬開關(guān)系列產(chǎn)品。這創(chuàng)新
    的頭像 發(fā)表于 03-11 10:08 ?542次閱讀

    什么是算法?工業(yè)網(wǎng)關(guān)為什么要支持算法?

    工業(yè)網(wǎng)關(guān)是應(yīng)用于工業(yè)物聯(lián)網(wǎng)關(guān)的常見通信交換傳輸設(shè)備,由于在使用過程中通常涉及工業(yè)敏感數(shù)據(jù),因此也需要支持算法實現(xiàn)數(shù)據(jù)加密傳輸,保障工業(yè)物聯(lián)網(wǎng)安全穩(wěn)定。
    的頭像 發(fā)表于 01-31 16:55 ?971次閱讀
    什么是<b class='flag-5'>國</b><b class='flag-5'>密</b><b class='flag-5'>算法</b>?工業(yè)網(wǎng)關(guān)為什么要支持<b class='flag-5'>國</b><b class='flag-5'>密</b><b class='flag-5'>算法</b>?

    安世半導(dǎo)體發(fā)布全新兩路輸出LCD偏壓電源系列產(chǎn)品

    安世半導(dǎo)體(Nexperia)近日發(fā)布了款全新的兩路輸出LCD偏壓電源系列產(chǎn)品,這款產(chǎn)品具有節(jié)省空間和高效率的特性。該系列產(chǎn)品的設(shè)計目標(biāo)是
    的頭像 發(fā)表于 01-15 14:23 ?739次閱讀

    應(yīng)用芯片推薦

    LKT4305GM是以32位安全處理器為基礎(chǔ)的具有高性能高安全性的算法加密產(chǎn)品。芯片滿足商安全檢測標(biāo)準(zhǔn) GM/T 0008-2012《
    的頭像 發(fā)表于 12-08 16:28 ?735次閱讀

    看懂BLE Mesh

    看懂BLE Mesh
    的頭像 發(fā)表于 12-06 16:24 ?1210次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>看懂</b>BLE Mesh

    普冉半導(dǎo)體推出P24C系列高可靠EEPROM產(chǎn)品

    近日,普冉半導(dǎo)體推出創(chuàng)新的 P24C系列高可靠 EEPROM 產(chǎn)品,應(yīng)下游客戶及市場需求,公司該新款系列產(chǎn)品可達到 1000萬次擦寫壽命,是
    的頭像 發(fā)表于 12-01 11:12 ?988次閱讀

    加密工業(yè)路由器 數(shù)據(jù)安全升級

    提高數(shù)據(jù)傳輸?shù)陌踩?,確保信息的機密性。加密路由器的優(yōu)勢主要體現(xiàn)在以下幾個方面:、高級別加密保護,支持加密芯片和
    的頭像 發(fā)表于 11-29 14:07 ?386次閱讀
    <b class='flag-5'>國</b><b class='flag-5'>密</b>加密工業(yè)路由器 數(shù)據(jù)安全升級

    基于算法的CPU卡的門禁系統(tǒng)的解決方案設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于算法的CPU卡的門禁系統(tǒng)的解決方案設(shè)計.pdf》資料免費下載
    發(fā)表于 10-25 10:04 ?0次下載
    基于<b class='flag-5'>國</b><b class='flag-5'>密</b><b class='flag-5'>算法</b>的CPU卡的門禁系統(tǒng)的解決方案設(shè)計