windows - Betjener winapis bcrypt.h faktisk bcrypt hashing?

Indlæg af Hanne Mølgaard Plasc

Problem



Dette kan lyde som et mærkeligt spørgsmål, og det føles lidt underligt, at jeg faktisk skal spørge dette, men efter at have brugt et par timer på at se over MSDN-dokumentationen til bcrypt rutinerne, der blev tilføjet i Vista, har jeg nåede næsten til den konklusion, at der ikke er nogen egentlig bcrypt-støtte!


Ifølge Wikipedia:



  bcrypt er en adaptiv kryptografisk hash funktion til adgangskoder
  ... baseret på Blowfish-krypteringen ... Udover at inkorporere en
  salt for at beskytte mod regnbue bordangreb, bcrypt er en adaptiv
  hash: over tid kan det laves langsommere og langsommere, så det forbliver
  modstandsdygtige over for specifikke brute-force søgninger mod hash og
  saltet.



Men fra dokumentationen på MSDN er 'bcrypt' -biblioteket tilsyneladende en generisk grænseflade til kryptering og hashing. Du skal skaffe et håndtag til en 'algoritmeudbyder' via funktionen BCryptOpenAlgorithmProvider, som har flere indbyggede algoritmer at vælge imellem. Men ordet 'blowfish' vises ikke overalt på listen. [4]


Så mangler jeg noget? Læser jeg dette forkert Eller er ikke Windows 's 'bcrypt' -bibliotek ikke rent faktisk understøttet bcrypt ?

Bedste reference


I forbindelse med MSDN er BCrypt en kortform for 'BestCrypt' , men PR-navnet på det er:



  Kryptografi API: Næste Generation (Cng) [5]



Det er implementeret i bcrypt.dll.


BestCrypt/BCrypt/Cng er efterfølgeren til den ældre CryptoAPI. [6]


Microsoft fjerner langsomt henvisninger til 'BestCrypt' fra deres websted, men du kan stadig se det på nogle sider som:



  

SHA256Cng klasse


  
  Denne algoritme er kun til hashing og giver ikke nogen kryptering eller dekryptering. Det bruger BCrypt (BestCrypt) lag CNG. [7]



Det er interessant (for mig alligevel) at .NET-rammen generelt kan give dig tre implementeringer for hver slags kryptoalgoritme. For SHA2 hashing er der for eksempel:



  • SHA256Managed : En implementering, der er skrevet udelukkende i administreret kode

  • SHA256CryptoServiceProvider : en indpakning omkring implementeringen af ​​den cryptografiske tjenesteudbyder (CSP)

  • SHA256Cng : en wrapper omkring kryptografi Next Gen (Cng) implementering



Kort version



Nej, bcrypt er kort for bestcrypt . Og nej, det understøtter ikke bcrypt (blowfish crypt) adgangskode hashing. [8] [9] [10]

Andre referencer 1


BCrypt API'erne er generiske og understøtter forskellige kryptografiske hashalgoritmer, men bcrypt er ikke en af ​​dem. B-præfikset synes kun at være en måde at skelne mellem de ældre API'er og Next Generation.