Verschil tussen symmetrische en asymmetrische encryptie. Wat is HTTP. Cryptosysteem met openbare sleutel

Er zijn twee methodologieën voor de verwerking van cryptografische informatie met behulp van sleutels: symmetrisch en asymmetrisch.

Symmetrisch (geheim) een methodologie waarbij zowel voor de encryptie als de decryptie de afzender en de ontvanger dezelfde sleutel gebruiken, waarvan zij het gebruik overeenkwamen vóór het begin van de interactie (Fig. 2.1). Als de sleutel niet is aangetast, authenticeert de decodering automatisch de afzender, aangezien alleen de afzender de sleutel heeft waarmee de informatie kan worden gecodeerd, en alleen de ontvanger de sleutel heeft waarmee de informatie kan worden gedecodeerd. Omdat de afzender en de ontvanger de enige mensen zijn die dit weten symmetrische sleutel Als de sleutel wordt gecompromitteerd, komt alleen de interactie tussen deze twee gebruikers in gevaar.

Rijst. 2.1

Symmetrische versleutelingsalgoritmen maken niet zo goed gebruik van sleutels lange lengte en kan snel grote hoeveelheden gegevens versleutelen.

Tegenwoordig beschikbare tools die gebruik maken van symmetrische methodologie zijn bijvoorbeeld ATM-netwerken. Deze systemen zijn originele ontwikkelingen van de banken die ze bezitten en zijn niet te koop.

Van de symmetrische encryptie-algoritmen is het meest gebruikte algoritme DES-codering(uitgevonden door IBM), dat wordt aanbevolen in open sectoren van de Amerikaanse economie. Dit algoritme was aanvankelijk gedoemd tot een beperkte levensduur omdat de sleutellengte beperkt was tot 56 bits.

Begin 1997 werd het DES-algoritme, dat een sleutel van 56 bits heeft, uitgedaagd. Op 17 juni 1997, na 140 dagen, werd de sleutel gedecodeerd. Dit betekende de virtuele dood van DES als encryptiestandaard. Toen begin 1998 de volgende wedstrijd om een ​​DES-sleutel te vinden binnen slechts 39 dagen slaagde, kondigde het Amerikaanse National Institute of Standards (NIST) een wedstrijd aan om de nieuwe AES-standaard (Advanced Encryption Standard) goed te keuren. AES is een volledig open symmetrisch algoritme geworden met sleutelgroottes van 128, 192, 256 bits.

De situatie wordt nog verergerd door het feit dat, volgens de Amerikaanse wet, export als softwareproducten Encryptiesystemen met een sleutel van maximaal 128 bits zijn toegestaan. Dat wil zeggen dat wanneer u een coderingssysteem koopt met een sleutel van 1024 of 2048 of meer bits, u moet weten dat wanneer de sleutel wordt gewijzigd, het actieve (veranderende) deel het 128-bits deel van de sleutel zal zijn. Symmetrische encryptiesystemen hebben één gemeenschappelijk nadeel, namelijk de moeilijkheid om sleutels te distribueren. Als de sleutel door een derde partij wordt onderschept, komt een dergelijk cryptografisch beveiligingssysteem in gevaar. Wanneer de sleutel wordt vervangen, moet deze dus vertrouwelijk worden doorgestuurd naar de deelnemers aan de coderingsprocedures. Deze methode is uiteraard niet geschikt als u veilige verbindingen tot stand moet brengen met duizenden of meer internetabonnees. Het grootste probleem is hoe sleutels kunnen worden gegenereerd en veilig kunnen worden verzonden naar de deelnemers aan de interactie. Hoe kan een veilig kanaal voor informatieoverdracht tussen deelnemers aan de interactie tot stand worden gebracht om sleutels via onbeveiligde communicatiekanalen over te dragen? Het ontbreken van een veilige sleuteluitwisselingsmethode beperkt de verspreiding van symmetrische encryptietechnieken op internet.

Ze probeerden dit probleem op te lossen door te ontwikkelen asymmetrisch (open) encryptiemethodologie. Het codeert een document met één sleutel en decodeert het met een andere. Elke deelnemer aan de overdracht van informatie genereert onafhankelijk twee willekeurige getallen (geheime en publieke sleutels).

De publieke sleutel wordt via open communicatiekanalen verzonden naar een andere deelnemer aan het cryptobeschermingsproces geheime sleutel geheim gehouden.

De afzender codeert het bericht openbare sleutel ontvanger, A Alleen de eigenaar van de privésleutel kan deze ontsleutelen(Afb. 2.2).

Rijst. 2.2

De publieke sleutel hoeft niet verborgen te zijn. Het maakt niet uit wie het weet gegeven sleutel, omdat het alleen bedoeld is voor gegevensversleuteling. Deze methode is geschikt voor brede toepassing. Als u elke gebruiker op internet een eigen paar sleutels toewijst en openbare sleutels publiceert als getallen in telefoonboek, dan kan vrijwel iedereen versleutelde berichten met elkaar uitwisselen. Het ziet eruit als een doos met twee deuren aan verschillende kanten. Elke deur heeft zijn eigen slot. Het document wordt in de doos geplaatst, vergrendeld en aan de andere kant ontgrendeld met de sleutel van de ontvanger. Hierbij wordt gebruik gemaakt van de theorie priemgetallen. Dit cryptografische beveiligingsalgoritme wordt RSA genoemd.

Alle asymmetrische cryptosystemen zijn onderhevig aan aanvallen met brute kracht en moeten daarom veel langere sleutels gebruiken dan de sleutels die in symmetrische cryptosystemen worden gebruikt om een ​​gelijkwaardig beveiligingsniveau te bieden. Dit heeft een onmiddellijke impact op de computerbronnen die nodig zijn voor encryptie. RSA is een industriestandaard asymmetrisch sleutelalgoritme geworden dat door bedrijven wordt gebruikt voor digitale handtekening en codering.

Symmetrische en asymmetrische encryptiesystemen hebben elk hun eigen voor- en nadelen. De nadelen van een symmetrisch encryptiesysteem zijn dat het moeilijk is om een ​​gecompromitteerde sleutel te vervangen, en de nadelen asymmetrisch systeem– bij een relatief lage bedrijfssnelheid. In termen van cryptografische sterkte komt een sleutellengte van 128 bits in een symmetrisch systeem overeen met een sleutel van 2304 bits in een asymmetrisch systeem.

Momenteel zijn encryptiesystemen die gebruik maken van een gecombineerd algoritme wijdverspreid, waardoor het gebruik van open overdracht van encryptiesleutels (zoals in RSA) mogelijk is met de hoge encryptiesnelheid die inherent is aan AES.

Om de lage snelheid van asymmetrische versleutelingsalgoritmen te vermijden, wordt voor elk bericht een tijdelijke symmetrische sleutel gegenereerd. Het bericht wordt gecodeerd met behulp van deze tijdelijke symmetrische sessiesleutel. Deze sessiesleutel wordt vervolgens gecodeerd met behulp van de asymmetrische openbare sleutel van de ontvanger asymmetrisch algoritme encryptie. Omdat de sessiesleutel veel korter is dan het bericht zelf, zal de versleutelingstijd relatief kort zijn. Hierna wordt deze gecodeerde sessiesleutel samen met het gecodeerde bericht naar de ontvanger verzonden (Fig. 2.3).

Rijst. 2.3

De ontvanger gebruikt hetzelfde asymmetrische versleutelingsalgoritme en zijn of haar geheime sleutel om de sessiesleutel te ontsleutelen, en de resulterende sessiesleutel wordt gebruikt om het bericht zelf te ontsleutelen (Figuur 2.4).

Rijst. 2.4

Cryptografische systemen met publieke sleutels worden momenteel op grote schaal gebruikt in verschillende sectoren netwerkprotocollen, met name in de TLS-protocollen en zijn voorganger SSL (onderliggende HTTPS), in SSH. Wordt ook gebruikt in PGP, S/MIME.

  • Website-ontwikkeling,
  • Algoritmen
    • Vertaling

    Hoe werkt HTTPS eigenlijk? Dit is een vraag waarmee ik al een aantal dagen worstel tijdens een werkproject.

    Als webontwikkelaar begreep ik dat het gebruik van HTTPS om gebruikersgegevens te beschermen heel erg is goed idee, maar ik heb nooit een goed begrip gehad van hoe HTTPS eigenlijk werkt.

    Hoe worden gegevens beschermd? Hoe kunnen client en server worden geïnstalleerd beveiligde verbinding, als iemand al naar zijn kanaal luistert? Wat is een beveiligingscertificaat en waarom zou ik iemand moeten betalen om er een te krijgen?

    Pijpleiding

    Voordat we ingaan op hoe het werkt, laten we eerst kort bespreken waarom het belangrijk is om internetverbindingen te beveiligen en waartegen HTTPS beschermt.

    Wanneer een browser een verzoek indient bij uw favoriete website, moet het verzoek via veel verschillende netwerken gaan, waarvan elk mogelijk kan worden gebruikt om de tot stand gebrachte verbinding af te luisteren of te verstoren.

    Van jouw eigen computer naar andere computers van u lokaal netwerk, via routers en switches, via uw ISP en via vele andere tussenliggende providers - een groot aantal organisaties geven uw gegevens door. Als een aanvaller in minstens één daarvan terechtkomt, heeft hij de mogelijkheid om te zien welke gegevens worden verzonden.

    Normaal gesproken worden verzoeken verzonden via reguliere HTTP, waarbij zowel het clientverzoek als het serverantwoord worden verzonden open vorm. En er zijn veel goede argumenten waarom HTTP standaard geen encryptie gebruikt:

    Er is meer voor nodig rekenkracht
    Er worden meer gegevens overgedragen
    Caching kan niet worden gebruikt

    Maar in sommige gevallen, wanneer uiterst gevoelige informatie via een communicatiekanaal wordt verzonden (zoals wachtwoorden of creditcardgegevens), is het noodzakelijk om aanvullende maatregelen te treffen om het afluisteren van dergelijke verbindingen te voorkomen.

    Transportlaagbeveiliging (TLS)

    Nu gaan we in de wereld van de cryptografie duiken, maar hiervoor hebben we geen speciale ervaring nodig - we zullen alleen de meest overwegen algemene vragen. Met cryptografie kun je dus een verbinding beschermen tegen potentiële aanvallers die de verbinding willen beïnvloeden of deze eenvoudigweg willen afluisteren.

    TLS – de opvolger van SSL – is het protocol dat het meest wordt gebruikt om een ​​veilige HTTP-verbinding tot stand te brengen (het zogenaamde HTTPS). TLS bevindt zich een laag onder het HTTP-protocol in het OSI-model. Simpel gezegd betekent dit dat tijdens het uitvoeren van een verzoek eerst alle “dingen” gebeuren die verband houden met de TLS-verbinding, en pas daarna alles wat verband houdt met de HTTP-verbinding.

    TLS is een hybride cryptografisch systeem. Dit betekent dat het verschillende cryptografische benaderingen gebruikt, die we hierna zullen bekijken:

    1) Asymmetrische encryptie (cryptosysteem met publieke sleutel) voor het genereren van een gedeelde geheime sleutel en authenticatie (dat wil zeggen, verifiëren dat u bent wie u zegt dat u bent).
    2) Symmetrische codering, waarbij een geheime sleutel wordt gebruikt om verzoeken en antwoorden verder te coderen.

    Cryptosysteem met openbare sleutel

    Een cryptosysteem met publieke sleutel is een type van cryptografisch systeem, wanneer elke partij zowel een publieke als een private sleutel heeft, wiskundig aan elkaar gerelateerd. De publieke sleutel wordt gebruikt om de berichttekst in wartaal te versleutelen, terwijl de privésleutel wordt gebruikt om de originele tekst te ontsleutelen en op te halen.

    Zodra een bericht is gecodeerd met een publieke sleutel, kan het alleen worden gedecodeerd met de bijbehorende privésleutel. Geen enkele sleutel kan beide functies vervullen. De publieke sleutel wordt gepubliceerd in open toegang zonder het risico dat het systeem wordt blootgesteld aan bedreigingen, maar de privésleutel mag niet in handen komen van iemand die niet de rechten heeft om de gegevens te ontsleutelen. We hebben dus sleutels - openbaar en privé. Een van de meest indrukwekkende voordelen van asymmetrische encryptie is dat twee partijen voorheen volledig met elkaar verbonden waren deskundige vriend vriend, kan een beveiligde verbinding tot stand brengen, waarbij in eerste instantie gegevens worden uitgewisseld via een open, onbeveiligde verbinding.
    De client en server gebruiken hun eigen privésleutels en een gepubliceerde openbare sleutel om een ​​gedeelde geheime sleutel voor de sessie te creëren.

    Dit betekent dat als iemand zich tussen de cliënt en de server bevindt en de verbinding waarneemt, hij nog steeds niet in staat zal zijn om de privésleutel van de cliënt, de privésleutel van de server of de geheime sleutel van de sessie te achterhalen.

    Hoe is dit mogelijk? Wiskunde!

    Diffie-Hellman-algoritme

    Een van de meest voorkomende benaderingen is het Diffie-Hellman (DH) sleuteluitwisselingsalgoritme. Met dit algoritme kunnen de client en de server overeenstemming bereiken over een gedeelde geheime sleutel zonder dat de geheime sleutel via de verbinding hoeft te worden verzonden. Aanvallers die naar het kanaal luisteren, zullen dus niet in staat zijn de geheime sleutel te achterhalen, zelfs als ze zonder uitzondering alle datapakketten onderscheppen.

    Zodra de sleutels zijn uitgewisseld met behulp van het DH-algoritme, kan de resulterende geheime sleutel worden gebruikt om verdere communicatie binnen die sessie te versleutelen met behulp van veel eenvoudigere symmetrische versleuteling.

    Een beetje wiskunde...

    De wiskundige functies die aan dit algoritme ten grondslag liggen, zijn belangrijk onderscheidend kenmerk- ze zijn relatief eenvoudig te berekenen in de voorwaartse richting, maar praktisch niet in de omgekeerde richting. Dit is precies het gebied waar zeer grote priemgetallen een rol spelen.

    Laat Alice en Bob twee partijen zijn die sleutels uitwisselen met behulp van het DH-algoritme. Eerst zijn ze het op een bepaalde basis eens wortel(meestal een klein getal zoals 2,3 of 5) en een heel groot priemgetal prima(meer dan 300 cijfers). Beide waarden worden in duidelijke tekst over het communicatiekanaal verzonden, zonder de dreiging dat de verbinding in gevaar komt.

    Bedenk dat zowel Alice als Bob hun eigen privésleutels hebben (van meer dan 100 cijfers), die nooit via communicatiekanalen worden verzonden.

    Het mengsel wordt verzonden via het communicatiekanaal mengsel, afgeleid van zowel de privésleutels als de waarden prima En wortel.

    Dus:
    Alice's mengsel = (wortel ^ Alice's Secret)% prime
    Bob's mengsel = (wortel ^ Bob's Secret)% prime
    waarbij % de rest van de deling is

    Zo creëert Alice haar mengsel op basis van de goedgekeurde waarden van de constanten ( wortel En prima), Bob doet hetzelfde. Zodra ze de waarden hadden mengsel elkaar, ze produceren extra wiskundige bewerkingen om de privésleutel van de sessie te verkrijgen. Namelijk:

    De berekeningen van Alice
    (Bob's mengsel ^ Alice's Secret) % prime

    Bobs berekeningen
    (Alice's mengsel ^ Bob's Secret) % prime

    Het resultaat van deze bewerkingen is hetzelfde nummer voor zowel Alice als Bob, en dit nummer wordt de privésleutel deze sessie. Merk op dat geen van beide partijen hun privésleutel via het communicatiekanaal hoefde te verzenden, en dat de resulterende geheime sleutel ook niet via de openbare verbinding werd verzonden. Geweldig!

    Voor degenen die minder wiskundig onderlegd zijn, biedt Wikipedia een uitstekend beeld waarin dit proces wordt uitgelegd aan de hand van het voorbeeld van het mengen van kleuren:

    Merk op hoe de startkleur (geel) uiteindelijk dezelfde “gemengde” kleur is voor zowel Bob als Alice. Het enige dat wordt overgedragen open kanaal communicatie bestaat uit halfgemengde kleuren, die feitelijk betekenisloos zijn voor iedereen die naar het communicatiekanaal luistert.

    Symmetrische codering

    Sleuteluitwisseling vindt slechts één keer per sessie plaats, tijdens het tot stand brengen van de verbinding. Zodra de partijen het al eens zijn over een geheime sleutel, vindt de client-server-interactie plaats met behulp van symmetrische encryptie, wat veel efficiënter is voor het verzenden van informatie omdat er geen extra bevestigingskosten nodig zijn.

    Met behulp van een eerder verkregen geheime sleutel en een overeenkomst over de encryptiemodus kunnen de client en de server veilig communiceren door berichten die van elkaar zijn ontvangen met behulp van de geheime sleutel te coderen en decoderen. Een aanvaller die verbinding maakt met een kanaal ziet alleen ‘rommel’ over het netwerk heen en weer lopen.

    Authenticatie

    Met het Diffie-Hellman-algoritme kunnen twee partijen een privégeheime sleutel verkrijgen. Maar hoe kunnen beide partijen er zeker van zijn dat ze echt met elkaar praten? We hebben het nog niet gehad over authenticatie.

    Wat als ik mijn vriend bel, we een DH-sleuteluitwisseling doen, maar ineens blijkt dat mijn oproep is onderschept en dat ik eigenlijk met iemand anders aan het praten was?! Ik zal nog steeds veilig met deze persoon kunnen communiceren - niemand anders kan naar ons luisteren - maar dit zal niet de persoon zijn met wie ik denk dat ik communiceer. Het is niet erg veilig!

    Om het authenticatieprobleem op te lossen, hebben we een Public Key Infrastructure nodig om ervoor te zorgen dat proefpersonen zijn wie ze zeggen dat ze zijn. Deze infrastructuur is ontworpen om digitale certificaten aan te maken, te beheren, te distribueren en in te trekken. Certificaten zijn die vervelende dingen waarvoor u moet betalen om uw site via HTTPS te laten werken.

    Maar wat is een certificaat precies en hoe biedt het ons zekerheid?

    Certificaten

    In de meest grove benadering is een digitaal certificaat een bestand dat gebruikmaakt van een elektronische digitale handtekening (daarover later meer) en dat de openbare sleutel van een computer koppelt aan het eigendom ervan. Een digitale handtekening op een certificaat betekent dat iemand verifieert dat een bepaalde openbare sleutel toebehoort aan een specifieke persoon of organisatie.

    In essentie associëren certificaten domeinnamen met een specifieke publieke sleutel. Dit voorkomt dat een aanvaller zijn publieke sleutel kan verstrekken door zich voor te doen als de server waartoe de client toegang heeft.

    In het telefoonvoorbeeld hierboven kan een hacker proberen mij zijn openbare sleutel te laten zien door zich voor te doen als een vriend van mij, maar de handtekening op zijn certificaat zou niet die zijn van iemand die ik vertrouw.

    Om een ​​certificaat door een webbrowser te kunnen vertrouwen, moet het ondertekend zijn door een geaccrediteerde certificeringsinstantie (Certificate Authority, CA). CA's zijn bedrijven die handmatig verifiëren dat de persoon die een certificaat probeert te verkrijgen, aan de volgende twee voorwaarden voldoet:

    1. bestaat echt;
    2. toegang heeft tot het domein waarvoor hij een certificaat probeert te verkrijgen.

    Zodra de CA ervan overtuigd is dat de aanvrager echt is en daadwerkelijk het domein beheert, ondertekent de CA een certificaat voor die site, waarmee in feite een stempel wordt gedrukt op het feit dat de publieke sleutel van de site er daadwerkelijk toe behoort en kan worden vertrouwd.

    Uw browser is al vooraf geladen met een lijst met geaccrediteerde CA's. Als de server een certificaat retourneert dat niet is ondertekend door een geaccrediteerde CA, verschijnt er een grote rode waarschuwing. Anders zou iedereen valse certificaten kunnen ondertekenen.

    Dus zelfs als een hacker de openbare sleutel van zijn server zou pakken en een digitaal certificaat zou genereren waarin wordt bevestigd dat deze openbare sleutel is gekoppeld aan de website facebook.com, zal de browser dit niet geloven omdat het certificaat niet is ondertekend door een geaccrediteerde CA.

    Andere dingen die u moet weten over certificaten

    Uitgebreide validatie
    Naast de reguliere X.509-certificaten zijn er Extended Validation-certificaten die een hoger vertrouwensniveau bieden. Door een dergelijk certificaat uit te geven, voert de CA nog meer controles uit op de persoon die het certificaat ontvangt (meestal aan de hand van paspoortgegevens of rekeningen).

    Bij ontvangst van een dergelijk certificaat toont de browser een groene balk in de adresbalk, naast het gebruikelijke pictogram met een hangslot.

    Presenteren van meerdere websites op één server
    Omdat gegevensuitwisseling via het TLS-protocol plaatsvindt voordat de HTTP-verbinding begint, kunnen er problemen ontstaan ​​als meerdere websites zich op dezelfde webserver bevinden, op hetzelfde IP-adres. De routering van virtuele hosts wordt uitgevoerd door de webserver, maar de TLS-verbinding vindt zelfs eerder plaats. Er zal één enkel certificaat voor de gehele server worden gebruikt bij het aanvragen van een site op de server, wat tot problemen kan leiden

    Wij hebben vrijgelaten nieuw boek“Contentmarketing op sociale media: hoe u in de hoofden van uw volgers kunt kruipen en ze verliefd kunt maken op uw merk.”

    Abonneren

    HTTP zorgt ervoor dat gegevens kunnen worden overgedragen. Aanvankelijk was het gemaakt voor het verzenden en ontvangen van documenten met daarin links om de overstap te maken naar bronnen van derden.

    De afkorting luidt: "HyperText Overdrachtsprotocol”, wat vertaald betekent “transmissieprotocol”. HTTP behoort tot de groep toepassingsniveau gebaseerd op de specificaties die door OSI worden gebruikt.

    Laten we, om beter te begrijpen wat HTTP betekent, naar een eenvoudige analogie kijken. Laten we ons voorstellen dat u met een buitenlander communiceert op een sociaal netwerk. Hij stuurt je een bericht op Engels, je snapt het. Maar u begrijpt de inhoud niet, omdat u de taal niet goed spreekt. Gebruik een woordenboek om het bericht te ontcijferen. Nadat u de essentie hebt begrepen, antwoordt u de buitenlander in het Russisch en verzendt u het antwoord. De buitenlander krijgt het antwoord en ontcijfert met hulp van een vertaler de boodschap. Om het hele mechanisme te vereenvoudigen, vervullen de internetprotocollen HTTP de functie van een vertaler. Met hun hulp kan de browser de gecodeerde inhoud van webpagina's vertalen en de inhoud ervan weergeven.

    Waar is HTTP voor?

    Het HTTP-protocol wordt gebruikt om informatie uit te wisselen via een client-servermodel. De client stelt een verzoek op en verzendt dit naar de server, waarna de server dit verwerkt en analyseert, waarna een antwoord wordt aangemaakt en naar de gebruiker wordt verzonden. Aan het einde van dit proces geeft de client een nieuwe opdracht en alles herhaalt zich.

    Met het HTTP-protocol kunt u dus informatie uitwisselen tussen verschillende gebruikersapplicaties en speciale webservers, en verbinding maken met webbronnen (meestal browsers). Tegenwoordig zorgt het beschreven protocol voor de werking van het hele netwerk. Overdrachtsprotocol HTTP-gegevens wordt ook meer gebruikt om informatie via andere protocollen te verzenden laag niveau bijvoorbeeld WebDAV of SOAP. In dit geval is het protocol een transportmiddel. Veel programma's vertrouwen ook op HTTP als het belangrijkste hulpmiddel voor het uitwisselen van informatie. Gegevens worden gepresenteerd in verschillende formaten, bijvoorbeeld JSON of XML.

    HTTP is een protocol voor het uitwisselen van informatie via een IP/TCP-verbinding. Meestal gebruikt de server hiervoor TCP-poort 80. Als de poort niet is geregistreerd, software de client gebruikt standaard TCP-poort 80. In sommige gevallen kunnen andere poorten worden gebruikt.

    IN HTTP-protocol er wordt gebruik gemaakt van een symmetrisch versleutelingsschema; er wordt gebruik gemaakt van symmetrische cryptosystemen. Symmetrische cryptosystemen waarbij dezelfde sleutel wordt gebruikt om informatie te versleutelen en te ontsleutelen.

    Wat is het verschil tussen HTTP en HTTPS

    Het verschil kan zelfs worden gedetecteerd door het decoderen van afkortingen. HTTPS staat voor Hypertext Transfer Protocol Security. HTTP is dus een onafhankelijk protocol en HTTPS is een uitbreiding om het te beschermen. Door HTTP-informatie wordt onbeveiligd verzonden en HTTPS biedt cryptografische bescherming. Dit geldt vooral voor bronnen met verantwoorde autorisatie. Dit kunnen sociale netwerken of sites van betalingssystemen zijn.

    Wat zijn de gevaren van het verzenden van onbeveiligde gegevens? Een interceptorprogramma kan ze op elk moment overdragen aan aanvallers. HTTPS heeft een complexe technische organisatie waarmee u informatie op betrouwbare wijze kunt beschermen en de mogelijkheid van ongeautoriseerde toegang daartoe kunt elimineren. Het verschil zit in de havens. HTTPS werkt doorgaans op poort 443.

    Zo wordt HTTP gebruikt voor gegevensoverdracht, en HTTPS maakt veilige gegevensoverdracht mogelijk met behulp van codering en autorisatie op bronnen met een hoog beveiligingsniveau.

    Extra functionaliteit

    HTTP is rijk aan functionaliteit en is compatibel met diverse uitbreidingen. De 1.1-specificatie die tegenwoordig wordt gebruikt, maakt het mogelijk dat de Upgrade-header wordt gebruikt om te schakelen en via andere protocollen te werken bij het uitwisselen van gegevens. Om dit te doen, moet de gebruiker met deze header een verzoek naar de server sturen. Als de server moet overschakelen naar een specifieke centrale die een ander protocol gebruikt, stuurt hij een verzoek terug naar de client, die de status “426 Upgrade Required” weergeeft.

    Deze functie is vooral relevant voor het uitwisselen van informatie via WebSocket (heeft de RFC 6455-specificatie, waardoor u op elk moment gegevens kunt uitwisselen, zonder onnodige HTTP-verzoeken). Om naar WebSocket te migreren, verzendt één gebruiker een verzoek met de Upgrade-header en de waarde ‘websocket’. Vervolgens antwoordt de server met “101 Switching Protocols.” Na dit moment begint de informatieoverdracht via WebSocket.

    Er circuleren ongelooflijk veel gedurfde uitspraken op internet, zoals asymmetrische encryptie is beter dan symmetrische encryptie, net als het omgekeerde. En vaak luisteren beginners naar deze woorden zonder zelfs maar echt te begrijpen wat ze betekenen waar we het over hebben. Er werd gezegd dat AES cool is of, integendeel, RSA-regels, en iedereen werd voor lief genomen. Deze aanpak leidt echter nogal eens tot problemen wanneer, door onvoldoende begrip van de essentie van het vraagstuk, volledig onnodige onderdelen worden geïmplementeerd of het systeem weerloos blijkt te zijn.

    Daarom zal ik je in dit artikel het basisminimum vertellen dat een beginner moet weten. Die zal er niet zijn complexe formules of wiskundige rechtvaardigingen, maar het verschil tussen symmetrische en asymmetrische encryptie zal worden uitgelegd, en er zullen ook enkele essentiële punten worden gegeven. Maar eerst de dingen eerst.

    Symmetrische codering

    Symmetrische codering gebruikt slechts één wachtwoord (of zoals het ook wel een sleutel wordt genoemd). Laten we eens kijken hoe alles gebeurt. Er zijn er enkele wiskundig algoritme encryptie, die een wachtwoord en tekst als invoer ontvangt. De uitvoer is gecodeerde tekst. Om te krijgen bron, wordt hetzelfde wachtwoord gebruikt, maar met een decoderingsalgoritme (soms kan het hetzelfde zijn).

    Met andere woorden: zodra iemand dit wachtwoord ontdekt, wordt de beveiliging onmiddellijk verbroken. Als symmetrische encryptie wordt gebruikt, moet er daarom veel aandacht worden besteed aan de kwestie van het creëren en behouden van de veiligheid van het wachtwoord zelf. Het mag niet in duidelijke tekst worden verzonden, ongeacht of het een netwerk is of een stuk papier dat op de monitor is aangesloten. Het wachtwoord moet complex genoeg zijn, zodat het niet met eenvoudigweg brute kracht kan worden verkregen. Als het wachtwoord door meerdere mensen wordt gebruikt, moet er over worden nagedacht veilige methode de distributie ervan, evenals een waarschuwingssysteem voor het geval het wachtwoord bij iemand anders bekend wordt.

    Ondanks de beperkingen wordt symmetrische encryptie veel gebruikt. Vooral vanwege het gemak van het begrijpen van het hele proces (één wachtwoord) en de technische belasting (meestal zijn dergelijke algoritmen snel).

    Asymmetrische encryptie

    Bij asymmetrische encryptie worden twee wachtwoorden gebruikt: één open (openbaar) en één privé (geheim). Wachtwoord openen wordt naar alle mensen verzonden, terwijl het privéwachtwoord aan de kant van de server of andere ontvanger blijft staan. In dit geval zijn de namen vaak voorwaardelijk, omdat een gecodeerd bericht met een van de sleutels alleen kan worden gedecodeerd met een andere sleutel. Met andere woorden, de sleutels zijn in deze zin gelijkwaardig.

    Dergelijke versleutelingsalgoritmen zorgen ervoor dat het wachtwoord (de sleutel) vrij over het netwerk kan worden verspreid, omdat het zonder een tweede sleutel onmogelijk is om het originele bericht te verkrijgen. Gebaseerd op dit principe SSL-protocol, waardoor het eenvoudig is om een ​​veilige verbinding met gebruikers tot stand te brengen, omdat de privésleutel (wachtwoord) alleen op de server wordt opgeslagen. Als u het gemerkt heeft, verschijnt het bericht ‘onbeveiligde verbinding’ regelmatig in uw browser wanneer u een site opent met het https-voorvoegsel. Dit betekent dat het heel goed mogelijk is dat de privésleutel al lang geopend is, ook gecompromitteerd zou zijn en bekend is bij aanvallers. Daarom is een dergelijke beveiligde verbinding mogelijk niet veilig.

    Bij asymmetrische encryptie wordt het wat eenvoudiger qua het opslaan van wachtwoorden, omdat de geheime sleutel met niemand gedeeld hoeft te worden. Het is voldoende dat slechts één persoon of server het weet. Ook wordt het probleem van het kraken van een wachtwoord eenvoudiger, omdat de server het sleutelpaar op elk moment kan wijzigen en het gemaakte openbare wachtwoord naar iedereen kan sturen.

    Asymmetrische encryptie is echter ‘zwaarder’, met andere woorden: er zijn meer computerbronnen voor nodig. Er zijn ook beperkingen op het sleutelgeneratieproces zelf (deze moeten nog worden geselecteerd). Daarom wordt asymmetrische encryptie in de praktijk meestal alleen gebruikt voor authenticatie en identificatie van gebruikers (bijvoorbeeld inloggen op een website), of om een ​​sessiesleutel te creëren voor symmetrische encryptie ( tijdelijk wachtwoord voor gegevensuitwisseling tussen de gebruiker en de server), of voor het maken van digitale handtekeningen die zijn gecodeerd met een geheime sleutel. Zoals u waarschijnlijk al heeft begrepen, kan in het laatste geval iedereen een dergelijke handtekening verifiëren met behulp van een openbare sleutel die openbaar beschikbaar is.

    Belangrijke punten over symmetrische en asymmetrische codering

    Het belangrijkste verschil tussen symmetrische en asymmetrische encryptie is hun aanpak. Daarom, als je een artikel over hun vergelijking hoort of leest, zoals “dit algoritme is beter” zonder specifieke details te noemen (bepaalde voorwaarden en taken), kun je veilig andere dingen gaan doen, aangezien dit een zeer nutteloze activiteit is, vergelijkbaar met het debat “Welke is beter? Een tank of een stoomschip? Zonder bijzonderheden, noch het een, noch het ander. Echter, dat is er wel belangrijke punten, die de moeite waard zijn om te weten:

    1. Het symmetrische algoritme is goed voor verzending grote volumes gecodeerde gegevens. Een asymmetrisch algoritme zal, als alle overige factoren gelijk blijven, aanzienlijk langzamer zijn. Om gegevensuitwisseling te organiseren met behulp van een asymmetrisch algoritme, moeten beide partijen bovendien de publieke en de private sleutel kennen, of moeten er twee van dergelijke paren zijn (één paar voor elke zijde).

    2. Met asymmetrische encryptie kunt u zonder inspanning van de gebruiker een veilige verbinding tot stand brengen. Het symmetrische algoritme gaat ervan uit dat de gebruiker ‘op de een of andere manier het wachtwoord moet achterhalen’. Het is echter de moeite waard om te begrijpen dat asymmetrische algoritmen ook geen 100% veiligheid bieden. Ze zijn bijvoorbeeld gevoelig voor man-in-the-middle-aanvallen. De essentie van dit laatste is dat er tussen jou en de server een computer wordt geïnstalleerd, die zijn publieke sleutel naar jou stuurt en de publieke sleutel van de server gebruikt om gegevens van jou over te dragen.

    3. Vanuit het oogpunt van het hacken (compromitteren) van een wachtwoord is het asymmetrische algoritme eenvoudiger, omdat de server slechts een paar sleutels hoeft te wijzigen en de gecreëerde publieke sleutel hoeft te distribueren. Bij symmetrische encryptie rijst de vraag hoe het volgende wachtwoord moet worden verzonden. Deze beperkingen worden echter omzeild, aan beide kanten worden de sleutels bijvoorbeeld voortdurend gegenereerd volgens hetzelfde algoritme, waarna de vraag rijst hoe dit algoritme geheim moet worden gehouden.

    4. Symmetrische algoritmen worden meestal gebouwd op basis van enkele blokken met wiskundige transformatiefuncties. Daarom is het gemakkelijker om dergelijke algoritmen te wijzigen. Asymmetrische algoritmen zijn bijvoorbeeld meestal gebaseerd op een aantal wiskundige problemen. RSA is gebouwd op het probleem van machtsverheffing en modulo. Daarom zijn ze vrijwel onmogelijk of zeer moeilijk te wijzigen.

    5. Asymmetrische algoritmen worden meestal gebruikt in combinatie met symmetrische algoritmen. Het gebeurt ongeveer als volgt. Met behulp van een asymmetrisch algoritme wordt een door de gebruiker gemaakte sessiesleutel voor symmetrische encryptie naar de server gestuurd, waarna gegevensuitwisseling plaatsvindt met behulp van een symmetrisch algoritme. De volgorde kan gedeeltelijk veranderen of de toonsoort kan iets anders worden gevormd, maar de betekenis is ongeveer hetzelfde.

    6. Het creëren van veilige sleutels (wachtwoorden) in asymmetrische algoritmen is een zeer moeilijke zaak, in tegenstelling tot symmetrische algoritmen, waarbij het voldoende is om de sleutel te vormen volgens de regels voor het genereren van veilige wachtwoorden (cijfers, letters, hoofdletters, enz.). Echter, het feit dat geheim wachtwoord Alleen de server weet het, waardoor het gemakkelijker wordt om de sleutel veilig te bewaren.

    Symmetrische codering

    Encryptie waarbij hetzelfde wachtwoord wordt gebruikt voor zowel encryptie als decryptie. Dit in tegenstelling tot asymmetrische encryptie, waarbij twee verschillende sleutels worden gebruikt voor encryptie en decryptie: een ‘publieke’ en een ‘privé’ sleutel.

    Het belangrijkste voordeel van symmetrische encryptie ten opzichte van asymmetrische encryptie: het is veel sneller (1000 keer). Er wordt vaak gebruik gemaakt van ‘hybride encryptieschema’s’, waarbij de besturingsverbinding tot stand wordt gebracht door asymmetrische encryptie, en via dit kanaal komen de partijen met elkaar overeen welk symmetrisch encryptie-algoritme ze moeten kiezen en wat de encryptiesleutel (sessiesleutel) zal zijn. Een symmetrisch kanaal in een dergelijk schema wordt meestal na enige tijd opnieuw aangemaakt om te voorkomen dat een symmetrisch wachtwoord wordt geraden (als een symmetrisch kanaal bijvoorbeeld al enkele jaren bestond, dan had een aanvaller met een onvoldoende betrouwbaar versleutelingsalgoritme dit heel goed kunnen raden het wachtwoord gedurende deze tijd op een cluster van supercomputers).


    Meerderheid symmetrische cijfers gebruik een complexe combinatie grote hoeveelheden vervangingen en permutaties. Veel van dergelijke cijfers worden uitgevoerd in verschillende (soms tot 80) passages, waarbij bij elke passage een "pass-key" wordt gebruikt. De set "passleutels" voor alle passen wordt een "sleutelschema" genoemd. In de regel wordt het gemaakt op basis van een sleutel door er bepaalde bewerkingen op uit te voeren, inclusief permutaties en vervangingen.

    Vaak hangt de kracht van een algoritme, vooral tegen differentiële cryptanalyse, af van de keuze van waarden in de opzoektabellen (S-boxen). Op zijn minst wordt het onwenselijk geacht om vaste elementen S(x) = x te hebben, evenals de afwezigheid van invloed van een bit van de invoerbyte op een bit van het resultaat - dat wil zeggen gevallen waarin de resultaatbit de hetzelfde voor alle paren invoerwoorden die alleen in dit bit verschillen.

    "Blok" -cijfers verwerken informatie in blokken van een bepaalde lengte (meestal 64, 128 bits), waarbij een sleutel in een voorgeschreven volgorde op het blok wordt toegepast, meestal via verschillende cycli van schudden en vervangen, ook wel "rondes" genoemd. Het resultaat van herhaalde ‘rondes’ is het ‘lawine-effect’: een toenemend verlies aan bitcorrespondentie tussen blokken open en gecodeerde gegevens.

    Voorbeelden van symmetrische encryptie-algoritmen: AES, Twofish.

    Diffie-Hellman-algoritme

    Alle cryptografie, zelfs gebaseerd op de meest betrouwbare symmetrische versleutelingsalgoritmen, heeft één fundamenteel onoplosbaar probleem: het probleem van de initiële uitwisseling van de ‘geheime sleutel’, die zal worden gebruikt om de gegevens te versleutelen. Dat wil zeggen, om te kunnen communiceren via symmetrisch gecodeerde kanalen, moet u eerst ergens persoonlijk afspreken en een gemeenschappelijke "geheime sleutel" bedenken, en vervolgens kunt u met deze sleutel veilig met elkaar communiceren via het netwerk met behulp van symmetrische codering .

    Maar iedereen persoonlijk ontmoeten in de snelle wereld van vandaag is fysiek onmogelijk.

    Dit aanvankelijke probleem met de geheime sleuteluitwisseling bleef onopgelost totdat Diffie en Hellman in 1976 hun artikel publiceerden.

    Je kunt het idee van het Diffie-Hellman-algoritme begrijpen door deze video te bekijken:


    Wiskundige rechtvaardiging

    De wiskundige rechtvaardiging voor het Diffie-Hellman-algoritme maakt gebruik van twee hulpidentiteiten.

    X mod y is per definitie “de rest van x gedeeld door y.” Eerste identiteit: (x mod y)^z mod y = x^z mod y. Deze identiteit kan worden bewezen door simpelweg x = a * y + b uit te breiden:

    ((a * y + b) mod y)^z mod y = b^z mod y

    X^z mod y = (a * y + b)^z mod y = b^z mod y, aangezien het haakje wordt uitgebreid in de binomiaal van Newton en alle andere termen met y 0 als rest opleveren als ze worden gedeeld door y.

    De tweede hulpidentiteit - (x^y)^z = x^(yz) - is gebaseerd op de eigenschap van vermenigvuldigingsmachten, en is gemakkelijk te bewijzen eenvoudige uitbreiding machten in factoren: (x^y)^z = (x y keer vermenigvuldigd), z keer vermenigvuldigd = x, y*z keer vermenigvuldigd = x^(yz).

    Nu direct naar de beschrijving van het Diffie-Hellman-algoritme. Stel dat er twee abonnees zijn: Alice en Bob. Ze maken verbinding met elkaar via een niet-versleuteld kanaal en sturen elkaar willekeurig gekozen twee cijfers g en p, die niet geheim zijn en voor iedereen zichtbaar zijn. Om nu een geheime sleutel te creëren die niemand anders kent, genereren beide abonnees een grote sleutel willekeurige getallen: Alice is nummer a, Bob is nummer b. Alice berekent vervolgens A = g^a mod p en stuurt dit naar Bob, en Bob berekent B = g^b mod p en geeft het door aan Alice. Deze nummers worden bovendien via een niet-versleuteld kanaal verzonden en zijn voor iedereen waarneembaar.

    Vervolgens berekent Alice de waarde B^a mod p = (g^b mod p)^a mod p = g^(ab) mod p, en Bob berekent de waarde A^b mod p = (g^a mod p) ^b mod p = g^(ab) mod p, en dit zal hun gedeelde geheime sleutel K zijn, die kan worden gebruikt om een ​​symmetrisch gecodeerd kanaal te creëren. Zelfs als een aanvaller alle verzonden nummers (A, B, g, p) onderschept, zal hij, als de geselecteerde nummers p, a en b groot genoeg zijn, de geheime sleutel K niet kunnen berekenen uit A = g^a mod p en B = binnen een redelijke tijd g^b mod p.

    De vereisten voor de gegenereerde nummers zijn als volgt (uitleg hieronder):

    P is een vrij groot priemgetal
    (p - 1) / 2 is ook een priemgetal
    g - primitieve wortel modulo p

    (een priemgetal is een puur getal dat niet in gehele getallen kan worden ontbonden)

    "G- primitieve wortel modulo p" betekent dat voor alle mogelijke n de uitdrukking g^n mod p vormt volledige set getallen van 1 tot p - 1, en daarom kan de (geheime) sessiesleutel die Alice en Bob berekenen alles zijn van 1 tot p - 1, en de afluisteraar zal alle getallen van 1 tot p - 1 moeten proberen, en dit is Afhankelijk van de omstandigheden van de taak is het onmogelijk om deze binnen een redelijke tijd uit te voeren.

    De eis dat het getal p een priemgetal is, wordt naar voren gebracht omdat bewezen is dat er voor elk priemgetal p een primitieve wortel modulo p is, dus elk willekeurig priemgetal kan worden gekozen voor een communicatiesessie.

    De eis voor de grootte van het getal p wordt zo naar voren gebracht dat de volledige reeks getallen van 1 tot p - 1 zo groot is dat een afluisteraar ze niet allemaal fysiek kan doorzoeken binnen een redelijke tijd.

    De vereiste "(p - 1) / 2 is ook een priemgetal" wordt geïntroduceerd om de veiligheid van de codering te verbeteren, aangezien er een discreet logaritme-algoritme is waarmee een afluisteraar de (geheime) sessiesleutel in "polynomiale" tijd kan berekenen ( dat wil zeggen, "binnen een redelijke tijd"), op voorwaarde dat het getal p - 1 wordt ontleed in kleine priemfactoren. Daarom wordt een extra vereiste geïntroduceerd dat er een priemgetal q bestaat zodat p - 1 = 2q, in welk geval q een zeer groot priemgetal zal zijn (van dezelfde orde als p), en het algoritme voor het berekenen van het (geheime getal) ) sessiesleutel zal hetzelfde "onredelijk lang" doen.

    Normaal gesproken liggen de geheime sleutels a en b in de orde van 10^100, en het getal p in de orde van 10^300. Het getal g hoeft niet groot te zijn en ligt meestal binnen de tien.

    De weerstand tegen hacken van het Diffie-Hellman-algoritme is volledig gebaseerd op het feit dat het op dit moment redelijkerwijs niet wordt gevonden snel algoritme.

    Het Diffie-Hellman-algoritme wordt gebruikt om verbindingen tot stand te brengen in HTTPS (SSL/TLS), VPN en vele protocollen. Er gaan geruchten op internet dat de Amerikaanse National Security Agency een effectieve manier heeft gevonden om dit algoritme te hacken.

    Kwetsbaarheid

    De ontdekking van Diffie en Hellman zorgde voor een revolutie in de cryptografie, omdat het enige onoplosbare probleem schijnbaar volledig opgelost was. Het bleek echter dat dit geheime sleuteluitwisselingsalgoritme gevoelig is voor een man-in-the-middle-kwetsbaarheid (man in het midden): een aanvaller kan eenvoudigweg in het datatransmissiekanaal tussen Alice en Bob terechtkomen en zich voordoen als Bob voor Alice en Alice voor Bob. Met dit plan zal de aanvaller twee gecodeerde kanalen creëren (met elk van de abonnees), en de abonnees zullen denken dat er maar één gecodeerd kanaal is - tussen hen twee. En de aanvaller zal alle gegevens die tussen abonnees worden verzonden, in gedecodeerde vorm zien.

    Daarom is naast het Diffie-Hellman-algoritme een manier vereist om op betrouwbare wijze de identiteit van beide abonnees te bevestigen (Alice moet ervoor zorgen dat ze een verbinding met Bob tot stand heeft gebracht, en Bob moet er op zijn beurt voor zorgen dat de persoon op het andere uiteinde van de lijn is precies Alice). Deze kwetsbaarheid wordt opgelost door het “RSA-handtekeningalgoritme” en “certificaatautoriteiten”.

    Asymmetrische encryptie

    Asymmetrische codering is een schema waarbij er twee sleutels zijn: de ene is ‘openbaar’ (deze is openbaar beschikbaar) en de andere is ‘privé’ (deze wordt geheim gehouden door de eigenaar). Iedere persoon op aarde kan bijvoorbeeld een persoonlijk paar sleutels krijgen: openbaar en privé. In dit geval zullen de publieke sleutels van alle mensen openbaar beschikbaar zijn en zal elke persoon zijn privésleutel geheim houden.

    De vraag rijst: waarom is zo'n schema nodig, en waarom is het beter dan een schema met één sleutel? Wat dit schema bijzonder maakt, is dat iedereen een bericht dat bedoeld is voor de voorwaardelijke Alexander kan versleutelen, simpelweg door de publieke publieke sleutel van Alexander te nemen, maar alleen Alexander zelf kan zo'n bericht ontsleutelen, omdat alleen de eigenaar van de gekoppelde privésleutel een versleuteld bericht kan ontsleutelen. met een publieke sleutel.

    Op het eerste gezicht lijkt het op een soort magie. Er bestaat echter geen magie; het is gewoon een prachtige wiskundige ontdekking.

    Diffie-Hellman voor asymmetrische encryptie

    Het Diffie-Hellman-algoritme kan enigszins worden aangepast om de indruk te wekken van een asymmetrisch gegevensversleutelingsalgoritme (dit is echter niet waarvoor Diffie-Hellman is gemaakt en het is niet bedoeld voor asymmetrische gegevensversleuteling).

    In dit geval zetten Alice en Bob geen communicatiekanaal op. In plaats daarvan kiest Alice haar p- en g-waarden, berekent daaruit haar A en publiceert deze drie getallen in het publieke domein, onder de noemer haar ‘publieke sleutel’. Bob berekent op basis van deze drie getallen, precies zoals in het Diffie-Hellman-algoritme, de geheime sleutel K, waarna hij het bericht codeert met een symmetrisch algoritme met K als sleutel, en de cijfertekst samen met haar waarde B naar Alice verzendt. Alice, die B, g en p heeft, berekent ook de geheime sleutel K en kan het bericht dat Bob haar heeft gestuurd, decoderen en lezen.

    Het bleek dat iedereen een bericht bedoeld voor Alice kan versleutelen, maar slechts twee mensen kunnen zo'n bericht ontsleutelen: de afzender van het bericht (die het al kent) en de ontvanger van het bericht (Alice).

    Het bleek zoiets als asymmetrische data-encryptie op de knie. In werkelijkheid is het natuurlijk beter om asymmetrische data-encryptie toe te vertrouwen aan het protocol dat speciaal voor dit doel is ontwikkeld. Het eerste dergelijke protocol was RSA.

    Het asymmetrische versleutelingsalgoritme RSA werd in 1977 uitgevonden door drie wetenschappers van MIT, nadat ze aan meer dan 40 hadden gewerkt mogelijke opties, konden ze een algoritme vinden op basis van het verschil tussen hoe gemakkelijk het is om grote priemgetallen te vinden en hoe moeilijk het is om het product van twee grote priemgetallen te ontbinden.

    Er worden twee grote priemgetallen p en q gekozen (bijvoorbeeld elk 2048 bits)
    Hun product n = p * q wordt berekend
    De Euler-functie φ(n) = (p - 1)(q - 1) wordt berekend
    Het gehele getal e (1< e < φ(n)), взаимно простое с φ(n). Обычно в качестве e берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма 17, 257 или 65537. Такой трюк позволяет возводить любое число в степень e очень быстро в двоичной системе исчисления (n^(2^k) = ((((n^2)^2)^2)^...)
    Het getal d wordt berekend, de “multiplicatieve inverse” van het getal e modulo φ(n): ed mod φ(n) = 1
    Het paar (e, n) is de publieke sleutel en d is de private sleutel

    Nu kan Alice het bericht (nummer) m dat bestemd is voor Bob coderen met behulp van de openbare sleutel van Bob (e, n): c = m^e mod n. En alleen Bob zal nu dit bericht m kunnen ontcijferen, aan hem gericht door Alice: c^d mod n = (m^e mod n)^d mod n = m^(ed) mod n = m (wiskundigen zeggen dat alles komt samen).

    Je kunt zien dat het schema met machtsverheffen en modulodeling hier sterk lijkt op het Diffie-Hellman-algoritme. Een belangrijk verschil is dat de hele keten van bewerkingen in het RSA-algoritme alle originele informatie van het gecodeerde bericht m behoudt. Daarom kan het RSA-algoritme worden gebruikt om berichten te coderen en decoderen. Het Diffie-Hellman-algoritme stelt zichzelf op zijn beurt niet tot taak om alle originele informatie tijdens de reeks berekeningen te behouden, en kan daarom alleen de afgeleide waarde van een bepaalde berekening verzenden, waarvan het al mogelijk is om lokaal bereken een enkele (sessie) encryptiesleutel K, die al verder wordt gebruikt door een symmetrisch encryptie-algoritme om berichten rechtstreeks te verzenden.

    De weerstand tegen hacken van het RSA-algoritme is volledig gebaseerd op het feit dat er op dit moment nog geen redelijk snel ‘factorisatie’-algoritme (ontleding van een geheel getal in priemfactoren) is gevonden.

    RSA of Diffie-Hellman

    U kunt een willekeurig geselecteerde symmetrische coderingssleutel coderen met het RSA-algoritme en deze naar het andere uiteinde van de draad sturen, waar deze wordt gedecodeerd, waardoor een veilig gegevensoverdrachtkanaal ontstaat.

    U kunt het Diffie-Hellman-algoritme gebruiken om een ​​symmetrische encryptiesleutel uit te wisselen, en u krijgt precies hetzelfde veilige gegevensoverdrachtkanaal.

    In termen van computationele complexiteit zijn beide algoritmen vergelijkbaar met elkaar.

    Digitale handtekening (EDS)

    Het “RSA asymmetrische encryptie-algoritme” werd hierboven besproken. Naast dit algoritme betekent het woord "RSA" vaak ook een ander algoritme: het "RSA digital signature-algoritme", dat niet wordt gebruikt om gegevens te versleutelen, maar om deze te ondertekenen.

    Laten we het hierboven besproken diagram een ​​beetje veranderen. Laat Bob, in plaats van bericht m bestemd voor Alice te versleutelen met de publieke sleutel van Alice, dit bericht versleutelen met zijn privésleutel: s(m) = m^d mod n, en dit versleutelde bericht naar Alice sturen. In dit geval kan Alice, met behulp van de openbare sleutel van Bob, de authenticiteit verifiëren van het bericht dat van hem is ontvangen: m" = s(m)^e mod n (m" en m moeten overeenkomen). Op deze manier kan Alice er zeker van zijn dat het bericht door Bob is verzonden en dat er niet mee is geknoeid.

    Het RSA-algoritme voor digitale handtekeningen wordt gebruikt in het TLS-protocol (ook wel HTTPS, ook wel SSL genoemd) in combinatie met het Diffie-Hellman-algoritme voor sleuteluitwisseling en een symmetrisch coderingsalgoritme (bijvoorbeeld AES). In dit plan dient Diffie-Hellman veilige uitwisseling een geheime sleutel voor symmetrische encryptie van verzonden gegevens (bijvoorbeeld AES), en het RSA-handtekeningalgoritme dient om de identiteit van beide abonnees te verifiëren tijdens het tot stand brengen van de verbinding.

    In de praktijk is het ondertekenen van een grote hoeveelheid gegevens met het RSA-algoritme voor digitale handtekeningen een langzame operatie. Om de rekenkosten te optimaliseren, kan een “digitale handtekening” op een iets andere manier worden genomen: eerst wordt een bepaalde “afdruk” genomen van het bericht, de “hash” van het bericht genoemd, die niet groot is, overschrijdt een bepaald aantal bytes, en vervolgens wordt deze “imprint” (“hash”) volledig gecodeerd met het RSA-algoritme, en dit gebeurt snel. omdat De "cast" ("hash") is erg klein.

    In dit geval gaat de informatie van het originele bericht verloren in de ontvangen cijfertekst, en daarom wordt de resulterende “snapshot” (“hash”) samen met de tekst van het originele bericht naar de ontvanger verzonden (in leesbare tekst, omdat volgens Volgens de voorwaarden van de taak is het niet nodig om de tekst van het originele bericht te verbergen voor afluisteren, en in Er is niets geheims aan dit bericht.)

    Vervolgens neemt de ontvanger van het bericht op precies dezelfde manier van hem een ​​“snapshot” (“hash”), en vergelijkt zijn ontvangen “snapshot” (“hash”) met de gedecodeerde “snapshot” (“hash”), de cijfertekst waarvan hij samen met de sms-berichten ontving. Als beide “afdrukken” (“hashes”) samenvallen, betekent dit dat het ontvangen bericht met een waarschijnlijkheid van bijna 100% echt is: het is ontvangen van precies de afzender en bevat precies de tekst die de afzender heeft geschreven.

    Anders wordt onmiddellijk gedetecteerd dat iemand een bericht probeerde te vervalsen en kan de aanvaller de ontvanger niet misleiden. Dus, digitale handtekening garandeert zowel de authenticiteit van de auteur van het bericht als de integriteit van dat bericht. Alleen de auteur van het bericht kan het ondertekenen en iedereen kan de authenticiteit van deze handtekening verifiëren.

    De betrouwbaarheid van een dergelijke digitale handtekening hangt dus zowel af van de betrouwbaarheid van het asymmetrische encryptie-algoritme als van de betrouwbaarheid van het algoritme voor het maken van een “snapshot” (“hash”) (en ook van de betrouwbaarheid van de publieke sleutels).

    Een hash is een bepaalde reeks gegevens van een bepaalde lengte die wordt verkregen door de originele gegevens door een hash-algoritme te laten gaan. Je kunt een hash vergelijken met een kopie of vingerafdruk van informatie, met dit verschil dat een hash de tegenovergestelde taak heeft: zodat het onmogelijk is om uit de hash conclusies te trekken over wat de oorspronkelijke informatie was. Hiervoor goede eigenschappen hashes moeten voldoen aan de eis dat alle statistische patronen van het oorspronkelijke bericht volledig verloren gaan. Om dit te doen moet het hash-algoritme een “lawine-effect” hebben: het moet voorkomen sterke verandering hash met een verandering van 1 bit in de invoergegevens (idealiter zouden de waarden van de helft van alle hashbits moeten veranderen).

    Met behulp van een hash kunt u de integriteit van de gegevens controleren: als ten minste één bit aan gegevens is gewijzigd (als gevolg van een netwerkstoring, een storing in de schijfopslag of opzettelijk door een aanvaller), wordt de hash van de gewijzigde gegevens gecontroleerd. gegevens zullen compleet anders zijn, en u kunt er dus onmiddellijk achter komen dat de gegevens per ongeluk beschadigd zijn of dat iemand heeft geprobeerd deze te vervangen.

    Voorbeelden van hash-algoritmen: SHA, Twofish, Whirlpool.

    Certificaten

    Wanneer Alice verbinding maakt met iemand via een asymmetrisch gecodeerd kanaal, moet ze er op de een of andere manier volledig zeker van zijn dat de andere partij is wie ze zeggen dat ze zijn. Dat wil zeggen, als Alice verbinding maakt met Bob, moet ze er op de een of andere manier volledig zeker van zijn dat deze openbare sleutel van Bob is (dat deze echt is), op basis van de openbare sleutel die zij als reactie heeft ontvangen (van zogenaamd Bob).

    Deze mogelijkheid wordt geboden door een elektronische handtekening. Er is een autoriteitsfiguur die iedereen vertrouwt, en wiens publieke sleutel iedereen in eerste instantie ergens heeft opgeschreven, en deze opgenomen sleutel is absoluut 100% echt en wordt niet in twijfel getrokken. En dan geeft deze gezaghebbende persoon aan iedereen “certificaten” uit, waarbij hij deze “certificaten” ondertekent met zijn privésleutel. Iedereen vertrouwt een gezaghebbend persoon in de zin dat hij volkomen eerlijk is (hij zal niet bedriegen) en zijn privésleutel in perfecte veiligheid bewaart (en daarom niet door aanvallers kan worden gestolen om hun “fraude”-certificaten te ondertekenen).

    Het certificaat (X.509) afgegeven aan de abonnee (en ondertekend door een gezaghebbend persoon) bevat de publieke sleutel van de abonnee en gedetailleerde informatie over de abonnee (de eigenaar van deze publieke sleutel): wie deze abonnee is, zijn adres e-mail, wanneer de sleutel is aangemaakt, voor welk algoritme de sleutel is bedoeld, wanneer de sleutel verloopt, enz.). Samen met het ondertekende certificaat ontvangt de abonnee zijn ‘privésleutel’ als paar, die hij zal gebruiken om de verzonden gegevens elektronisch te ondertekenen en te coderen.

    Autoriteiten in dit systeem worden “vertrouwde certificeringsautoriteiten” (“certificeringsautoriteiten”) genoemd. Er zijn momenteel ongeveer 60 van dergelijke vertrouwde centra, en hun publieke sleutels zijn ingebed in alle moderne besturingssystemen en internetbrowsers (om de authenticiteit van de elektronische handtekening van certificaten te verifiëren die worden ontvangen bij het verbinden met sites).

    Wanneer een gebruiker bijvoorbeeld verbinding maakt met de site https://google.com (“via SSL”, ook bekend als “TLS”), ontvangt hij als antwoord een certificaat (“SSL-certificaat”) ondertekend door een “vertrouwde certificeringsinstantie ”, en het ontvangen certificaat kan onmiddellijk op authenticiteit worden geverifieerd door de digitale handtekening te controleren (de browser doet dit automatisch). Als het certificaat echt is en het in het certificaat gespecificeerde ‘domein’ (google.com) overeenkomt met het ‘domein’ (adres) waartoe de gebruiker toegang probeert te krijgen, dan is alles correct en toont de browser de gebruiker deze internetpagina (en er verschijnt een “beveiligde verbinding”-pictogram in de adresbalk; meestal is dit een groen hangslot). Als het certificaat de handtekeningverificatie niet doorstaat, of als het ‘domein’ dat in het certificaat is opgegeven, niet overeenkomt met het ‘domein’ (adres) waartoe de gebruiker toegang probeert te krijgen, zal de browser deze internetpagina niet weergeven, maar in plaats daarvan een waarschuwing weergeven dat de verbinding mogelijk niet veilig is en dat aanvallers mogelijk proberen de gebruiker te misleiden.

    Daarom is een gebruiker bij het surfen op internet slechts zo veilig als zijn internetbrowser en zijn besturingssysteem authentiek zijn: om deze bescherming te omzeilen, zal een aanvaller de gebruiker moeten misleiden om een ​​browser op zijn systeem te installeren die de site bevat verificatiefunctionaliteit uitgeschakeld (of heeft het "linker" zogenaamd vertrouwde certificaat), of ongeautoriseerde installatie besturingssysteem het eigen "linker" zogenaamd vertrouwde certificaat van de gebruiker.

    Elk bedrijf kan een vertrouwde autoriteit worden, maar daarvoor moet het jaarlijks strenge veiligheidscontroles ondergaan (WebTrust). De belangrijkste deelnemers aan de certificeringsmarkt per november 2012:

    Symantec (eigenaar van VeriSign, Thawte en Geotrust) met een marktaandeel van 42,9%
    Comodo met een aandeel van 26%
    GoDaddy met een aandeel van 14%
    GlobalSign met een aandeel van 7,7%

    De allereerste certificeringsinstantie was RSA Data Security, opgericht door de uitvinders van het RSA-algoritme (ze verdienden waarschijnlijk goed geld).

    Om een ​​certificaat voor uw website ("domein") te verkrijgen, moet u een strenge controle ondergaan bij de certificeringsinstantie om vast te stellen of u de echte eigenaar van deze site ("domein") bent.

    Als aanvallers erin slagen uw privésleutel te bemachtigen, kan uw certificaat u niet langer authenticeren bij het tot stand brengen van een verbinding en moet u de organisatie die uw certificaat heeft uitgegeven hiervan op de hoogte stellen. Na kennisgeving wordt het certificaat geplaatst in de lijst met ongeldige certificaten (Certificate Revocation Lists, Authority Revocation Lists). Elke keer dat browsers via HTTPS verbinding maken met een site, doen ze vervolgens een verzoek via het Online Certificate Status Protocol om te controleren of het certificaat op de lijst met ongeldige certificaten staat. Als wordt ontdekt dat dit certificaat niet meer geldig is, wordt de verbinding niet tot stand gebracht.

    Op hash gebaseerde berichtauthenticatiecode is een ‘arme man’-methode voor het digitaal ondertekenen van een bericht: er zijn geen certificaten of intensieve berekeningen voor nodig. Het kan worden gebruikt in enkele eenvoudige gevallen waarin het gebruik van een digitale handtekening niet aan te raden is.

    Bij deze aanpak wordt er samen met het bericht ook een “snapshot” (“hash”) van dit bericht verzonden, dat vervolgens door de ontvangende partij wordt geverifieerd. In tegenstelling tot asymmetrische encryptie wordt hier gebruik gemaakt van symmetrische encryptie, dat wil zeggen dat beide partijen vooraf een bepaald geheim wachtwoord kennen.

    De berichttekst m wordt gemengd met het wachtwoord s in een patroon dat conceptueel kan worden uitgedrukt als hash(s + hash(s + m)). Met deze aanpak wordt de beste (momenteel) cryptografische kracht van de handtekening bereikt.

    Elliptische curve-codering

    Een paar jaar nadat de Diffie-Hellman- en RSA-algoritmen waren geboren, die werkten aan de ruimte van gehele getallen, stelden wiskundigen een alternatieve getallenruimte voor encryptie voor: elliptische curven.

    Een elliptische curve (heeft niets te maken met de “ellips”) is de verzameling van alle (curvepunten) oplossingen voor de vergelijking:

    y^2 + a xy + c y = x^3 + b x^2 + d x + f


    Voor de ruimte van alle reële (reële) x en y kunt u bijvoorbeeld de bewerking introduceren van het optellen van punten op een elliptische curve, volgens welke er voor elke twee punten van de elliptische curve P en Q een uniek punt “R” is. ”, die kan worden gevonden door een rechte lijn te trekken door de punten P en Q, en het snijpunt R" van deze lijn met de elliptische curve te markeren. Er wordt ook een “punt op oneindig 0” geïntroduceerd, zodat P + Q + R" = 0. Het punt R, symmetrisch ten opzichte van het punt R" ten opzichte van de Ox-as, zal de vereiste som P + Q zijn.

    Door soortgelijke bewerkingen van het optellen en vermenigvuldigen van punten op een elliptische curve te introduceren, kan men eindige subsets van punten verkrijgen die op deze curve liggen, die “eindige velden” zullen vormen. Bij elliptische curve-cryptografie worden twee van dergelijke eindige velden gebruikt: " eenvoudige velden oneven kenmerk" en "kenmerkveld 2", wat dat ook betekent.

    Dienovereenkomstig, omdat de bewerkingen van optellen en vermenigvuldigen zijn gedefinieerd, is het, zoals in het geval van de gebruikelijke ruimte van gehele getallen, mogelijk om dergelijke algebraïsche bewerkingen te vinden die gemakkelijk in één richting kunnen worden uitgevoerd (zoals het vermenigvuldigen van twee grote priemgetallen in het RSA-algoritme) en ongelooflijk complexe producten achterkant(zoals ontbinding groot aantal het product van twee priemgetallen in het RSA-algoritme). En met behulp van dergelijke algebraïsche bewerkingen kan men construeren volledige analogen reeds bestaande asymmetrische encryptie-algoritmen (RSA, Diffie-Hellman), maar uitsluitend op elliptische curven.

    Waarom zou je je hier druk over maken: op elliptische curven zijn er nog geen ‘discrete logaritme’-algoritmen gevonden (waarmee je de encryptie kunt verbreken) die een oplossing zouden geven in minder dan ‘exponentiële’ tijd. Daarom is het in het geval van versleutelingsalgoritmen met een elliptische curve mogelijk om veilig versleutelingssleutels te gebruiken die veel korter zijn dan bij dezelfde algoritmen op het gebied van gehele getallen, wat grotere besparingen op het gebied van computerbronnen oplevert.

    Tor is een manier om anoniem toegang te krijgen tot netwerkbronnen. U kunt anoniem op internet surfen, maar u kunt ook bladeren door ".onion"-sites die anoniem worden gehost en alleen intern toegankelijk zijn Tor-netwerken"A.

    Tor wordt gedistribueerd in combinatie met een browser Mozilla Firefox, die kan worden gedownload van de officiële website en op het besturingssysteem kan worden geïnstalleerd, waarna al het werk via deze “Tor-browser” anoniem zal zijn (om deze reden moet u de Tor-browser niet gebruiken om uw echte identiteit te onthullen: u mag niet meld u aan bij uw echte accounts op sociale netwerken, controleer uw echte e-mail, enz. - laat uw echte zelf buiten de Tor-browser).


    De manier om Tor-anonimiteit te bereiken is als volgt. De gebruiker brengt een verbinding tot stand met het Tor-netwerk en rekruteert daarna een keten van drie willekeurige tussenliggende knooppunten (de zogenaamde ‘knooppunten’). wordt geselecteerd na het tot stand brengen van een verbinding met het eerste geselecteerde knooppunt. Daarom lekt het echte IP-adres van de gebruiker niet verder dan het eerste (invoer)knooppunt van de keten. Tegelijkertijd kan het eerste (invoer)knooppunt in de keten niet worden gebruikt om te bepalen dat dit het eerste (invoer)knooppunt is: daarvoor ziet de gebruiker er precies hetzelfde uit als elk ander knooppunt van het Tor-netwerk. Daarom weet alleen het laatste (uitvoer)knooppunt van de keten dat het een uitvoer is, en weten alle andere knooppunten in de keten niets over hun positie in deze keten (behalve dat ze geen uitvoer zijn).

    Terwijl de keten wordt getypt, worden de gebruiker en elk nieuw knooppunt ketens genereren een geheime sleutel met behulp van het Diffie-Hellman-algoritme. Deze sleutel zal in de toekomst worden gebruikt voor het symmetrisch versleutelen/ontsleutelen van gegevens met behulp van het AES-algoritme op dit ketenknooppunt. Nadat de tunnel is gebouwd, hebben de gebruiker en elk knooppunt in de keten hun eigen geheime sleutel voor symmetrische codering/decodering van verkeer, die ik verder eenvoudigweg "sleutel" zal noemen.

    Bij het verzenden van gegevens door de tunnel codeert de gebruiker zijn uitgaande gegevens netwerk verkeer drie keer: eerst wordt het verkeer gecodeerd met de sleutel van het derde (uitvoer) knooppunt in de keten, daarna wordt het allemaal gecodeerd met de sleutel van het tweede (middelste) knooppunt in de keten, en dan wordt het allemaal opnieuw gecodeerd met de sleutel van het eerste (invoer)knooppunt in de keten.

    Het ziet eruit als een ui, of nestpop, wanneer de kern (verkeer) is omwikkeld met verschillende versleutelingslagen. Dat is de reden waarom Tor ‘ui’ of ‘ui-routing’ wordt genoemd.

    Wanneer verkeer het eerste (invoer)knooppunt van de keten bereikt, verwijdert dit knooppunt zijn (buitenste) encryptielaag - decodeert de ontvangen gegevens met behulp van zijn sleutel. De resulterende gedecodeerde gegevens worden nog steeds gecodeerd door twee andere coderingslagen, die dit eerste (invoer)knooppunt in de keten niet kan decoderen omdat het niet over de bijbehorende sleutels beschikt.

    Zelfs als het eerste (invoer)knooppunt van de keten de identiteit van de gebruiker zou kunnen vaststellen aan de hand van zijn echte IP-adres, kan dit knooppunt op geen enkele manier weten welke gegevens de gebruiker naar het netwerk verzendt, of welk adres op internet de gebruiker bezoekt. . Omdat er vanuit het gezichtspunt van welk knooppunt in het Tor-netwerk dan ook geen manier is om te bepalen wie er verbinding mee maakt (een gebruiker of een ander knooppunt van dezelfde soort), kan in dit geval het eerste (invoer)knooppunt zelf niet weet dat het de eerste (invoer)knoop is, en wat het precies is deze gebruiker gaat naar een website, en niet alleen zijn machine speelt de rol van hetzelfde gewone knooppunt in de keten voor het verzenden van gegevens van een geheel andere gebruiker.

    Vervolgens stuurt het eerste (invoer)knooppunt van de keten de data, waaruit de eerste encryptielaag is verwijderd, naar het tweede (middelste) knooppunt van de keten. Het tweede (middelste) knooppunt in de keten verwijdert ook zijn encryptielaag uit het verkeer, maar weet nog steeds niet wat erin zit, en kent nu niet langer het echte IP-adres van de gebruiker.

    Vervolgens stuurt het tweede (middelste) knooppunt van de keten de gegevens, waaruit de tweede encryptielaag is verwijderd, naar het laatste derde (uitvoer)knooppunt van de keten. Het derde (uitvoer)knooppunt van de keten decodeert het verkeer volledig, verwijdert de laatste encryptielaag ervan, en stuurt dit verkeer naar het gewenste netwerkadres (op internet of binnen het uiennetwerk). Het blijkt dat het derde (exit)knooppunt, dat ook wel het ‘exitknooppunt’ wordt genoemd, volledig naar het verkeer kan luisteren en alle gegevens ziet die worden verzonden, maar tegelijkertijd niets weet over de echte gebruiker. IP-adres, dus het kan het stroomverkeer niet terug naar de gebruiker volgen.

    Bij het ontvangen van een reactie van een site (op internet of in het .onion-netwerk) wordt het hele proces doorlopen omgekeerde richting: het ontvangen antwoord gaat terug via de knooppunten van de keten en verandert bij elke stap in een versleutelingslaag van het huidige knooppunt. Wanneer de gebruiker zijn antwoord ontvangt van het eerste (invoer)knooppunt, wordt het antwoord verpakt in dezelfde versleutelingslagen als bij het verzenden van het bericht, in dezelfde volgorde. De gebruiker, die over de benodigde sleutels beschikt, verwijdert één voor één alle coderingslagen uit het ontvangen antwoord en ziet de gegevens die hij heeft opgevraagd (van internet of van het uiennetwerk).

    Om de gebruikersveiligheid te verbeteren, verandert Tor periodiek de keten van knooppunten volledig (elke tien minuten als er geen actieve verbindingen zijn). Tor probeert er ook voor te zorgen dat de ketenknooppunten binnen zijn verschillende landen ah, waardoor het voor de politie moeilijk wordt om toegang te krijgen tot deze knooppunten (verschillende rechtsgebieden in verschillende landen, bureaucratische goedkeuringen, enz.).

    Elke liefhebber kan een knooppunt (“node”) worden, waardoor de snelheid en kwaliteit van het hele Tor-netwerk toeneemt. Het knooppunt kan het werk uitvoeren van eenvoudigweg een ‘relay-knooppunt’ (tussenknooppunt) of een ‘exit-knooppunt’ (exit-knooppunt dat rechtstreeks in wisselwerking staat met internet, en hiervoor kunnen ze theoretisch worden opgesloten wegens medeplichtigheid aan een misdrijf) . Er zijn momenteel ongeveer 7.000 knooppunten op het Tor-netwerk, waarvan 1.000 exit-knooppunten.

    Voor degenen die diep willen graven, is er .

    Aanvankelijk werd het concept van 'uienroutering' in de jaren negentig uitgevonden in een laboratorium van de Amerikaanse marine om de veiligheid te garanderen van Amerikaans inlichtingenpersoneel dat inlichtingen via internet verzendt. DARPA, dat het internet in de wereld introduceerde, had vervolgens ook een handje. Begin jaren 2000 de eerste werkende versie Tor, en een paar jaar later gaf de Amerikaanse marine Tor aan Open Source, en sindsdien wordt Tor door iedereen gesponsord als non-profitorganisatie (het grootste deel van de donaties komt echter nog steeds van Amerikaanse overheidsinstanties).

    Tor via VPN

    Die gebruikers die bang zijn om per ongeluk op zo'n keten van tussenliggende knooppunten terecht te komen, die elk worden beheerd door de politie (wat de politie de mogelijkheid zou geven om al het verkeer in gedecodeerde vorm te zien en om het echte IP-adres te achterhalen van de gebruiker) heeft via een VPN toegang tot het Tor-netwerk. In dit geval kan de politie alleen maar al het verkeer bekijken en het IP-adres achterhalen VPN-servers. Als een VPN-dienst onder de jurisdictie van de politie valt (de meeste landen), dan is het wettelijk verplicht om informatie op te slaan over wie er wanneer verbinding mee heeft gemaakt en welke sites ze hebben bezocht. Als de VPN-service zich in een van de weinige landen bevindt waar om de een of andere reden geen strikte wetten zijn aangenomen over het ondersteunen van het onderzoek, dan is een dergelijke VPN-service niet verplicht (en zal deze ook geen informatie opslaan over wie er verbinding mee heeft gemaakt) en wanneer en op welke sites heeft u bezocht? Bovendien is het mogelijk dat de politie eenvoudigweg niets van hen kan eisen VPN-service, zal zijn afluisterapparatuur daar niet kunnen installeren, enz.

    Tor verborgen diensten(.ui-sites)

    Iedereen kan zijn eigen website runnen op het Tor-netwerk. Dergelijke websites worden ‘verborgen diensten’ genoemd omdat de eigenaar van de website anoniem blijft (met andere woorden: er is theoretisch geen manier om het echte IP-adres te achterhalen van de machine waarop de website draait; hypothetisch zou je op de een of andere manier kunnen proberen te raden door verkeersstromen te analyseren, maar dit is een vraag voor experts op dit gebied).

    Het werkt als volgt: de machine waarop de website draait, maakt periodiek verbinding met willekeurig geselecteerde knooppunten (introductiepunten) via willekeurige ketens van tussenliggende knooppunten, en verzendt de publieke sleutel van deze website naar deze knooppunten (introductiepunten). Zo verklaart de website zijn bestaan ​​op het Tor-netwerk, en dan kunnen alle gebruikersinteracties met deze website eenvoudigweg via deze tijdelijke knooppunten (introductiepunten) langs de aangelegde tijdelijke ketens worden verzonden, en niemand zal iemands echte IP kunnen achterhalen. adres.

    Hoe komen gebruikers te weten over het bestaan ​​van een website, en via welke introductiepunten kunnen zij op deze site terechtkomen? Het Tor-netwerk beheert een gedistribueerde database (Distributed Hash Table), dat wil zeggen een gemeenschappelijke database die gelijkmatig verdeeld is over alle knooppunten van het Tor-netwerk. In deze Tor-database zal de browser kijken of de door de gebruiker opgevraagde website op het Tor-netwerk bestaat, en zo ja, via welke tijdelijke knooppunten deze site bereikbaar is.

    Wie plaatst deze informatie in de gedistribueerde database? Deze website zelf: nadat hij zijn bestaan ​​heeft verklaard en verbinding heeft gemaakt met tijdelijke knooppunten, stelt hij een lijst van deze knooppunten samen en plaatst deze in een gedistribueerde database, ondertekent deze lijst met zijn privésleutel en voegt zijn publieke sleutel ernaast toe (om te verifiëren handtekeningen door gebruikers).

    We voegen wat meer veiligheid toe aan het bovenstaande schema door de introductie ervan aparte soort knooppunten (rendez-vouspunten) voor het verzenden van verkeer naar de website en het ontvangen van verkeer van de website. Deze verkeersknooppunten (rendez-vouspunten) weten, in tegenstelling tot tijdelijke knooppunten (introductiepunten), niets over de website waartoe het verkeer dat wordt overgedragen behoort, waardoor een beetje meer anonimiteit en veiligheid wordt geïntroduceerd (voor zowel gebruikers als webeigenaren -sites).

    Een verkeersknooppunt wordt willekeurig door de gebruiker geselecteerd, en informatie over dit geselecteerde verkeersknooppunt (gecodeerd met de openbare sleutel van de website, plus een willekeurig gegenereerd "wachtwoord") wordt via introductiepunten naar de website verzonden. Vervolgens brengen de gebruiker en de website een verbinding (standaard Tor-keten) tot stand met dit verkeersknooppunt en sturen ze pas daarna verkeer naar elkaar (nadat de gebruiker hetzelfde willekeurig gegenereerde “wachtwoord” heeft gecontroleerd dat door de website naar de gebruiker is verzonden). - ter bevestiging hiervan dat dit precies de website is en geen nep, omdat alleen deze website zelf het eerder door de gebruiker verzonden “wachtwoord” kan ontsleutelen). Het resultaat is een gecombineerde keten van 3 + 3 = 6 knooppunten.

    Het zal je misschien opvallen dat .onion-websites “lelijke” en vreemde adressen hebben. Dit werd, net als al het andere op het Tor-netwerk, gedaan voor de veiligheid van de gebruiker. Om een ​​DNS-naam voor een site te krijgen, moet u een paar openbare en privésleutels genereren en vervolgens de openbare sleutel gebruiken om de naam van de site te ondertekenen. U kunt bijvoorbeeld het woord 'facebook' nemen, het ondertekenen met uw openbare sleutel, en u krijgt het domeinnaam"facebookcorewwwi.onion", waarbij "corewwi" de handtekening is van het woord "facebook" met de publieke sleutel van deze site.

    Elke bezoeker van de site die een verbinding tot stand brengt met de site “facebookcorewwwi.onion”, na ontvangst van de openbare sleutel van de site tijdens het tot stand brengen van de verbinding, zal dus in staat zijn om onafhankelijk te verifiëren dat deze site inderdaad dezelfde is, “echt”, niet nep, en komt precies overeen met dit ui-adres. Daarom is er voor .onion-sites op het Tor-netwerk geen behoefte aan Verenigd Centrum Certificeringen (zoals gedaan in regulier internet voor SSL-certificaten), wat in strijd zou zijn met de oorspronkelijke bedoeling van het Tor-netwerk: decentralisatie en beveiliging.

    I2p (“Itupi”) is een anoniem netwerk dat enigszins lijkt op Tor. Als de hoofdtaak van Tor het bieden van anonieme toegang tot internet is, dan is de hoofdtaak van i2p het bouwen van een gedistribueerd anoniem netwerk met zijn eigen “verborgen” sites, volledig onafhankelijk van internet.

    Er wordt aangenomen dat het niveau van anonimiteit in het i2p-netwerk hoger is dan het niveau van anonimiteit in het Tor-netwerk.