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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

Avatar for khwarizmi

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]); }