電子デジタル署名を使用するプロジェクトの増加と個人向けの大規模プロジェクトの出現を考えると、このようなプロジェクトの開発者は、システムを操作しやすくし、技術サポートの観点から安価にするために、電子デジタル署名に関するメーカーが提供するソリューションに精通する必要があります。 したがって、約5年前に暗号化機能を選択する主な要因が規制当局の要件に完全に準拠していた場合、今日のさまざまなサポート対象プラットフォームのカバレッジ、ブラウザーとの統合機能、モバイルユーザーのサポート、システム管理者権限なしでインストールできることなどが重要な基準になる可能性があります。 。
この記事では、情報の暗号保護の手段を分類しようとします。
-  一般に、TLSプロトコルを使用したクライアント/サーバー接続の保護、デジタル署名の編成、および送信データの暗号化のために、クライアントサイトで使用される暗号情報保護ツールが検討されます。 
      
 -   VPNを作成し、ファイルシステム、保存されたデータ、およびCAを暗号化するために使用される暗号情報保護ツールは考慮されません。 
      
 - 個別に割り当てられたハードウェア暗号デバイス。
 
分類は以下に基づいています。
- アプリケーションおよびアプリケーションシステムに埋め込むための暗号情報保護をサポートする統合テクノロジー(CryptoAPI、Active-X、NPAPIなど)。
 - アプリケーションおよびアプリケーションシステムに埋め込むための暗号情報保護を提供するインターフェイス。
 
さらに、暗号化情報保護をWebアプリケーションと統合する方法と、モバイルプラットフォームで使用する可能性を示します。
一般的な分類スキームを表に示します。
| 暗号プロバイダー | ネイティブライブラリ(opensslスタイル、PKCS#11、NSS、ネイティブインターフェイス) | ローカルプロキシ | ブラウザプラグイン | クラウド署名 | ロシアの暗号化を使用するブラウザー | 
| ロシアの暗号化を使用するメールクライアント | フレームワーク、プラットフォーム、インタープリターでのロシアの暗号化 | デスクトップ暗号化アプリケーション | UEFI BIOSの暗号化 | サービスプロバイダーEDS | 信頼できるエミュレーター | 
| ハードウェア | 
最初の記事では、ブラウザープラグインを含む暗号プロバイダーから始まるソリューションを検討します。 以降の記事では、残りのツールについて説明します。
暗号プロバイダー
事実上の業界標準は、暗号プロバイダーと呼ばれる暗号通貨のクラスです。 暗号化プロバイダーは、特別なAPIを提供するライブラリーであり、OSでサポートされている暗号化アルゴリズムのリストを拡張できるようにOSに特別に登録されています。
MS Windowsが提供する拡張メカニズムの欠陥により、暗号プロバイダーの開発者は、実装の過程で高レベルの暗号ライブラリとMS Windowsアプリケーションをさらに変更して、ロシアの暗号アルゴリズムを使用するように「教える」ように強制されることに注意する必要があります。
同じタイプのすべての暗号情報保護システムが、表に記載されているすべての機能を実現するわけではないことを理解する必要があります。 暗号通貨の機能を明確にするには、製造元に問い合わせてください。
      | 仕様書 | Microsoft CSP、Microsoft CNG、CryptoAPI 1.0-> CryptoAPI 2.0 | 
| プラットフォーム | Windowsファミリー。 GNU \ Linux、OS X、iOS、Androidにポートがあります | 
| アルゴリズムと暗号化プロトコル |   EDS、暗号化、ハッシュ関数、セキュリティ保護、HMAC、VKO。 
       TLS、EAP-TLS、Kerberos  | 
| PKI統合 | X.509、PKCS#10、CMS、CRL、OCSP、TSP | 
| EDSメカニズム |  ネイティブソフトウェアインターフェイス、Cスタイル。 
       アプリケーションへの埋め込み  | 
| 認証メカニズム |   TLSでのクライアント認証。 
       WindowsドメインでのKerberos認証。 ランダムデータのEDSに基づくネイティブ認証メカニズム  | 
| TLSホスティングメカニズム | システムTLSへの埋め込み | 
| アプリケーションプロトコルのサポート | HTTPS、SMTPS、IMAPS、POP3S、RDP、NNTPS、FTPS、LDAPS | 
| 安全なメッセージ形式 |   PKCS#7、CMS、XMLSec、S / MIME; 
       CADES(CryptoPro EDS)、PDF署名(CryptoPro PDF)、MS Office署名(CryptoPro Office署名)  | 
| ブラウザ統合 |   ActiveX CAPICOMを介したIEのEDS、ActiveX XEnroll / CertEnroolを介したPKCS#10 
       SSPIプロバイダーへの埋め込みによるIEでのTLS 独自のプラグイン(CryptoPro EDS Browser Plugin)を介したさまざまなブラウザーでのEDS TLSプロキシ(CryptoPro sTunnel) カスタムブラウザ(CryptoPro Fox、セキュアデジタルデザインブラウザ)  | 
| ディレクトリサービスの統合 | MS Active Directory 任意のLDAPディレクトリを持つクライアント部分 | 
| モバイルプラットフォーム | iOS、AndroidのCryptoPro CSPポート | 
| コマンドラインユーティリティ | あります | 
| キーストア | レジストリ、USBトークン | 
| USBトークンとの相互作用 |  キーと証明書ストア 
       アルゴリズムのハードウェア実装を使用する PKCS#11、PC / SC、APDU経由  | 
| 用途 |   IE、Microsoft Office、Microsoft Outlook Express、Microsoft Outlook、Microsoft Word / Excel、Microsoft Authenticode、Microsoft RDP、Microsoft Certification Authority、Microsoft IIS、Microsoft Exchange、Microsoft Terminal Server、Winlogon、Microsoft EFC 
       独自のアプリケーション オープンソースソフトウェア(sTunnel、FireFox、Trusted TLS経由のApache、OpenVPN用パッチ) アドビリーダー 樹液  | 
| フレームワークとの統合 | Microsoft.NET(CryptoPro.NET) | 
| 設置 | セットアッププログラム、システム管理者の権限が必要 | 
| 例(GOST) |   CryptoPro CSP 
       ViPNet CSP Signal-COM CSP リッシーcsp CryptoPro Routoken CSP Validata CSP  | 
問題は次のとおりです。
- 通常のクロスプラットフォームの欠如;
 - 管理者権限でのインストール、構成。
 - Windowsアップデートのインストールには、プロバイダーアップデートが必要な場合があります。
 - その場でコードを変更することにより、アプリケーションに埋め込む必要性。
 - CSPは、Windows以外のアプリケーション用の非ネイティブインターフェイスです。
 
長所:
- Windowsアプリケーションを幅広くカバー。
 - 安全なシステムの開発者向けの豊富なツールキット。
 - 多数のプロジェクトで実績のある技術。
 
ネイティブライブラリ
Opensslスタイル
オープンソースOpenSSLライブラリには、幅広い暗号化機能と、他の暗号化アルゴリズムで拡張するための便利なメカニズムがあります。 OpenSSLは、さまざまなオープンソースアプリケーションの主要な暗号化コアです。
Cryptocom社によってこのライブラリにGOSTが追加された後、OpenSSLを使用する多くの一般的なアプリケーションの「ゲスト」向けのパッチが登場しました。 OpenSSLに基づいて、一部のベンダーはCIPFを開発および認定しました。さらに、多数のOpenSSL製品が「暗黙の」方法で含まれています。
      | 仕様書 | OpenSSL API-オープンソースソフトウェアの事実上の標準の1つ | 
| プラットフォーム | Windowsファミリー、GNU \ Linux、OS X、iOS、Android | 
| アルゴリズムと暗号化プロトコル |   EDS、暗号化、ハッシュ関数、セキュリティ保護、HMAC、VKO。 
       TLS  | 
| PKI統合 | X.509、PKCS#10、CMS、CRL、OCSP、TSP | 
| EDSメカニズム | ネイティブソフトウェアインターフェイス、Cスタイル。 | 
| 認証メカニズム |   TLSクライアント認証 
       ランダムデータのEDSに基づく独自のメカニズム  | 
| TLSホスティングメカニズム |  ライブラリでTLSがロシアの暗号化でサポートされています(ブラウザの暗号化エンジンとしてOpenSSLを使用する場合) 
       OpenSSLベースのTLSプロキシ(sTunnelなど)  | 
| 安全なメッセージ形式 | PKCS#7、CMS、XMLSec(ライブラリwww.aleksey.com/xmlsecと共に使用する場合(GOSTを含む))、S / MIME | 
| ブラウザ統合 |   TLSプロキシ経由 
       独自のプラグインを通じて Chromium OpenSSLでは、可能な暗号エンジンの1つ  | 
| ディレクトリサービスの統合 | Openldap | 
| モバイルプラットフォーム | iOS、Android | 
| コマンドラインユーティリティ | あります | 
| キーストア | ファイル、USBトークン | 
| USBトークンとの相互作用 |  キーと証明書ストア 
       アルゴリズムのハードウェア実装を使用する PKCS#11経由  | 
| 用途 |   OpenVPN、Apache、sTunnel、Nginx、Postgre SQL、postfix、dovecot 
       独自のアプリケーション  | 
| フレームワークとの統合 | OpenSSLは多数のフレームワーク(PHP、Python、.NETなど)に統合されていますが、GOSTはありません。 フレームワークのパッチが必要 | 
| 設置 |  セットアッププログラム、一般に、システム管理者権限は必要ありません 
       コピー USBトークンのフラッシュメモリからr-cryptocurrencyアプリケーションを使用してアプリケーションを起動する  | 
| 例(GOST) |   MagPro CryptoPackage 
       LIRSSL OpenSSL(非証明書) OpenSSL +エンジンPKCS11_GOST + Rutoken EDS  | 
問題は次のとおりです。
- OpenSSLとその類似物は、Microsoftアプリケーションではサポートされていません。
 - GOSTを含めるためにOpenSSLをサポートするオープンソースソフトウェアにパッチを適用する必要性。
 
長所:
- クロスプラットフォーム。
 - 膨大な数のプロジェクトで使用し、ほとんどのプロジェクトのオープンソース-脆弱性の特定と修正(例として、最近のハートブリードの検出);
 - コピーによる配布-インストールを必要としないアプリケーションを作成できます。
 - 安全な認証製品を作成できるオープンソースソフトウェアアプリケーションを幅広くカバー。
 - フレームワークへの広範囲な統合が、同時に状態標準仕様に関する問題。
 
PKCS#11
PKCS#11ライブラリは、USBトークンとスマートカード用のユニバーサルなクロスプラットフォームソフトウェアインターフェイスを提供します。
機能は次のように分かれています。
- デバイスへのアクセスの機能。
 - 任意のデータの書き込み/読み取り機能;
 - キー管理機能(検索、作成、削除、インポート、エクスポート);
 - 証明書を操作するための機能(検索、インポート、エクスポート);
 - EDS機能;
 - ハッシュ関数;
 - 暗号化機能。
 - 模倣を計算するための関数
 - 一致するキー生成関数(Diffie-Hellman);
 - セッションキーのエクスポート/インポート機能。
 
したがって、PKCS#11標準は、暗号化形式(PKCS#7 / CMS / CADES、PKCS#10、X.509など)およびプロトコル(TLS、IPSEC、openvpnなど)の実装に適した完全な暗号化プリミティブセットをサポートします。
パフォーマンスを確保するために、暗号プリミティブの一部をソフトウェアに実装できます。
バージョン2.30以降のPKCS#11標準では、GOST R 34.10-2001、GOST R 34.11-94、GOST 28147-89がサポートされています。
PKCS#11ライブラリを使用すると、トークンを操作する際に異なるベンダー間でソフトウェアの互換性が提供されます。 CryptoAPI、NSS、OpenSSLに基づいて記述されたアプリケーションは、PKCS#11インターフェースを介して動作できます。
アプリケーションの互換性の例を図に示します。 したがって、情報システムの適切な場所で適切なアプリケーションを使用することが可能です。
      PKCS#11には、暗号化アルゴリズムのソフトウェア実装とファイルシステム内のオブジェクトのストレージを備えたハードウェアデバイスもありません。
例-NSS(Mozilla)、aTokenプロジェクト、Agawa-Proライブラリに統合されたPKCS#11。
Crypto-Pro社には、MS CryptoAPIに基づいて実装されたPKCS#11ライブラリがあります。
      モバイルプラットフォーム用のPKCS#11ライブラリがあります。 そのようなライブラリの例としては、Rutoken EDS Bluetoothのライブラリがあり、iOSおよびAndroidでデバイスを使用できます。
NSS
NSSは、Mozillaコミュニティの暗号化ライブラリです。 NSSは、Mozilla Firefoxブラウザ、Mozilla Thunderbirdメールクライアントなどのアプリケーションで使用されます。
現在、「ゲスト」NSSには2つのプロジェクトがあります。
-   Lissyは、ダウンロード可能なMozilla FirefoxおよびMozilla Thunderbirdの最新バージョンを定期的にWebサイトに公開し、ロシアの暗号化をサポートして再構築しました。 さらに、修正されたNSSライブラリ(高レベルのNSSCryptoWrapperライブラリ、LCSignPluginプラグイン、Android SignMaker-Aのデジタル署名用デスクトップアプリケーション)に基づいて構築されたこの会社の製品が多数あります。 
      
この会社の専門家によって変更されたNSSでは、ソフトウェアPKCS#11トークンとハードウェア(Rutoken EDS、eToken GOST、JaCarta GOST、MS_KEY)の両方を使用できます。
 -   AtokenはR-Alphaのオープンソースプロジェクトです。 プロジェクトのフレームワークでは、ロシアの暗号化を使用したソフトウェアPKCS#11トークンが作成され、特定のバージョンのNSSとSecurity Managerコンポーネントのパッチがレイアウトされ、Mozilla製品(TLS、EDS、PKI)でロシアの暗号化を使用できるようになりました。 さらに、R-AlphaはAgava-Proと呼ばれるAgava-C認定ライブラリをサポートするPKCS#11トークンの実装を提供します。 
      
 
カスタムインターフェイスを備えたライブラリ
独自のライブラリは、アプリケーションに埋め込むための独自のAPIを提供します。 このリストに追加できます:
- アガベ-S
 - Crypto-C
 - Crypto-COM
 
ローカルプロキシ
ローカルプロキシの基本原則は、アプリケーションから保護されていない接続を受信し、リモートサーバーとのTLSトンネルを確立し、このトンネルを介してアプリケーションとリモートサーバー間で「アプリケーションレイヤー」を転送することです。
一部のローカルプロキシは、特別にマークされたWEBフォーム(Inter-PRO、MagPro暗号トンネル)のEDSメカニズムによっても補完されます。 WEB APIブラウザ(暗号化ライブラリAPIに似たHTTPリクエストとレスポンスのシステム)にEDSを提供するローカルプロキシがあります。
      | 仕様書 | - | 
| プラットフォーム | Windowsファミリ、GNU \ Linux、OSX。オープンソースソフトウェアiOS、Androidに基づく | 
| アルゴリズムと暗号化プロトコル |   EDS、暗号化、ハッシュ関数、セキュリティ保護、HMAC、VKO。 
       TLS  | 
| PKI統合 | X.509、PKCS#10、CMS、CRL、OCSP、TSP | 
| EDSメカニズム |  トラフィックを渡すときにWEBフォームに署名する 
       WEB API  | 
| 認証メカニズム | TLSクライアント認証 | 
| TLSホスティングメカニズム | プロキシメカニズムを介して | 
| 安全なメッセージ形式 | PKCS#7、CMS | 
| ブラウザ統合 | プロキシメカニズムを介して | 
| モバイルプラットフォーム | iiOS、sTunnelオープンソースソフトウェアベースのAndroid | 
| キーストア | レジストリ、ファイル、USBトークン | 
| USBトークンとの相互作用 |  キーと証明書ストア 
       アルゴリズムのハードウェア実装を使用する PKCS#11、PC / SC、APDU経由  | 
| 用途 |  ブラウザ 
       WEBサーバー Rdp メールクライアントとサーバー  | 
| 設置 |  セットアッププログラム、一般に、システム管理者権限は必要ありません 
       コピー開始 FLASHからUSBトークンを起動する  | 
| 例(GOST) |   MagPro暗号トンネル 
       インタープロ VPNKey-TLS リルトンネル CryptoPro sTunnel トンネル  | 
問題は次のとおりです。
- プロキシが実行されている必要があります。
 - アプリケーションはプロキシを介して動作する必要があり、それを「教える」必要があります。
 - 非標準ポートを使用できるため、ファイアウォールの問題
 - アプリケーションがlocalhostを「歩く」場合、たとえば、 localhostがブラウザのアドレスバーに書き込まれます...-非標準
 - ウェブサイト開発に関する追加の制限-場合によっては、トンネルから「飛び出さない」ように相対リンクのみを使用します
 - プロキシはサイトの最終グループをプロキシするように構成され、グループの拡張はクライアント構成の更新です
 - 外部プロキシを介して作業するには、ローカルプロキシの追加構成が必要であり、外部プロキシでのユーザー認証に問題がある可能性があります
 
長所:
- ソリューションはユニバーサルテクノロジーを使用しているため、その陳腐化を恐れることはできません。
 - このソリューションは、モバイルプラットフォームを含む多数のプラットフォームに適用できます。
 - クロスブラウザの互換性、変更なしのすべてのWEBサーバーのサポート。
 - インストールは不要です。
 - さまざまなアプリケーションプロトコルのサポート。
 
ブラウザプラグイン
WEBページのスクリプトからネイティブライブラリを呼び出すために、ほとんどのブラウザは特別な拡張機能をサポートしています。IE用ActiveXおよびGH、MF、Opera、Safariなど用のNPAPIプラグインなどです。 。 アーキテクチャ的には、これらのプラグインはさまざまな方法で実行できます。 CryptoAPIに基づいて動作し、暗号プロバイダーの追加インストールが必要なものもあれば、PKCS#11互換デバイスを暗号通貨として使用し、クライアントのワークステーションに追加の暗号情報保護ツールをインストールする必要がないものもあります。 すべての主要な暗号プロバイダーと幅広いハードウェア暗号ツールの両方をサポートするユニバーサルプラグインがあります。
クロスブラウザプラグイン
      | 仕様書 | - | 
| プラットフォーム | Windowsファミリー、GNU \ Linux、OS X | 
| アルゴリズムと暗号化プロトコル | EDS、暗号化、ハッシュ関数、模倣保護、HMAC | 
| PKI統合 | X.509、PKCS#10、CMS、CRL、OCSP(CryptoPro EDS Browserプラグイン)、TSP(CryptoPro EDS Browserプラグイン) | 
| EDSメカニズム |   JavaScriptで使用するためのプログラミングインターフェイス 
       | 
| 認証メカニズム | ランダムデータのEDS | 
| TLSホスティングメカニズム | - | 
| 安全なメッセージ形式 | PKCS#7、CMS、XMLSec(CryptoPro EDS Browserプラグイン)、CADES(CryptoPro EDS Browserプラグイン) | 
| ブラウザ統合 |   ActiveX(IE用) 
       NPAPI  | 
| モバイルプラットフォーム | サポートされていません | 
| キーストア | レジストリ、ファイル、USBトークン | 
| USBトークンとの相互作用 |  キーと証明書ストア 
       アルゴリズムのハードウェア実装を使用する PKCS#11経由、CryptoAPI経由  | 
| 用途 | ブラウザ | 
| 設置 | セットアッププログラム、システム管理者権限は必要ありません | 
| 例(GOST) |   CryptoPro EDS Browserプラグイン 
       eSign-PRO CryptoLissyプラグイン 政府サービスポータルプラグイン Jc-webclient Rutokenプラグイン BSSプラグイン CryptoARM Browserプラグイン  | 
問題は次のとおりです。
- TLSの欠如
 - ChromiumからNPAPIを削除
 - モバイルブラウザはプラグインをサポートしていません
 - IEのセキュリティ設定により、プラグインの実行がブロックされる場合があります
 
長所:
- PKCS#11に基づくプラグインのクロスプラットフォーム
 - ブラウザー間の互換性
 - PKCS#11プラグインは暗号通貨保護を必要としません
 - ユーザーの透過的な使用
 
Activex
Microsoftは、CryptoAPI機能をスクリプトとブラウザーに変換する2つの主要なクライアントActiveXコンポーネントを開発しました。
XEnroll / CertEnrollコンポーネントを使用して、キーを生成し、PKCS#10リクエストを作成し、デジタル署名/暗号化および証明書管理用のCAPICOMコンポーネントを作成します。
      以下の記事では、残りのソリューションについて詳しく説明します。