Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ハードウェア乱数を用いた謝辞代表者の決定

 ハードウェア乱数を用いた謝辞代表者の決定

khwarizmi

March 12, 2019
Tweet

More Decks by khwarizmi

Other Decks in Programming

Transcript

  1. 自己紹介 - 河原颯太(かわはらそうた) @khwarizmi6514 - 法政大学応用情報工学科 学部4年 金井(ネットワークセキュリティ)研究室所属 - 小学5年から野球を初めて高校3年までやっていた.

    - 春日部高校出身です! (これを言うといろんなところで先輩後輩が釣れることに最近 気が付いた) - パソコンとは無縁の生活だったが, 大学入学時, 気が付いたらパソコンをやらなけ ればいけなくなっていた. - 一緒に研究をしてくれる後輩募集中 (一人で研究をしていて寂しい)
  2. 最近やってること - NICのデバドラ開発 - NICのハードウェア機能活用による性能比較調査 - Linuxネットワークパフォーマンス調査 - XDPとnetmap *最近やりたいこと*

    - FreeBSDで性能調査(ネットワークスタック参照したりしときながら触ったことがな い) - 自作キーボード(家でやったらニッパがざこくてまだ完成してない) - FPGA(購入してLEDチカチカまでしてそのままタンスの奥にいる) - EDM作りたみがある
  3. とりあえずRDSEED #include <stdint.h> void rdseed(uint64_t *rand) { asm volatile (

    "rdseed %0" : "=A" (*rand) ); } これだけで乱数発生器にアク セスできる
  4. 等確率性 The Monobit Test 試しに4回試行した結果 1. 6054 2. 9933 3.

    6551 4. 6434 20000bitにつき1が 9725個~10275個の間 に収まる
  5. 等確率性 The Monobit Test 結果 1. 10087 2. 9973 3.

    9985 4. 9960 20000bitにつき1が 9725個~10275個の間 に収まる
  6. 無規則性 The Runs Test (参考:http://www.fdk.co.jp/cyber-j/pdf/HM-RAJ103.pdf) 連続で同じビットが出てくる回数を数える uint64_t rand; unsigned long

    total[20000]; unsigned int same_count = 0; unsigned int now_same = 9; unsigned int same_count_result[6] = {0}; for (int i = 0; i < 20000; i++) { rdrand(&rand); total[i] = rand & 0b1; } for (int i = 0; i < 20000; i++) { if (total[i] == now_same) { same_count++; } else { now_same = total[i]; if (0 < same_count && same_count < 6) { same_count_result[same_count - 1]++; } else if (same_count > 5) { same_count_result[5]++; } same_count = 0; } } for (int i = 0; i < 6; i++) { printf("%d\n", same_count_result[i]); }