Abhören verschlüsselter VoIP-Kommunikation

Die VoIP-Telefonie gewinnt mit herkömmlichen Kupferdraht-Telefonsystemen allmählich an Bedeutung, da sie einen höheren Durchsatz bei geringeren Bereitstellungskosten bietet. Im Jahr 2013 betrug die Anzahl der VoIP-Teilnehmer mehr als 150 Millionen , was an sich schon viel ist. und im Jahr 2017 fast 1 Milliarde . Aber was ist mit der Privatsphäre von VoIP-Anrufen? Kann die in VoIP-Software verwendete End-to-End-Verschlüsselung denselben Datenschutz bieten? Solche Probleme wurden besonders aktuell nach den Enthüllungen von Snowden , der der Welt von dem totalen Abhören erzählte, das von staatlichen Geheimdiensten wie der NSA (National Security Agency) und dem DSP (Government Communications Center) unter Verwendung von Spyware PRISM und BULLRUN durchgeführt wird, die auch auf verschlüsselte Gespräche warten .


- Was ein Angreifer aus einem verschlüsselten Audiostream extrahieren kann
- Angriff auf VoIP über Bypass-Kanäle
- Ein paar Worte zum DTW-Algorithmus
- Das Funktionsprinzip von HMM-Maschinen
- Funktionsprinzip von PHMM-Maschinen
- Von der Theorie zur Praxis: Erkennen der Gesprächssprache
- Abhören des verschlüsselten Audio-Streams von Skype
- Und wenn Sie den VBR-Modus ausschalten?



Wie extrahieren PRISM, BULLRUN und andere ähnliche Software Informationen aus dem Sprachstrom, der über verschlüsselte Kanäle übertragen wird? Um die Antwort auf diese Frage zu verstehen, müssen Sie zunächst verstehen, wie der Sprachverkehr in VoIP übertragen wird. Der Datenkanal in VoIP-Systemen wird normalerweise über das UDP-Protokoll implementiert und funktioniert meistens mit dem SRTP-Protokoll (Secure Real-Time Transport Protocol; Sicheres Echtzeit-Datenübertragungsprotokoll), das das Packen (über Audio-Codecs) unterstützt. und Audio-Stream-Verschlüsselung. In diesem Fall hat der verschlüsselte Stream, der am Ausgang empfangen wird, dieselbe Größe wie der eingegebene Audiostream. Wie weiter unten gezeigt wird, können solche scheinbar unbedeutenden Informationslecks verwendet werden, um "verschlüsselte" VoIP-Konversationen abzuhören .



Was ein Angreifer aus einem verschlüsselten Audiostream extrahieren kann


Die meisten in VoIP-Systemen verwendeten Audio-Codecs basieren auf dem CELP-Algorithmus (Code-Excited Linear Prediction; Code Linear Prediction), dessen Funktionsblöcke in Abbildung 1 dargestellt sind. Um eine höhere Klangqualität zu erzielen, ohne die Last zu erhöhen Pro Datenkanal verwendet die VoIP-Software normalerweise Audio-Codecs im VBR-Modus (variable Bitrate; Audiostream mit variabler Bitrate). Nach diesem Prinzip funktioniert beispielsweise der Speex-Audio-Codec.



Abbildung 1. Funktionsblöcke des CELP-Algorithmus


Was führt dies zur Vertraulichkeit? Ein einfaches Beispiel ... Speex arbeitet im VBR-Modus und packt zischende Konsonanten mit einer niedrigeren Bitrate als Vokale. Darüber hinaus werden sogar bestimmte Vokale und Konsonanten mit einer bestimmten Bitrate für sie verpackt (siehe Abb. 2.a). Die Grafik in Abbildung 2.b zeigt die Verteilung der Paketlängen - für eine Phrase mit zischenden Konsonanten: „Eisschnellläufer sprinten bis zum Ziel“. Die tiefen Vertiefungen des Graphen fallen genau auf die zischenden Fragmente dieser Phrase. Abbildung 2.c zeigt die Dynamik des eingegebenen Audiostreams, die Bitrate und die Größe der ausgegebenen (verschlüsselten) Pakete. - Überlagert auf einer gemeinsamen Zeitskala. Auffallende Ähnlichkeit der zweiten und dritten Grafik - kann mit bloßem Auge gesehen werden.



Abbildung 2. Wie sich zischende Geräusche auf die Paketgröße auswirken


Wenn Sie sich Abbildung 2 durch das Prisma des mathematischen Geräts der digitalen Signalverarbeitung (das bei Spracherkennungsaufgaben verwendet wird) wie einer PHMM-Maschine (Profile Hidden Markov Models; eine erweiterte Version des Hidden Markov-Modells) ansehen, können Sie viel mehr als nur sehen Unterschied zwischen Vokalen und Konsonanten. Identifizieren Sie unter anderem Geschlecht, Alter, Sprache und Emotionen des Sprechers.



VoIP-Angriff umgehen


Eine PHMM-Maschine verarbeitet numerische Ketten sehr gut, vergleicht sie miteinander und findet Muster zwischen ihnen. Aus diesem Grund wird die PHMM-Maschine häufig zur Lösung von Spracherkennungsproblemen eingesetzt.


Eine PHMM-Maschine ist auch nützlich, um einen verschlüsselten Audiostream anzuhören. Aber nicht direkt, sondern über Bypass-Kanäle. Mit anderen Worten, die PHMM-Maschine kann die Frage nicht direkt beantworten: „Welche Phrase befindet sich in dieser Kette verschlüsselter Audiopakete?“, Aber sie kann die Frage genau beantworten: „Ist eine solche Phrase an so und so einem Ort enthalten? ist der verschlüsselte Audiostream? "


T.O. Eine PHMM-Maschine kann nur Phrasen erkennen, für die sie ursprünglich trainiert wurde. Moderne Deep-Learning-Technologien sind jedoch so leistungsfähig, dass sie eine PHMM-Maschine so weit trainieren können, dass für sie die Grenze zwischen den beiden oben gestellten Fragen aufgehoben wird. Um die volle Kraft dieses Ansatzes zu nutzen, müssen Sie leicht in das Material eintauchen.



Ein paar Worte zum DTW-Algorithmus


Der DTW-Algorithmus (Dynamic Time Warping; dynamische Transformation der Zeitachse) wurde bis vor kurzem häufig zur Lösung von Problemen der Sprecheridentifikation und Spracherkennung verwendet. Er kann Ähnlichkeiten zwischen zwei numerischen Ketten finden, die nach demselben Gesetz erzeugt wurden - selbst wenn diese Ketten mit unterschiedlichen Geschwindigkeiten erzeugt werden und sich an verschiedenen Stellen auf der Zeitskala befinden. Genau das passiert beim Digitalisieren des Audiostreams: Beispielsweise kann der Sprecher dieselbe Phrase mit demselben Akzent aussprechen, aber gleichzeitig schneller oder langsamer mit unterschiedlichen Hintergrundgeräuschen. Dies hindert den DTW-Algorithmus jedoch nicht daran, Ähnlichkeiten zwischen der ersten und der zweiten Option zu finden. Um diesen Punkt anhand eines Beispiels zu veranschaulichen, betrachten Sie zwei ganzzahlige Ketten:


0 0 0 4 7 14 26 23 8 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 13 25 24 9 4 2 0 0 0 0 0


Wenn wir diese beiden Ketten „auf der Stirn“ vergleichen, scheinen sie sich sehr voneinander zu unterscheiden. Wenn wir jedoch ihre Eigenschaften vergleichen, werden wir feststellen, dass die Ketten definitiv einige Ähnlichkeiten aufweisen: Beide bestehen aus 8 ganzen Zahlen; beide haben einen ähnlichen Spitzenwert (25-26). Der „frontale“ Vergleich, ausgehend von ihren Einstiegspunkten, ignoriert diese wichtigen Merkmale von ihnen. Der DTW-Algorithmus, der die beiden Ketten vergleicht, berücksichtigt diese und ihre anderen Eigenschaften. Wir werden uns jedoch nicht sehr auf den DTW-Algorithmus konzentrieren, da es heute eine effektivere Alternative gibt - PHMM-Maschinen. Es wurde experimentell festgestellt, dass PHMM-Maschinen Phrasen aus einem verschlüsselten Audiostream mit einer Genauigkeit von 90 Prozent "erkennen"; Während der DTW-Algorithmus nur eine 80-prozentige Garantie bietet. Daher wird der DTW-Algorithmus (der in seiner Blütezeit ein beliebtes Werkzeug zur Lösung von Spracherkennungsproblemen war) nur erwähnt, um zu zeigen, wie viel besser PHMM-Maschinen im Vergleich dazu sind (insbesondere zur Lösung des Problems der Erkennung eines verschlüsselten Audiostreams). . Natürlich lernt der DTW-Algorithmus im Vergleich zu PHMM-Maschinen viel schneller. Dieser Vorteil ist unbestreitbar. Bei moderner Rechenleistung ist dieser Vorteil jedoch nicht grundlegend.



Das Funktionsprinzip von HMM-Maschinen


HMM (nur HMM, nicht PHMM) ist ein statistisches Modellierungswerkzeug, das numerische Ketten erzeugt, die dem System folgen, das von einer deterministischen Finite-State-Maschine definiert wird, deren Übergangsfunktionen jeweils eine sogenannte sind "Markov-Prozess." Der Betrieb dieses Automaten (siehe Abb. 3) beginnt immer mit dem Zustand „B“ (Anfang) und endet mit dem Zustand „E“ (Ende). Die Wahl des nächsten Zustands, in den der Übergang vom Strom ausgeführt wird, erfolgt gemäß der Übergangsfunktion des aktuellen Zustands. Während Sie sich zwischen den Zuständen bewegen, erzeugt die HMM-Maschine bei jedem Schritt eine Zahl, aus der die Ausgangskette von Zahlen Schritt für Schritt gebildet wird. Wenn sich die HMM-Maschine im Zustand „E“ befindet, endet die Verkettung. Mit einer HMM-Maschine kann man Muster in Ketten finden, die von Anfang an zufällig aussehen. Zum Beispiel wird hier dieser Vorteil der HMM-Maschine verwendet, um Muster zwischen der Kette von Paketlängen und der Zielphrase zu finden, deren Vorhandensein wir in einem verschlüsselten VoIP-Stream einchecken.



Abbildung 3. Ein Beispiel für eine HMM-Maschine


Obwohl es eine Vielzahl von Möglichkeiten gibt, wie die HMM-Maschine von Punkt "B" zu Punkt "E" wechseln kann (in unserem Fall beim Packen eines einzelnen Audiofragments), gilt dies immer noch für jeden speziellen Fall (selbst für einen zufälligen Fall wie " Markov-Prozess “) Es gibt einen einzigen besten Weg , eine einzige beste Kette. Sie ist die wahrscheinlichste Kandidatin, die beim Packen des entsprechenden Audiofragments am wahrscheinlichsten einen Audio-Codec wählt (weil ihre Einzigartigkeit auch darin zum Ausdruck kommt, dass sie sich besser zum Packen eignet als andere). Solche „besten Ketten“ können mit dem Viterbi-Algorithmus gefunden werden (wie hier zum Beispiel).


Darüber hinaus ist es bei Spracherkennungsaufgaben (einschließlich eines verschlüsselten Datenstroms, wie in unserem Fall) nicht nur nützlich, den besten Pfad für die beobachtete Kette zu finden, sondern auch zu berechnen, wie wahrscheinlich es ist, dass die ausgewählte Kette von der HMM-Maschine erzeugt wird. Eine kurze Lösung für dieses Problem finden Sie hier . Es basiert auf dem Forward-Back- Algorithmus und dem Baum-Welsh-Algorithmus .


Hier wird auf Basis des HMM-Automaten eine Methode zur Identifizierung der Sprache entwickelt, in der die Konversation entwickelt wird; mit einer Genauigkeit von 66%. Eine solch geringe Genauigkeit ist jedoch nicht sehr beeindruckend, weshalb es eine fortgeschrittenere Modifikation der HMM-Maschine gibt - PHMM, die viel mehr Muster aus dem verschlüsselten Audiostream zieht. So wird hier beispielsweise ausführlich beschrieben, wie Wörter und Phrasen mit einer PHMM-Maschine im verschlüsselten Verkehr identifiziert werden (und diese Aufgabe ist schwieriger als nur die Sprache zu identifizieren, in der das Gespräch geführt wird). mit einer Genauigkeit von 90%.



Funktionsprinzip von PHMM-Maschinen


PHMM ist eine verbesserte Modifikation der HMM-Maschine, bei der (siehe Abb. 4.a) neben den Zuständen „Korrespondenz“ (Quadrate mit dem Buchstaben M) auch Zustände „Einfügen“ (Diamanten mit dem Buchstaben I) und „Löschen“ (Kreise) vorliegen mit dem Buchstaben D). Aufgrund dieser beiden neuen Zustände können PHMM-Automaten im Gegensatz zu HMM-Automaten die hypothetische Kette „ABCD“ erkennen, selbst wenn sie nicht vollständig vorhanden ist (z. B. „ABD“) oder eine Einfügung vorgenommen wurde (z. B. „ABXCD“). Bei der Lösung des Problems der Erkennung eines verschlüsselten Audiostreams sind diese beiden Innovationen der PHMM-Maschine besonders nützlich. Weil die Ausgabe des Audio-Codecs selbst dann selten übereinstimmt, wenn die Audioeingänge sehr ähnlich sind (wenn beispielsweise dieselbe Person dieselbe Phrase sagt). T.O. Das einfachste Modell einer PHMM-Maschine besteht aus drei miteinander verbundenen Zustandsketten ("Korrespondenz", "Einfügen" und "Löschen"), die die erwartete Länge von Netzwerkpaketen an jeder Position der Kette beschreiben (verschlüsselte VoIP-Verkehrspakete für die ausgewählte Phrase).



Abbildung 4. Beispiel einer PHMM-Maschine


Da Netzwerkpakete, in denen die Zielphrase in einem verschlüsselten Audiostream verpackt ist, normalerweise von anderen Netzwerkpaketen umgeben sind (der Rest der Konversation), benötigen wir eine noch weiter fortgeschrittene PHMM-Maschine. Eine, die die Zielphrase von anderen sie umgebenden Klängen isolieren kann. Hier werden der ursprünglichen PHMM-Maschine 5 neue Zustände hinzugefügt (siehe Abb. 4.b). Der wichtigste dieser fünf hinzugefügten Zustände ist „zufällig“ (ein Diamant mit dem Buchstaben R). Die PHMM-Maschine (nach Abschluss der Trainingsphase) geht in diesen Zustand über, wenn die Pakete, die nicht Teil der Phrase sind, an der wir interessiert sind, sie erreichen. PS- (Profilstart) und PE- (Profilende) Zustände - bieten einen Übergang zwischen einem zufälligen Zustand und dem Profilteil des Modells. Eine solche verbesserte Modifikation des PHMM-Automaten kann sogar die Sätze erkennen, die der Automat in der Trainingsphase „nicht gehört“ hat (siehe Abb. 5).



Abbildung 5. PHMM-Maschine löst das Problem der verschlüsselten Audiostream-Erkennung



Von der Theorie zur Praxis: Erkennen der Sprache des Gesprächs


Hier ist ein Versuchsaufbau basierend auf einer PHMM-Maschine (siehe Abb. 6), mit der verschlüsselte Audiostreams mit Sprache von 2.000 Muttersprachlern aus 20 verschiedenen Sprachgruppen analysiert wurden. Nach Abschluss des Schulungsprozesses identifizierte das PHMM-Gerät die Konversationssprache mit einer Genauigkeit von 60 bis 90%: Bei 14 von 20 Sprachen lag die Erkennungsgenauigkeit über 90%, der Rest bei 60%.


Der in Abbildung 6 gezeigte Versuchsaufbau umfasst zwei Linux-PCs mit OpenSource VoIP-Software. Einer der Computer arbeitet als Server und wartet auf SIP-Anrufe im Netzwerk. Nach dem Empfang des Anrufs antwortet der Server dem Teilnehmer automatisch und initialisiert den Sprachkanal in den Modus „Speex over RTP“. Es sollte hier erwähnt werden, dass der Steuerkanal in VoIP-Systemen normalerweise über das TCP-Protokoll implementiert wird und entweder auf einigen öffentlich verfügbaren Protokollen mit einer offenen Architektur (SIP, XMPP, H.323) funktioniert oder eine für ein bestimmtes geschlossene geschlossene Architektur aufweist Anwendungen (wie zum Beispiel in Skype).



Abbildung 6. Versuchsaufbau für die Arbeit mit einer PHMM-Maschine


Wenn der Sprachkanal initialisiert wird, spielt der Server die Datei für den Anrufer ab und beendet dann die SIP-Verbindung. Der Teilnehmer, der ein anderer Computer in unserem lokalen Netzwerk ist, tätigt einen SIP-Anruf beim Server und „hört“ dann mit dem Sniffer die Datei, die der Server wiedergibt: Er hört die Kette von Netzwerkpaketen mit verschlüsseltem Audioverkehr ab, die vom Server kommen. Ferner trainiert der Teilnehmer entweder die PHMM-Maschine, um die Sprache der Konversation zu identifizieren (unter Verwendung des in den vorhergehenden Abschnitten beschriebenen mathematischen Apparats), oder "fragt" die PHMM-Maschine: "In welcher Sprache ist die Konversation?" Wie bereits erwähnt, gewährleistet dieser Versuchsaufbau die Genauigkeit der Sprachidentifikation - bis zu 90%. Der Prozess des Trainings einer PHMM-Maschine wird im nächsten Abschnitt (im Beispiel mit Skype) ausführlich beschrieben.



Abhören des verschlüsselten Audio-Streams von Skype


Es zeigt, wie Sie ein noch komplexeres Problem mit einem PHMM-Computer lösen können: Erkennen Sie den von Skype generierten verschlüsselten Audiostream (der den Opus / NGC-Audiocodec im VBR-Modus verwendet, und 256-Bit-AES-Verschlüsselung). Die vorgestellte Entwicklung funktioniert nach dem in Abbildung 5 gezeigten Prinzip. Dazu wird ein Versuchsaufbau wie in Abbildung 6 verwendet. Nur mit dem Skype-Codec Opus.


Um ihre PHMM-Maschine zu trainieren, verwendeten die Forscher die folgende Abfolge von Schritten: 1) Zuerst sammelten sie eine Reihe von Tonspuren, einschließlich aller für sie interessanten Sätze; 2) installierte dann den Netzwerkpaket-Sniffer und initiierte eine Sprachkonversation zwischen den beiden Skype-Konten (diese Manipulation führte im P2P-Modus zur Erzeugung von verschlüsseltem UDP-Verkehr zwischen den beiden Computern); 3) dann spielten sie jede der gesammelten Tonspuren in einer Skype-Sitzung mit einem Mediaplayer ab; mit fünf Sekunden Stille zwischen den Spuren; 4) In der Zwischenzeit wurde der Paket-Sniffer so konfiguriert, dass er den gesamten Verkehr registriert, der in die zweite Maschine des Versuchsaufbaus gelangt (siehe 6). Nach dem Sammeln aller Trainingsdaten wurden die UDP-Paketlängenketten unter Verwendung eines automatischen Parsers für PCAP-Dateien extrahiert. Die resultierenden Ketten, bestehend aus den Längen der Nutzlastpakete, wurden dann verwendet, um das PHMM-Modell unter Verwendung des Baum-Welsh-Algorithmus zu trainieren.



Und wenn Sie den VBR-Modus ausschalten?


Es scheint, dass das Problem solcher Lecks gelöst werden kann, indem die Audio-Codecs in den Modus mit konstanter Bitrate geschaltet werden (obwohl es sich um eine Lösung handelt - die Bandbreite davon ist stark reduziert), aber selbst in diesem Fall lässt die Sicherheit des verschlüsselten Audio-Streams noch zu wünschen übrig. Schließlich ist die Ausnutzung der Paketlängen des VBR-Verkehrs nur ein Beispiel für einen Angriff auf Bypass-Kanäle. Es gibt jedoch auch andere Beispiele für Angriffe, z. B. das Verfolgen von Pausen zwischen Wörtern .


Die Aufgabe ist natürlich nicht trivial, aber durchaus lösbar . Warum ist es nicht trivial? Denn in Skype zum Beispiel, um den Betrieb des UDP-Protokolls und von NAT (Netzwerkadressübersetzung; Netzwerkadressübersetzung) zu koordinieren; und auch um die Qualität der übertragenen Sprache zu verbessern - die Übertragung von Netzwerkpaketen stoppt auch dann nicht, wenn das Gespräch unterbrochen wird. Dies erschwert die Identifizierung von Sprachpausen.


Hier wird jedoch ein adaptiver Schwellenwertalgorithmus entwickelt, der es ermöglicht, Stille von Sprache mit einer Genauigkeit von mehr als 80% zu unterscheiden; Das vorgeschlagene Verfahren basiert auf der Tatsache, dass die Sprachaktivität stark mit der Größe verschlüsselter Pakete korreliert: Wenn der Benutzer spricht, werden mehr Informationen in einem Sprachpaket codiert als während der Stille des Benutzers. Und hier (mit Schwerpunkt auf Google Talk, Lella und Bettati) wird der Sprecher identifiziert, auch wenn durch die Größe der Pakete kein Leck auftritt (auch wenn der VBR-Modus deaktiviert ist). Hier verlassen sich Forscher darauf, Zeitintervalle zwischen Paketempfängen zu messen. Das beschriebene Verfahren beruht auf den Phasen der Stille, die in kleineren Paketen mit längeren Zeitintervallen codiert sind, um Wörter voneinander zu trennen.


T.O. Selbst die modernste Kryptografie ist nicht in der Lage, verschlüsselte VoIP-Kommunikation vor dem Abhören zu schützen, selbst wenn diese Kryptografie ordnungsgemäß implementiert ist, was an sich unwahrscheinlich ist . , (PHMM-), - ( PRISM BULLRUN). . – .


Bibliographie
  1. Charles Wright, Lucas Ballard. Language Identification of Encrypted VoIP Traffic // Proceedings of the 16th USENIX Security Symposium. 2007. pp. 43-54.
  2. Charles Wright, Lucas Ballard. Uncovering Spoken Phrases in Encrypted VoIP Conversations // Proceedings of the IEEE Symposium on Security and Privacy. 2008. pp. 35-49.
  3. Benoit Dupasquier, Stefan Burschka. Analysis of information leakage from encrypted Skype conversations // International Journal of Information Security. 9(5), 2010. pp. 313-325.
  4. Shaun Colley. Practical Attacks Against Encrypted VoIP Communications // HITB Magazine. 4(19), 2014. pp. 30-41.
  5. Global VoIP subscriber numbers and net growth // Point Topic. 2013. URL: http://point-topic.com/free-analysis/global-voip-subscriber-numbers-q1-2013/ ( : 25 2018).
  6. World Broadband Statistics – Q3 2017 // Point Topic. URL: http://point-topic.com/free-analysis/world-broadband-statistics-q3-2017/ ( : 25 2018).
  7. James Ball. Revealed: how US and UK spy agencies defeat internet privacy and security // Guardian. 2013. URL: https://www.theguardian.com/world/2013/sep/05/nsa-gchq-encryption-codes-security ( : 25 2018).
  8. Hiddem Markov Model // Wikipedia. URL: https://en.wikipedia.org/wiki/Hidden_Markov_model ( : 25 2018).
  9. Forward–backward algorithm // Wikipedia. URL: https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm ( : 25 2018).
  10. Leonard Baum, Norman Weiss. A maximization technique occurring in the statistical analysis of probabilistic functions of Markov chains // Annals of Mathematical Statistics. 41(1), 1970. pp. 164-171.
  11. Andrew Viterbi. Error bounds for convolutional codes and an asymptotically optimum decoding algorithm // IEEE Transactions on Information Theory. 13(2), 1967. pp. 260-267.
  12. Manfred Schroeder. Code-excited linear prediction(CELP): High-quality speech at very low bit rates // Proceedings of the 1985 IEEE International Conference on Acoustics, Speech, and Signal Processing. v.10, 1985. pp, 937-940.
  13. S. Eddy. Multiple alignment using hidden Markov models // Proceedings of the Third International Conference on Intelligent Systems for Molecular Biology. 1995. pp. 114-120.
  14. Yu-Chun Chang. Inferring speech activity from encrypted Skype traffic // Proceedings of IEEE Globecom. 2008.
  15. Tuneesh Lella. Privacy of encrypted voice-over-IP // Proceedings of the 2007 IEEE International Conference on Systems, Man and Cybernetics. 2007. pp. 3063-3068.
  16. Charles Wright. Language identification of encrypted VoIP traffic: Alejandra y Roberto or Alice and Bob? // Proceedings of the 16th USENIX Security Symposium. 2007. pp. 1-12.
  17. .. : SSL/TLS- // . №228. 2018.
  18. .. // . 2015. URL: https://habrahabr.ru/post/272385/ ( : 25 2018).

Source: https://habr.com/ru/post/de461759/


All Articles