那曲檬骨新材料有限公司

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

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

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

雅特力AT32 MCU的隨機(jī)數(shù)生成

雅特力 AT32 MCU ? 2024-08-30 12:26 ? 次閱讀

概述

產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時(shí)候都更加重要。真隨機(jī)數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會(huì)影響設(shè)計(jì)的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機(jī)數(shù)的有效,來符合應(yīng)用的需求。底下提供兩種方法:提高亂度的方法之一,使用ADC的誤差。AT32的微控制器內(nèi)置最多三個(gè)高級(jí)12位片上SAR模擬數(shù)字轉(zhuǎn)換器ADC)并提供自校準(zhǔn)功能,保證12位ADC靜態(tài)準(zhǔn)確度(accuracy)可達(dá)10位以上。這誤差可以拿來計(jì)算隨機(jī)數(shù)的來源。提高亂度的方法之二,使用上電時(shí)SRAM內(nèi)容的不確定性。SRAM不保證上電時(shí)的內(nèi)容值,每次上電后,內(nèi)容也是不容易預(yù)測(cè)的。我們可以利用這個(gè)特性,拿來增加隨機(jī)數(shù)的亂度。

利用ADC的誤差來源產(chǎn)生隨機(jī)數(shù)的方法

本章介紹了使用軟件觸發(fā)方式觸發(fā)ADC,配置普通信道和DMA。根據(jù)隨機(jī)數(shù)需要的位數(shù)來配置信道數(shù),一次轉(zhuǎn)換最多到16信道,將16信道轉(zhuǎn)換的數(shù)值可組合計(jì)算成一個(gè)32位的隨機(jī)數(shù)。底下是DMA和ADC的配置代碼。

DMA配置函數(shù)代碼

16ca8d2a-6688-11ef-89ff-92fbcf53809c.png

ADC配置函數(shù)代碼

16e5e80e-6688-11ef-89ff-92fbcf53809c.png可以看到,代碼中并沒有對(duì)ADC做自校準(zhǔn),轉(zhuǎn)換時(shí)間也使用最短的,這種情況下,ADC的準(zhǔn)確度會(huì)是最差的,有助于亂度的提升。

ADC隨機(jī)數(shù)取得代碼

16fa2b2a-6688-11ef-89ff-92fbcf53809c.png

利用上電時(shí)SRAM的內(nèi)容來計(jì)算隨機(jī)數(shù)的方式

這范例只是簡(jiǎn)單的利用累加來獲得一個(gè)隨機(jī)數(shù)

SRAM配置函數(shù)代碼

171acaa6-6688-11ef-89ff-92fbcf53809c.png

隨機(jī)生成應(yīng)用指南

以上兩種方式建議應(yīng)用在上電后執(zhí)行,因?yàn)镾RAM內(nèi)容在運(yùn)行后會(huì)初始化,ADC也會(huì)有其他應(yīng)用上的需求,上電后執(zhí)行并獲得一個(gè)隨機(jī)數(shù),將這個(gè)隨機(jī)數(shù)當(dāng)成Seed,之后可以利用標(biāo)準(zhǔn)C函式庫中提供的隨機(jī)數(shù)生成器,產(chǎn)生后續(xù)的隨機(jī)數(shù)。
SRAM的方式限定在POR后使用。如果只是一般的reset,SRAM會(huì)維持內(nèi)容,造成產(chǎn)生的隨機(jī)數(shù)都是相同。ADC的方式則沒有限制,但是因?yàn)槭褂肁DC外設(shè)的資源,推薦放在開機(jī)時(shí)執(zhí)行,不會(huì)影響后續(xù)的ADC應(yīng)用。

范例運(yùn)行和分析

本篇應(yīng)用筆記適用于AT32各系列MCU,只要有ADC外設(shè)皆可適用。范例固件AN0175_SourceCode_V2.0.0運(yùn)行在AT32403A AT-START版上,透過 PuTTY(免費(fèi)開源終端仿真器)等終端仿真應(yīng)用程序,將數(shù)據(jù)存儲(chǔ)在工作站上。在工作站上編譯NIST統(tǒng)計(jì)測(cè)試集程序包,以生成可執(zhí)行程序。接下來運(yùn)行NIST統(tǒng)計(jì)測(cè)試集程序分析數(shù)據(jù)以及統(tǒng)計(jì)測(cè)試。以下是使用范例固件AN0175_SourceCode_V2.0.0在上電后會(huì)產(chǎn)生的一個(gè)隨機(jī)數(shù),在收集約319萬筆隨機(jī)數(shù)后,進(jìn)行NIST統(tǒng)計(jì)測(cè)試。圖1. 環(huán)境配置173b89d0-6688-11ef-89ff-92fbcf53809c.png

硬件資源

AT32403A AT-START 版

1) 串口(PA9)

具有串口的計(jì)算機(jī),運(yùn)行 Linux 系統(tǒng)

軟件資源

下載到AT32403A AT-START版運(yùn)行

1) AN0175_SourceCode_V2.0.0

計(jì)算機(jī)端運(yùn)行

1) 終端仿真器如PuTTY

2) 統(tǒng)計(jì)測(cè)試集源程序

https://csrc.nist.gov/CSRC/media/Projects/Random-Bit-Generation/documents/sts-2_1_2.zip

https://github.com/usnistgov/SP800-90B_EntropyAssessment

NIST SP800-22b統(tǒng)計(jì)測(cè)試集

基于NIST統(tǒng)計(jì)測(cè)試集:April 27, 2010: NIST SP 800-22rev1a (dated April 2010), A Statistical Test Suite for the Validation of Random Number Generators and Pseudo Random Number Generators for Cryptographic Applications, that describes the test suite.統(tǒng)計(jì)測(cè)試集源程序下載:https://csrc.nist.gov/CSRC/media/Projects/Random-Bit-Generation/documents/sts-2_1_2.zip統(tǒng)計(jì)測(cè)試集結(jié)果:176c430e-6688-11ef-89ff-92fbcf53809c.png

NIST SP800-90b統(tǒng)計(jì)測(cè)試集

基于NIST統(tǒng)計(jì)測(cè)試集:November 21, 2014: NIST requests comments on the latest revision of NIST SP 800-90A, Recommendation for Random Number Generation Using Deterministic Random Bit Generators, which is datedNovember 2014.統(tǒng)計(jì)測(cè)試集源程序下載:https://github.com/usnistgov/SP800-90B_EntropyAssessment統(tǒng)計(jì)測(cè)試集結(jié)果:需先轉(zhuǎn)換成符合2-bit-wide symbols數(shù)據(jù)輸入格式。./ea_non_iid 0421_2.bin 2 -i -a -vOpening file: '0421_2.bin'Loaded 50888144 samples of 4 distinct 2-bit-wide symbolsNumber of Binary Symbols: 101776288Running non-IID tests...Running Most Common Value Estimate...Bitstring MCV Estimate: mode = 50891714, p-hat = 0.50003507693265448, p_u = 0.50016273956095891Most Common Value Estimate (bit string) = 0.999531 / 1 bit(s)Literal MCV Estimate: mode = 12725005, p-hat = 0.25005834364876817, p_u = 0.25021470996034195Most Common Value Estimate = 1.998761 / 2 bit(s)Running Entropic Statistic Estimates (bit strings only)...Bitstring Collision Estimate: X-bar = 2.5000060058338387, sigma-hat = 0.50000000610486417, p = 0.50989562404154842Collision Test Estimate (bit string) = 0.971726 / 1 bit(s)Bitstring Markov Estimate: P_0 = 0.49996492306734552, P_1 = 0.50003507693265448, P_0,0 = 0.4999425562646943, P_0,1 = 0.5000574437353057, P_1,0 = 0.49998729655651403, P_1,1 = 0.50001270344348603, p_max = 2.9554800761609014e-39Markov Test Estimate (bit string) = 0.999936 / 1 bit(s)Bitstring Compression Estimate: X-bar = 5.2176714331187366, sigma-hat = 1.0152961906603262, p = 0.019654761320726077Compression Test Estimate (bit string) = 0.944830 / 1 bit(s)Running Tuple Estimates...Bitstring t-Tuple Estimate: t = 23, p-hat_max = 0.52357011476148263, p_u = 0.52369763546518522Bitstring LRS Estimate: u = 24, v = 50, p-hat = 0.50053161737274598, p_u = 0.50065927992920534T-Tuple Test Estimate (bit string) = 0.933194 / 1 bit(s)Literal t-Tuple Estimate: t = 11, p-hat_max = 0.27527598152543398, p_u = 0.27543726106146299Literal LRS Estimate: u = 12, v = 24, p-hat = 0.25086994374062016, p_u = 0.25102647882990431T-Tuple Test Estimate = 1.860204 / 2 bit(s)LRS Test Estimate (bit string) = 0.998099 / 1 bit(s)LRS Test Estimate = 1.994089 / 2 bit(s)Running Predictor Estimates...Bitstring MultiMCW Prediction Estimate: N = 101776225, Pglobal' = 0.50008960368099831 (C = 50884239) Plocal can't affect result (r = 26)Multi Most Common in Window (MultiMCW) Prediction Test Estimate (bit string) = 0.999741 / 1 bit(s)Literal MultiMCW Prediction Estimate: N = 50888081, Pglobal' = 0.25014573559900838 (C = 12721480) Plocal can't affect result (r = 12)Multi Most Common in Window (MultiMCW) Prediction Test Estimate = 1.999159 / 2 bit(s)Bitstring Lag Prediction Estimate: N = 101776287, Pglobal' = 0.50019269251081444 (C = 50894762) Plocal can't affect result (r = 25)Lag Prediction Test Estimate (bit string) = 0.999444 / 1 bit(s)Literal Lag Prediction Estimate: N = 50888143, Pglobal' = 0.25015172047634626 (C = 12721800) Plocal can't affect result (r = 13)Lag Prediction Test Estimate = 1.999125 / 2 bit(s)Bitstring MultiMMC Prediction Estimate: N = 101776286, Pglobal' = 0.50008456811129076 (C = 50883757) Plocal can't affect result (r = 27)Multi Markov Model with Counting (MultiMMC) Prediction Test Estimate (bit string) = 0.999756 / 1 bit(s)Literal MultiMMC Prediction Estimate: N = 50888142, Pglobal' = 0.2502104743048289 (C = 12724789) Plocal can't affect result (r = 13)Multi Markov Model with Counting (MultiMMC) Prediction Test Estimate = 1.998786 / 2 bit(s)Bitstring LZ78Y Prediction Estimate: N = 101776271, Pglobal' = 0.50008006313488451 (C = 50883291) Plocal can't affect result (r = 26)LZ78Y Prediction Test Estimate (bit string) = 0.999769 / 1 bit(s)Literal LZ78Y Prediction Estimate: N = 50888127, Pglobal' = 0.25021764352136133 (C = 12725150) Plocal can't affect result (r = 13)LZ78Y Prediction Test Estimate = 1.998745 / 2 bit(s)H_original: 1.860204H_bitstring: 0.933194min(H_original, 2 X H_bitstring): 1.860204

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

    關(guān)注

    146

    文章

    17317

    瀏覽量

    352620
  • 雅特力
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    8140
  • AT32
    +關(guān)注

    關(guān)注

    1

    文章

    118

    瀏覽量

    2164
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用MSP430內(nèi)部時(shí)鐘生成隨機(jī)數(shù)

    車庫門接收機(jī)必須一一對(duì)應(yīng)地正確識(shí)別遠(yuǎn)程控制的隨機(jī)數(shù),以防止非授權(quán)訪問。為了生成隨機(jī)數(shù),開發(fā)人員可以使用16 位 MCU 確保將所有信號(hào)都控制在 MC
    發(fā)表于 07-12 06:20

    AT32隨機(jī)數(shù)的產(chǎn)生

    AT32隨機(jī)數(shù)的產(chǎn)生為設(shè)計(jì)者使用AT32芯片時(shí),產(chǎn)生符合應(yīng)用需求的隨機(jī)數(shù),提供設(shè)計(jì)建議。
    發(fā)表于 10-26 06:04

    神經(jīng)網(wǎng)絡(luò)的偽隨機(jī)數(shù)生成方法

    為了克服有限精度效應(yīng)對(duì)混沌系統(tǒng)的退化影響,改善所生成隨機(jī)序列的統(tǒng)計(jì)性能,設(shè)計(jì)了一種新的基于六維CNN(細(xì)胞神經(jīng)網(wǎng)絡(luò))的64 bit偽隨機(jī)數(shù)生成方法。在該方法中,通過控制六維CNN在每次
    發(fā)表于 02-02 15:49 ?0次下載

    C語言中隨機(jī)數(shù)生成代碼

    C語言中隨機(jī)數(shù)生成完整代碼:
    的頭像 發(fā)表于 02-20 09:21 ?1w次閱讀

    如何在C語言中使用隨機(jī)數(shù)

    通常情況下,使用最多的方法的就是使用rand函數(shù)隨機(jī)生成隨機(jī)數(shù)來完成隨機(jī)數(shù)生成工作。注意這里的偽隨機(jī)
    的頭像 發(fā)表于 11-09 16:46 ?5203次閱讀

    如何使用隨機(jī)數(shù)生成器來生成私鑰

    ,尤其重要。 說到隨機(jī),有兩個(gè)必須要搞清楚的概念:“真隨機(jī)數(shù)生成器”(TRNG)和偽隨機(jī)數(shù)生成器(PRNG)
    發(fā)表于 03-18 10:40 ?5114次閱讀
    如何使用<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器來<b class='flag-5'>生成</b>私鑰

    攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

    技術(shù)、邊緣AI、新興應(yīng)用和生態(tài)發(fā)展等熱門議題。 業(yè)務(wù)處長(zhǎng)陳佳延在大會(huì)發(fā)表了題為“
    的頭像 發(fā)表于 08-30 10:04 ?4564次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜高性能<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相全球<b class='flag-5'>MCU</b>生態(tài)發(fā)展大會(huì)

    如何利用SystemVerilog仿真生成隨機(jī)數(shù)

    采用SystemVerilog進(jìn)行仿真則更容易生成隨機(jī)數(shù),而且對(duì)隨機(jī)數(shù)具有更強(qiáng)的可控性。對(duì)于隨機(jī)變量,在SystemVerilog中可通過rand或randc加數(shù)據(jù)類型的方式定義。ra
    的頭像 發(fā)表于 10-30 10:33 ?1.1w次閱讀
    如何利用SystemVerilog仿真<b class='flag-5'>生成</b><b class='flag-5'>隨機(jī)數(shù)</b>

    用于生成隨機(jī)數(shù)的電子骰子

    電子發(fā)燒友網(wǎng)站提供《用于生成隨機(jī)數(shù)的電子骰子.zip》資料免費(fèi)下載
    發(fā)表于 07-06 10:58 ?4次下載
    用于<b class='flag-5'>生成</b><b class='flag-5'>隨機(jī)數(shù)</b>的電子骰子

    Arduino Lotto隨機(jī)數(shù)生成

    電子發(fā)燒友網(wǎng)站提供《Arduino Lotto隨機(jī)數(shù)生成器.zip》資料免費(fèi)下載
    發(fā)表于 11-02 10:59 ?0次下載
    Arduino Lotto<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器

    隨機(jī)數(shù)生成器開源分享

    電子發(fā)燒友網(wǎng)站提供《隨機(jī)數(shù)生成器開源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-11 11:57 ?0次下載
    <b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器開源分享

    AN4230 STM32 MCU使用NIST隨機(jī)數(shù)生成驗(yàn)證統(tǒng)計(jì)測(cè)試套件

    AN4230 STM32 MCU使用NIST隨機(jī)數(shù)生成驗(yàn)證統(tǒng)計(jì)測(cè)試套件
    發(fā)表于 11-21 17:07 ?0次下載
    AN4230 STM32 <b class='flag-5'>MCU</b>使用NIST<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>驗(yàn)證統(tǒng)計(jì)測(cè)試套件

    技術(shù)分享 | 隨機(jī)數(shù)生成過慢導(dǎo)致系統(tǒng)阻塞怎么辦?

    /dev/random和/dev/urandom是linux上的隨機(jī)數(shù)生成器,是個(gè)字符設(shè)備,為系統(tǒng)提供隨機(jī)數(shù)隨機(jī)數(shù)主要應(yīng)用在加密方面,沒有加密的操作都是可預(yù)測(cè)且不安全的。linux上
    的頭像 發(fā)表于 08-15 09:20 ?2466次閱讀
    技術(shù)分享 | <b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>過慢導(dǎo)致系統(tǒng)阻塞怎么辦?

    如何使用AT32 MCU定時(shí)器進(jìn)行PWM輸入測(cè)試

    如何使用AT32 MCU定時(shí)器進(jìn)行PWM輸入測(cè)試
    的頭像 發(fā)表于 10-27 14:20 ?3076次閱讀
    如何使用<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>定時(shí)器進(jìn)行PWM輸入測(cè)試

    如何使用雪花算法生成真正的隨機(jī)數(shù)

    以前用rand和srand生成過偽隨機(jī)數(shù),偽隨機(jī)數(shù)的序列是固定的,今天學(xué)習(xí)生成真正的隨機(jī)數(shù)生成
    的頭像 發(fā)表于 10-09 10:05 ?1398次閱讀
    免费百家乐规律| 东明县| 保单百家乐路单| 路虎百家乐的玩法技巧和规则 | 奔驰百家乐可信吗| 娱乐城网站| 澳门百家乐官网官方网站破解百家乐官网技巧 | 晋宁县| 百家乐官网规则| 大发888官网游戏平台| 谁会玩百家乐官网的玩法技巧和规则| 百家乐看图赢钱| 澳门百家乐官网游戏说明| 七胜百家乐赌场娱乐网规则 | 星际娱乐城| 百家乐隐者博客| 合乐娱乐| 新澳门百家乐软件下载| 静宁县| 百家乐珠仔路| 百家乐官网如何投注技巧| 免费百家乐预测软件| 乐天堂百家乐官网娱乐平台| 百家乐官网赌博彩| 博乐娱乐城| 百家乐看澳门| 百家乐官网最好投注| 大发888娱乐场下载 制度| 7月24日风水| 大亨百家乐官网游戏| 宝马会百家乐娱乐城| 百家乐官网娱乐网网77scs| 网上最好赌博网站| 91百家乐的玩法技巧和规则| 百家乐官网透视牌靴| 体育投注| 百家乐视频二人麻将| 百家乐官网赌场高手| 皇冠网全讯通| 百家乐博乐城| 澳门百家乐官网经|