Kas yra slaptas kodas? Kaip užmaskuoti kodą, kad jis taptų saugesnis

Pirmosiomis skaičiavimo dienomis kūrėjams nereikėjo jaudintis dėl tinklų. Jie galėjo sutelkti dėmesį tik į tai, kad jų programinė įranga atitiktų numatytą paskirtį ir per dažnai nesutrūktų.

Paprastas žmogus, kuris turėjo ryšį su ta programine įranga, nebuvo grėsmė. Daugelis vartotojų net nesivargintų skaitydami vartotojo vadovus, pateiktus programinės įrangos dėžutėje, o ką jau kalbėti apie kodo tyrimą dėl pažeidžiamumų.

Tada atsirado internetas, kuris viską pakeitė.

Beveik per naktį kompiuteriniai tinklai buvo sujungti. Augant sudėtingumui, didėjo ir šansai, kad kažkas pateks į tuos tinklus, kurie ten nepriklauso.

Dažniausiai tie žmonės turėtų įgūdžių, reikalingų sugedusiam kodui išnaudoti.

Ir tai mus atveda į šiandieną. Tai precedento neturinčių kibernetinio saugumo grėsmių laikas. Panašu, kad žinios apie kibernetines atakas ateina kasdien.

Atsakydami į tai, tinklo valdytojai diegia vis sudėtingesnes gynybines sistemas, kad sustiprintų savo tinklus nuo įsibrovėlių. Ir dabar jie tikisi, kad programinės įrangos kūrėjai dar labiau stengsis apsaugoti savo kodą, kad išvengtų neteisėtos prieigos.

Vis dėlto kodavimo mokyklose kompiuterinio kodo grūdinimas vis dar nėra daug mokomas. Bet tai tampa būtina šiuolaikinių programų kūrimo metu.

Norėdami padėti tai ištaisyti, šiame straipsnyje paaiškinsiu, kas yra kodas. Taip pat apžvelgsiu šešis svarbiausius šiandien naudojamus kodų užklijavimo metodus, kad galėtumėte pradėti kurti saugesnę programinę įrangą.

Kas yra slaptas kodas?

Kaip rodo jo pavadinimas, kodo užtemdymas reiškia programavimo metodų seriją, skirtą maskuoti programos kodo elementus. Tai yra pagrindinis būdas, kuriuo programuotojai gali apginti savo darbą nuo neteisėto įsilaužėlių ar intelektinės nuosavybės vagių prieigos ar pakeitimų.

Svarbiausia, kad kodo užtemdymo metodai gali pakeisti programos veikimo struktūrą ir metodus, tačiau jie niekada nekeičia programos išvesties.

Bėda ta, kad daugelis kodų užtemdymo būdų gali padidinti programos pridėtines išlaidas ir pailginti vykdymo laiką.

Dėl šios priežasties labai svarbu suprasti, kurie metodai yra palyginti be baudų ir kurie gali sukelti veiklos rezultatų. Sužinoję išlaidas, galite suderinti apsaugą ir našumą realiame pasaulyje.

Čia pateikiami šeši šiandien naudojami dažniausiai naudojami kodai.

1. Pašalinkite nereikalingus duomenis

Pirmoji kodo grūdinimo technika, kuri turėtų būti taikoma kiekvienu atveju, yra atsikratyti visko, kas yra nereikalinga kode.

Tai atlikus bus supaprastinta jūsų kodų bazė ir sumažintas jūsų ginamas atakos paviršius.

Tai reiškia nereikalingų funkcijų pašalinimą, informacijos derinimą ir kiek įmanoma daugiau metaduomenų. Trumpai tariant - viskas, kas gali suteikti užpuolikui gaires, kurios gali sukelti pažeidžiamumą.

2. Transformuokite duomenis

Kitas dalykas, kurį reikia padaryti, yra transformuoti duomenis, kuriuos apdoroja kodas, kad jie būtų neatpažįstami.

Tokia taktika, kaip verčių pakeitimas išraiškomis, naudojamo duomenų saugojimo formato pakeitimas ar net dvejetainės kodo numerių versijos, suteikia dar daugiau sudėtingumo. Šis sudėtingumas apsunkins jūsų kodo pakeitimą, kad gautumėte ką nors naudingo.

Pavyzdžiui, galite naudoti eilučių šifravimą, kad paprasto teksto eilutės jūsų kode būtų neskaitytinos. Eilučių šifravimas gali naudoti paprastą „base64“ kodavimą, kuris pavers šį kodą:

String s = "Hello World"; Into: String s = new String(decryptString("SGVsbG8gV29ybGQ="));

Nors patyrusiam programuotojui nėra sunku pastebėti, kas čia vyksta, daugelio eilučių iššifravimas yra daug laiko atimantis ir varginantis dalykas.

Duomenų transformacijos kartu su kai kuriomis kitomis slaptųjų kodavimo metodų yra veiksminga pirmoji gynybos linija.

3. Naudokite proceso tvarkos užblokavimą

Vienas iš iššūkių klaidinančiam kodo reikalavimams yra tas, kad vis tiek reikia, kad kodas veiktų taip, kaip numatyta, kai baigsite.

Tačiau nėra nieko, kas pasakytų, kad kodą turite vykdyti bet kokia logine tvarka. Sumaišę kodo operacijų tvarką, vis tiek galite pasiekti reikiamą rezultatą, tačiau daug sunkiau trečiajai šaliai suprasti, ką daro jūsų kodas.

Vienintelis įspėjimas yra tas, kad turite būti atsargūs ir nesudaryti per daug beprasmių kilpų ir aklaviečių, nes galite netyčia sulėtinti kodo vykdymo laiką.

Pavyzdžiui, pažvelkite į šį fragmentą, kuris apskaičiuoja 100 skaičių sumą ir vidurkį:

int i=1, sum=0, avg=0 while (i = 100) { sum+=i; avg=sum/i; i++; }int i=1, sum=0, avg=0 while (i = 100) { sum+=i; avg=sum/i; i++; }

Pridėjus sąlyginį kintamąjį, galima nuslėpti, ką daro kodas. Taip yra todėl, kad analizuojant funkciją pirmiausia reikėtų žinoti, kas į ją įvedama.

Šiame fragmente sąlyginis kintamasis „random“ sukuria sudėtingesnę kodo struktūrą, kurią iššifruoti yra daug sunkiau:

int random = 1; while (random != 0) { switch (random) { Case 1: { i=0; sum=1; avg=1; random = 2; break; } case 2: { if (i = 100) random = 3; else random = 0; break; } case 3: { sum+=i;avg=sum/i ; i++; random = 2; break; } } }

4. Išbandykite Debug Obfuscation

Kartais ryžtingas užpuolikas gali sužinoti įvairios naudingos informacijos apie jūsų kodą, nagrinėdamas jo derinimo informaciją.

Kai kuriais atvejais jie gali rasti raktus, kaip atskleisti kai kuriuos kitus jūsų naudojamus apgaulės metodus.

Taigi, kai tik įmanoma, verta pašalinti prieigą prie derinimo informacijos. Ir kai tai nėra pasirinkimas, būtina užmaskuoti bet kokią identifikavimo informaciją derinimo ataskaitoje.

5. Naudokite adreso atsitiktinių parinkčių funkciją

Beveik trisdešimt metų įsilaužėliai dažniausiai naudoja klaidas, susijusias su atminties tvarkymu, nors kiekvienas programuotojas žino, kad problema išlieka.

Ir tai ne tik pradedančiųjų tarpe. Maždaug 70% „Google“ žiniatinklio naršyklės „Chrome“ pažeidžiamumų kyla iš atminties klaidų.

Realybė yra tokia, kad neįmanoma išvengti visų atminties programavimo klaidų, ypač jei naudojate tokias kalbas kaip C ir C ++. Bet ką galite padaryti, tai į savo kodą įtraukti kai kurias atminties atsitiktinės atrankos funkcijas, kurios padės.

Vykdant, jei jūsų kodas ir duomenų virtualieji adresai gauna atsitiktines reikšmes, daug sunkiau surasti ir išnaudoti nepašalintas spragas.

Plus, it adds another benefit, too. It makes it so that even a successful hack of your code is difficult – if not impossible – to replicate. That alone makes it much less likely that an attacker will waste their time trying to hack your software.

6. Rotate the Obfuscated Code

As much as the above techniques work to frustrate attackers, they're far from a perfect defense. Anyone with enough time and skills will still find a way to defeat them. But that brings us to one of the most essential obfuscation techniques of all.

Since all obfuscation techniques aim to increase the complexity of an attacker's work, anything you can do to set them back to square one is a great defensive measure. So, to keep your code protected, use the internet to your advantage.

You can issue periodic updates that rotate the nature and specifics of the obfuscation techniques you're using. Every time you do, all the work someone may have been putting into cracking your software becomes a waste of time.

If you rotate your obfuscation tactics often enough, it won't be worth it for anyone to try and keep up an analysis long enough to succeed.

Security Through Obscurity

The bottom line here is that there's no such thing as 'unhackable' code. No matter how hard a programmer tries, there's always going to be a vulnerability somewhere. Not that you shouldn't keep trying, though.

But in the real world, your code doesn't have to be perfect. It just has to be hard enough to crack that nobody in their right mind would bother trying. And for those who aren't in their right mind, it just has to be complicated and time-consuming enough to keep them at bay.

And that's just what the six tactics above can help you accomplish. But remember, no defense comes without a cost. When deploying these options, make sure to weigh the execution-time penalties they may create against the benefits they provide.

If you're working on something especially sensitive, throwing every possible curveball might be worth it. But if you're writing a quote of the day generator – maybe don't worry as much.

Nepaisant to, ar nuspręsite tęsti, nepamirškite skirti laiko sugriežtinti kodą vienaip ar kitaip. Tai yra tik tinkamiausias būdas daryti dalykus pasaulyje, apstu kibernetinio saugumo grėsmių už kiekvieno kampo.

Teminė „Pexels“ „ThisIsEngineering“ nuotrauka.