Kasutaja:ITekspert/Bcrypt

Allikas: Vikipeedia

bcrypt on parooli krüpteerimis funktsioon, mis on loodud Niels Provos ja David Mazières poolt. Funktsioon põhineb Blowfishi cipheril ja avalikustati USENIX aastal 1999. Bcrypt on kohandumisvõimeline funktsioon, mille iteratsiooni on võimalik suurendada ja seeläbi muuta seda aeglaseks ja vastupidavamaks brute-force search rünnakutele arvestades pidevat arvutite arvutusvõimekuse kasvu.

bcrypt parooli krüpteerimise funktsioon on vaikimisi olemas OpenBSD ja Linux distributions nagu näiteks SUSE Linux.

Samuti on bcrypt funktsiooni võimalik implementeerida C, C++, C#, Go, Javam JavaScript, Elixir, Perl, PHP, Python, Ruby ja teistele programmeerimiskeeltele.

Päritolu[muuda | muuda lähteteksti]

bcrypt parooli krüpteeritud kuju

Blowfish on märkimisväärne plokkide salakirja võtmete seadistamise faasi poolest. See algab tavaolekus alamvõtmetega, mille olekut kasutatakse plokkide krüpteerimiseks, kasutades lõiku võtmetest ning saadud lõpptulemust kasutatakse mõndade alamvõtmete väljavahetamiseks. Sedasi jätkab ta oma tööd, kuni kõik alamvõtmed on määratud.

Provos ja Mazières kasutasid seda meetodit ära ja arendasid seda edasi. Nad arendasid välja uue võtmete häälestuse algoritmi Blowfish'ile, dubleerides tulemuseks saadud cipher'it "Eksblowfish". Võtmete häälestus algab modifitseeritud Blowfish'i tavalistest võtmetest, kus on kasutatud salti ehk krüpteerimis lisasõna ja parooli, et määrata kõik alamvõtmed. Siis on mitmeid iteratsioone, kus on kasutatud Blowfish'i alamvõtmete algoritmi. Teoreetiliselt, et ole see tugevam, kui Blowfish'i alamvõtmete korraldus, aga peale mitmeid iteratsioone alamvõtmete määramisel on juba märkimisväärne oma tugevuses.

Algoritm[muuda | muuda lähteteksti]

bcrypt algoritm on lõppsaadus, kui krüpteerida teksti "OrpheanBeholderScryDoubt" 64 korda, kasutades Blowfish'i. bcrypt'is on asendatud tavaline Blowfish alamvõtmete häälestus expensive key häälestusega.

bcrypt krüpteerimis funktsioon on tihedas sõltuvuses võtmete häälestuse algoritmiga "Eksblowfish".

Vajalikkus[muuda | muuda lähteteksti]

bcrypt on tänapäevase internetiturvalisuse üks olulisemaid elemente. Kuna arvutite võimsus on pidevas kasvamises, siis on vajalik krüpteerimise algoritm, mida on võimalik kohandada vastavalt arvutite praegusele arvutusvõimsusele. Olukorras, kus häkkeril on ligipääs andmebaasil ja andmebaas sisaldab endas kasutajate paroole, siis mõndade vanemate krüpteerimismeetodite abil oleks häkkeril väga kiiresti võimalik leida esialgne kasutaja parool, kuid bcrypt teeb selle protsessi äärmiselt aeganõudvaks protsessiks ja seda on võimalik pidevalt

Kasutamine[muuda | muuda lähteteksti]

bcrypti kasutamise puhul on oluline määrata cost faktor, mida suurem on number, seda keerulisem on parooli dekrüpteerida ja seda rohkem arvutusvõimsust on vaja arvutil parooli krüpteermiseks. Parooli maksimaalseks pikkuseks võib-olla 56 karakterit.

PHP puhul bcrypti kasutamine:

$options = [
    'cost' => 12,
];
$password=password_hash("minuparool", PASSWORD_BCRYPT, $options);
echo $password;

Python3 puhul bcrypti kasutamine:

import bcrypt
password = b"minuparool"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
if bcrypt.checkpw(password, hashed):
    print("sobib.")
else:
    print("ei sobi.")

Võimalused dekrüpteerimiseks[muuda | muuda lähteteksti]

Krüpteerimis funktsiooni poolt krüpteeritud parooli pole võimalik esialgeks parooliks muuta lihtsalt krüpteeritud sõne kaudu.

Selleks tuleb kasutada brute force attacki, mis tähendab krüpteeritud sõne võrduma panemist, erinevate sõnade krüpteeringutega, kuni leitakse sobiv vaste. bcrypt erilisus seisneb selles, et selle puhul on võimalik tõsta krüpteerimise raskusastet, mida suurem on raskusaste, seda rohkem aega kulub parooli krüpteeritud kuju väljaarvutamiseks ja arvutusvõimsust samuti. Selline paroolide piiramatu proovimine on võimalik ainult juhul, kui häkkeril on reaalselt olemas mingi lehe andmebaas koos paroolidega.

On olemas ka rainbow tabelid, mis sisaldavad endas kõiki enim kasutatavate paroolide krüpteeringuid ja siinkohal, et ole enam väga suurt vahet, kui tugeva krüpteerimisfunktsiooniga on tegu, sest süsteem ei pea ise suvaliselt genereerima paroole. Sellega võidab tohutult ajas, kuna parooli ei pea ära krüpteerima, vaid peab lihtsalt leidma vaste rainbow tabelist. Kuid, kui parool kasutab salti ehk krüpteerimis lisasõna, mis on suvaliselt genereeritud sõne, mis lisatakse kasutaja sisestatud paroolile juurde. Koos saltiga on rainbow tabelid täiesti kasutud, kuna rainbow tabelid sisaldavad kindla parooliga krüpteeringuid, kuid peaaegu võimatu oleks, et neil oleks suvalise sõne ja parooliga krüpteeritud sõned,

Mida aeg edasi, seda suuremaks arvutite arvutusvõimsus kasvab ja kindlasti tekivad uued võimalused paroolide väljaarvutamiseks, kuid hetkese seisuga oma andmete turvalisuse tagamiseks, tuleks igal lehel kasutada erinevat parooli ja paroolid peaksid ülesehituselt olema keerulised. Kuigi paroolide iseseisev väljaarvutamine on üks keerulisemaid võimalusi parooli esialgse kuju leidmiseks.

Allikad[muuda | muuda lähteteksti]

https://en.wikipedia.org/wiki/Bcrypt

https://auth0.com/blog/hashing-in-action-understanding-bcrypt/

http://php.net/manual/en/function.password-hash.php

https://pypi.org/project/bcrypt/

https://en.wikipedia.org/wiki/Rainbow_table