image

Cryptografisch Androidlek treft 320.000 apps

donderdag 15 augustus 2013, 11:11 door Redactie, 3 reacties

Google heeft bevestigd dat het Android besturingssysteem een kwetsbaarheid in een cryptografische functie bevat waardoor de afgelopen dagen voor duizenden dollars aan Bitcoins zijn gestolen. Het probleem speelt echter niet alleen bij apps waarmee gebruikers hun Bitcoins kunnen beheren, maar werd daar wel het eerste opgemerkt. Bitcoin gebruikt publieke/privésleutel cryptografie om Bitcointransacties te signeren.

Voor Bitcointransacties worden Bitcoinadressen gebruikt, een verzameling alfanumerieke tekens die als bestemming voor een betaling via Bitcoin dienen. De veiligheid van het systeem is afhankelijk dat elk adres een eigen privésleutel heeft die alleen bij de eigenaar van het adres bekend is.

Als een aanvaller toegang tot de privésleutels van een adres krijgt kan hij alle Bitcoins uitgeven die naar dit adres worden gestuurd. Deze week werd van verschillende gebruikers de privésleutel achterhaald, waarna voor zo'n 5700 dollar aan Bitcoins werd gestolen.

Implementatie

Al gauw werd gesteld dat het probleem zich in de Android implementatie van de Java SecureRandom getallengenerator bevindt. SecureRandom genereert cryptografische sterke willekeurige getallen. De implementatie op Android blijkt een probleem te bevatten waardoor het mogelijk is om de privésleutel te achterhalen en geld uit de portemonnee van Bitcoingebruikers te stelen.

"We hebben nu vastgesteld dat applicaties die de Java Cryptography Architecture (JCA) gebruiken voor het genereren van sleutels, signeren of het genereren van willekeurige getallen op Androidtoestellen geen voldoende sterke cryptografische waardes ontvangen door het verkeerd initialiseren van de onderliggende pseudorandom number generator (PRNG)", schrijft Android security engineer Alex Klyubin op het Android Developers blog.

Veel meer applicaties

Ontwikkelaars die de JCA gebruiken krijgen het advies om hun applicaties te updaten en de PRNG op een andere manier te initialiseren zodat er wel voldoende sterke getallen worden gegenereerd. Verschillende van de getroffen Android Bitcoin wallets hebben inmiddels updates uitgebracht.

Het probleem speelt echter bij veel meer applicaties dan alleen de getroffen Android Bitcoin wallets. Anti-virusbedrijf Symantec ontdekte 360.000 applicaties die SecureRandom gebruiken en dat 320.000 applicaties dit op dezelfde manier doen als de kwetsbare Bitcoin wallets.

Update: het gaat niet om alfanumerieke getallen maar tekens

Reacties (3)
15-08-2013, 12:21 door Anoniem
Met alfanumerieke getallen wordt hexadecimale getallen bedoeld neem ik aan?

Ik begrijp overigens niet waarom Google het wiel opnieuw heeft zitten uitvinden met een eigen implementatie van een nondeterministisch geseede PRNG terwijl de kernel het pseudo-device /dev/urandom aanbiedt dat precies hetzelfde doet en tot in den treure getest is door de linux kernel developers.
15-08-2013, 12:46 door Whacko
Door Anoniem: Met alfanumerieke getallen wordt hexadecimale getallen bedoeld neem ik aan?

Ik begrijp overigens niet waarom Google het wiel opnieuw heeft zitten uitvinden met een eigen implementatie van een nondeterministisch geseede PRNG terwijl de kernel het pseudo-device /dev/urandom aanbiedt dat precies hetzelfde doet en tot in den treure getest is door de linux kernel developers.
Het zijn wel degelijk Alfanumerieke adressen. NIet alleen 0 tot en met F maar 0-9 en A-Z en a-z.

"We hebben nu vastgesteld dat applicaties die de Java Cryptography Architecture (JCA) gebruiken voor het genereren van sleutels, signeren of het genereren van willekeurige getallen op Androidtoestellen geen voldoende sterke cryptografische waardes ontvangen door het verkeerd initialiseren van de onderliggende pseudorandom number generator (PRNG)"
Oftewel, ze zullen /dev/urandom (of een soortgelijk iets) wel gebruiken maar die wordt dus verkeerd geseed.
15-08-2013, 14:07 door Anoniem
Door Whacko: Het zijn wel degelijk Alfanumerieke adressen. NIet alleen 0 tot en met F maar 0-9 en A-Z en a-z.

Klopt, het gaat om adressen maar niet om getallen; getallen zijn per definitie numeriek en daarom bestaan alfanumerieke getallen niet.

Oftewel, ze zullen /dev/urandom (of een soortgelijk iets) wel gebruiken maar die wordt dus verkeerd geseed.

Nee, want je kunt /dev/urandom niet seeden. De PRNG die achter het pseudo-device zit wordt automatisch en herhaaldelijk geseed met echte (nondeterministische) willekeurige getallen die geëxtraheerd worden uit toetsenbord- en muisbewegingen, seektimes van harddisks enz.

(Ik ben dezelfde Anoniem die de eerste reactie schreef.)
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.