2018年のチップ黙示録ニュースをきっかけに、ほぼすべてがハッキングされ、世界中のブランドのサイトが疑わずにブラウザーの暗号通貨をマイニングしたため、私たちは強化された修飾された電子署名で署名された聖なるものをハッキングし、文書をハッキングすることにしました。 そして、これはそれから来たものです。
ご存じのように、強化された資格のある電子署名(EP)により、文書に署名した人物を特定し、文書が修正された事実を検出できます(連邦法第63条「電子署名について」の第5条3項を参照)。 今回はハッシュ関数の衝突を生成するアルゴリズムは不要です。 ハッキングの場合は、署名後に電子文書に変更を加える方法を見つける必要があります。これにより、電子署名の確認時にこれらの変更が検出されなくなります。 始めましょう。
DWGドキュメントスクリプト、攻撃ベクトル-外部リンク
以下では、資格のある電子署名証明書がすでにシステムにインストールされていると想定しています。
- HVAC.dwgというドキュメントを作成します。これは、企業のローカルネットワークのボールにあるファイルnothing.dwgを参照します。 nothing.dwgファイルには、サプライヤAの機器のコールアウトが含まれています。
- 承認のためにHVAC.dwgを責任者に送信します。
- プログラム「Autodesk→AutoCAD→Add Digital Signatures」を使用して、責任者はHVAC.dwgに署名します。 これは電子スクリプトです:
攻撃を実装します。
- ネットワークリソースにあるnothing.dwgを変更して、サプライヤAの機器をサプライヤBの機器に置き換える必要があります。
- 調達部門は電子スクリプトHVAC.dwgを受け取り、部門長は電子署名の整合性をチェックし、壊れていないことを確認し、AutoCADは「署名後に図面が変更されていない」という安心の碑文で最後の疑念を払拭します。したがって、サプライヤAの代わりにサプライヤBに行きます。
DOC / DOCXドキュメントスクリプト、攻撃ベクトル-フォント
今回は、標準のGOST R 34.10-2012に対応する、最先端の情報保護CryptoPro CSP 4.0を使用します。
- prikaz.docx従業員のボーナスオーダーを作成します。 メインテキストはArialフォントで入力します。 プレミアムサイズには、たとえばGoogleの無料のノートサンレギュラーなど、同様のフォントを使用します。 ディレクターと合意したプレミアム150,000ルーブルの金額を入力します。
- 署名命令をディレクターに送信します。
- ディレクターは、CryptoPro Office Signature 2.0を使用してprikaz.docxを拡張された認定ESに署名します。 電子スクリプトを入手してください:
攻撃を実装します。
- 無料のFontForgeプログラムを使用して、フォントファイルNotoSans-Regular.ttfを変更し、グリフ1のベクトル画像をグリフ2の画像に置き換えます
- 変更されたNotoSans-Regular.ttfファイルが会計士のコンピューターにインストールされます(管理者権限が必要です)。
- ディレクターによって署名された注文のオリジナルを受け取った会計士はそれを開き、有効な署名を確認します。 しかし、プレミアムは150,000ルーブルから増加しました。 最大250,000ルーブル。
これらは効果的ですが、唯一の攻撃方法ではありません。 マクロ、計算フィールド値、スタイルもあります。 データ管理システム(PDM)の使用も、分離された署名も、CryptoPro CSPのような特殊な暗号化複合体の使用も、それらから保護しません。
そのような攻撃に対する保護を提供する方法は? 最も効果的な方法は、編集不可能な形式または固定マークアップ形式でドキュメントを公開することです。 これらの形式は、世界中のあらゆるデバイスでドキュメントの元の外観を維持することを目的としています。 固定マークアップ形式の最も一般的な代表は次のとおりです。
- PDF(Portable Document Format)-Adobe社によって開発されました。 ISO 32000標準;
- XPS(XML Paper Specification)-Microsoftによって開発されました。 ECMA-388標準 ;
- DWFx-オートデスクが開発。 XPSに基づいています。
しかし、ここでは、すべてがそれほど単純ではありません。 署名済みPDFドキュメントのフォントを使用して攻撃を試みてみましょう。
- たとえば、PDF-XChange仮想プリンターを使用して、prikaz.docxドキュメントをPDFで公開します。 結果のprikaz.pdfファイルは、署名のためにディレクターに送信されます。
- Directorは、Adobe Acrobat Reader DCでprikaz.pdfを開きます。
- 「証明書」セクションの「デジタル署名」コマンドで署名します。
- 署名済みPDFが会計士に送信されます。
攻撃を実装します。
- DOCX形式のシナリオと同様に、会計士に修正フォントNotoSans-Regular.ttfを設定しました。
- 署名されたprikaz.pdfを受け取った会計士は、Adobe Readerでそれを開き、250,000ルーブルのプレミアムサイズを確認します。署名の整合性は侵害されません。
PDFの場合、この形式は参照によるフォントの使用を許可するため、このタイプの攻撃を実装できました。したがって、スクリプトの作成には適していません。必要な保護を提供する標準PDF / A(PDFのサブセット)があります。 したがって、各PDFに署名する前に、ドキュメントがPDF / A標準に準拠していること、またはフォントの依存関係がないことを確認する必要があります。
DWFxおよびXPS形式は、ドキュメントのコンテンツ内のリソースのストレージがECMA-388標準(F.3.1 M2.6)のレベルで規制されているため、このような攻撃の影響を受けません。 ただし、DWFxは複数ページのテキストドキュメントの作成には適していないため、XPSが最も一般的なオプションです。
PDFと同様に、署名済みXPSドキュメントのフォントを介して攻撃を実行してみましょう。
- Windowsに組み込まれたMicrosoft XPS Document Writer仮想プリンターを使用して、prikaz.docxドキュメントをXPSで公開します。 結果のprikaz.xpsファイルは、署名のためにディレクターに送信されます。
- ディレクターは、 Pilot-ICEまたはPilot-XPSでprikaz.xpsを開きます。 CryptoPro CSPを介した「署名」コマンドで署名します。
- 署名済みのXPSが会計士に送信されます。
攻撃を実装します。
- 会計士に修正フォントNotoSans-Regular.ttfを設定しました。
- 署名されたprikaz.xpsを受け取った会計士は、Pilot-ICEでそれを開き、電子署名の整合性をチェックし、文書に署名したときと同じサイズのボーナス(150,000ルーブル)を確認します。 XPSへの攻撃は失敗しました。
まとめ
拡張修飾電子署名は、ドキュメントの変更の事実を検出するための信頼できる技術です。 しかし、その使用の有効性を包括的に評価する必要があります。 実験では、編集可能なDWG、DOC、DOCX形式は、簡単に侵害される可能性があるため、電子スクリプトの作成には適していないことが示されました。 スクリプトを作成するためのより安全で汎用性の高いものは、 PDF / AおよびXPS形式です。これらの形式には、ドキュメントを毎回変更せずに表示するために必要な情報がすべてファイル内に含まれています。
ドミトリー・ポスクレビシェフ