Defeat 2FA token because of bad randomness - rhme2 Twistword (Misc 400)

Поделиться
HTML-код
  • Опубликовано: 14 дек 2024

Комментарии • 57

  • @creature_of_fur
    @creature_of_fur 6 лет назад +109

    Who needs math when you can bruteforce?

    • @ripmeep
      @ripmeep 4 года назад +4

      oh god x2

    • @epicm999
      @epicm999 3 года назад +2

      oh god x3

    • @GameSmilexD
      @GameSmilexD 2 года назад

      yes, who needs to know physics when u can teach AI to do it for you

    • @martysh1226
      @martysh1226 2 года назад +5

      who needs programming when you can iterate over characters until it works?

  • @ArbelFS3
    @ArbelFS3 7 лет назад +6

    Cool one, thanks for sharing, I actually heard of PRF once, when I implemented an SSL server using Struct in python, that was awesome!

  • @Davizuky
    @Davizuky 7 лет назад +117

    You said this wasn't the intended way to solve this challenge... So which one was it?

    • @biehdc
      @biehdc 7 лет назад +5

      i would also like to know that

    • @mynewrandomhandle
      @mynewrandomhandle 7 лет назад +151

      The "official" challenge solution involved reading the tiny Mersenne twister (tinyMT) paper, writing some equations, and using a solver. The tinyMT is tricky to initialize. Giving a proper seed is not enough. You need to provide initial state matrices with certain properties (there is a generator for this). The challenge used improper initialized matrices (zeros) that reduced the PRNG period. During tests, we found that ~12hr were needed to solve the challenge (solver time only), but we did not test the amount of entropy reduction by improper state initialization. Fortunately, the problem was not in the PRNG.

    • @Davizuky
      @Davizuky 7 лет назад +3

      Thank you!

  • @cyancoyote7366
    @cyancoyote7366 7 лет назад +11

    *Damn line endings!*

  • @OtakuSanel
    @OtakuSanel 7 лет назад +8

    FYI to those who want good randomness on an arduino: use an online source to get a truly random seed and store that into eeprom on the arduino. Then anytime that value is used update the EEPROM value with a new random number. This will make every execution be new and random even if power cycled or program reset

    • @reddragonflyxx657
      @reddragonflyxx657 7 лет назад +6

      OtakuSanel
      That works well if you can expect the Arduino to always have an internet connection, trust the online source to provide good entropy, protect the network connection against MitM, and handle the entropy produced properly. For a toy project this is fine but if you need cryptographically secure entropy to defend against attackers a local TRNG (timing/electrical noise or similar unpredictable events) is the way to go.

    • @OtakuSanel
      @OtakuSanel 7 лет назад +3

      the arduino doesn't even need internet at all, im talking about completely offline. all you need to do is manually grab a good seed to begin with then the arduino can just generate new random numbers to replace the original seed itself.

    • @g_glop
      @g_glop 6 лет назад +9

      OtakuSanel Bonus additional entropy from the EEPROM cells failing from the repeated writes.

    • @OtakuSanel
      @OtakuSanel 5 лет назад +1

      @@skipfred we're talking about an arduino not a secure platform. if the idea is to always get different behavior an initial seed from the internet is a good place to get it. and by always updating it it'll never behave the same for every powerup. again not a secure platform so don't expect to be doing any kind of cryto with it.

  • @hikaru-live
    @hikaru-live 6 лет назад +6

    If the token is implemented on a some weird ARM chip or if the board has a weird network of transistors and resistors attached, this solution would be screwed: ARM chips can and often do come with built-in hardware RNG, and the weird transistor/resistor network can implement a shot noise generator which is also a hardware RNG, those sources has better random quality than anything you can think of.

  • @PhoenixClank
    @PhoenixClank 5 лет назад +28

    You say "PNRG" in this video a lot, "pseudo number random generation" xD

  • @mathgeniuszach
    @mathgeniuszach 4 года назад +5

    *designs a new system that uses

    as the end of line terminator instead of
    *

  • @logiciananimal
    @logiciananimal 4 года назад +4

    And I thought this would have been a time to use Burp Suite's entropy checker.

    • @davidjohnston4240
      @davidjohnston4240 2 года назад

      The bitwise tests in the Burp suite are copied from SP800-22. Not fit for purpose. We are in the process of trying to get SP800-22 withdrawn because it gets misused like this all the time.

  • @holly_hacker
    @holly_hacker 7 лет назад +3

    Once you've shown all the ones you solved, will you also show the solutions to the ones you didn't solve? I really enjoy these and they're teaching me a lot.

  • @TonelessR
    @TonelessR 7 лет назад

    Finally got around to watching this video, quite a good one too :)

  • @hopkinskong
    @hopkinskong 7 лет назад +23

    So you basically built a dictionary :)

  • @patriciobatista
    @patriciobatista 7 лет назад +2

    Did you noticed if the number of iterations required to get a duplicated token was always the same? Were they related to MT19937's 624 iterations?

  • @jaredmeit6127
    @jaredmeit6127 7 лет назад +14

    Was the intended solution more complicated and worth the 400?

    • @column.01
      @column.01 5 лет назад

      No. The intended solution would have to guess the seed more or less (or find it somehow). In this case it was a really easy solution

    • @XENON2028
      @XENON2028 2 года назад

      @@column.01 the intended solution apparently from a commenter is to read the tinyMT paper and use some equations to write a solver

    • @fffmpeg
      @fffmpeg Год назад

      @@XENON2028 the apparent commenter was the creator

  • @hamadahamada3600
    @hamadahamada3600 7 лет назад

    really appreciate it ☺️ keep it up man

  • @chrissxMedia
    @chrissxMedia 6 лет назад +6

    pnrg? more like prng?

  • @aidenn
    @aidenn 6 лет назад

    so since you found duplicates constantly wouldn’t that mean that the seed is constant. so you could figure out what the next token is from the previous token? or is that the solution that he did. i’m really tired so sorry if my grammar and explanation is bad.

  • @Dosamer
    @Dosamer 7 лет назад +2

    Do you know what the intended solution was?

  • @LikedgamingRS
    @LikedgamingRS 7 лет назад

    You're so smart.

  • @joepelletier6694
    @joepelletier6694 6 лет назад +8

    duplicate is pronounced doop-li-kit

    • @1e1001
      @1e1001 4 года назад +5

      I personally pronounce it doop-li-kate

    • @KooShnoo
      @KooShnoo 4 года назад +2

      @@1e1001 I think it's kit for the noun, kate for the verb. Also I don't think English is his first language, since he's German

  • @davidjohnston4240
    @davidjohnston4240 2 года назад

    A computer is as deterministic as its instructions. Every X86 CPU for the last decade comes with nondeterministic instructions - RdRand and later RdSeed. Similarly, non X86 CPUs have adopted random number instructions with built in entropy sources.

  • @lb5tr
    @lb5tr 7 лет назад

    have you tried tying all analog pins to ground to see if expected values are always the same? As in, if this caused the seed the always be the same?
    Also, was it possible to dump atmega flash?

    • @LiveOverflow
      @LiveOverflow  7 лет назад

      Didn't try because I heard that somebody else had tried that, but I considered it first.
      No it was not possible to dump the flash.

  • @trungthanhbp
    @trungthanhbp 3 года назад +1

    if you save both wrong token and expected token, the error of new line may not happen xD

  • @Asdayasman
    @Asdayasman 6 лет назад

    "PNRG"

  • @JackBond1234
    @JackBond1234 6 лет назад

    "Tokng"

  • @lohphat
    @lohphat 7 лет назад +7

    Good video!
    Note on English pronunciation of "duplicate": long "u' as in "dooplicate", if the "p" were doubled then it would be a short "u" as you pronounced it.
    Sorry, 1066 really screwed things up.

    • @Asdayasman
      @Asdayasman 6 лет назад +1

      lohphat American. Not English.

  • @VegaDW
    @VegaDW 7 лет назад +39

    To my knowledge you're a non-native engish speaker, so, I'm just trying to help. Duplicate is pronounced doop (rhymes with soup) licate

    • @Asdayasman
      @Asdayasman 6 лет назад +4

      VegaDeftwing Only in American. In English it sounds the same as "Jew".

    • @Asdayasman
      @Asdayasman 6 лет назад +1

      MrSparklyStuff you seem to be missing the point. in American English, it's a hard D. In correct English, it's a soft one. Think "do" vs "Jew".

    • @Asdayasman
      @Asdayasman 6 лет назад +3

      You clearly don't see my point dude, the "ooh" sound in "Jew" and "do" is the same. My point is that Americans pronounce "duplicate" with a hard D, and the English pronounce it with a soft D. Try it yourself, say "do" followed by "plicate". That's American. Then try saying "Jew" followed by "plicate".
      This isn't a hard concept.

    • @Asdayasman
      @Asdayasman 6 лет назад +4

      Do you have mental difficulties? The J in "Jew" is a soft D. Not a hard D.
      On the very website you linked, click on the "English" tab, and listen to how it pronounces "duplicate". Notice how the first sound is the same as the first sound in "Jew".

    • @geekofia
      @geekofia 6 лет назад +2

      a very hot scholastic discussion 😎

  • @mohamedosman9171
    @mohamedosman9171 7 лет назад

    hello bro i am the one who sent you an email but you didnt respond.

    • @ttt-ml9dj
      @ttt-ml9dj 6 лет назад +3

      He is not your bro. And why would he respond to you? And why are you saying this on a video?