ホームページ >運用・保守 >安全性 >C言語で弱い暗号化を回避する方法

C言語で弱い暗号化を回避する方法

PHPz
PHPz転載
2023-05-16 08:19:121643ブラウズ

1. 弱い暗号化

暗号化とは、特殊なアルゴリズムを使用して元の情報データを変更し、権限のないユーザーが暗号化された情報を取得した場合でも、その情報を知ることができないようにすることを指します。 . 復号化方法ではまだメッセージの内容を理解できません。一般的な暗号化アルゴリズムは、主に対称暗号化、非対称暗号化、一方向暗号化に分類できます。暗号化アルゴリズムはさまざまなシーンで使用されており、計算速度、セキュリティ、鍵管理方法など、暗号アルゴリズムの特性に応じて適切なアルゴリズムを選択しますが、セキュリティは暗号アルゴリズムの品質を測る重要な指標です。解読されやすい暗号化 DES アルゴリズムのように、網羅的な手法を使用して限られた時間内に解読できるアルゴリズムは弱い暗号化アルゴリズムと呼ばれます。この記事では、JAVA 言語のソース コードを例として、暗号化が弱い原因と修復方法を分析します。

2. 弱い暗号化の危険性

攻撃耐性の弱い暗号アルゴリズムは、一度悪用されると個人のプライバシー情報が漏洩し、財産上の損失が発生する可能性があります。 。 2018 年 1 月から 2019 年 4 月までに、CVE に関連する脆弱性情報が合計 2 件ありました。脆弱性情報は次のとおりです。

##CVE脆弱性の概要CVE-2018-9028CVE-2018-6619
CA Privileged AccessManager 2.x でパスワードを送信するときに弱い暗号化が使用されるため、パスワード クラッキングの複雑さが軽減されます。
Easy Hosting コントロール パネル (EHCP) v0.37.12.b では、攻撃者がデータベース パスワードをクラッキングすることが容易になります。

3. サンプル コード

以下で使用するサンプル コードは、Benchmark (https://www.owasp.org/) からのものです。インデックス .php/Benchmark)、ソース ファイル名: BenchmarkTest00019.java。

C言語で弱い暗号化を回避する方法3.1 欠陥コード

上記のサンプル コード操作は、第 49 章でリクエスト内のコンテンツを読み取り、暗号化することです。 Line は、構成ファイル benchmarkprops を読み取るインスタンスを取得します。構成ファイルを 50 行目でロードし、構成ファイルの 52 行目から 53 行目で属性 cryptoAlg1 を読み取ります。そのような属性がない場合、デフォルトでは DESede/ECB/PKCS5Padding# が使用されます。 ## から algorithm への割り当て。行 54 では、暗号化オブジェクト c を構築するための暗号化アルゴリズムとして algorithm

を使用します。次に暗号化パスワードを用意します。行 57 ~ 58 では、DES 暗号化アルゴリズムのキー ジェネレーターをインスタンス化します。 59 行目では、暗号化オブジェクト c の動作モードが暗号化であることを指定しています。ここで、key はキーです。 62 行目から 76 行目でリクエストの入力ストリームをバイト配列入力に変換し、77 行目で入力を暗号化し、暗号化結果はバイト配列

result

になります。 DES アルゴリズムで生成される鍵は 56 ビットと短く、演算速度が遅い上に、DES アルゴリズムは鍵に完全に依存しているため、網羅的検索攻撃に対して脆弱です。

C言語で弱い暗号化を回避する方法Code Guard を使用して上記のサンプル コードを検出すると、「弱い暗号化」の欠陥が検出でき、表示レベルは中です。図 1 に示すように、この欠陥はコードの 57 行目で報告されます。

図 1: 弱い暗号化の検出例

3.2 修復コードC言語で弱い暗号化を回避する方法

#上記の修復コードでは、58 行目で DES アルゴリズムの代わりに AES アルゴリズムが使用されています。AES では、少なくとも 128 ビット以上のキーを生成できます。最大256ビットで、動作速度が速く、メモリ使用量が少なくなります。

C言語で弱い暗号化を回避する方法Code Guard を使用して修復されたコードを検出すると、「弱い暗号化」欠陥がないことがわかります。図 2 に示すように:

##図 2: 修復後の検出結果

4. 弱い暗号化を回避する方法

###高度なセキュリティ要件があるシステムでは、安全な暗号化アルゴリズム (AES、RSA など) を使用して機密データを暗号化することをお勧めします。 ###

以上がC言語で弱い暗号化を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。