跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1H系列
  4. HA01 MCAL中使用TRNG模块获取随机数

HA01 MCAL中使用TRNG模块获取随机数

已定时 已固定 已锁定 已移动 未解决 YTM32B1H系列
18 帖子 3 发布者 88 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • zhaiZ 离线
    zhaiZ 离线
    zhai
    编写于 最后由 编辑
    #1

    TRNG获取随机数时想要尽量缩短请求的时间(只需要获取3字节的随机数)
    目前根据MCAL中的Crypto_demo例子
    (slow_bus_clk为24M,samp_size为0x200)
    在sample_size和slow_bus_clk都不变的前提下通过修改eny_dly缩短时间,eny_dly修改为0x80、0x100、0x200都可以获取到随机数
    eny_dly为0x80时(5ms获取一次):
    复位后连续获取1w次,重复的随机数出现2次、4次、8次(共测了3轮共计3w次)
    复位后获取1000次再复位共计10轮1w次,重复的随机数出现3次、2次、5次(共测了3轮共计3w次)
    eny_dly为0x100时(10ms获取一次):
    复位后连续获取1w次,重复的随机数出现5次、6次、2次(共测了3轮共计3w次)
    复位后获取1000次再复位共计10轮1w次,重复的随机数出现1次、3次、1次(共测了3轮共计3w次)
    eny_dly为0x200时(20ms获取一次):
    复位后连续获取1w次,重复的随机数出现4次、6次、1次(共测了3轮共计3w次)
    复位后获取1000次再复位共计10轮1w次,重复的随机数出现3次、0次、4次(共测了3轮共计3w次)
    问题1:
    理论eny_dly设置越大重复率应该越低,为什么效果不太明显呢?(也有可能是测试的样本数量不够,YT这边是否有相应的测试数据?)
    问题2:
    我尝试保持eny_dly和slow_bus_clk不变修改sample_size为0x20、0x80、0x100时获取到的随机数都是相同的,是不是有哪个地方没有修改对?
    代码如下:
    438d4f3a-08fe-48bd-9988-8237f834e267-image.png
    93b1fa92-1c15-4a86-8845-c317b9957c47-image.png

    沈宇恒沈 1 条回复 最后回复
    0
    • 沈宇恒沈 离线
      沈宇恒沈 离线
      沈宇恒
      编写于 最后由 沈宇恒 编辑
      #2
      此主題已被删除!
      1 条回复 最后回复
      0
      • DigaD 离线
        DigaD 离线
        Diga
        编写于 最后由 编辑
        #3

        你同一种配置,在不同轮次的结果不也不一样嘛,这不是符合随机性嘛。HA01 一次会生成 256-bit 的真随机数,当样本数够大时,里面出现 0-bit 与 1-bit 的个数应该是一样的。如果想自己测随机性,可以参考 NIST SP 800-22 测试方法,这个对随机性的测试是比较科学严谨的

        zhaiZ 1 条回复 最后回复
        0
        • 沈宇恒沈 离线
          沈宇恒沈 离线
          沈宇恒
          回复了zhai 最后由 沈宇恒 编辑
          #4

          问题2:Random_Generate_Length = 32 是软件输出缓冲长度,必须 ≤32、4 字节对齐,它决定的是你获取的随机数长度一次只能最多256bit,如果要生成更多那就得多生成几次;PrimitiveInfo 里的 32 是 Crypto 作业结构字段,跟 TRNG 采样无关,所以修改不修改都没有作用;

          zhaiZ 1 条回复 最后回复
          0
          • zhaiZ 离线
            zhaiZ 离线
            zhai
            回复了Diga 最后由 编辑
            #5

            Diga YT针对随机数这块有相应的测试数据报告吗

            1 条回复 最后回复
            0
            • DigaD 离线
              DigaD 离线
              Diga
              编写于 最后由 编辑
              #6

              有的,可以咨询 FAE

              1 条回复 最后回复
              0
              • zhaiZ 离线
                zhaiZ 离线
                zhai
                回复了沈宇恒 最后由 zhai 编辑
                #7

                沈宇恒 如果我想获得3字节的随机数并且想尽量缩短获取随机数的时间,samp_szie设置为0x20时,上面应该如何修改?我尝试修改为0x20后连续获取的随机数一直是一个值

                沈宇恒沈 1 条回复 最后回复
                0
                • 沈宇恒沈 离线
                  沈宇恒沈 离线
                  沈宇恒
                  回复了zhai 最后由 编辑
                  #8

                  驱动校验要求长度是 4 的倍数,你如果要3字节的随机数生成出来自己扔掉就行,尽量缩短获取随机数的时间可以按 32 字节发一次作业存进池,每次请求从池里取 3 字节,池空了再触发下一次

                  zhaiZ 1 条回复 最后回复
                  0
                  • zhaiZ 离线
                    zhaiZ 离线
                    zhai
                    回复了沈宇恒 最后由 zhai 编辑
                    #9

                    沈宇恒 目前就是这样操作的,上面结构体中的配置参数还是按照demo中的什么都不修改,samp_szie设置为0x20,ent_dly设置为0x200,调用CryptoTest_Asyn_SingleCall_Random接口去获取也是按照32字节去获取的,但是获得的随机数还是相同的
                    下图是连续两次获取的结果
                    73713a2a-5536-4879-a367-43cb8b60f470-image.png
                    826fabf6-52b8-48c0-8931-0bb63d2a27f3-image.png

                    沈宇恒沈 2 条回复 最后回复
                    0
                    • 沈宇恒沈 离线
                      沈宇恒沈 离线
                      沈宇恒
                      回复了zhai 最后由 编辑
                      #10

                      我刚刚试了一下并没有哦
                      dc142309-a30f-4ad0-9390-d04c19607912-img_v3_02156_7a637570-c762-45a6-ab18-c54a2ffe6cbg.jpg
                      d38429a4-e901-4133-9c6b-2218316a4d8f-img_v3_02156_704680e5-c40b-4589-bd7b-6d4a9659544g.jpg

                      1 条回复 最后回复
                      0
                      • 沈宇恒沈 离线
                        沈宇恒沈 离线
                        沈宇恒
                        回复了zhai 最后由 沈宇恒 编辑
                        #11

                        zhai 你用的是哪个版本的?以前的老版本不能32字节丢数据;而且你是不是改了内部代码,这个值是不能动的哦,samp_size你获取的字节不是改这个,是改Random_Generate_Length
                        c91b87a0-fe7c-4a3e-ba23-b4b19bec1a90-image.png

                        沈宇恒沈 1 条回复 最后回复
                        0
                        • zhaiZ 离线
                          zhaiZ 离线
                          zhai
                          编写于 最后由 zhai 编辑
                          #12

                          我使用的macl版本是2.0.3,我之前确实修改的是上图中的内部代码,要修改samp_size是修改Random_Generate_Length?Random_Generate_Length是单次获取的长度,samp_size是生成熵时所采集的样本总数,按照介绍获取随机数的最大时间根samp_size、ent_dly、slow_clk有关,如果我想尽量减少生成的时间,那不应该修改samp_size吗?
                          image.png

                          1 条回复 最后回复
                          0
                          • 沈宇恒沈 离线
                            沈宇恒沈 离线
                            沈宇恒
                            回复了沈宇恒 最后由 编辑
                            #13

                            原始采样总数0x200,256 个输出 bit 的熵不可能超过输入的原始采样数这是信息论下限,这个寄存器0x100已经是数学下限了,你改成0x20电路只能输出大量确定性内容,这个是TRNG 熵源的安全参数不能修改的哈,不要在这个上面挖时间,修改这个要重跑NIST SP800-22才能用

                            zhaiZ 1 条回复 最后回复
                            0
                            • zhaiZ 离线
                              zhaiZ 离线
                              zhai
                              回复了沈宇恒 最后由 编辑
                              #14

                              沈宇恒 好的,那如果要是想缩短单次获取的时间的话,就只能修改ent_dly或slow_bus_clk了对吧

                              沈宇恒沈 1 条回复 最后回复
                              0
                              • 沈宇恒沈 离线
                                沈宇恒沈 离线
                                沈宇恒
                                回复了zhai 最后由 编辑
                                #15

                                嗯嗯,32 字节缓存那个来实现其实也缩短了

                                zhaiZ 1 条回复 最后回复
                                0
                                • zhaiZ 离线
                                  zhaiZ 离线
                                  zhai
                                  回复了沈宇恒 最后由 zhai 编辑
                                  #16

                                  沈宇恒 好的,32字节缓存是什么?我看其他帖子,如果实际要读取的长度<32字节,还是要按照32字节去读取的,上层字节从32字节中取相应长度的数据就行,参考的是这个帖子
                                  https://forum.ytmicro.com/topic/257/trng-真随机数产生时间计算/4?_=1766039682973
                                  ce4448b2-92f6-4c3e-99df-f0ae31fed27e-image.png

                                  沈宇恒沈 zhaiZ 2 条回复 最后回复
                                  0
                                  • 沈宇恒沈 离线
                                    沈宇恒沈 离线
                                    沈宇恒
                                    回复了zhai 最后由 编辑
                                    #17

                                    zhai 如果实际要读取的长度<32字节,还是要按照32字节去读取的,上层字节从32字节中取相应长度的数据就行,就是这个意思

                                    1 条回复 最后回复
                                    0
                                    • zhaiZ 离线
                                      zhaiZ 离线
                                      zhai
                                      回复了zhai 最后由 编辑
                                      #18

                                      图中的修改samp size是不是不太对,其实是不能修改samp size的,我看其他用户修改samp size也是遇到类似的问题了

                                      1 条回复 最后回复
                                      0

                                    • 云途开发生态介绍

                                      快速上手云途开发生态

                                    • 云途论坛规则/Yuntu Forum Rules

                                      发帖前请查看

                                    • YT CONFIG TOOL调查问卷

                                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                                    • can
                                      28
                                      demo
                                      26
                                      uds
                                      14
                                      lin stack
                                      13
                                      fbl
                                      6
                                      md14
                                      6
                                      yt-link
                                      6
                                      adc模块
                                      4
                                      Online Users
                                      ocean_wuO
                                      ocean_wu
                                      FunchovyF
                                      Funchovy
                                      xiangyuX
                                      xiangyu
                                      gacknight0754G
                                      gacknight0754
                                      YTCQ_shejiwangY
                                      YTCQ_shejiwang
                                      • 登录

                                      • 登录或注册以进行搜索。
                                      • 第一个帖子
                                        最后一个帖子
                                      0
                                      • 版块
                                      • 最新
                                      • 标签
                                      • 热门