Bash:
Satunnaislukujen generointi
Kuinka:
Bashissa $RANDOM
-muuttuja on se mihin turvaudutaan satunnaislukujen tuottamisessa. Joka kerta kun viittaat siihen, Bash tarjoaa pseudosatunnaisen kokonaisluvun väliltä 0 - 32767. Tutkitaan joitakin käytännön esimerkkejä:
# $RANDOM:n peruskäyttö
echo $RANDOM
# Satunnaisluvun generointi määritellyllä välillä (tässä 0-99)
echo $(( RANDOM % 100 ))
# "Turvallisemman" satunnaisluvun generointi, sopii salasanoihin tai avaimiin
# Käyttäen /dev/urandomia od-komennon kanssa
head -c 8 /dev/urandom | od -An -tu4
# RANDOMin alustaminen toistettavuuden saavuttamiseksi
RANDOM=42; echo $RANDOM
Esimerkkituloste (huomaa: todellinen tuloste vaihtelee, koska luvut ovat satunnaisia):
16253
83
3581760565
17220
Syväluotaus
Mekanismi Bashin $RANDOM
n taustalla tuottaa pseudosatunnaislukuja, mikä tarkoittaa, että ne noudattavat algoritmia ja ovat teoriassa ennustettavissa - potentiaalinen turvallisuusriski sovelluksille, jotka vaativat aitoa arvaamattomuutta. Nykyaikaiset kryptografiset sovellukset vaativat yleensä satunnaisuutta, joka on johdettu fyysisistä ilmiöistä tai erityisesti satunnaisen datan tuottamiseen suunnitellusta laitteistosta, kuten Linuxin /dev/urandom
tai /dev/random
, jotka keräävät ympäristön kohinaa.
Satunnais- tai ei-turvallisuuskriittisissä tehtävissä $RANDOM
riittää ja tarjoaa yksinkertaisuuden etuna. Kuitenkin kryptografisiin tarkoituksiin tai kun satunnaisuuden laatu on kriittistä, kehittäjien tulisi kääntyä muiden työkalujen ja kielten puoleen, jotka on suunniteltu kryptografian näkökulmasta mielessä pitäen, kuten OpenSSL tai ohjelmointikielet, joilla on vankat satunnaislukugeneraattorikirjastot.
Vaikka Bashin $RANDOM
toimii tarkoituksessaan skripteissä, jotka vaativat perussatunnaislukuja, sen rajoitukset tulisi ohjata kehittäjiä kohti vahvempia ratkaisuja sovelluksissa, joissa satunnaisuuden laatu tai turvallisuus on merkityksellistä.