Beskytte Software

Reverse-engineering beskyttelse (innebygd og aktiv) Beskytte SoftwareAll programmer involvert i sikkerhets stede sårbarheter; det er opp til programmerere til å enten fjerne dem eller gi gjenkjenning. Byreverse-engineering et program, kan en angriper gjøre det gjøre eller ikke doanything han vil. Button bildetekster og streng konstanter kan bemodified å lure brukeren til å gå på akkord med sikkerheten, og en simpleswapping pekere kan føre til sensitiv informasjon beingleaked. Den enkleste mottiltak mot disse typene angrep isensuring ingen programfiler har blitt endret. En mer versatiletactic innebærer digitale signaturer og et program loader.Attackers vil vanligvis prøve å knekke programmet før bryte thecryptosystem; de fleste programmene er overraskende svake againstreverse-engineering.A programmet er en serie med instruksjoner lagret lokalt; hvis usercan kjøre programmet, så han kan foreta omvendt utvikling det, og endre ITTO hans vilje. Med en god debugger, kan en angriper spore programthrough Grensesnittet meldinger og prosedyrekall. Det er importantto forstå at alle programmer kan reverskonstruert, men thetask kan gjøres svært vanskelig. Det har vært vanlig praksis foryears til: kamuflasje sikkerhetsrelaterte funksjoner, dryss decoyfunction samtaler, og iverksette anti-debugging prosedyrer. Thesepractices ikke lage programmer tamper-proof på noen måte, men theycertainly gjør dem barnesikret. Det finnes ingen enkel løsning tothis problem, men den egentlige målet er fortsatt å hindre at programmet frombeing modified.Strings som finnes i et program har enorm innflytelse, ogkan være en sikkerhetssvakhet. De brukes til å kommunisere med theuser; hvis strenger er erstattet med villedende informasjon, kan anattacker fjerne " sikkerhet kompromittert " meldinger, og hindre at det brukeren oppdager inntrenging. Disse angrepene krever bare asimple hex editor, og er veldig lett å oppnå. Det er mange waysto gjøre sitt angrep vanskelig. Hvis strengene er kryptert skikkelig, må angriperen til: reverskonstruere programmet, finne thekey, pakke ut dekryptering funksjoner, løse encryptionfunctions (! De er ikke i programmet), kryptere falske strenger, og bytte strenger . Med smart bruk av pekere, kan nøkkelen besprinkled hele kildekoden, og saman uten makingany funksjonskall som kunne tiltrekke en angriperens attention.Strings må være skjult for å sikre at brukere ikke gått falsemessages, og dermed kompromitterende security.Pointers gir rike muligheter til OSE data lekker havoc.Imagine en situasjon der en peker til en oversikt over de user'sprogram innstillinger ble byttet ut med en peker til brukerens nøkkel, ble andthe nøkkelen skrevet til registret, ute i det fri for theattacker å hente. Slike situasjoner er ikke hørt av svært oftenbecause programmer er ubeskyttet, og enklere midler til obtainingdata er vanligvis tilgjengelig for angripere. Hvis du navn til nøkkelen " nøkkel " ingenting er overlatt til angriperens fantasi. Det er veldig lett toadd: " #define nøkkelen btnOkClicked " i begynnelsen av kildekoden for å endre navn alle referanser til " nøkkel " samtidig som kildekoden tydelig og konsekvent ". btnOkClicked " er svært misvisende og vil bli ignorert av attackersfor en svært lang tid, med mindre prosedyren du kaller det fra heter " getKey ". Det er viktig at navnevalget ikke revealwhich pekere, variabler, og prosedyrene er sikkerhetsrelaterte. Det handler enkelt nok å lage falsk versjon av kildekoden thatwill bli utarbeidet med tvetydige navn for den opprinnelige versjonen sothat reverse-engineering viser ingen vesentlig informasjon fra thenaming ordningen. Navn som gir angripere vesentlige hint om apointer bruk; bruke dette som en fordel å forvirre og misdirectattackers.Developers ofte kjøre kontrollsummer eller hash funksjoner på executableand sammenligne det med en verdi hardkodet inn i programmet. Det er afew problemer som dukker opp fra dette mottiltak. En angriper onlyhas å endre et betinget utsagn fra " if = deretter " til " hvis < > så " å følge samme prosedyre uansett om thechecksums matchet eller ikke. Selvfølgelig kan du kamuflere thisconditional uttalelse, men unnvike disse mottiltak er noproblem for en erfaren cracker. Bare å verifisere om en fil haschanged er ikke nok; ideelt å endre kjør ville renderit unworkable.Digital signaturer en veldig god og trøstende løsning. Bysigning den kjør du sikre 2 ting: hvem som helst kan kjøre theprogram, og bare du kan opprette eller endre det. For en angriper tomodify programmet måtte han bryte den digitale signaturealgorithm eller den private nøkkelen. Du kan enten bruke en usignert portionof programmet å tyde resten av programmet eller bruke anexternal program; Dette er referert til som et program laster. I eithercase angriperen vil bare vite den offentlige nøkkelen. Hvis en attackermodifies kjør han ikke vil være i stand til å signere det på riktig måte, noe som gjør deteksjon enkel. En annen variant av denne beskyttelsen involvesgetting den offentlige nøkkelen fra en server for å hindre at angriperen frommodifying den offentlige nøkkelen hardkodet inn i program.It anbefales å kombinere mottiltak. For eksempel kan digitalsignatures brukes sammen med en kontrollsum. Dette methodis bak Microsofts Authenticode signaturer; del av CryptoAPITools. Sertifiserte programmer er garantert å komme fra specifiedsource, og å være uendret. Problemet med Authenticode er theprogram er bare beskyttet som elektronisk innhold, og en gang på yourhard-stasjon, er det ingen garanti. På grunn av kompleksiteten indesigning programmer som benytter digitale signaturer fritt, er veryfew implementeringer brukt, men det er sannsynlig litt variasjon av themwill bygges inn i de fleste applikasjoner i det neste tiåret som securityconcerns øker blant forbrukernes prioriteringer. (C) Copyright DrMungkee 2000



Previous:
Next Page: