Stap 14: Het belang van een willekeurige k
Laten we bespreken nu hoe en waarom de ECDSA-ALGORITME handtekeningen die Sony in de Playstation 3 gebruikt defect waren en hoe het hackers toegang te krijgen tot de persoonlijke sleutel van de PS3's ECDSA-ALGORITME is toegestaan.
Dus onthoud je de vergelijkingen die nodig zijn voor het genereren van een handtekening... R = k * G en S = k ^ -1 (z + dA * R) mod p... ook deze vergelijking kracht ligt in het feit dat je een vergelijking met twee onbekenden (k en dA) dus er is geen manier om te bepalen of een van die.
Echter de beveiliging van het algoritme is gebaseerd op de uitvoering ervan en het is belangrijk om ervoor te zorgen dat 'k' willekeurig wordt gegenereerd en dat er geen manier dat iemand is kan raden, berekenen of een timing-aanval of een ander type aanval te gebruiken om te vinden de willekeurige waarde 'k'. Maar Sony maakte een enorme fout in de uitvoering ervan, ze gebruikt dezelfde waarde voor de 'k' overal, wat betekent dat als u twee handtekeningen, zowel met de hetzelfde k hebt, vervolgens zij zal beide dezelfde R waarde hebben, en het betekent dat u kunt berekenen k met behulp van twee S handtekeningen van twee bestanden met hashes z en z' en handtekeningen S en S' respectievelijk :
S-S' k = ^ -1 (z + dA * R) – k ^ -1 (z' + da * R) = k ^ -1 (z + da * R-z'-dA * R) = k ^ -1 (z – z')
So : k = (z – z’) / (S – S’)
Als je eenmaal k weet, dan is de vergelijking voor S wordt één vergelijking met één onbekende en kan vervolgens eenvoudig worden opgelost voor dA :
dA = (S * k – z) / R
Als je eenmaal het privé belangrijkste dA weet, kunt u nu uw bestanden ondertekenen en de PS3 zal het herkennen als een authentieke bestand ondertekend door Sony. Dit is waarom het belangrijk is om ervoor te zorgen dat de random nummer dat wordt gebruikt voor het genereren van de handtekening eigenlijk "cryptografisch willekeurige is". Dit is ook de reden waarom het is onmogelijk om een douaneingebouwde programmatuur boven 3.56, simpelweg omdat sinds de 3,56 versie, Sony hebben vaste hun ECDSA-ALGORITME algoritme uitvoering en nieuwe sleutels waarvoor het nu onmogelijk te vinden van de persoonlijke sleutel gebruikt...
Een ander voorbeeld van dit probleem is wanneer sommige bitcoin-clients een niet-cryptografisch random number generator (op sommige browsers en op sommige Android-clients) waardoor ze gebruikt te ondertekenen hun transacties met dezelfde "k" waarde en kwaadwillige personen konden stelen van hun fondsen te vinden van de persoonlijke sleutel van hun bitcoin wallet.
Dit toont het belang van het gebruik van een echt willekeurig getal elke keer dat u een handtekening, zoals u de persoonlijke sleutel blootstellen zal als de R -waarde van de (R, S) handtekening paar hetzelfde op twee verschillende handtekeningen is.
Een goede grap hierover in xkcd grappig 221 wordt weergegeven (zie afbeelding hierboven) die werd de gaan-aan afbeelding ter illustratie van dit probleem. Het beeld werd vaak opnieuw gebruikt wanneer deze een fout van de implementatie van het algoritme is gebeurd.
Het algoritme van de ECDSA-ALGORITME is zeer veilig waarvoor het is onmogelijk te vinden van de persoonlijke sleutel... zolang de uitvoering uiteraard correct wordt gedaan. Als er een manier om te vinden van de persoonlijke sleutel, kan de beveiliging van elke computer, website, systeem worden aangetast omdat veel systemen zijn afhankelijk van ECDSA-ALGORITME voor hun veiligheid, en het is onmogelijk te kraken.