
ロシアの暗号化をサポートするGCrypt-1.7.0ライブラリ(GOST 28147-89、GOST R 34.11-94 / 2012およびGOST R 34.10-2001 / 2012)の登場により、
Kleopatraや
KMailなどのプロジェクトでロシアのPKIサポートについて話すことが可能になりました。

KMailは、S / MIMEプロトコルを使用してメッセージの署名と暗号化を行い、通信のセキュリティを確保できるメールクライアントです。 どちらも、PKIアーキテクチャ、X509証明書、およびCMS / PKCS#7プロトコルに基づいています。


Kleopatpaは、ファイルの署名と暗号化を可能にするだけでなく、証明書と秘密キーの保存と管理を提供するグラフィカルユーティリティです。


KleopatpaとKMailには暗号化が組み込まれていません。これらの暗号化変換はすべて、その
従者 、
とりわけGnuPgパッケージの
gpgsmモジュールによって行われます。 暗号計算には、
LibGCryptライブラリが
使用されます。 また、X509証明書、署名または暗号化されたメッセージ(CMS / PKCS#7、PKCS#10など)を解析するために、
libksbaライブラリが
使用されます。
libgpgmeライブラリについて言及しますが、その役割については少し後で説明します。
そして、
クレオパッパ自身と彼女の忠実な使用人
KMailはロシアの暗号化に対して何もありませんが、
LibGCryptを除いて、彼らの
従者は彼女と友達になることをきっぱりと拒否します。
最も無害な
従者 、つまり
libgpgmeライブラリーから始めましょう。 まず、署名されたメッセージのソースコードを見てみましょう。
「Content-Type」フィールドには変数
micalgがあり、署名の生成または検証時に使用されるハッシュのタイプを示します。 KMailを含む多くの電子メールクライアントでは、このフィールドに値がなくても電子署名の検証には影響しませんが、ThunderbirdおよびSeamonkeyの検証には影響しません。 したがって、このフィールドとKMail thがいっぱいになることが望ましいです。 さらに、これには最小限の労力しか必要ありません。 必要なのは、ロシアのハッシュアルゴリズムの数を
gpgme.h.inファイルに追加すること
だけです。
typedef enum { GPGME_MD_NONE = 0, . . . GPGME_MD_CRC24_RFC2440 = 304, GPGME_MD_GOSTR3411_94 = 308, GPGME_MD_STRIBOG256 = 309, GPGME_MD_STRIBOG512 = 310, GPSME_MD_GOSTR3411_CP = 311 , } gpgme_hash_algo_t;
さらに、これらの番号は、
libgcryptライブラリの
gcrypt.h.inファイルの対応する番号と厳密に相関する必要があります。
enum gcry_md_algos { GCRY_MD_NONE = 0, . . GCRY_MD_TIGER2 = 307, GCRY_MD_GOSTR3411_94 = 308, GCRY_MD_STRIBOG256 = 309, GCRY_MD_STRIBOG512 = 310, GCRY_MD_GOSTR3411_CP = 311, . . . GCRY_MD_SHAKE256 = 317 };
それ
だけです。libgpgmeライブラリ
は 、ロシアの暗号化を
サポートしています。

主な改良点は、特に
PKCS#12セキュアコンテナからX509個人証明書をインポート
する GnuPg(
gpg-protect-toolモジュール)、特に証明書、署名、暗号化されたメッセージの生成と分析を行う
gpgsmモジュール
でした。 (CMS、PKCS#7)と彼の見習いライブラリ
libksba 。
修辞的な質問は、個人証明書を取得する場所です。 X509証明書と秘密鍵? しかし、今日では、もちろん認証局(CA)にこれに関する質問はありません。 現在、ロシアでは、通信省にのみ登録されている
CAが100以上あります。 ただし、これは有料サービスであることを忘れないでください! テスト(およびメール通信を含む企業内の安全なワークフロー)の場合、PKCS#12の安全なコンテナー内の個人証明書は、opensslユーティリティを使用するか、無料のテストCAの1つで取得できます。

個人証明書をCleopatraの環境にインポートするには(GnuPgの証明書と秘密キーストアで言う方が正確です)、個人証明書をPKCS#12コンテナーにアップロード(エクスポート)する必要があります。 コンテナが
TK-26の要件に従って形成されたことが判明する場合があります。 現在(現時点では強調しています)、GnuPgはTK-26の要件に従って形成されたPKCS#12コンテナーとうまくいきませんが、これは怖いことではありません。
opensslユーティリティを手元に置いて、簡単なスクリプトで新しいコンテナをリリースすることで、この欠点をすぐに取り除きます。
これで、インポートするPKCS#12コンテナーができました。

[
開く ]ボタンをクリック
すると、PKCS#12コンテナーを解析するためのパスワードを入力するよう求められます。

そして、パスワードの入力と確認が提供され、インポートされた証明書の秘密鍵へのアクセスが実行されます:

すべて、個人証明書がインポートされます。 サードパーティの証明書とルート証明書は、DER形式とPEM形式の両方からインポートされます。
クレオパトラは証明書を所有しているので、彼女は自分の証明書で文書に署名できます。

秘密鍵にアクセスするためのパスワードを入力します:

受信者証明書を使用して、機密ファイルを暗号化できるようになりました。
originatorKey publicKeyキーと受信者の公開キーに対応する秘密キーを使用してキー暗号化キー(KEK)を生成する暗号化でCMC / PKCS#7を作成する場合、
VKO GOST Rアルゴリズムが使用されます。 残念ながら、GCryptの現在のバージョンでは、このアルゴリズムの実装はありません。 このアルゴリズムの実装は、LCC-2016ライブラリから借用され、
ecc-gost.cファイルに追加されました。
そして、
「続ける」ボタンを大胆にクリックしてください:

KMailメールクライアントについては、通信(電子署名、暗号化)を保護するために、まず、メールメッセージに署名する個人証明書(秘密鍵を持つ証明書)と参加する証明書を選択する必要があります。メッセージの暗号化:

[
証明書マネージャーの実行 ]ボタンをクリックします。Cleopatraがサービスを開始し、選択した証明書のプロパティを詳細に表示できます。
メールメッセージの署名と暗号化の両方ができるようになりました。

[
送信 ]をクリックすると、KMailは暗号化の事実の確認を求めます。

そして、秘密鍵にアクセスするためのパスワードの入力を求められます:


しかし、もっと欲しい。 同じロシアの暗号化をサポートするPKCS#1ファームウェアとハードウェアトークンを使用することです。 PKCS#11トーンを接続するには、変更された
gnu-pkcs11-scdモジュールをシステムにインストールし、
gpg-agent.conf構成ファイルに次の行を追加する必要があります。
scdaemon-program /usr/local/bin64/gnupg-pkcs11-scd pinentry-program /usr/bin/pinentry-qt
その後、
gnu-pkcs11-scd.conf構成ファイルで使用されるトークンのPKCS#11ライブラリを指定する必要があります。
gpg-agen tが実行されていることを確認します。
$ gpg-agent --daemon --use-standard-socket GPG_AGENT_INFO=/home/a513/.gnupg/S.gpg-agent:19092:1; export GPG_AGENT_INFO; $
これで、KleopatraまたはKMailを開始した後、トークンにアクセスするためのPINコードが要求されます。

無料のp11confユーティリティを使用して、トークン名を確認できます。
$ /usr/local/bin64/p11conf -A /usr/local/lib64/libls11usb2016.so -h usage: /usr/local/bin64/p11conf [-hitsmIupPred] -A APIpath [-c slotID -U userPin -S SOPin -n newPin -L label] -h display usage -i display PKCS
トークンに関するインポーターを表示するには、次のコマンドを実行します。

PINコードを正常に入力すると、証明書のリスト全体がGnuGPGリポジトリから受信され、接続されたPKCS#11トークン/スマートカードに保存されます。

さらに、
GnuPg / SMIMEメカニズムを使用する他の電子メールクライアント(
Claws、Evolutionなど )は、S / MIMEでロシアの暗号化を使用して、通信に署名および暗号化できます。



それだけです-クレオパトラと彼女の王室は、ロシアの暗号に誠実に奉仕しています!
次は?

そして、近い将来、KleopatraがGOST R 34.10-2001 / 2012のPKCS#10リクエストも生成することを願っています。

その後、認証局に転送し、最終的に証明書を受け取ることができます。
しかし、それは別の物語になります。