電子署名とは何ですか?
記事のこの部分では、営利企業での電子署名の使用に焦点を当てます。 まず、どの場合に電子署名が各企業で有用かつ有用になるかを検討し、次にその実用化を検討します。
まず第一に、電子署名とは何かを言わなければなりません。 これは、情報に署名した人と、署名後に情報が変更されていないという事実を判断するために、他の情報に(署名される情報に)添付される情報です。
電子署名に関する法律自体は次のように述べています。「電子署名-電子形式の他の情報(署名付き情報)に添付されるか、そうでなければそのような情報に関連付けられ、情報に署名する人を決定するために使用される電子形式の情報」 。
したがって、電子署名の主なタスクは、ドキュメントの作成者を確認し、署名後にドキュメントが変更されていないことを確認することです。
「電子署名について」の法律を詳しく調べれば、電子署名は簡単で強化できます。 簡単な電子署名は、特定の人による文書の電子署名の事実のみを確認します。
強化された電子署名は、強化された未熟練者と強化された資格に分けられます。 拡張非修飾電子署名により、次のことが可能になります。
- 電子文書に署名した人を特定します。
- 署名後の文書変更の事実を判断します(単純な電子署名では許可されていません)。
また、電子署名キーを使用した情報の暗号化変換の結果として、拡張された非修飾電子署名を取得する必要があります。
拡張修飾ESは拡張非スキルと同じですが、ES検証キーは修飾証明書に示されています。ESを作成および検証するには、電子署名に関する法律で定められた要件への準拠の確認を受けた資金が使用されます。 以下で検討するCyberSafeプログラムは、拡張ESのオプションのみを提供します。
企業で電子署名を使用する場合
内部ワークフロー
企業の内部ワークフローの最も一般的なバージョンは、ビジネスノートです。 ドキュメントにデジタル署名し、さらに下流に送信できる場合、ドキュメントを印刷して自分で署名することはもはや意味がありません。
ここでの電子署名は、時間だけでなくお金も節約します-紙とプリンターのトナーの消費を減らします。 もちろん、印刷された1枚の紙のコストはそれほど高くないかもしれませんが、1年でまともな量を節約できます。これは、今日高価な時間は言うまでもありません。
原則として、会社はネットワークプリンターを使用します。 ネットワークプリンタは、別のオフィスまたは一般的に別のフロアに配置できます。 サービスノートを印刷した従業員は、オフィスを出てプリンタに行き、他のドキュメントの中からメモを見つける必要があります。 すべてを行うには10〜15分かかり、人的要因(次のオフィスの従業員との会話)を考慮すると、さらに多くのことが行われます。 その結果、これらの10〜15分は、印刷されたドキュメントを検索するよりも生産的に費やすことができます。
2番目の例は、契約を交渉するプロセスです。 従業員のIvanovが契約を作成し、承認のためにヘッドに送信するとします。 原則はメモと同じです。電子署名で署名できるのに、なぜ方言を印刷するのに時間を浪費するのですか? ヘッドは契約に変更を加え、署名してイワノフに送信します。 多くの変更が行われることを考えると(結局、間違いは避けられません)、電子署名を使用すると、多くの時間と費用を節約できます。
大企業ネットワークでは、イヴァノフの頭とランクとファイルの従業員でさえ電子署名を悪用する可能性があります-これは、ドキュメントの作成者とその不変性を検証するための信頼できる方法です(誰もイヴァノフまたは彼の頭の知識なしで変更を加えていないこと)。
アクセス権があると主張でき、最後にドキュメントを編集したユーザーを確認できます。 電子署名が必要なのはなぜですか? 1つではないにしても、すべてが正しいかのようです。 どのシステムにも、最大限の権限を持つユーザーがいます。ドキュメント自体を変更できるだけでなく、その属性(変更の日付/時刻、最後の変更の作成者など)も変更できる管理者です。
アフィリエイトおよびパートナーとのドキュメントの交換
会社のリモートブランチおよびパートナーと情報を交換する場合、通常は電子メールが使用されます。 また、ここで電子署名を使用して、リモートブランチのパートナーと従業員が、このメッセージを送信したのはあなたであり、あなたに見せたい人ではないことを確認できます。
はい、完全に電子形式で契約を締結する慣行はありません。 とにかく、ウェットシールと署名がまだ必要です。 したがって、完全な電子形式でパートナーとの契約を結ぶことはできません。 ただし、パートナーと安全にメッセージを交換でき、誰かがあなたのメッセージまたはパートナーのメッセージを偽造することは間違いありません。
リモートブランチとのドキュメントの交換に関しては、ここでは、内部ドキュメント管理と同様に電子署名を使用できます。 ブランチ間のドキュメントフローは、半デジタル形式で行われます。 つまり、最初に文書を印刷し、次にリーダーが署名する必要があります。その後、リーダーの秘書がそれをスキャンし、電子メールでリモートブランチに送信して、再度印刷します。
電子署名はこのプロセスを削減します。文書は電子署名で署名され、リモートブランチに送信されます。受信者は電子署名を確認し、文書が管理者によって正確に署名されたことを確認できます。
企業に電子署名を導入する際のいくつかの問題
人が電子署名に慣れるのは依然として難しく、彼女は彼女を深刻なものとして扱いません。 文書に「ウェット」署名があるまで、署名済みとは見なされません。 従業員は、紙の文書のコピーを引き続き使用し、秘密鍵を失います。重要なものとはみなしません。 心理的な障壁を克服するには? 「紙なしで-あなたはバグであり、紙で-男」という同じことを克服する方法は?
抜け道があり、もう1枚の紙で構成されていることがわかります。 企業内では、「電子文書管理に関する規定」を採用する必要があります。 すべての従業員はそれをよく理解し、この条項の承認を電子署名ではなく署名で添付する必要があります。 そうすれば、従業員はすべてが深刻であることを理解します-署名を求められるからです。 その後、彼らは電子署名の使用を開始し、秘密鍵を真剣に受け止めます。
心理的な障壁に加えて、もう1つ-教育的です。 数年退職した経験豊富な経験豊富な従業員にとって、電子署名とは何か、それを正しく使用する方法を説明するのは非常に困難です。 彼は比較的最近、通常の電子メール、そして非同期暗号化、公開鍵と秘密鍵などの操作を習得しました。 これは、私自身の経験から比較的最近遭遇した主な問題です。
解決策はありますが、最初の場合ほど簡単ではありません。 最初に、電子署名を使用するためのトレーニングのタスクをIT部門に割り当てることができます。 他のすべてが失敗した場合、サードパーティの専門家のサービスに行くことがすでに可能です。 結局のところ、コンピューター、オフィスアプリケーション、および電子メールの操作に関するトレーニングがあります。 同様に、最新のドキュメント管理に関するコースを見つけることができます。
すべての革新と同様に、拒否の波に備えなければなりません。 しかし、従業員は電子署名がどれほど優れているかを理解すると、昔ながらの方法で作業をやめます。 電子署名への移行を容易にするために、今説明したまさにそのような状況で、通常の署名をまだ使用できる移行期間を設けることが必要です。 あまり長く設定する必要はありません。そうしないと、誰もが通常の署名を使用し続けます。
別の問題がありますが、それは技術的な性質のものであるため、非常に簡単に解決されます。 電子署名には、電子署名の認証局(CA)または認証局が必要です。 「電子署名に関する」法律は、CAが何であるかを明確に示しています。
証明機関-電子署名を検証するためのキーの証明書を作成および発行する機能、およびこの連邦法で規定されているその他の機能を実行する法人または個人起業家
そのため、認証機関は独自に作成するか、CyberSafe認証機関などの外部センターを使用する必要があります。
CAの主なタスクは、暗号証明書を発行し、その真正性を確認することです。
実用部
この記事の実用的な部分に進む前に、ソフトウェアの選択について話す必要があります。 CyberSoft製品を選ぶ価値があるのはなぜですか?
まず、開発会社には、FSBおよびFSTECの必要なすべてのライセンスがあります。以下をご覧ください。
cybersafesoft.com/eng/certificates
第二に、CyberSafeソフトウェア製品で使用されるライブラリのソースコードは誰にでも公開されており、ソフトウェア製品で使用されるソリューションの信頼性と、プログラムには「穴」、「抜け穴」、バックドア、その他の誤解がないことを誰もが確信できます。 ソースコードは一般公開されているため、会社には何も隠すことができません。 Microsoftから同じBitLockerのソースコードを見つけてください。
今、少し特異性。 暗号化ライブラリのソースコードは、次の場所から入手できます。
www.assembla.com/spaces/cybersafe-encryption-library/wiki
リンクは、 cybersafesoft.com / rusサイトのメインページにあります。
関数SMIME_OSSL_Sign()は暗号化と署名に使用されます。そのコードをリスト1に示します。ご覧のとおり、実装ではOpenSSLを使用していますが、これは長年不満がありません。
リスト1.メッセージ/文書の暗号化と署名に使用される関数SMIME_OSSL_Sign()
関数SMIME_OSSL_Sign( AFileSpec、ACertFileSpec:ストリング; out ErrMesg:文字列。 SMIME:ブール= False):ブール; function getCertInfo(certSpec:String; var ACert:PX509; var AKey:PEVP_PKEY):ブール値; var tbio:PBIO; cert:PX509; キー:PEVP_PKEY; 始める 結果:= False; tbio:= nil; //証明書と秘密キーを読み取ります //「BEGIN \ END CERTIFICATE」および「BEGIN \ END RSA PRIVATE KEY」を含める必要があります tbio:= BIO_new_file(PAnsiChar(AnsiString(certSpec))、 'r'); tbio = nilの場合 出口 試してみる ACert:= PEM_read_bio_X509(tbio、nil、nil、nil); BIO_reset(tbio); AKey:= PEM_read_bio_PrivateKey(tbio、nil、nil、nil {PAnsiChar(pass)}); 結果:=(ACert <> nil)および(AKey <> nil); ついに 割り当てられている場合(tbio) BIO_free(tbio); 終わり; 終わり; var scert:PX509の配列。 skey:PEVP_PKEYの配列。 i:整数; inf outf:PBIO; certs:TStringList; cms:PCMS_ContentInfo; outFileSpec:文字列; フラグ:枢機inal; 始める 結果:= False; SSL_InitBIO; SSL_InitEVP; SSL_InitPEM; SSL_initSk; SSL_InitPKCS7; SSL_InitCMS; SSL_InitERR; SSL_InitX509; OPENSSL_add_all_algorithms_noconf(); OpenSSL_add_all_ciphers; OpenSSL_add_all_digests; ERR_load_crypto_strings(); certs:= TStringList.Create; 試してみる StrToStrings(ACertFileSpec、 '、'、certs); certs.Count = 0の場合 始める ErrMesg:= stNoSignCertificates; 出口 終わり; SetLength(scert、certs.Count); SetLength(skey、certs.Count); for i:= 0からcerts.Count-1まで 始める scert [i]:= nil; skey [i]:= nil; 終わり; //署名されているコンテンツを開く inf:= BIO_new_file(PAnsiChar(AnsiString(AFileSpec))、 'r'); if(inf = nil)then 始める ErrMesg:= Format(stErrorOpenFile、[AFileSpec]); 出口 終わり; フラグ:= CMS_BINARYまたはCMS_PARTIALまたはCMS_STREAM; cms:= CMS_sign(nil、nil、nil、inf、flags); if(cms = nil)then 始める ErrMesg:= Format(stErrorSignFile、[AFileSpec]); 出口 終わり; for i:= 0からcerts.Count-1まで getCertInfo(certs.Strings [i]、scert [i]、skey [i])の場合 始める CMS_add1_signer(cms、scert [i]、skey [i]、nil、0)= nilの場合 始める ErrMesg:= stErrorAddSigner; 出口 終わり; 終わり; outFileSpec:= GetTmpFileSpec; outf:= BIO_new_file(PAnsiChar(AnsiString(outFileSpec))、 'w'); if(outf = nil)then 始める ErrMesg:= Format(stErrorCreateSignedFile、[AFileSpec]); 出口 終わり; // S / MIMEメッセージを表示します {SMIME_write_CMS(outf、cms、inf、flags)= 0の場合 始める ErrMesg:= Format(stErrorWriteFile、[outFileSpec]); 出口 終わり; } i2d_CMS_bio_stream(outf、cms、inf、flags)= 0の場合 始める ErrMesg:= Format(stErrorWriteFile、[outFileSpec]); 出口 終わり; ついに 割り当てられている場合(cms) CMS_ContentInfo_free(cms); 割り当てられている場合(inf) BIO_free(inf); 割り当てられている場合(outf) BIO_free(outf); for i:= 0からcerts.Count-1まで 始める 割り当てられている場合(scert [i])その後 X509_free(scert [i]); 割り当てられている場合(skey [i]) EVP_PKEY_free(skey [i]); scert [i]:= nil; skey [i]:= nil; 終わり; certs.Free; 終わり; FileExists(outFileSpec)の場合 始める 試してみる DeleteFile(AFileSpec); CheckCopyFile(outFileSpec、AFileSpec); DeleteFile(outFileSpec); 結果:= True; を除く E:例外を行う ErrMesg:= E.Message; 終わり; 終わり; 結果でない場合 始める ErrMesg:= Format(stErrorSignFile、[AFileSpec]); 終わり; 終わり;
第三に、CyberSafe Enterpriseプログラムは認証機関として機能します。 したがって、3番目の技術的な問題はすでに解決されていると想定できます。
理論とすべての推論と考察は、実践なしでは何も意味しません。 CyberSafeを使用してオフィス文書に署名することを検討してください。 CyberSafeをインストールします。 プログラムを初めて起動するときは、CyberSoft CAからの証明書を受け入れる必要があります。 原則として、これはプログラムマニュアルに記載されていますが、証明書を受け入れないよりも、もう一度言う方が良いでしょう。
図 1.プログラムの最初の起動
次に、 鍵と証明書、秘密鍵に移動し、 作成ボタンをクリックします 。 表示されるウィンドウで、従業員が証明書の所有者をすぐに理解できるように、電子メールアドレス、パスワード、名前、および姓を入力します。 証明書の有効期限とキーの長さを選択します。 強力なコンピューターの場合、あまり強力ではないコンピューター(4096ビット)の場合は、キーの最大長を選択することをお勧めします。 キーが長いほど、保護の信頼性が高いことに注意してください。 作成後 、必ず公開スイッチを有効にしてください。証明書はCyberSafeサーバーに自動的に公開され、従業員は簡単に見つけることができます。 独自の証明書サーバーを作成したり、外部サーバーを使用したりしない場合は、CyberSafeサーバーで証明書を公開するのが最適なソリューションです。 急いでこのスイッチをオンにしなかった場合は、問題ではありません。証明書を作成した後、それを強調表示して[ パブリック ]ボタンをクリックします。
図 2.証明書を作成する
[ 次へ]をクリックし、プログラムが証明書の作成を完了するのを待ちます(図3)。
図 3.作成された証明書
完了をクリックします。 その後、プログラムは電子メールの確認を求めます。 確認コードが送信され、表示されるウィンドウに入力する必要があります(図4)。
図 4.確認コードを入力して、証明書を公開します
次に、証明書が正常に公開されたことを示すメッセージを受け取ります(図5)。 CyberSafeサーバーで証明書を公開するためにインターネットアクセスが必要であると言う必要はないと思います。
図 5.証明書が正常に公開されました
同僚もCyberSafeをインストールし、証明書を作成してCyberSafeサーバーに公開するプロセスを実行する必要があります。 同僚の証明書を電子メールで検索するには 、[ 検索 ]ボタンをクリックして電子メールを入力します(図6)。 次に、同僚の証明書を追加する必要があります。同僚は証明書を追加する必要があります。
図 6.ピア証明書の追加
写真を見てください。 7.証明書は、公開鍵と秘密鍵のキーペアとしてリストに表示されます。 [ 検索 ]ボタンを使用して追加されたピア証明書は単一のキーとして表示され、ピアの公開(公開)キーのみが含まれます。
図 7.鍵と証明書のリスト
次に、メモを暗号化して署名してみましょう。 任意のテキストエディターでメモを作成します。 Wordでも、メモ帳でも構いません。その本質は変わりません。
[ メール]セクションに移動します。 デジタル署名し、署名して[ 追加 ] をクリックします。 ファイル 。 以前に作成したメモを選択します(図8)。 一度に複数のファイルを選択することも、フォルダー全体を選択することもできます( [フォルダーの追加]ボタンを使用)が、ここでは例を簡単にするために1つのファイルを使用します。 それを強調表示して、 「次へ」をクリックします。
図 8.メモを追加しました
ファイル暗号化オプションを選択します- 受信者キーでファイルを暗号化します(図9)。 これは、受信者の公開鍵がファイルの暗号化に使用されることを意味します。 キーを選択しないと、暗号化されているにもかかわらず、このファイルを解読することさえできません(図10)。
図 9.他人に転送するためのファイル暗号化
図 10.ファイル受信者の選択
実験では、証明書を選択せず(図10)、自分で暗号化したファイルを復号化しようとすると、「ファイルの復号化エラー!」というメッセージが表示されました! おそらく、ファイルは別のキーで暗号化されています 。
次に、[ 秘密キーで署名]リストからキーを選択して、プログラムがユーザーに代わってメモに署名するようにします。 暗号化アルゴリズムとキーの長さを選択できます。 暗号化を開始するには、暗号化ボタンをクリックします。 プログラムは、ファイルが正常に暗号化されたことを報告します(図12)。 図から 図12は、誰がドキュメントに署名し、誰に宛てたのか(誰がそれを読むことができるか)を示しています。
図 11.キーでメモに署名します
図 12.メモは暗号化されています
ご覧のとおり、メモに署名するだけでなく、他のユーザーからも保護しています。 受信者として選択されたユーザー以外は誰も読むことができません。
暗号化されたサービスノートを含むパッケージはソースファイルと同じディレクトリに配置され、パッケージ名は暗号化されたファイル(この場合はnote01)と同じになり、拡張子はcspになります。 このファイル(拡張子.csp)は、受信者に転送する必要があります。たとえば、電子メールで送信したり、他の方法で転送したりします。
受信者がそれを開き、パッケージ内のファイルを復号化し、署名を検証する方法を見てみましょう。 受信者はCyberSafeプログラムを開始する必要があります。 [ メール]セクションに移動します。 デジタル署名、署名の確認 、 追加をクリックします。 ファイルを選択し、パッケージ(拡張子.cspのファイル)を選択します。 上のフィールドで、復号化されたファイルを配置するフォルダーを選択できます(図13)。
図 13. .cspパッケージの選択
次に、[ 次へ]をクリックして、復号化する証明書を選択する必要があります。 パッケージは同僚に宛てられたため、同僚は証明書を選択する必要があります(図14)。 [ 次へ ]をクリックすると、プログラムは証明書のパスワードの入力を求めます。 パスワードが正しい場合、プログラムはファイルを復号化し、復号化が成功したことを通知します(図15)。
図 14.証明書の選択
図 15.ファイルが正常に復号化されました
また、署名を検証して、送信中に誰もパケットを変更していないことを確認する必要があります。 これを行うには、[ 署名の確認 ]ボタンをクリックします。 プログラムは署名を検証するときに証明書センターにアクセスするため、署名を検証するにはインターネットアクセスが必要です。 署名の検証結果を図に示します。 16-署名が検証され、証明書が信頼されており、失効した証明書のリストに含まれておらず、署名後にパッケージが変更されていません。
図 16.すべて順調
次に、プログラムが非標準的な状況にどのように応答するかを見てみましょう。 誰かがパッケージnote01.cspを変更したと想像してください。 プログラムはエラーを報告し、ファイルの復号化を拒否します(図17)。
図 17.エラー
総当たり法が機能しない場合、攻撃者は昼食時に同僚のコンピューターに忍び込み、別の経路をたどることがあります。 彼は同僚の電子メール(gaifylin@gmail.com)に対して発行された証明書を削除し、同じ電子メールに対して再作成して、サービスノートの復号化を試みることができます。 その論理は単純です-彼は自分のパスワードを知らないため、同僚の証明書を使用できませんが、彼はそれを削除して同じ電子メールの証明書を作成できます。 ただし、1つの電子メールに対して少なくとも100の証明書を作成できるため、成功しません。CyberSafeキーサーバーで最初に公開された証明書は信頼できると見なされます。 彼は証明書を作成し、作成中に指定されたパスワードを入力しますが、残念ながら、サービスノートを読むことはできません(図18)。
図 18.ファイルの復号化エラー! おそらく、ファイルは別のキーで暗号化されています。
そのため、メモを暗号化して署名し、私たちの経験から、プログラムが実際に機能し、不正な読み取りや変更からデータを保護することを確認しました。
結論
ESを使用している企業には次の利点があるため、これまでに作成されたすべてから、ESは企業にとって非常に有用な革新であると結論付けることができます。
- 不正な読み取りや改ざんからドキュメントを保護する機能
- 一部の内部文書を電子形式に変換することによる紙のワークフローの削減
- 電子署名によってドキュメントの法的ステータスを判断する機能(ドキュメントの作成者を確立する)。
上記のシステム全体は営利組織にのみ適合しますが、認定された暗号プロバイダーが必要な国営企業には使用できません。 また、説明されたシステムは、関係者がキーとCAを信頼することを検討することに同意した場合、任意のドキュメントに対して異なる組織間で使用できます。
現在のところ、CyberSafeの現在のバージョンは本格的な企業バージョンではないことに注意してください。現時点では、キーの集中的な発行と配布は行われていません。 したがって、このバージョンでは、暗号化管理者はキーと証明書を生成し、トークンでユーザーに書き込むことができます(記事の第2部で説明します)。 2015年半ばまでに、本格的な企業版がリリースされる予定です。
これで記事の最初の部分は終わりです。 第二部では、政府機関や銀行での電子署名の使用について具体的に説明します。 認定された暗号プロバイダーとトークンの使用についてです。 原則として、記事の第2部で説明するすべてのものは、必要に応じて営利企業で使用できます。
参照資料
2011年6月6日付けの連邦法N63-(2014年6月28日修正)「電子署名について」
CyberSafeの異なるバージョンの比較