Toon posts:

[VB] Password valideren bij login

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het maken van een programma, waarbij je voordat je het programma in kan een password moet invoeren om toegang te krijgen. Nu kan ik het alleen niet voor elkaar krijgen om een vallidering te maken van het password, zonder daar een database voor te gebruiken. Het liefst zou ik de passwords in een file willen zetten samen met de gebruikersnamen, maar ja hoe gaat dat met de beveiliging, iemand een idee?

Heb al gezocht met google, maar kan niets geschikts vinden, en de got search leverde ook niets op.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan gewoon een md5 hash gebruiken om de passwords en eventueel de usernames te versleutelen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
sorry wtf is een md5 hash? :?

Verwijderd

[simpel]Een niet om keerbare versleutel techniek[/simpel]

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Owkay:

Er zijn 3 manieren om dit aan te pakken. Met 'dit' bedoel ik dan : redelijke bescherming van een wachtwoord in een tekstbestand.

1) A-symetrische versleuteling
2) Symetrische versleuteling
3) Hashen
Nummer 1 & 2 zijn encryptie, nummer 3 niet.

Wat is nou encryptie?. Dit kun je ongeveer als volgt voorstellen: Als je een a op wilt schrijven, schrijf je een Q op. Zie het ongeveer voor je als een heel makkelijk basisschool substitutie geheimschrift. Maar hoe weet jij nou dat je een a als een Q moet verwisselen en hoe weet je vriendje dat je een Q als een a moet decoderen?

Daarvoor is dus de 'sleutel' De sleutel is dus in jouw geval dit:
code:
1
2
3
4
a->Q
b->Z
c->R
d->C


Natuurlijk kan een computer dit veel beter. Die gebruikt allemaal wiskundige methodes (bitshifts, priemgetallen ed.) om tot een hele sterke encryptie te komen.

Wat zijn nou de verschillen tussen deze twee encrypties en nummer 3?

Nummer 1 is een A-Symetrische encryptie. Je moet je hierbij voorstellen dat de sleutel om te encrypten niet gelijk is aan de decryptie sleutel, zoals bij jouw geheimschrift wel zo was. Waarom is dat nou handig? Stel je voor dat ik jouw mijn sleutel geef en pietje versleutelt ook een bericht voor mij, dan zou jij die kunnen lezen!
Daarom worden A-Symetrische technieken vaak gebruikt op het internet. Het is dus erg veilig, omdat jij jouw sleutel om te ontsleutelen altijd voor jezelf houdt en niet hoeft te delen.
Een nadeel is echter dat het trager is dan Symetrische versleuteling.
Voorbeeld: Blowfish

2) Symetrische versleuteling is gelijk aan het voorbeeld met geheimschrift hierboven. Iedereen heeft dus dezelfde sleutel. Een voordeel ervan, is dat het snel is. Voorbeeld was (meen ik) 3DES.

3) een hash. Een hash is een one-time-pad. Wat betekend dat wat er van het bericht gemaakt wordt niet meer terug te lezen is in zijn orginele vorm. Wat is daar handig aan? Nou hiermee heb je de wachtwoorden goed beveiligd omdat het niet te ontcijferen is. Je vergelijkt het door het ingevoerde wachtwoord ook te hashen en dat te vergelijken de hash in de textfile. Een hash is ontzettend snel en levert voor elke invoer een andere waarde op.

Wat is nou handig in jouw geval: Een hash! 100%
Immers bij de andere manieren MOET er ergens een sleutel vastgelegd worden (voor het decoderen) en als dit op dezelfde computer staat als waarop het programma draait en de persoon dus kan rondkijken bijv dmv explorer, kan het NOOIT veilig zijn.

HTH

Verwijderd

Topicstarter
Nog tips van enkele websites, waar ik een paar stukjes code daarvoor kan vinden.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 10 augustus 2002 @ 17:48:
Nog tips van enkele websites, waar ik een paar stukjes code daarvoor kan vinden.

Ja, tik es wat van de zoektermen die je hier gelezen hebt, bij dat soort sites in (je vindt er oa een rij in de FAQ van P&W).

  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Glimi schreef op 09 augustus 2002 @ 18:12:
Een hash is ontzettend snel en levert voor elke invoer een andere waarde op.
Een hash levert juist voor heel veel invoer dezelfde waarde op :-) Dit is ook logisch, omdat je invoer meestal veel groter is dan de (~32-128 oid bit) hash waarde. En dan het laatjes principe toepassen ;) Kortom, er zijn nog een aantal andere wachtwoorden dan de door jou gekozen die ook juist zijn.

Echter een kleine verandering in de invoer zorgt voor een radicale verandering in de hash.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op 10 augustus 2002 @ 18:23:
[...]

Een hash levert juist voor heel veel invoer dezelfde waarde op :-) Dit is ook logisch, omdat je invoer meestal veel groter is dan de (~32-128 oid bit) hash waarde. En dan het laatjes principe toepassen ;) Kortom, er zijn nog een aantal andere wachtwoorden dan de door jou gekozen die ook juist zijn.

Echter een kleine verandering in de invoer zorgt voor een radicale verandering in de hash.
Dit hoeft niet altijd zo te zijn. Inderdaad bij veel hashes wel. Maar een hash zou ook best 2 keer zo groot als de invoer kunnen zijn.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Zelfs als dat zo is garandeerd een hash algoritme niets over het uniek zijn van de uitvoer. En ik zei al "meestal". Bij wachtwoorden en MD5 zal iha de hash groter zijn dan de plaintext, aangezien md5 een 128-bit has produceert. Dat zijn 16 characters, en wachtwoorden zijn meestal niet groter dan 8.

Het zou wel leuk zijn om dit te onderzoeken. "Bestaan er twee character strings van lengte 8 die dezelfde MD5 hash opleveren?" Ik weet niet of dit zo is, maar ik denk het wel. Het hoeft echter niet zo te zijn.

  • Inge801
  • Registratie: Januari 2002
  • Niet online

Inge801

Iron Maiden

Idd gewoon de aanbevolen md5 hash maken van een wachtwoord, in de registry oid zetten en je kunt hiervoor een standaard module gebruiken, hoef je het ook niet zelf te coden

你还记得吗 记忆的炎夏


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op 10 augustus 2002 @ 19:27:
Zelfs als dat zo is garandeerd een hash algoritme niets over het uniek zijn van de uitvoer. En ik zei al "meestal". Bij wachtwoorden en MD5 zal iha de hash groter zijn dan de plaintext, aangezien md5 een 128-bit has produceert. Dat zijn 16 characters, en wachtwoorden zijn meestal niet groter dan 8.

Het zou wel leuk zijn om dit te onderzoeken. "Bestaan er twee character strings van lengte 8 die dezelfde MD5 hash opleveren?" Ik weet niet of dit zo is, maar ik denk het wel. Het hoeft echter niet zo te zijn.
Je hebt inderdaad geen enkele zekerheid dat je niet dezelfde waarde terug krijgt voor 2 verschillende invoer strings. Inderdaad wel leuk om een keer een test te doen of er 2 verschillende strings zijn die dezelfde uitkomst leveren :) als dat mogelijk is weet ik wel welk password's ik voortaan ga gebruiken :)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Zat een beetje te rekenen...en met een beetje mazzel kan je het wel nagaan. Ik kwam op het volgende:

- Een wachtwoord is hoogst waarschijnlijk gevormd uit een set van 94 characters (de 47 op je toetsenbord en de shift combinaties)

- Je heb dan dus ongeveer 6E15 verschillende wachtwoorden van lengte 8 (94^8)

- De verwachtings waarde van het aantal te testen wachtwoorden voor de eerste "colission" is sqrt(6E15) =~ 77,5 miljoen

- Als we elke duizendste seconde (???) een test kunnen uitvoeren, desnoods parallel, dan doe je er 21,5 uur over.

Het nut? Geen idee, verveelde me, begon te rekenen in mn hoofd hehe. Overigens als je pech hebt en alles af moet zoeken ben je op deze manier zo'n 190.000 jaar bezig.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Mja, leuke theorie :P

md5 is dan ook absoluut niet geschreven om onkraakbaar te zijn, zelfs niet geschreven om data te encrypten.
Het is geschreven om altijd dezelfde unieke hash bij een bepaalde invoer te genereren (en dat een beetje snel, aangezien het ook regelmatig wordt gebruikt bij files van enkele mb's tot gb's)

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Hmmm MD5 is wel degelijk geschreven om "onkraakbaar" te zijn. Wat het ook is in de zin van "computationably infeasible" zijn. Ik kraakte hier ook niet MD5, ik zocht twee strings die naar dezelfde waarde hashen; dat is heel iets anders dan bij een vast staande hash een plaintext te zoeken.

Het doel van MD5 is om een signature van een plaintext te genereren, zodat je (in combinate met andere encryptie technieken zoals rsa) kan zien of een complete plaintext is gewijzigd of niet. En idd om redelijk snel te zijn, hoewel je dan ook natuurlijk gewoon een CRC kan gebruiken als het niet crypto secure hoeft te zijn.

Verwijderd

Topicstarter
Hmm... ik denk dat ik dat hashen wel kan gebruiken voor mijn proggie.

Verwijderd

Topicstarter
Toch nog 1 vraagje, hoe zorg ik er nu voor dat het password met een bepaalde gebruikersnaam wordt gelinkt?

Edit:
Ik zat zelf te denken om voor elke gebruikersnaam een apparte ini sub te maken met daaronder het password, bijv:

[gebruikersnaam]
password= 41543642465A33564159434046

of is er nog een eenvoudiger en snellere manier

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zoijar schreef op 11 augustus 2002 @ 00:27:
Zat een beetje te rekenen...en met een beetje mazzel kan je het wel nagaan. Ik kwam op het volgende:

- Een wachtwoord is hoogst waarschijnlijk gevormd uit een set van 94 characters (de 47 op je toetsenbord en de shift combinaties)

- Je heb dan dus ongeveer 6E15 verschillende wachtwoorden van lengte 8 (94^8)

- De verwachtings waarde van het aantal te testen wachtwoorden voor de eerste "colission" is sqrt(6E15) =~ 77,5 miljoen

- Als we elke duizendste seconde (???) een test kunnen uitvoeren, desnoods parallel, dan doe je er 21,5 uur over.

Het nut? Geen idee, verveelde me, begon te rekenen in mn hoofd hehe. Overigens als je pech hebt en alles af moet zoeken ben je op deze manier zo'n 190.000 jaar bezig.
Mja wel leuk om een keer uit te proberen :) dan kan je daarna stoer doen dat je 2 passwords hebt die werken. Ik zal eens een proggie schrijven die het gaat proberen. Het probleem is alleen dat je het resultaat van je gevonden hash moet vergelijken met al je vorige hashes omdat het niet waarschijnlijk is dat elke hash een 2e zelfde hash heeft.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Gebruik je voor het vergelijken toch een hash table? ;) hehe

Maar serieus, zoekboom ofzo. B+ tree?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ja je moet inderdaad zoiets doen met een Zoekboom ofzo ik zal zo Visiual studio maar weer eens installeren heb namelijk net mijn computer opnieuw geinstaleerd en dan ga ik het eens proberen te maken. Ik denk alleen dat het wel redelijk goed in elkaar zit en dat mijn programma een aantal dagen staat te rekenen en dat hij dan niks gevonden heeft en dat ik het dan maar weer stop zet :)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1