Enkleste private nøkkelkrypteringsmetoder. Asymmetrisk kryptering. Hvordan det fungerer

For å utveksle meldinger og skjule innhold fra tredjeparter, brukes kryptering. Den brukes der det kreves økt beskyttelsesnivå. Det er to krypteringsskjemaer: symmetrisk og asymmetrisk.

Hva er kryptering

Kryptering vil være nyttig når du trenger å skjule noe informasjon fra uautoriserte personer og gi hemmelige data til autoriserte brukere.

Et trekk ved denne typen dataoverføring er bruken av en nøkkel.

Det er tre sikkerhetstilstander:

  • skjule informasjon fra fremmede;
  • forebygging av endringer;
  • opprettholde integriteten til informasjonen;
  • identifikasjon av avsender.

For å lese informasjon kreves det i tillegg til nøkkelen en dekoder. Det er dette som gjør det umulig for nettkriminelle å få tak i data, fordi ved å fange opp dataene, men ikke ha nøkkel, er det umulig å lese dem.

Det finnes to typer kryptering: symmetrisk og asymmetrisk.

Hovedformålet med kryptering er å lagre informasjon. Dette lar deg jobbe med noen data fra upålitelige kilder, overføre meldinger over usikre kanaler. Informasjon sendes slik:

  • avsenderen krypterer dataene;
  • mottakeren dekrypterer.

Hver transformasjon implementeres ved hjelp av algoritmer som bruker nøkler til å løse. Symmetriske og asymmetriske krypteringsmetoder er kryptografisk sterke.

Krypto motstand

Symmetriske og asymmetriske krypteringssystemer har en egenskap som er ansvarlig for vanskeligheten med å få uautorisert tilgang.

Det er 2 hovedtyper av kryptografisk styrke til et krypteringssystem.

  • Et absolutt motstandsdyktig system kan ikke avsløres, selv med uendelig store dataressurser. Den kjennetegnes ved at det genereres en egen nøkkel for hver melding. Lengden er lik eller større enn lengden på meldingen.
  • Tilstrekkelig sterke systemer brukes i et sivilt kryptografisk system. En slik algoritme er vanskelig å tyde, men med tilgjengeligheten av passende ressurser blir det mulig.
  • Sammenligning av den kryptografiske styrken til noen krypteringssystemer

    Maksimal RSA-nøkkelstørrelse er 4096 biter.

    Den brukes til kryptering og signatur. Den kryptografiske styrken kan beskrives som 2.7.1028 for en 1300 bits nøkkel. Ordningen brukes i mange standarder, RSA-krypteringsprinsippet er en av de første asymmetriske algoritmene.

    ElGamal-skjemanøkkelstørrelsen er RSA - 4096 bits. Den brukes til både kryptering og digitale signaturer. Den kryptografiske styrken til dette systemet skiller seg ikke fra RSA med samme nøkkelstørrelse.

    DSA-metoden bruker en mye mindre nøkkel, 1024 biter. Den brukes utelukkende til digitale signaturer.

    Symmetrisk og asymmetrisk kryptering

    Disse to typene kryptering er forskjellige i antall nøkler og nivået av motstand mot sprekker.

    Hvis én nøkkel brukes til koding og dekoding, er denne krypteringen symmetrisk. Asymmetrisk kryptering innebærer bruk av én nøkkel for hver algoritme.

  • En offentlig nøkkel brukes til å kryptere en eller annen kode, som er en spesifikk melding. Nøkkelen er kjent for begge parter, den sendes over en ubeskyttet kanal, og kan avlyttes. Den viktigste oppgaven med å lagre informasjon er å beskytte nøkkelen mot avlytting.
  • Privat brukes til dekryptering. Kun kjent på den ene siden. Den kan ikke avlyttes, siden den er med samme samtalepartner hele tiden.
  • Formålet med kryptering avgjør hvordan konfidensialitet opprettholdes. En av de første var symmetrisk, asymmetrisk kryptering, oppfunnet senere for å gi større sikkerhet.

    Funksjoner av symmetrisk kryptering

    Det symmetriske beskyttelsessystemet har følgende fordeler.

  • Høy hastighet og enkel implementering.
  • For å sikre styrken til chifferen brukes en kort nøkkellengde.
  • Ulempene inkluderer følgende:

    • kompleksiteten til nøkkelstyring i et stort nettverk;
    • kompleksiteten til nøkkelutvekslingen;
    • behovet for å finne en pålitelig kanal for å overføre nøkkelen til partene;
    • manglende evne til å bruke for digitale signaturer, sertifikater.

    For å kompensere for manglene, brukes et kombinert opplegg der nøkkelen som brukes til dekryptering, overføres ved hjelp av asymmetrisk kryptering. Det overføres ved hjelp av symmetrisk kryptering.

    Funksjoner av asymmetrisk kryptering

    Å bruke et offentlig-privat nøkkelpar kan brukes som:

    • uavhengige midler for informasjonsbeskyttelse;
    • nøkkeldistribusjonsanlegg;
    • midler for brukerautentisering.

    Har følgende fordeler:

    • lagring av den hemmelige nøkkelen på et trygt sted, i stedet for som den åpne overføres over den åpne kanalen;
    • dekrypteringsnøkkelen er kjent for bare én part;
    • i et stort asymmetrisk system, bruk færre taster i motsetning til en symmetrisk.

    Det er vanskelig å gjøre noen endringer i slike algoritmer. Et system som dette har lange taster. Hvis den symmetriske nøkkelen er 128 biter, er RSA-nøkkelen 2304 biter. På grunn av dette lider dekrypteringshastigheten - den er 2-3 ganger langsommere. Dekryptering krever store dataressurser.

    Det er mange eksempler på symmetriske og asymmetriske krypteringssystemer.

    Symmetrisk kryptering – hvordan ser det ut?

    Et eksempel på symmetrisk kryptering og implementeringsskjema er nedenfor.

  • Det er to samtalepartnere som planlegger å utveksle konfidensiell informasjon.
  • Den første samtalepartneren genererer en nøkkel d, krypteringsalgoritmer E og dekryptering D. Deretter sender han denne informasjonen til den andre samtalepartneren.
  • Meldingen dekrypteres med nøkkel d.
  • Den største ulempen er manglende evne til å fastslå ektheten til teksten. Hvis nøkkelen blir fanget opp, vil angriperen dekryptere den hemmelige informasjonen.

    Det finnes klassiske metoder.

  • Enkel og dobbel permutasjon.
  • Magisk firkant.
  • Enkel permutasjon.
  • Den første metoden er en av de enkleste og bruker ikke en nøkkel i skjemaet. Avsender og mottaker blir enige om en bestemt nøkkel, representert i form av en tabellstørrelse. Den overførte meldingen skrives til kolonnene i tabellen, men leses linje for linje. Når mottakeren kjenner størrelsen på tabellen, dekrypterer meldingen.

    For å gi mer hemmelighold brukes en dobbel permutasjon. Dermed skjer krypteringen av den tidligere krypterte teksten. For dette må tabeller variere i antall rader og kolonner. De er fylt vertikalt, horisontalt, i en slange, i en spiral. Denne metoden styrker ikke krypteringen, men krakkingsprosessen tar lengre tid.

    Den "magiske firkanten" er en mer kompleks struktur, som er en matrise. Naturlige tall er skrevet inn i cellene på en slik måte at summen av tallene for hver kolonne, rad, diagonal er den samme. Hvert tall tilsvarer en bokstav i meldingen. Den resulterende teksten skrives ut til en streng ved å sammenligne tall og symboler.

    Eksempler på asymmetrisk kryptering

    I dette tilfellet sendes den offentlige nøkkelen over en åpen kanal og kan teoretisk avskjæres av angripere.

    I motsetning til symmetriske krypteringsnøkler, er asymmetriske krypteringsnøkler annerledes. Den offentlige nøkkelen brukes til kryptering, den private nøkkelen brukes til å dekryptere meldingen. Bruk av to nøkler løser avskjæringsproblemet som var i den symmetriske metoden. Den implementeres som følger.

  • Den første samtalepartneren velger krypterings- og dekrypteringsalgoritmer, et par nøkler. Den offentlige nøkkelen sendes til den andre samtalepartneren.
  • Den andre samtalepartneren krypterer informasjonen ved å bruke den mottatte nøkkelen. Sender informasjon til den første chattepartneren, som dekrypterer meldingen ved hjelp av den private nøkkelen.
  • Det er slike grunnleggende metoder for asynkron kryptering.

  • El Gamal-chiffer.
  • RSA

    RSA er den første kryptografiske algoritmen som brukes for både kryptering og digital signatur.

    Det er beskrevet som følger.

  • To primtall er valgt, for eksempel 3 og 7.
  • Modulen n beregnes - produktet av to tall. Det viser seg 21.
  • Euler-funksjonen φ = (p-1) × (q-1) = 2 × 6 = 12 beregnes.
  • Ethvert primtall e mindre enn φ og primtall med φ beregnes. Tilgjengelige alternativer: 5, 7, 11.
  • Et tallpar e, n (5, 21) er en offentlig nøkkel. Nå er tallene d og n for den private nøkkelen beregnet. Tallet d tilfredsstiller betingelsen (d × e) mod φ = 1 og er lik 17. Som et resultat er det andre paret med tall 17 og 21 en privat nøkkel. Kryptering utføres som følger: meldingen heves til potensen e, resten av divisjonen med n tas, og resultatet må være mindre enn n. Det viser seg 10 - det vil være kodede data. For dekoding heves e til potensen d, og resten av divisjonen med n beregnes.

    DSA

    DSA (i motsetning til RSA) brukes kun til digitale signaturer, ikke kryptering. Den angitte signaturen kan verifiseres offentlig. Det er to algoritmer for signaturgenerering og verifisering. Det er hashmeldingen som er kryptert, som representerer teksten i digital form. Derfor velges en kompleks hashfunksjon for å unngå kollisjoner. Å bygge en digital signatur består av følgende trinn.

  • Velge en kryptografisk hash-funksjon H (x).
  • Bitheten til et primtall q må være lik verdien av hashfunksjonen H (x).
  • Valg av et slikt primtall p slik at p-1 er delelig med q uten rest.
  • Beregner tallet g = h (p-1) / q mod p. h må være et vilkårlig tall i området 1 til p-1.
  • Et tilfeldig tall k velges fra 0 til q.
  • R = (gk mod p) mod q beregnes.
  • Da er s = k-1 (H (m) + xr)) mod q.
  • Hvis r = 0 eller s = 0, velges et annet tall k.
  • El Gamal-ordningen

    ElGamal-kryptering brukes til digitale signaturer. Det er en fortsettelse av Diffie-Hellman-algoritmen.

    Når du arbeider med denne ordningen, er det viktig å vurdere følgende funksjon. El Gamal-kryptering er ikke en digital signaturalgoritme med samme navn. Når den er kryptert, konverteres teksten til et chiffer, som er 2 ganger lengre enn den opprinnelige meldingen.

    Nøkler genereres som følger.

  • Et tilfeldig primtall p er valgt.
  • Tallet g må være den primitive roten av p.
  • Tallet x må være større enn 1 og mindre enn p-1. Dette vil være den private nøkkelen.
  • Den offentlige nøkkelen y beregnes deretter ved å bruke formelen g ^ x mod p.
  • Ved kryptering av teksten M velges systemnøkkelen K. Den er større enn én og mindre enn p-1. Deretter beregnes tallene a og b, som er chiffertekst, a = g ^ k mod p og b = y ^ k M mod p.

    I dag er det mye kontrovers i ekspertmiljøet om hva som er best: symmetrisk eller asymmetrisk kryptering. Samtidig aksepterer mange brukere av det globale nettverket et eller annet synspunkt, i full grad, uten å forstå betydningen av disse begrepene. Dette fører igjen til en rekke problemer. Spesielt blir unødvendige komponenter introdusert i systemet som utvikles, eller det blir stående uten et tilstrekkelig beskyttelsesnivå.

    Derfor vil vi nedenfor fortelle deg hva som er symmetrisk og asymmetrisk kryptering med enkle ord.

    Symmetrisk kryptering i enkle ord

    En funksjon ved symmetrisk kryptering er tilstedeværelsen av ett passord. På en annen måte kalles det også en nøkkel.

    Så algoritmen er som følger. Det finnes en slags matematisk krypteringsalgoritme. Han får et spesifikt passord og tekst ved inngangen. Ved utgangen får vi teksten i kryptert form. For å få tak i kildeteksten må du bruke det samme passordet som ble brukt ved inngangen, eller et annet med dekrypteringsalgoritmen.

    Hvis vi ser på situasjonen ovenfor fra en annen vinkel, ser vi at hvis passordet overføres til en annen person, blir sikkerheten til systemet krenket.

    Derfor, når du bruker symmetrisk kryptering, bør du være spesielt oppmerksom på sikkerheten til selve passordet. I denne forbindelse er det umulig å overføre passordet til noen i klar form, det må være ganske komplekst, et system for å varsle interesserte parter bør tilbys i tilfelle det tapes.

    Det skal bemerkes at til tross for de ovennevnte nyansene, er symmetrisk kryptering ganske utbredt, på grunn av to faktorer:

    • Enkel forståelse;
    • Mangel på tung teknisk arbeidsbelastning.

    Asymmetrisk kryptering i enkle ord

    Asymmetrisk kryptering innebærer derimot bruk av to passord – en offentlig (offentlig nøkkel) og en privat (privat). Åpen er på sin side delt mellom alle interessenter. Den lukkede er kun kjent for den som mottar informasjonen og for serveren. Dermed observerer vi til en viss grad ekvivalensen til de to nøklene.

    Det er viktig at algoritmene som brukes i asymmetrisk kryptering gir mulighet for gratis distribusjon av nøkler i nettverket, siden uten et ekstra passord vil det være umulig å få tilgang til dataene.

    Dette prinsippet ligger til grunn for SSL-protokollen, som lar deg etablere en sikker forbindelse med brukere ved å beholde den private nøkkelen på serversiden.

    Lagring av passord er også enklere med asymmetrisk kryptering fordi det ikke er nødvendig å gi den hemmelige nøkkelen til noen. Det trenger ikke gis videre til noen.

    Samtidig er denne typen kryptering mye mer krevende for ressurskapasiteten til datamaskinen. Spesielt er det begrensninger direkte på prosessen med å lage nøkler. I denne forbindelse, for det meste, brukes asymmetrisk kryptering ofte bare for å autentisere og identifisere systembrukere eller for å generere digitale signaturer kryptert med en privat nøkkel. Det er klart at en slik signatur kan verifiseres av alle som bruker et offentlig passord.

    Forskjeller mellom symmetrisk og asymmetrisk kryptering

    Hovedforskjellen mellom de betraktede typene kryptering ligger i selve tilnærmingen. Derfor, i dette tilfellet, som nevnt ovenfor, kan det ikke hevdes at det ene er bedre enn det andre, uten å ta hensyn til særegenhetene ved bruk.

    Dermed er symmetrisk kryptering mest egnet for overføring av store mengder informasjon. Når den brukes på samme måte, er den asymmetriske algoritmen mye tregere.

    Asymmetrisk kryptering gjør at sikre tilkoblinger kan opprettes uten mye brukerinnsats. Symmetrisk kryptering krever derimot at brukeren bruker et passord for å hente data.

    Det er lettere å modifisere symmetriske algoritmer, siden de er konstruert på grunnlag av flere blokker med matematiske transformasjonsfunksjoner. Asymmetriske er på sin side basert på matematiske problemer.

    Å generere passord i en symmetrisk algoritme er mye enklere i motsetning til asymmetriske algoritmer.

    konklusjoner

    Med tanke på ovenstående kan vi konkludere med at anvendelsesområdet for krypteringsalgoritmer er annerledes. Derfor, når du bruker en symmetrisk eller asymmetrisk algoritme, er det alltid nødvendig å ta hensyn til betingelsene for et spesifikt problem. Inkludert kan muligheten for å bruke deres hybrider vurderes.

  • Utvikling av nettsider,
  • Algoritmer
    • Oversettelse

    Hvordan fungerer HTTPS uansett? Dette er et spørsmål jeg har slitt med i flere dager i arbeidsutkastet mitt.

    Som webutvikler visste jeg at det å bruke HTTPS for å beskytte brukerdata var en veldig, veldig god idé, men jeg hadde aldri en solid forståelse av hvordan HTTPS faktisk fungerer.

    Hvordan er data beskyttet? Hvordan kan klient og server etablere en sikker forbindelse hvis noen allerede lytter på kanalen deres? Hva er et sikkerhetssertifikat og hvorfor skal jeg betale noen for å få det?

    Rørledning

    Før vi dykker ned i hvordan dette fungerer, la oss kort snakke om hvorfor det er så viktig å sikre Internett-tilkoblinger og hva HTTPS beskytter mot.

    Når en nettleser sender en forespørsel til favorittnettstedet ditt, må den forespørselen gå gjennom mange forskjellige nettverk, hvorav alle potensielt kan brukes til å avlytte eller tukle med den etablerte tilkoblingen.

    Fra din egen datamaskin til andre datamaskiner på ditt lokale nettverk, gjennom rutere og svitsjer, gjennom din ISP og gjennom mange andre mellomleverandører – et stort antall organisasjoner videresender dataene dine. Hvis en angriper befinner seg i minst én av dem, har han mulighet til å se hvilke data som overføres.

    Vanligvis sendes forespørsler over vanlig HTTP, der både klientens forespørsel og serverens svar sendes i klartekst. Og det er mange overbevisende grunner til at HTTP ikke bruker kryptering som standard:

    Dette krever mer datakraft.
    Mer data blir overført
    Kan ikke bruke caching

    Men i noen tilfeller, når ekstremt viktig informasjon (som passord eller kredittkortinformasjon) overføres over kommunikasjonskanalen, må det iverksettes ytterligere tiltak for å forhindre avlytting av slike forbindelser.

    Transport Layer Security (TLS)

    Nå skal vi dykke inn i kryptografiens verden, men vi trenger ikke noen spesiell erfaring for dette - vi vil bare vurdere de mest generelle spørsmålene. Så, kryptografi lar deg beskytte forbindelsen fra potensielle angripere som ønsker å forstyrre forbindelsen eller bare lytte til den.

    TLS, etterfølgeren til SSL, er den protokollen som oftest brukes for å gi sikre HTTP-tilkoblinger (kalt HTTPS). TLS er ett lag under HTTP i OSI-modellen. Forklarende på fingrene betyr dette at i prosessen med å utføre en forespørsel, skjer først alle "tingene" knyttet til TLS-tilkoblingen og først deretter alt relatert til HTTP-tilkoblingen.

    TLS er et hybrid kryptografisk system. Dette betyr at den bruker flere kryptografiske tilnærminger, som vi vil diskutere videre:

    1) Asymmetrisk kryptering (et offentlig nøkkelkryptosystem) for å generere en delt hemmelighet og autentisering (det vil si å bekrefte at du er den du sier du er).
    2) Symmetrisk kryptering, ved å bruke en hemmelig nøkkel for å kryptere forespørsler og svar ytterligere.

    Offentlig nøkkel kryptosystem

    Et offentlig nøkkel kryptosystem er en type kryptografisk system der hver part har både en offentlig og en privat nøkkel matematisk relatert. Den offentlige nøkkelen brukes til å kryptere meldingsteksten på tull, mens den private nøkkelen brukes til å dekryptere og hente den originale teksten.

    Siden en melding ble kryptert med den offentlige nøkkelen, kan den bare dekrypteres med den tilsvarende private nøkkelen. Ingen av tastene kan tjene begge funksjonene. Den offentlige nøkkelen publiseres i det offentlige uten risiko for å utsette systemet for trusler, men den private nøkkelen skal ikke gis videre til noen som ikke har rett til å dekryptere dataene. Så vi har nøkler - offentlige og private. En av de mest imponerende fordelene med asymmetrisk kryptering er at to parter, tidligere helt uvitende om hverandre, kan etablere en sikker forbindelse, i utgangspunktet utveksle data over en åpen, usikker forbindelse.
    Klienten og serveren bruker sine egne private nøkler (hver sin egen) og den publiserte offentlige nøkkelen for å generere en delt hemmelighet for økten.

    Dette betyr at hvis noen er mellom klienten og serveren og observerer forbindelsen, vil han fortsatt ikke kunne finne ut verken klientens private nøkkel, eller serverens private nøkkel, eller øktens hemmelige nøkkel.

    Hvordan er dette mulig? Matte!

    Diffie - Hellman Algorithm

    En av de vanligste tilnærmingene er Diffie-Hellman (DH) nøkkelutvekslingsalgoritme. Denne algoritmen lar klienten og serveren bli enige om en delt hemmelighet uten å måtte overføre hemmeligheten over forbindelsen. Dermed vil ikke angripere som lytter til kanalen kunne bestemme den hemmelige nøkkelen, selv om de avskjærer alle datapakker uten unntak.

    Når DH-nøkkelutvekslingen har funnet sted, kan den resulterende hemmelige nøkkelen brukes til å kryptere ytterligere tilkoblinger i denne økten ved å bruke mye enklere symmetrisk kryptering.

    Litt matte...

    De matematiske funksjonene som ligger til grunn for denne algoritmen har et viktig særpreg - de er relativt enkle å beregne i foroverretningen, men praktisk talt ikke beregnet i motsatt retning. Det er her veldig store primtal spiller inn.

    La Alice og Bob være to parter som utveksler nøkler ved hjelp av DH-algoritmen. Først er de enige om en eller annen grunn rot(vanligvis et lite tall som 2,3 eller 5) og et veldig stort primtall prime(mer enn 300 sifre). Begge verdiene sendes i klartekst over kommunikasjonskanalen, uten trussel om å kompromittere forbindelsen.

    Husk at både Alice og Bob har sine egne private nøkler (mer enn 100 sifre), som aldri overføres over kommunikasjonskanaler.

    Blandingen overføres over kommunikasjonskanalen blanding avledet fra private nøkler så vel som verdier prime og rot.

    Og dermed:
    Alices blanding = (root ^ Alice's Secret) % primtall
    Bobs blanding = (root ^ Bob's Secret) % primtall
    hvor % er resten av divisjonen

    Dermed lager Alice blandingen sin basert på de godkjente verdiene til konstantene ( rot og prime), Bob gjør det samme. En gang fikk de verdier blanding hverandre, utfører de ytterligere matematiske operasjoner for å få øktens private nøkkel. Nemlig:

    Alice sine beregninger
    (Bobs blanding ^ Alice's Secret) % prime

    Bobs beregninger
    (Alices blanding ^ Bob's Secret) % prime

    Resultatet av disse operasjonene er det samme nummeret for både Alice og Bob, og dette nummeret blir den private nøkkelen for denne økten. Vær oppmerksom på at ingen av partene skulle sende sin private nøkkel over kommunikasjonskanalen, og den mottatte hemmelige nøkkelen ble heller ikke overført over en åpen forbindelse. Fabelaktig!

    For de som er mindre matematisk kunnskapsrike, gir Wikipedia et utmerket bilde som forklarer prosessen ved å bruke fargeblanding som eksempel:

    Legg merke til hvordan den opprinnelige fargen (gul) til slutt blir til den samme "blandede" fargen for både Bob og Alice. Det eneste som overføres over den åpne kommunikasjonskanalen er halvblandede farger, faktisk meningsløse for alle som hører på kommunikasjonskanalen.

    Symmetrisk kryptering

    Utveksling av nøkler skjer kun én gang per økt, under forbindelsesetablering. Når partene allerede har blitt enige om den hemmelige nøkkelen, skjer klient-server-interaksjonen ved hjelp av symmetrisk kryptering, noe som er mye mer effektivt for overføring av informasjon, siden det ikke kreves ekstra bekreftelseskostnader.

    Ved å bruke den hemmelige nøkkelen som er oppnådd tidligere, i tillegg til å bli enige om krypteringsmodusen, kan klienten og serveren kommunisere sikkert ved å kryptere og dekryptere meldinger mottatt fra hverandre ved hjelp av den hemmelige nøkkelen. En angriper som kobler seg til kanalen vil bare se "søppel" gå frem og tilbake over nettverket.

    Godkjenning

    Diffie-Hellman-algoritmen lar to parter få en privat hemmelig nøkkel. Men hvordan kan begge parter være sikre på at de virkelig snakker med hverandre? Vi har ikke snakket om autentisering ennå.

    Hva om jeg ringer vennen min, vi vil utføre DH-nøkkelutveksling, men plutselig viser det seg at samtalen min ble avlyttet og faktisk kommuniserte med noen andre?! Jeg vil fortsatt kunne kommunisere trygt med denne personen – ingen andre vil kunne høre på oss – men det vil slett ikke være hvem jeg tror jeg kommuniserer med. Det er ikke for sikkert!

    For å løse autentiseringsproblemet trenger vi en offentlig nøkkelinfrastruktur for å sikre at forsøkspersoner er den de sier de er. Denne infrastrukturen er bygget for å opprette, administrere, distribuere og tilbakekalle digitale sertifikater. Sertifikater er de irriterende tingene du må betale for for å få nettstedet ditt til å kjøre over HTTPS.

    Men, faktisk, hva er dette sertifikatet, og hvordan gir det oss sikkerhet?

    Sertifikater

    I en grov tilnærming er et digitalt sertifikat en fil som bruker en elektronisk digital signatur (mer om dette om et minutt) og knytter en datamaskins offentlige (offentlige) nøkkel til dens eierskap. En digital signatur på et sertifikat betyr at noen bekrefter at en gitt offentlig nøkkel tilhører en bestemt person eller organisasjon.

    I hovedsak forbinder sertifikater domenenavn med en bestemt offentlig nøkkel. Dette forhindrer en angriper i å avsløre sin offentlige nøkkel ved å utgi seg for serveren som klienten får tilgang til.

    I telefoneksemplet ovenfor kan en hacker prøve å vise meg den offentlige nøkkelen sin som utgir seg for å være min venn - men signaturen på sertifikatet hans vil ikke tilhøre noen jeg stoler på.

    For at et sertifikat skal være klarert av en nettleser, må det være signert av en akkreditert sertifiseringsinstans (sertifikatmyndighet, CA). CA-er er selskaper som manuelt bekrefter at en person som prøver å få et sertifikat oppfyller følgende to betingelser:

    1. er ekte;
    2. har tilgang til domenet den prøver å få et sertifikat for.

    Når CA er sikker på at søkeren er en reell søker og at han faktisk kontrollerer domenet, signerer CA sertifikatet for det nettstedet, og stempler i hovedsak et bekreftelsesstempel på det faktum at nettstedets offentlige nøkkel virkelig tilhører ham og kan stoles på .

    Nettleseren din er allerede forhåndslastet med en liste over akkrediterte CAer. Hvis serveren returnerer et sertifikat som ikke er signert av en akkreditert CA, vil en stor rød advarsel vises. Ellers kan alle signere falske sertifikater.

    Så selv om hackeren tok den offentlige nøkkelen til serveren sin og genererte et digitalt sertifikat som bekrefter at denne offentlige nøkkelen er knyttet til facebook.com-siden, vil ikke nettleseren tro på dette, siden sertifikatet ikke er signert av en akkreditert CA.

    Andre ting å vite om sertifikater

    Utvidet validering
    I tillegg til de vanlige X.509-sertifikatene, finnes det utvidede valideringssertifikater som gir et høyere nivå av tillit. Ved å utstede et slikt sertifikat, utfører CA enda flere kontroller av personen som mottar sertifikatet (vanligvis ved hjelp av passdetaljer eller kontoer).

    Ved mottak av et slikt sertifikat viser nettleseren en grønn linje i adressefeltet, i tillegg til det vanlige låsikonet.

    Betjener flere nettsteder på én server
    Siden utveksling av data over TLS-protokollen skjer allerede før starten av HTTP-tilkoblingen, kan det oppstå problemer dersom flere nettsider ligger på samme webserver på samme IP-adresse. Rutingen av virtuelle verter gjøres av webserveren, men TLS-tilkoblingen skjer enda tidligere. Et enkelt sertifikat for hele serveren vil bli brukt når du ber om et hvilket som helst nettsted på serveren, noe som kan forårsake

    Hovedfordelen med kryptografiske algoritmer for offentlig nøkkel er muligheten til å løse problemer som nøkkeldistribusjon over en usikker kanal, autentisering av melding og avsender osv. Samtidig fungerer asymmetriske chiffere mye langsommere enn symmetriske. Dette skyldes behovet for å utføre operasjoner på ekstremt store antall. Derfor brukes ofte symmetriske og asymmetriske algoritmer sammen - for distribusjon av nøkler og EDS brukes offentlig nøkkelkryptografi, dataene krypteres ved hjelp av symmetriske algoritmer.

    Når man analyserer et system der flere algoritmer brukes sammen, er det vanlig å vurdere kompleksiteten av dets brudd ut fra kompleksiteten i å bryte det svakeste leddet. I litteraturen er det omtrentlig samsvar mellom nøkkellengdene for den symmetriske krypteringsalgoritmen (angrepet utføres av brute-force nøkkelsett) og RSA-algoritmen, som gir sammenlignbar styrke. For eksempel tilsvarer en 64-bits symmetrisk krypteringsnøkkel omtrent til en 512-biters RSA-nøkkel, og en 128-biters tilsvarer en RSA-nøkkel som er lengre enn 2300 biter.

    Hash-funksjoner

    I algoritmene for EDS-generering vurdert i avsnitt 2.4, er signaturlengden lik eller enda større enn lengden på selve meldingen. Det er åpenbart upraktisk å sertifisere et stort dokument på denne måten. Derfor er som regel ikke selve meldingen signert, men dens "digest" - en verdi med en fast lengde, avhengig av meldingen som signeres. For å danne en fordøyelse, bruk hash-funksjon(fra engelsk "hash function") - en enveisfunksjon som konverterer en streng med vilkårlig lengde til en streng med fast lengde. I kryptografi brukes hashfunksjoner av 2 klasser:

    Nøkkelløse hash-funksjoner;

    Tastede hash-funksjoner.

    Nøkkelløse hash-funksjoner

    Nøkkelløse hash-funksjoner er kategorisert som svake og sterke. Svak hash-funksjonH (x) som tilfredsstiller følgende betingelser:

    1) argumentet kan være en bit streng av vilkårlig lengde;

    2) funksjonsverdi H (x) må være en bitstreng med fast lengde;

    3) verdi H (x) lett å beregne;

    4) for ethvert fast argument x beregningsmessig umulig å finne en annen x 'x slik at H (x ') = H (x).

    Verdipar x 'x: H (x ') = H (x) kalt kollisjon hash-funksjoner.

    Sterk hash-funksjon kalt enveisfunksjonen H (x) som tilfredsstiller betingelsene 1) - 3) og den siste betingelsen i følgende formulering:

    5) det er beregningsmessig umulig for noen verdipar x 'x slik

    hva H (x ') = H (x).

    Enhver sterk hash-funksjon oppfyller kravene til en svak, det motsatte er vanligvis ikke sant. For å illustrere forskjellen i vanskeligheten med å finne kollisjoner mellom en svak og en sterk hash-funksjon, bør du vurdere et angrep med bursdagsparadokset 1. La oss fikse verdien av argumentet x, og vi vil iterere tilfeldig x 'x ser etter en situasjon hvor H(x') = H(x). Forutsatt at hashverdiene er jevnt fordelt og antall mulige verdier H (x) er lik N, da trenger du gjennomsnitt Ren styrke N/ 2 alternativer, men hvis vi i det hele tatt ønsker å finne en kollisjon, viser problemet seg å være enklere: med en sannsynlighet på 0,63, for å bestemme det nødvendige paret med verdier, må vi prøve N alternativer.

    For å minimere kostnadene ved å lage kryptografiske hash-funksjoner, bruker utviklere ofte en av de eksisterende krypteringsalgoritmene. La være E (m, k) angir meldingskryptering m på nøkkelen k, a v 0 Er startvektoren. Tenk deg en bufret melding M som en sekvens av blokker m 1, ..., m t og vi vil bruke dem som rundnøkler. Deretter H (m) beregnes som følger:

    SHA-1-algoritme

    Secure Hash Algorithm (SHA) ble utviklet i USA som en del av Secure Hash Standard (SHS) publisert i 1993. Men det ble oppdaget sårbarheter i den, noe som førte til behovet for å endre algoritmen. To år senere ble en ny versjon, SHA-1, publisert, som har fått stor utbredelse i dag.

    Ved å motta en melding med vilkårlig lengde på mindre enn 2 64 biter ved inngangen, genererer SHA-1 en 160-bits utgangsmelding (digest). Først meldingen som skal konverteres M polstret til et multiplum av 512 biter. Fyllet er dannet som følger: 1 legges til på slutten av den transformerte meldingen, deretter så mange nuller som nødvendig for å motta en melding som er 64 biter kortere enn et multiplum av 512, og deretter en 64-bits representasjon av lengden på den opprinnelige meldingen legges til. For eksempel, hvis meldingen er 800 biter lang, så er den 801. biten = 1, så legger vi til nuller opp til 960 biter, hvoretter tallet "800" skrives i de resterende 64-bitene, som et resultat av at vi har hashed 1024-biters melding. Det generelle konverteringsskjemaet er vist i figur 2.18. Før du starter konverteringer, initialiseres fem 32-bits variabler:

    EN= 0x67452301; B= 0xEFCDAB89; C= 0x98BADCFE; D= 0x10325476; E= 0xC3D2E1F0.

    Disse verdiene er også tilordnet variabler. en 0, b 0, c 0, d 0, e 0... Transformasjonen utføres over en 512-bits meldingsblokk i 80 runder. I konverteringsprosessen brukes følgende ikke-lineære funksjoner f t:

    f t (X, Y, Z) = (X Y) ((X) Z) til t=0…19;

    f t (X, Y, Z) = X Y Z til t= 20 ... 39 og t=60…79;

    f t (X, Y, Z) = (X Y) (X Z) (Y Z) til t=40…59.

    Figur 2.18 - Opplegg av en runde med SHA-1-algoritmen

    Konverteringsprosessen bruker fire konstanter:

    K t= 0x5A827999 for t=0…19;

    K t= 0x6ED9EBA1 for t=20…39;

    K t= 0x8F1BBCDC for t=40…59;

    K t= 0xCA62C1D6 for t=60…79.

    Betegnelsen "<<< X» – циклический сдвиг влево на X разрядов, «+» – сложение по модулю 2 32 .

    Etter konvertering av den neste 512-biters blokken, de oppnådde verdiene en,b,c,d,e legge sammen med verdier EN,B,C,D,E henholdsvis, og behandlingen av neste blokk begynner (eller den resulterende verdien i form av sammenkobling en,b,c,d,e sendes til utgangen hvis den behandlede blokken var den siste).

    Dermed er utdata en 160-bits sammendrag av den opprinnelige meldingen.

    Tastede hash-funksjoner

    Hash funksjon med nøkkel kalt enveisfunksjonen H (k, x) med følgende egenskaper:

    Argument x funksjoner H (k, x) kan være en bit streng av vilkårlig lengde;

    Funksjonsverdien må være en bitstreng med fast lengde;

    Med alle data k og x lett å beregne H (k, x);

    For alle x burde være nesten umulig å beregne

    H (k, x),uten å vite k;

    Det må være nesten umulig å definere k, selv med et stort antall kjente par (x, H (k, x)) eller regn ut fra denne informasjonen H (k, x ') til x 'x.

    Disse funksjonene kalles ofte også Autentiseringskoder

    meldinger(engelsk "Message Authentication Code", forkortet MAC).

    Redegjørelse om sikkerhetsutfordringen

    Symmetrisk krypteringsskjema

    Et formelt symmetrisk krypteringsskjema kan beskrives som følger:

    SE = (K, E, D) , hvor

    • K - nøkkelgenereringsalgoritme K,
    • E (M, K) = C - en klartekstkrypteringsalgoritme M på en nøkkel K, resultatet av denne er en chiffertekst C,
    • D (C, K) = M - en algoritme for å dekryptere chifferteksten C på nøkkelen K, resultatet av denne er klarteksten M

    Meldingsprosessen kan beskrives som følger:

    Avsenderen krypterer meldingen ved hjelp av en spesifikk krypteringsalgoritme, som den originale (ukrypterte) meldingen og nøkkelen leveres til. Utdata fra algoritmen er en kryptert melding. Nøkkelen er en verdi uavhengig av meldingen som krypteres. Endring av nøkkel bør endre den krypterte meldingen.

    Den krypterte meldingen sendes til mottakeren. Mottakeren konverterer den krypterte meldingen til den originale ved å bruke dekrypteringsalgoritmen og den samme nøkkelen som ble brukt i kryptering, eller en nøkkel som enkelt kan avledes fra krypteringsnøkkelen.

    Den viktigste komponenten i et symmetrisk krypteringsskjema er krypteringsalgoritmen den bruker. For øyeblikket skilles blokkerings- og strømkrypteringsalgoritmer:

    • blokkchiffer. De behandler informasjon i blokker med en viss lengde (vanligvis 64, 128 biter, som for eksempel i DES eller AES), og bruker en nøkkel på blokken i en foreskrevet rekkefølge, som regel flere sykluser med blanding og substitusjon, kalt runder.
    • strømchiffer, der kryptering utføres på hver bit eller byte av den originale (ren) teksten ved hjelp av gamma.

    I praksis er grensen mellom blokk- og strømkrypteringsalgoritmer ganske uskarp (en strømchiffer kan enkelt lages på grunnlag av en blokkchiffer, for eksempel GOST 28147-89 i gammamodus).

    Krypteringsskjemaene som brukes i blokkchiffer kalles også krypteringsmoduser.

    Noen av de symmetriske krypteringsskjemaene er:

    1. (ECB) elektronisk kodebok
      • (ECB CTS
    2. (CBC) Chiffer Block Chaining Chiffer blokkkjeding-modus
      • (CBC CTS) CipherText Stealing
      1. () blokkkjeding Blockkjedingmodus
      2. (CBC $) Chiffer Block Chaining med tilfeldig IV (initialiseringsvektor) Kjede blokker med en tilfeldig initialiseringsvektor
      3. (CBCC) chifferblokkkjeding med kontrollsum
      4. (PCBC) forplanter chifferblokkkjeding
      5. (CBCPD) chifferblokkkjeding av klartekstforskjell
    3. (CFB) tilbakemeldingsmodus for chiffertekst
    4. (OFB) Utgang Tilbakekopling Utgang Tilbakemeldingsmodus
    5. (OFBNLF) utgangs-tilbakemelding med en ikke-lineær funksjon Ikke-lineær utgangs-tilbakemeldingsmodus
    6. (PBC) klartekst blokkkjeding Klartekst blokkkjeding
    7. (PFB) klartekst-tilbakemelding Rentekst-tilbakemeldingsmodus
    8. (CTR) Teller Tellermodus
    9. Multippel kryptering
      1. Dobbelt
        • Davis-Price-metoden
      2. Trippel
        • Touchmans krets
        • Tre-nøkkel ordning

    Kryptografiske primitiver og/eller protokoller

    Den kryptografiske styrken til symmetriske krypteringsskjemaer avhenger nesten helt av den symmetriske krypteringsalgoritmen som brukes i den. Som regel, når man analyserer styrken til en symmetrisk (enkeltnøkkel) algoritme, antas det at det enkleste krypteringsskjemaet brukes - ECB. Bruk av andre skjemaer kan forbedre enkelte egenskaper til algoritmen, i visse tilfeller, men ikke omvendt.

    For å sikre påliteligheten til symmetriske krypteringsalgoritmer, må du:

    • den kryptografiske algoritmen må være sterk nok til at den overførte krypterte meldingen ikke kan dekrypteres uten en nøkkel, kun ved å bruke forskjellige statistiske mønstre for den krypterte meldingen eller andre metoder for dens analyse.
    • sikkerheten til den overførte meldingen bør avhenge av hemmeligheten til nøkkelen, men ikke av hemmeligheten til algoritmen. Algoritmen bør analyseres av spesialister for å utelukke tilstedeværelsen av svake punkter, i nærvær av hvilke forholdet mellom ukrypterte og krypterte meldinger er dårlig skjult.
    • Algoritmen skal ikke bryte hemmeligheten til nøkkelen, selv om motstanderen har mange par med klartekst og de tilsvarende chiffertekstene som er oppnådd med denne nøkkelen.

    Som regel forutsettes det at deltakerne i den krypterte informasjonsutvekslingen har full tillit til hverandre, ellers, dersom det oppstår tvister og uenigheter om meldingens pålitelighet, vil en uavhengig observatør ikke kunne si hvem den ble sendt av.

    Symmetriske kryptoordninger er som regel preget av høy krypterings-/dekrypteringshastighet, som gjør at de kan brukes til rask kryptering av store mengder informasjon. I tillegg, ved hjelp av noen av dem, er det mulig å sikre alle tre egenskapene til informasjonssikkerhet: konfidensialitet, autentisitet og integritet.

    • Konfidensialiteten til overføringen avhenger av styrken til chifferen og konfidensialiteten til krypteringsnøkkelen.
    • Autentisitet er sikret på grunn av det faktum at uten foreløpig dekryptering er det praktisk talt umulig å utføre semantisk modifikasjon og forfalskning av en kryptografisk lukket melding. En falsk melding kan ikke krypteres riktig uten å kjenne den hemmelige nøkkelen.
    • Dataintegritet sikres ved å feste en spesiell kode (innsettingsimitasjon) til de overførte dataene, generert av den hemmelige nøkkelen. Imitasjonsinnsetting er en slags kontrollsum, det vil si en viss referansekarakteristikk for en melding, i henhold til hvilken integriteten til sistnevnte kontrolleres. Algoritmen for å generere et imiterende innlegg må sikre dens avhengighet i henhold til en kompleks kryptografisk lov på hver bit av meldingen. Meldingsintegritetskontrollen utføres av mottakeren av meldingen ved å generere en dummy-innlegg som tilsvarer den mottatte meldingen ved å bruke den hemmelige nøkkelen og sammenligne den med den mottatte dummy-verdien. Dersom det er samsvar, konkluderes det med at informasjonen ikke er endret på veien fra avsender til mottaker.

    Med en høy krypteringshastighet kan enkeltnøkkels kryptosystemer løse mange viktige informasjonssikkerhetsproblemer (for eksempel er det veldig effektivt å bruke symmetriske algoritmer for å kryptere lokale ressurser, for eksempel en harddisk). Den autonome bruken av symmetriske kryptosystemer i datanettverk gir imidlertid opphav til problemet med distribusjon av krypteringsnøkler mellom brukere.

    Praktiske anvendelser av kryptografiske konstruksjoner, særegenheter ved implementeringen (Praktiske problemer)

    Den praktiske anvendelsen av krypteringsordninger kan sees på mange områder av livet vårt, for eksempel brukes ECB-ordningen til å kryptere nøkler, CBC- og CFB-ordningene brukes til å autentisere data, CFB-ordningen brukes også til å kryptere individuelle tegn. OFB-ordningen brukes ofte i kanaler med høy interferens (for eksempel satellittkommunikasjonssystemer). PCBC-krypteringsskjemaet bruker Kerberos v4 og WASTE-protokoller