Kryptografische Lösungen. Von einer Cloud-Signatur zu einer vertrauenswürdigen Umgebung

    Dieser Artikel ist eine Fortsetzung des Artikels „Kryptografische Lösungen. Vom Kryptografieanbieter bis zum Browser-Plugin “ und deckt folgende Kryptografielösungen ab:

    • Cloud-Signatur
    • separate Browser mit russischer Kryptographie
    • einzelne Mail-Clients mit russischer Kryptographie
    • Russische Kryptographie in Frameworks, Plattformen, Interpreten
    • Desktop-Kryptografieanwendungen
    • Tools für vertrauenswürdige Umgebungen


    Cloud-Signatur


    Das Konzept des Cloud-Signierens umfasst das Speichern des privaten Schlüssels und das Durchführen der Prozedur zum Signieren / Verschlüsseln von Daten direkt auf dem Server.
    Für die sichere Verwendung einer Cloud-Signatur ist es erforderlich, das Problem der starken Authentifizierung des Clients beim Zugriff auf seinen privaten Schlüssel und die Aufgabe der zuverlässigen Speicherung des privaten Schlüssels auf dem Server zu lösen. Ein Beispiel für eine solche Lösung ist CryptoPro DSS, das als eine der Authentifizierungsoptionen Rootoken WEB (starke Zwei-Faktor-Authentifizierung) unterstützt und HSM zum Speichern des privaten Schlüssels verwendet.

    PlattformenJeder mit Browser und Internetverbindung. Authentifizierungsmethode kann einschränken
    Algorithmen und kryptographische ProtokolleEDS, Verschlüsselung, Hash-Funktion, Sicherheit, HMAC, VKO
    PKI-IntegrationX.509, PKCS # 10, CMS, CRL, OCSP, TSP
    EDS-MechanismenSenden eines Dokuments an einen Server, Signieren eines Dokuments auf einem Server, Zurückgeben einer
    WEB-API- Signatur zur Integration in Dienste von Drittanbietern
    SOAP-Schnittstelle zur Integration in Dienste von Drittanbietern
    AuthentifizierungsmechanismenAuthentifizierungsprotokoll Rootoken WEB
    per SMS
    Login-Passwort
    Sichere NachrichtenformatePKCS # 7, CMS, XMLSec, CADES
    Browser-Integration100%
    Mobile PlattformeniOS, Android
    BefehlszeilenprogrammGibt es
    SchlüsselspeicherHSM-geschützte Datenbank
    Interaktion mit USB-TokensEs besteht die Möglichkeit der Authentifizierung im Cloud Signing Service durch Token (CryptoPro DSS und Rootoken WEB)
    Beispiele (GOST)CryptoPro DSS
    “Cloud” Signatur SKB Kontur
    Service sign.me


    Die Probleme:
    • starke Authentifizierung im Dienst
    • Garantien zum Schutz des privaten Schlüssels vor unbefugtem Zugriff
    • Reduzierte Systemsicherheit -> Anwendungseinschränkung

    Vorteile:
    • Plattformübergreifende, browserübergreifende Kompatibilität
    • Bequemlichkeit für den Endbenutzer - es muss überhaupt nichts installiert und konfiguriert werden
    • komfortable Integration in Informationssysteme (WEB API)


    Separate Browser mit russischer Kryptographie


    Auf Basis der Open-Source-Projekte Mozilla FireFox und Chromium erstellte Browser verwenden NSS oder OpenSSL als Cryptocore. OpenSSL unterstützt russische kryptografische Algorithmen. Für NSS gibt es auch Entwicklungen, die russische kryptografische Algorithmen unterstützen. Vor einiger Zeit wurden Browser mit vollem Funktionsumfang und Unterstützung für die russische Kryptographie auf den Markt gebracht.

    Eine solche Lösung hat ein großes, derzeit nicht beanspruchtes Potenzial, da Sie damit sichere Standard-WEB-Clients für Systeme mit hohen Sicherheitsanforderungen erstellen können. Ein weiterer Vorteil dieses Browsers ist seine "Portabilität". Unter Berücksichtigung der Existenz von USB-Token mit sicherem FLASH-Speicher wurden sichere Lösungen entwickelt, bei denen die kritischsten Operationen mit privaten Schlüsseln auf der „Karte“ des USB-Tokens ausgeführt werden und der Browser selbst in seinem FLASH-Speicher vor Änderungen geschützt gespeichert wird. Eine solche Lösung ist neben einem hohen Maß an Sicherheit sehr komfortabel zu bedienen.

    NSS basiert


    Das Bild zeigt die im Projekt implementierte Lösungsarchitektur zur Erweiterung des NSS aToken.



    SpezifikationNSS mit PKCS # 11-Token, Software und Hardware
    PlattformenWindows-Familie, GNU \ Linux, OS X, iOS, Android
    Algorithmen und kryptographische ProtokolleEDS, Verschlüsselung, Hash-Funktion, Sicherheitsschutz, HMAC, VKO, TLS
    PKI-IntegrationX.509, PKCS # 10, CMS, CRL
    EDS-MechanismenAufruf von im Browser integrierten JavaScript-Funktionen
    TLS-GOSTIn die Bibliothek integriert und vom Browser unterstützt
    Sichere NachrichtenformatePKCS # 7, CMS
    Browser-Integration100%
    Mobile PlattformeniOS, Android
    SchlüsselspeicherBrowser-Speicher, USB-Token
    Interaktion mit USB-TokensSpeicherung von Schlüsseln und Zertifikaten
    Mit Hardware-Implementierung von Algorithmen
    InstallationDas Installationsprogramm benötigt im Allgemeinen keine Administratorrechte für
    tragbare Systeme . Beispiel: Starten eines Browsers von einem FLASH-Speicher-USB-Token
    Beispiele (GOST)Mozilla FireFox, Chromium von Lissy
    Projekt von R-Alpha (Mozilla FireFox)
    CryptoFox (PKCS11 Token basierend auf CryptoPro CSP)


    Die Probleme:
    • nur eine Anwendung mit russischer Kryptographie - der Browser selbst
    • Browser-Update
    • Benutzer neu schulen, um benutzerdefinierten Browser zu verwenden
    • Zertifizierung (keine Präzedenzfälle)

    Vorteile:
    • plattformübergreifend
    • Benutzertransparenz
    • Keine Einschränkungen für serverseitige Entwickler
    • Keine Installation, starten Sie von einem USB-Flash-Token von FLASH


    Ausgewählte E-Mail-Clients mit russischer Kryptographie


    Separate E-Mail-Clients mit russischer Kryptografie ermöglichen den Schutz der Korrespondenz durch elektronische Signatur und Nachrichtenverschlüsselung für einen Teilnehmer / eine Teilnehmergruppe (S / MIME). Diese Lösung ist praktisch für Systeme, die auf Punkt-zu-Punkt-Basis aufgebaut sind und bei denen Informationen direkt zwischen Teilnehmern ausgetauscht werden und der Server nur zum Weiterleiten von Nachrichten verwendet wird.

    PlattformenWindows-Familie, GNU \ Linux, OS X, iOS, Android
    Algorithmen und kryptographische ProtokolleEDS, Verschlüsselung, Hash-Funktion, Sicherheitsschutz, HMAC, VKO, TLS
    PKI-IntegrationX.509, PKCS # 10, CMS, CRL
    EDS-MechanismenAufruf von im Browser integrierten JavaScript-Funktionen
    TLS-GOSTIn die Bibliothek integriert und vom Browser unterstützt
    Sichere NachrichtenformatePKCS # 7, CMS
    Browser-Integration100%
    Mobile PlattformeniOS, Android
    SchlüsselspeicherBrowser-Speicher, USB-Token
    Interaktion mit USB-TokensSpeicherung von Schlüsseln und Zertifikaten
    Mit Hardware-Implementierung von Algorithmen
    InstallationDas Installationsprogramm benötigt im Allgemeinen keine Administratorrechte für
    tragbare Systeme . Beispiel: Starten eines Browsers von einem FLASH-Speicher-USB-Token
    Beispiele (GOST)Mozilla ThunderBird von
    Lissi DiPost von TS Factor


    Russische Kryptographie in Frameworks, Plattformen, Interpreten


    Microsoft .NET


    Klassenerweiterungen


    Die Plattform verfügt über eine Reihe von kryptografischen Klassen, die Erweiterungsmechanismen mit Algorithmen von Drittanbietern bereitstellen. Die bekannteste Lösung auf dem Markt zur Erweiterung der Microsoft.NET-Plattform um russische kryptografische Algorithmen ist das Produkt CryptoPro. NET, ein Add-On für CryptoPro CSP.
    Durch die Installation von CryptoPro.NET können Sie russische kryptografische Algorithmen verwenden, z. B.
    in ASP.NET-basierten WEB-Diensten, SOAP-Diensten und clientseitigen MS.Silverlight-Browseranwendungen.

    PlattformenMicrosoft .NET 2.0 und höher
    Algorithmen und kryptographische ProtokolleEDS, Verschlüsselung, Hash-Funktion, Sicherheitsschutz, HMAC, VKO, TLS, SOAP
    PKI-IntegrationX.509, PKCS # 10, CMS, CRL
    EDS-MechanismenReihe von Klassen. Es gibt vollständig verwaltete Implementierungen. Es gibt Implementierungen, die auf Crypto API 2.0 und CNG basieren
    AuthentifizierungsmechanismenClient-Authentifizierung im Rahmen der TLS-
    Authentifizierung in SOAP-Diensten
    besitzen Authentifizierungsmechanismen, die auf EDS von Zufallsdaten basieren
    TLS-GOSTEinbetten
    Sichere NachrichtenformatePKCS # 7, CMS, XMLSec, SOAP (OASIS Standard 200401), S / MIME
    Browser-IntegrationEDS und Verschlüsselung durch MS Silverlight
    SchlüsselspeicherRegistry, UBS Token
    Interaktion mit USB-TokensSchlüssel- und Zertifikatspeicherung
    mithilfe des Algorithmus Hardware-Implementierung
    über Crypto API 2.0
    AnwendungenMicrosoft Lync 2010, Microsoft Office Forms Server 2007 und Microsoft SharePoint 2010, Microsoft XPS Viewer
    InstallationMicrosoft NET ist seit Windows Vista in Windows enthalten. Die Unterstützung russischer kryptografischer Algorithmen erfordert die Installation zusätzlicher Software
    Beispiele (GOST)CryptoPro. NET (basierend auf CryptoPro CSP)


    Separate Bibliotheken


    BouncyCastle ist eine Open-Source-Bibliothek, die ein eigenes kryptografisches Klassensystem für die Microsoft.NET-Plattform implementiert. Die Bibliothek unterstützt sowohl die grundlegenden kryptografischen Algorithmen GOST 28147-89, GOST R 34.10-2001, GOST R 34.11-94 als auch die kryptografischen Formate PKCS # 7 / CMS, PKCS # 10, X.509 unter Berücksichtigung der in der RFC der russischen Hersteller beschriebenen Besonderheiten CPSI. Außerdem unterstützt die Bibliothek laut Entwicklern das CADES-Format mit russischen kryptografischen Algorithmen.

    Java


    Die Architektur des kryptografischen Systems der Java-Plattform (Java Cryptography Architecture) ermöglicht es Ihnen, den Satz der auf der Plattform unterstützten kryptografischen Algorithmen zu erweitern. Angesichts der hohen Verbreitung von Java bieten viele der russischen Entwickler von Kryptowährungen zertifizierte JCP-Anbieter an.

    Jcp


    SpezifikationJava Cryptography Architecture, Java ™ Cryptography Extension, Java ™ Secure Socket Extension
    PlattformenVirtuelle Sun Java 2-Maschine
    Algorithmen und kryptographische ProtokolleEDS, Verschlüsselung, Hash-Funktion, Sicherheitsschutz, HMAC, VKO, TLS
    PKI-IntegrationX.509, PKCS # 10, CMS, CRL, OCSP, TSP
    EDS-MechanismenKlasse gesetzt
    AuthentifizierungsmechanismenTLS-Clientauthentifizierung
    TLS-GOSTSeparater, in Java implementierter TLS-Anbieter gemäß der JavaTM Secure Socket Extension-Spezifikation
    Sichere NachrichtenformatePKCS # 7, CMS, XMLSec (zum Beispiel über die Apache XML Security API), S / MIME;
    Browser-IntegrationEDS / Verschlüsselung über Java-Applets, Laden von Applets über Java TLS
    Verzeichnisdienst-Integrationmit beliebigem LDAP-Verzeichnis
    Mobile PlattformenAndroid
    SchlüsselspeicherRegistry, Dateien, UBS-Token, MicroSD-Token
    Interaktion mit USB-TokensSpeicherung von Schlüsseln und Zertifikaten
    Verwendung der Hardware-Implementierung von kryptografischen Algorithmen über PKCS # 11 (in Java-Produkten LCPKCS11 von Lissy und im Java-Anbieter für Rootoken EDS of Active)
    InstallationDas Setup-Programm erfordert Systemadministratorrechte
    Beispiele (GOST)CryptoPro JCP, CryptoPro JTLS-
    Signal-COM-JCP, Signal-COM-Java-TLS
    LCJCE, LCJSSE, LCPKCS11-
    Java-Anbieter für Rootoken EDS
    Trusted Java


    Java-Applets


    Одним из вариантов использования СКЗИ в браузере является их интеграция в Java-апплеты.
    В ряде случаев СКЗИ и криптографические библиотеки не требуют установки и представляют собой нативную библиотеку. В этом случае возможна ее интеграция непосредственно «внутрь» апплета и вызов функций СКЗИ через механизм JNI. При этой схеме библиотека будет инсталлирована в профайл пользователя при первой загрузке Java-апплета в браузере и ее отдельной инсталляции не потребуется.
    Другим вариантом является написание Java-апплета, который вызывает предустановленное в системе СКЗИ (CSP, JCP и др.)
    Более подробно пример подобной реализации, основанный на использовании Рутокен ЭЦП и OpenSSL, описан в статье habrahabr.ru/company/aktiv-company/blog/134890.



    Примеры:
    • Applet ETP "Stroytorgi" (implementiert gemäß der im Diagramm gezeigten Architektur)
    • RBS Bifit System


    Php


    PHP ist eine der gebräuchlichsten Webentwicklungssprachen. Das kryptografische PHP-Subsystem basiert auf OpenSSL, das russische kryptografische Algorithmen unterstützt. Gleichzeitig gibt es in PHP selbst keine Unterstützung für russische kryptografische Algorithmen. Einige russische Hersteller von Tools zum Schutz kryptografischer Informationen begannen, einen Patch für PHP zu entwickeln, der die Verwendung russischer Kryptografie ermöglichte. Diese Arbeiten wurden jedoch nicht abgeschlossen.
    Die binäre Kompatibilität von Tools zum Schutz kryptografischer Informationen wie MagPro CryptoPacket mit OpenSSL würde es ermöglichen, diese Entscheidung zu legitimieren.
    Derzeit verwenden viele Entwickler von PHP-basierten Informationssystemen einen direkten Aufruf des Befehlszeilenprogramms OpenSSL, um Kryptooperationen mit russischen Algorithmen durchzuführen.

    Eine exotische Lösung wird im Rahmen des Rutoken WEB-Projekts implementiert. In der Serverkomponente der Lösung ist die Signaturüberprüfung GOST R 34.10-2001 direkt in PHP implementiert, wobei mathematische Grundelemente aus der nativen Bibliothek verwendet werden.

    Perl


    Ein weiteres exotisches Beispiel ist die Implementierung der Verschlüsselung nach GOST 28147-89 direkt unter Perl http://search.cpan.org/~ams/Crypt-GOST-1.00/GOST.pm .
    Gleichzeitig verwenden Entwickler in Perl-Projekten in der Regel Befehlszeilen-Utility-Aufrufe von OpenSSL oder einem Linux-kompatiblen Tool zum Schutz kryptografischer Informationen.

    Ruby


    Ruby verwendet openssl als Kryptokern , wodurch der Autor dieses Artikels habrahabr.ru/post/231261 die Möglichkeit hatte, es zu patchen, um die russische Kryptographie zu unterstützen.

    Javascript


    Vor einiger Zeit erschien ein Artikel über Habré, dessen Autor viele kryptografische Formate direkt in JavaScript implementierte und
    gleichzeitig kryptografische Algorithmen aus dem vereinheitlichten Kern von WebCrypto verwendete, der heute von den meisten modernen Browsern unterstützt wird.
    habrahabr.ru/post/221857



    Probleme:
    • Kein GOST
    • Der private Schlüssel befindet sich im „Repository für den Browser“ und nicht im verfremdeten Medium
    • Wie verbinde ich PKCS # 11-kompatible Geräte?


    Vorteile:
    • Plattformübergreifende, browserübergreifende Lösung
    • Unterschrift des Kunden
    • PKI-Unterstützung
    • Auf dem Client ist überhaupt keine Installation erforderlich


    Desktop-Kryptografieanwendungen


    Eine Klasse von Anwendungen, die eine vollständige Benutzeroberfläche mit Fenstern für die Ausführung von Client-Kryptooperationen bereitstellen. In der Regel wird ein Tool zum Schutz kryptografischer Informationen als Kryptokern verwendet.

    Operationen:
    • Dateisignatur
    • Überprüfung der Signatur unter der Datei, einschließlich Verkettung und Überprüfung der Sperrliste, OCSP, Überprüfung des Zeitstempels
    • Dateiverschlüsselung, auch für mehrere Befragte
    • Datei-Entschlüsselung
    • Suche und Auswahl von Benutzerzertifikaten
    • Zertifikat anzeigen
    • Pflege einer Datenbank mit Antwortzertifikaten, Integration in einen Verzeichnisdienst (über LDAP), um nach einem Antwortzertifikat zu suchen
    • Generierung von Schlüsselpaaren, Generierung von Zertifikatsanforderungen
    • Schlüsselpaarentfernung
    • Import / Export von Zertifikaten (Root, Benutzer, Befragte)
    • Löschen des Zertifikats


    Beispiele:
    • CryptoARM
    • CryptoNUTS
    • File-PRO, Admin PKI
    • Host-EDS blockieren
    • Zeichenhersteller
    • ViPNet Crypto-Datei


    Tools für die Vertrauensumgebung


    Das Problem der Schaffung einer vertrauenswürdigen Umgebung für die Durchführung von Kryptooperationen, insbesondere von EDS, ist ein weiteres großes Thema. In diesem Artikel ist keine detaillierte Betrachtung geplant, aber ich möchte darauf hinweisen, dass Entwickler konzeptionell die folgenden Wege gehen:
    • ein separates Gerät, auf dem die zur Unterschrift bestimmten Daten visualisiert werden und die Unterschrift selbst nach Bestätigung durch den Benutzer erfolgt (Trustscreen)
    • Installation einer Reihe von Tools zum Schutz von Informationen (MDZ, Antivirenprogramme usw.) auf dem Computer und auf dem Client-Betriebssystem, um die Möglichkeit einer Malware-Infektion auf dem Computer zu minimieren
    • Booten Sie ein separates vertrauenswürdiges Betriebssystem im USB-Live-Modus
    • Parallelbetrieb von Client-Betriebssystem und vertrauenswürdiger Umgebung auf verschiedenen Kerneln eines Computers


    Ich möchte näher auf die letzte Methode zur Bildung eines DS eingehen.

    Die Firma Security Code hat ein interessantes Jinn-Produkt vorgeschlagen, mit dem Sie eine vertrauenswürdige Umgebung sowohl auf Multi-Core- als auch auf Single-Core-Computern emulieren können. Die Hauptidee dieser Lösung besteht darin, dass die vertrauenswürdige Umgebung auf logischen Kerneln ausgeführt wird, auf denen das Client-Betriebssystem selbst nicht ausgeführt wird. Bei einem Single-Core-Computer ermöglicht die Now-How-Lösung die Emulation eines separaten physischen Computergeräts, das für das Betriebssystem nicht sichtbar ist (oder auf das vom Betriebssystem aus nur sehr schwer zugegriffen werden kann).

    Bei einem Computer mit mehreren Kernen wird die vertrauenswürdige Umgebung auf zwei Kernen ausgeführt, und das Client-Betriebssystem wird auf den anderen Kernen ausgeführt. Die vertrauenswürdige Umgebung wird geladen, bevor das Client-Betriebssystem entweder von einem Flash-Laufwerk oder vom elektronischen Sable-Schloss geladen wird. Die Lösung stellt sicher, dass das Client-Betriebssystem (und damit potenzielle Malware) das Verhalten der vertrauenswürdigen Umgebung nicht kontrolliert.
    Tatsächlich sind in der Lösung zwei Betriebssysteme über verschiedene Kerne desselben Computers verteilt, und ein Datenkanal ist zwischen ihnen konfiguriert. Gleichzeitig ist eines der Betriebssysteme (Trusted Environment) so konzipiert, dass seine Infektionsmöglichkeiten minimiert werden und seine Funktionalität ausschließlich dem Zweck der sicheren Datenvisualisierung und -aufzeichnung dient.

    Um vom Client-Betriebssystem aus auf die vertrauenswürdige Umgebung zuzugreifen, wird eine spezielle Bibliothek (COM-Objekt) verwendet. Wenn Jinn eine Zahlung über diese Bibliothek signiert, übernimmt er die Kontrolle über den Grafikadapter und visualisiert die Zahlung darauf. Wenn die angegebenen Informationen korrekt sind, unterzeichnet Jinn nach Bestätigung durch den Benutzer eine Zahlung und gibt die Kontrolle über das Client-Betriebssystem zurück.

    Jetzt auch beliebt: