User Tools

Site Tools


prng

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
prng [2023/11/28 14:34] lssprng [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====Sigurnosni problemi pri korištenju pseudoslučajnih brojeva====
 +
 Kada je potrebno generirati nekakav tajni ključ, lozinku ili slično, često želimo da taj podatak bude nasumično odabran. Kada je potrebno generirati nekakav tajni ključ, lozinku ili slično, često želimo da taj podatak bude nasumično odabran.
 Računala mogu proizvesti nasumične nizove koristeći algoritme generatora pseudonasumičnih brojeva. Kao što im ime kaže, Računala mogu proizvesti nasumične nizove koristeći algoritme generatora pseudonasumičnih brojeva. Kao što im ime kaže,
 takvi algoritmi ne generiraju istinski nasumične brojeve, brojevi koje generiraju ovise o inicijalnoj vrijednosti (engl. seed).  takvi algoritmi ne generiraju istinski nasumične brojeve, brojevi koje generiraju ovise o inicijalnoj vrijednosti (engl. seed). 
-Inicijalna vrijednost može biti nešto poput vremena, vrijednosti izvedene iz pokreta miša, temperature računala i slično.+Inicijalna vrijednost može biti nešto poput trenutnog vremena, vrijednosti izvedene iz pokreta miša, temperature računala i slično.
  
 Pri korištenju generatora pseudonasumičnih brojeva u kriptografske svrhe, sigurnosni problemi mogu nastati u sljedećim slučajevima: Pri korištenju generatora pseudonasumičnih brojeva u kriptografske svrhe, sigurnosni problemi mogu nastati u sljedećim slučajevima:
  
 a) Koristi se inicijalna vrijednost koju napadač može pogoditi a) Koristi se inicijalna vrijednost koju napadač može pogoditi
 +
 b) Koristi se algoritam za generiranje slučajnih brojeva koji nije kriptografski siguran, pa se promatranjem dovoljnog broja generiranih nasumičnih vrijednosti može predvidjeti buduće vrijednosti b) Koristi se algoritam za generiranje slučajnih brojeva koji nije kriptografski siguran, pa se promatranjem dovoljnog broja generiranih nasumičnih vrijednosti može predvidjeti buduće vrijednosti
  
Line 14: Line 17:
  
  
-Predvidljiva inicijalna vrijednost - Zadatak s Hacknite platforme - "Blog"+__**PRIMJER**__ - **Predvidljiva inicijalna vrijednost - Zadatak s Hacknite platforme - "Blog"**
  
 <file> <file>
 Marko je odlučio napraviti blog na kojem će dijeliti svoje programske projekte.  Marko je odlučio napraviti blog na kojem će dijeliti svoje programske projekte. 
-Daje ti dopuštenje da testiraš sigurnost, ali s obzirom da nema previše funkcionalnosti vjerojatno nećeš pronaći nikakvu ranjivost.+Daje ti dopuštenje da testiraš sigurnost, ali s obzirom na to da nema previše funkcionalnosti vjerojatno nećeš pronaći nikakvu ranjivost.
  
 Flag je u formatu CTF2022[brojevi] Flag je u formatu CTF2022[brojevi]
Line 26: Line 29:
 Na početnoj stranici vidimo da je Marko podijelio C kod generatora lozinki te spominje da je koristio taj kod i kako bi generirao lozinku za tu stranicu. Na početnoj stranici vidimo da je Marko podijelio C kod generatora lozinki te spominje da je koristio taj kod i kako bi generirao lozinku za tu stranicu.
  
-// Slika ovdje +{{prng_1.png}}
  
-U kodu je vidljiva linija <code>srand(time(NULL));</code> koja inicijalizira generator pseudoslučajnih brojeva s trenutnim UNIX vremenom (Unix vrijeme je broj sekundi koji je prošao od 1.1.1970)+U kodu je vidljiva linija <code>srand(time(NULL));</code> koja inicijalizira generator pseudoslučajnih brojeva s trenutnim UNIX vremenom (Unix vrijeme je broj sekundi koji je prošao od 1.1.1970.)
 To upućuje na to da ako otkrijemo kada je Marko pokrenuo ovaj generator lozinki, možemo saznati njegovu lozinku. To upućuje na to da ako otkrijemo kada je Marko pokrenuo ovaj generator lozinki, možemo saznati njegovu lozinku.
  
 Klikom na poveznicu "Marko Markić" vidimo kada je njegov korisnički račun stvoren Klikom na poveznicu "Marko Markić" vidimo kada je njegov korisnički račun stvoren
  
-// Slika ovdje+{{prng_2.png}}
  
 Možemo pretvoriti to vrijeme u UNIX vrijeme i izračunati lozinku. Međutim, budući da nam je dostupna samo minuta kad je Marko stvorio korisnički račun, a ne i  Možemo pretvoriti to vrijeme u UNIX vrijeme i izračunati lozinku. Međutim, budući da nam je dostupna samo minuta kad je Marko stvorio korisnički račun, a ne i 
Line 60: Line 63:
 Pokretanjem programa dobijemo 60 potencijalnih lozinki. Isprobavajući ih sve možemo otkriti pravu <code>dW|w><pK6vWz</code> , prijaviti se i dobiti flag. Pokretanjem programa dobijemo 60 potencijalnih lozinki. Isprobavajući ih sve možemo otkriti pravu <code>dW|w><pK6vWz</code> , prijaviti se i dobiti flag.
  
-TODO:flag slika +Ovakve ranjivosti su prisutne i u stvarnom svijetu. Kaspersky Password Manager je u prošlosti imao vrlo sličnu ranjivost [1]
- +
-Ovakve ranjivosti su prisutne i u stvarnom svijetu. Kaspersky Password Manager je u prošlosti imao vrlo sličnu ranjivost [1][https://www.ledger.com/blog/kaspersky-password-manager]+
  
 Kako bi se ovakva ranjivost popravila, potrebno je koristiti siguran izvor nasumičnosti. Popularni operacijski sustavi često imaju ugrađen sigurni izvor nasumičnosti (npr. /dev/urandom na Linuxu). Kako bi se ovakva ranjivost popravila, potrebno je koristiti siguran izvor nasumičnosti. Popularni operacijski sustavi često imaju ugrađen sigurni izvor nasumičnosti (npr. /dev/urandom na Linuxu).
  
  
-Korištenje algoritma neprikladnog za kriptografske svrhe - Zadatak s Hacknite platforme - Twister+__**PRIMJER **__ - **Korištenje algoritma neprikladnog za kriptografske svrhe - Zadatak s Hacknite platforme - Twister**
  
 <file> <file>
Line 136: Line 137:
 636 izlaza, što je više nego dovoljno da saznamo ključ. 636 izlaza, što je više nego dovoljno da saznamo ključ.
  
-Možemo koristiti alat "randcrack" (https://github.com/tna0y/Python-random-module-cracker) kako bi rješili zadatak:+Možemo koristiti alat //randcrack//[2] kako bi riješili zadatak:
  
 <code> <code>
Line 182: Line 183:
 </code> </code>
  
-Pokretanjem skripte u direktoriju gdje se nalaze i šifrirane datoteke dobivamo flag.+Pokretanjem skripte u direktoriju gdje se nalaze i šifrirane datoteke dobivamo flag.  
 + 
 +Ovaj zadatak je također inspiriran stvarnim slučajem, NemucodAES ransomware je koristio Mersenne twister algoritam za generiranje kriptografskog ključa [3]. 
 + 
 +Iako je dobro da su ransomware developeri nepažljivi i koriste loše metode kriptografije, korištenje nesigurnih generatora slučajnih brojeva može ugroziti i legitimne softvere (npr. legitimni softver za šifriranje diska). 
 + 
 +==Izvori== 
 +[1] https://www.ledger.com/blog/kaspersky-password-manager 
 +[2] https://github.com/tna0y/Python-random-module-cracker 
 +[3] https://web.archive.org/web/20220601204212/https://adamcaudill.com/2017/07/12/breaking-nemucodaes-ransomware/
  
prng.1701182073.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki