Hacker maakt tool die tekst kan 'afluisteren' van geluid van toetsenborden

Een echte tweaker wil natuurlijk een mechanisch toetsenbord met blue switches als het even kan, maar wat als juist dat lawaai gevaar oplevert? Een hacker heeft een tool gebouwd om teksten te achterhalen op basis van het geluid van toetsaanslagen. Al is dat gelukkig niet heel praktisch.

De tool heet Keytap2 en is gemaakt door de Bulgaarse hacker Georgi Gerganov. Hij heeft de tool op GitHub gezet. Keytap2 is een tool waarmee het mogelijk is een tekst te achterhalen op basis van het geluid van toetsaanslagen. Gerganov laat in een video zien hoe hij een stuk Engelse tekst kan achterhalen door een audiobestand af te spelen waarin iemand die tekst typt. Ook heeft hij een proof-of-concept-website gemaakt, die wel alleen werkt in browsers die WebAssembly ondersteunen.

Helemaal nieuw is Gerganovs tool niet. De '2' in de naam verklapt al dat het gaat om een verbeterde versie van de tool die hij in 2018 uitbracht. Keytap1 kon ook al een mechanisch toetsenbord afluisteren als daar een microfoon bij in de buurt stond. Maar die tool had een groot nadeel, legt Gerganov uit: het is dan nodig om eerst veel trainingsdata te verzamelen om een algoritme te maken. Dat hoeft nu niet meer, of in ieder geval in mindere mate.

De tool werkt nog steeds grotendeels op basis van de originele Keytap-tool. Daarbij wordt er een opname gemaakt van het geluid van toetsaanslagen. Op basis van die waveform filtert de tool de eerste 75 milliseconden van een toetsaanslag, die volgens Gerganov uniek zijn en dus kunnen worden gemapt. Vervolgens moeten die unieke uitkomsten worden vertaald naar de juiste tekens op het toetsenbord. Dat gebeurt op basis van een algoritme dat Gerganov zelf heeft geschreven.

In zijn oorspronkelijke Keytap-tool was het nodig om eerst veel trainingsdata te verzamelen, door eerst een opname te maken en die te vergelijken met de output-tekst. Dat moest bovendien van het specifieke toetsenbord zijn dat iemand gebruikt. Dat maakte de tool niet erg praktisch in gebruik.

De nieuwe versie van de tool hoeft geen specifieke trainingsdata van een 'slachtoffer' te hebben. In plaats daarvan kijkt Keytap2 naar n-grams, een linguïstische methode die de waarschijnlijkheid van lettercombinaties aangeeft. Keytap2 hoeft daarmee alleen getraind te worden op een algemene corpus-tekst. Wel moet de aanvaller dan weten in welke taal er wordt getypt. De proof-of-concept werkt alleen nog met Engelstalige input.

Volgens Gerganov is de tool daarna nog steeds niet helemaal betrouwbaar. "De uitkomst komt niet in de buurt van perfectie. Daar zitten verschillende factoren achter, zoals achtergrondgeluiden en de verschillende manieren waarop een toets wordt aangeslagen", schrijft hij. Daarom moeten toetsaanslagen in groepen worden opgedeeld, waar vervolgens een nieuw algoritme op wordt losgelaten om te berekenen hoe waarschijnlijk het is dat een toetsaanslag juist wordt vertaald.

Gerganov erkent dat de resultaten van de tool desondanks nog steeds kwetsbaar zijn. Het is bijvoorbeeld nog niet mogelijk de aanval te automatiseren, dus heeft de PoC een optie om de uitkomsten handmatig aan te passen. Ook is het nodig een mechanisch toetsenbord te gebruiken en is de tool nog vrij zwaar in het gebruik. Voorlopig kun je dus nog wel lekker wel blijven tikken zonder angst.

Door Tijs Hofmans

Nieuwscoördinator

17-12-2020 • 11:25

56 Linkedin

Reacties (56)

56
56
33
8
1
16
Wijzig sortering
Ik kan het nieuwsartikel niet meer terugvinden op T.net, maar 10 jaar geleden kwam er ook al iets soortgelijks voorbij:
Cracking Passwords using Keyboard Acoustics and Language Modeling
http://citeseerx.ist.psu....86.2078&rep=rep1&type=pdf
Het is ook zeker niet de eerste keer dat ik iets dergelijks voorbij zie komen, al zit het vaak in academische hoek. Aan de Ben Gurion Universiteit in Israël wordt veel onderzoek gedaan naar het 'afluisteren' van air-gapped systemen door bijvoorbeeld warmte of geluid af te lezen. Heel cool, maar vooral ook theoretisch.
voorheen was dat een stuk makkelijker met CRT monitoren, daar was de mogelijkheid al om het scherm op afstand uit te lezen zonder in het gebouw aanwezig te hoeven zijn, dat was echt niet academisch meer, veiligheidsdiensten en daaraan gelieerde bedrijven hielden ercht rekening met dat afluisteren en richten de omgeving zo in dat je niet meer 'dicht' bij een gebouw kon komen

ik kon het niet laten om te reageren op het afluisteren van air gapped systemen
theoretisch aan de universiteit misschien, maar Israël staat qua spy-tech op gelijke hoogte met de VS, Rusland en China.
Dat was het eerste waar ik aan dacht: prior art.
N-grams zijn geen "theorie". We gebruiken het veelal om probabilistische modellen te bouwen van eender welk gegeven. n is vaak een hyperparameter die je tunet naargelang je taak. Je kan dus een 1-, 2-, 3-, ..., n-gram hebben. Het wilt meestal zeggen "een verzameling van n sequentiele elementen in een lijst". In NLP/computationele taalkunde wordt het vaak op karakter- of woordniveau gebruikt. Enkele voorbeelden:

Woordgebaseerde bigrams (2-gram) in "Dit is een zin .": Dit is; is een; een zin; zin .

(Vaak wordt er ook een impliciet start en end token toegevoegd.)

Dit is vaak ook hoe je predictive toetsenbord op je telefoon werkt. Op basis van deze informatie kan je statistische modellen bouwen die kunnen voorspellen wat, gegeven de voorgaande context, de meest waarschijnlijke keuze is voor het volgende woord.

In dit artikel gaat het over individuele letters, inclusief spaties. Dus in dit stukje "hello world" heb je de volgende character trigrams (3-gram): hel; ell; llo; lo ; o w; wo; enzovoorts. In veel gevallen neem je bij 1+-grams ook de informatie van alle lagere n-grams mee. Dus een trigram model bevat ook bigrams en unigrams.

Het voordeel hiervan is hopelijk duidelijk: door een relatief eenvoudig statisch model kan je dus toch voorspellingen maken op basis van voorgaande (en in principe ook volgende) context.

[Reactie gewijzigd door BramVroy op 17 december 2020 12:23]

N-grams zijn geen "theorie"
Wat is een betere benaming? Linguïstisch model?
Ik zou het een "taalkundige methode" noemen. Bij een theorie denk ik eerder aan een theorie die je kan bewijzen of ontkrachten, maar n-grams zijn een puur methodologisch, experimenteel gegeven.
Theorie hoeft niet perse theoretisch te betekenen maar ik vind 'methode' inderdaad een betere term ja, ik maak dat ervan.
Ik zou niet weten waarom dit geen theorie is...?
Omdat deze methode op zichzelf niets voorspelt of uitlegt. Het is alleen een manier om bijvoorbeeld naar een tekst te kijken met statistische methodes.

Ik heb bijvoorbeeld deze methode wel gebruikt in het verleden om op basis van abstracts van wetenschappelijke artikelen deze te clusteren in verschillende wetenschappelijke velden, op basis van de di- of trigrams, deze voor te stellen als n-dimensionale vectoren en dan de cosinus tussen deze vectoren als maat te nemen voor de verwantschap tussen twee artikelen.

Dát een dergelijke clustering inzicht kan opleveren is een theorie. De methode op zichzelf niet.
Ik ben het akkoord met de definitie waarnaar je linkt. Ik spreek die niet tegen. N-grams is geen te bewijzen of te ontkrachten theorie. Het is een methode die je kan gebruiken om theorieën uit te testen.
Gelukkig zijn drogisterijen waar ik aspirine kan kopen nog wel open.... :?
Grappig, ik heb laatst met de Teachable Machine van Google een dataset getraind die aan de hand van geluidssamples kan herken welke letter je "droog" met je vinger naast je telefoon op je tafel schrijft. Het was maar een simpele test, maar als je het verder uit zou werken zou je dus elk blad waar je je telefoon op legt kunnen gebruiken als schrijfpad, zonder dat je hiervoor extra hardware nodig hebt.
ow damn dat is een cool idee! Ik heb nog nooit iets met ML gedaan. Heb je deze dataset ergens dat ik hiermee kan spelen/uitproberen hoe dit werkt?
Het is niet op het niveau gekomen dat jij er waarschijnlijk iets mee kunt; om dit echt goed op te zetten zal je geluidsopnames moeten maken op verschillende soorten oppervlakten en door verschillende mensen op verschillende plekken met verschillende achtergrondgeluiden om tot een "gemiddelde" te komen. Hoe meer data, hoe beter.

Dat gezegd hebbende, als je een nieuw Audio Project start en per letter die je wilt herkennen een class aanmaakt en meerdere samples opneemt (let op, je moet wel snel schrijven) dan kan je het model trainen en daarna testen. Wil je er echt een app van maken, dan zal je met Tensorflow zelf aan de gang moeten. Het makkelijkste begin daarbij is om het als website te ontwikkelen omdat je dan niet met alle prerequisites zit die je wel hebt bij een native app voor Android of iOS. Een handige library daarbij is de SoundClassifier module van ml5js.
Je zou in principe een toetsenbord kunnen ontwikkelen die juist gebruikt maakt van dit fenomeen.
Namelijk een draadloze toetsenbord zonder batterij of complexe onderdelen.

Ik kan wel wat use-cases bedenken.
Ik ben dan wel benieuwd hoe hij omgevingsgeluid eruit gaat filteren of als je meerdere van zulke toetsenborden naast elkaar gebruikt. Ik voorzie een hoop trolls die in hun spotify muziek precies frequenties gaan verwerken waarop dergelijk toetsenborden reageren ^^ Of juist gaan misbruiken als virus, je hoeft het geluid maar af te spelen en het toetsenbord voert allerlei commando's uit..
Je kan toch een unieke code meegeven in het geluid van elke toets en dan laat je het toetsenbord eerst "pairen" aan de hand daarvan. Het toetsenbord moet natuurlijk wel speciaal gebouwd zijn zodat er doormiddel van krasjes, groeven, etc een uniek geluid geproduceerd wordt wat een computer kan decoderen.

Ik denk dat het wel allemaal vrij simpel op te lossen is.
En waarom zou je dan niet ervoor kiezen om een hardware keylogger in te zetten? Dan heb je een 100% match en niets te maken met unieke geluidsfragmenten die hetzelfde toetsenbord vervolgens weer moet identificeren?
Ik denk dat het geluid van elke toets uniek is door de constructie van het toetsenbord zelf; als bijvoorbeeld de PCB op zeg 4 plaatsen maar ondersteund wordt in plaats van overal dan maakt dat de natrilling van elke toetsaanslag al anders.
Grappig en creatief, maar ik vrees dat het meer nadelen heeft dan een draadloos toetsenbord. Hoe klinkt de shift-toets / een hoofdletter? En een optie-shift-toets, command, control, etc combinatie? Hoe weet de ontvangende computer dat je een toets ingedrukt houdt?
Kinetische energie opvangen en NFC toepassen kan op een dag voldoende zijn om een keyboard van "stroom" te voorzien. Zelfs de LEDs kan je e-reader stijl een status laten aangeven zonder dat het energie gebruikt.

Lijkt me wel een leuke uitdaging :)
Daar was men een jaar of 20 geleden ook mee bezig voor afstandsbedieningen, zodat je die nooit meer hoefde op te laden.

Het is mogelijk, maar de benodigde energie (ik betwijfel of dit nu veel efficienter is geworden) die nodig was om er een radio- of lichtsignaal van te maken, maakte het behoorlijk onpraktisch. Men vervangt liever af en toe een batterij dan dat ze meer kracht moeten zetten om een toets in te drukken.
Dat algotithme is dan net zo goed een complex onderdeel.
Ik zie die toepassing mis gaan op een behoorlijk aantal praktische redenen.

Bijvoorbeeld het herkennen van key-holds. Het langer vasthouden van een toets zal niet herkend worden. Dat zal erg lastig worden bij het typen van hoofdletters, of andere combinaties.

Omgevingsgeluid zal je toetsenbord bovendien storen, en je hebt altijd een microfoon nodig die ingeplugd moet zijn en binnen bereik van het toetsenbord.

[Reactie gewijzigd door Boxman op 17 december 2020 13:12]

"Key-hold" kun je detecteren door zowel het indrukken als het loslaten van de toets van een geluidje te voorzien.

Blijft het 'toets-omhoog' geluidje uit, dan is er sprake van "Key-hold"
Dan hoef je maar 1 zo'n geluidje te missen en je hele posssssssssssssssssssssssssssssssssssstssssssssssssssssssssss isssssssssss nsssssssssssassssssssssasssssssssssrssssssssss dssssssssse msssssssssssassssssasssssssssn

Of nadat ik 1x een hoofdletter wilde typen van iemands NAAM SCHREEUW IK INEENS DE hele post bij elkaar.

Denk dat er praktisch gezien teveel haken en ogen aan zitten.
Een mechanisch, draadloos toetsenbord dat communiceert op basis van geluid, bedoel je ?

Technisch moet dat zeker kunnen, maar er kleven wel een flink aantal nadelen aan qua stoorsignalen en afluistermogelijkheden.

De use-case zie ik echter nog niet... in welke situatie wegen de nadelen op tegen de voordelen ?

Voor systemen waar je geen accu in je toetsenbord wil is er het ouderwetse kabeltje en voor de situatie dat het draadloos moet is een batterij/accuutje vaak maar een heel klein probleem.
Waar ik wel benieuwd naar ben is het geluid van de letters/cijfers op een toetsenbord klinken toch hetzelfde. Dus hoe bepaald deze tool welke letter getypt wordt. Vooral de beginletter van een woord en/of zin is essentieel om te kunnen bepalen welk woord er getypt wordt.
Tenzij elke letter op een toetsenbord een uniek geluid produceert. Kijk andere toetsen zoals de spatiebalk en enter knop maken unieke geluiden.

[Reactie gewijzigd door Joostk op 17 december 2020 11:50]

Voor je gehoor maken ze hetzelfde geluid, maar als je het door software bekijkt is er genoeg verschil om onderscheid te kunnen maken; denk aan: afstand tov de microfoon, hoek van de vinger die hem raakt, welke vinger, hoe sterk, en wat deze doet (denk ik) is patronen van aanslagen bekijken op basis van vaak voorkomende woorden - dwz; mensen hebben de neiging om hetzelfde woord met bijv. dezelfde snelheid in te tikken.
"Voorlopig kun je dus nog wel lekker wel blijven tikken zonder angst."

Euhm, nee. Deze tool is openbaar en DAT maakt hem anders dan anderen. Maar ik eet me schoen op als dit de eerste vorm van deze software is ter wereld.
Er staat letterlijk in de tekst dat het de tweede versie is dus je kunt je schoenen aanhouden
Waar ik op doel is dat er waarschijnlijk al meerdere partijen dit soort software hebben.

Daarbij denk ik niet aan individuen en dus waarschijnlijk aan uitgebreider ontwikkelde software.
Ik vraag me af of een soortgelijke techniek misschien zou werken op smartphones. Alleen dan niet met de microfoon, maar de G-sensor? Het lijkt me dat je telefoon een heel klein beetje beweegt op het moment dat je een toets op je toetsenbord indrukt.
Volgens mij gebeurt dat ook; hier eentje die het doet via de sensor van de smartwatch (die de telefoon vasthoudt).
Grappig, heb dit zo'n 3 weken geleden een theoretische aanval bedacht.
Als je, je scherm locked, word je mic niet gemute. Als je op dat moment een call open hebt staan. Kan men je toetsaanslagen horen.

Zoom heeft onder tussen een optie, om je video/mic te muten als je, je scherm locked. En bij Microsoft is een "bug" ingeschoten.

[Reactie gewijzigd door wica op 17 december 2020 14:15]

Men kan dan ook gewoon "alles" horen op dat moment. Wat je tegen keer collega vertelt is vast interessanter dan het geluid van je toetsenbord...
Klopt, ik weet ondertussen hoeveel stappen mijn collega's moeten doen om koffie te pakken, wc.
Hoe laat de postbode langs komt en veel meer.

Daarom dat ik vind, als je scherm locked, dat video moet stoppen en de mic op mute moet.
Het valt me op dat hier heel erg met twee (wijs?) vingers lijkt te worden getypt, waarbij je duidelijk hoort dat het geluid per toets kan verschillen. Het meerendeel van de meer geoefende mensen typt blind en sneller, zeker bij woorden die al in de muscle memory zitten.

Aan de ene kant denk ik dat dit de analyse bemoeilijkt omdat de geluiden van toetsaanslagen dichter bij elkaar zitten of elkaar zelfs overlappen.
Aan de andere kant zou dit de analyse juist gemakkelijker kunnen maken doordat je dan ook kunt analyseren welke woorden waarschijnlijk "gemakkelijker" en sneller te typen zijn ten opzichte van meer exotische woorden (waarbij je "bewust" een specifieke reeks van toetsen moet indrukken).
Al is dat gelukkig niet heel praktisch.
Hoezo is dat niet heel praktisch?
Zeker nu met alle team-calls en meetings waarbij mensen wachtwoorden invoeren tijdens die calls lijkt me dit wel praktisch/gevaarlijk.
En dat het in de browser werkt is misschien nog wel erger. Iemand zet een scriptje op z'n site en kan gewoon meeluisteren met wat je typt. [pun intended]

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee