体験談まとめ VB.NET 暗号化アルゴリズムの分類

体験談まとめ VB.NET 暗号化アルゴリズムの分類

家が施錠されていなければ、誰でも勝手に入ることができ、暗号化なしでデータを勝手に変更できてしまうと、私たちの世界は現実ではなくなることは誰もが知っています。そのため、私たちは、もともと安全でないチャネル上に安全な通信チャネルを提供し、次の目的を達成しています。機密性: ユーザーの識別やデータが読み取られるのを防ぎます。データの整合性: データの変更を防止します。 認証: データが特定の当事者から発信されたものであることを確認します。ここでは、VB.NET 暗号化アルゴリズムの分類について紹介します。

VB.NET 暗号化アルゴリズムの基本概念:

1. ハッシュ関数

ハッシュ関数 H は、ハッシュ関数またはハッシュ関数とも呼ばれ、典型的な多対 1 関数です。入力は可変長 x (十分な長さにすることができます) で、固定長の文字列 h (通常は 128 ビットまたは 160 ビットで、入力文字列より短い) を出力します。文字列 h は、入力 x (またはメッセージ ダイジェスト、フィンガープリント、暗号チェックサム、またはメッセージ整合性チェック) のハッシュ値と呼ばれ、h=H(x) として計算されます。送信および保存されたメッセージが意図的または意図せずに改ざんされるのを防ぐために、ハッシュ関数を使用してメッセージを計算してメッセージ ダイジェストを生成し、メッセージに添付するか、情報と一緒に保存します。これは、メッセージの偽造防止に重要な用途があります。
メッセージ ダイジェストは、一方向ハッシュ アルゴリズムを使用してメッセージを変換します。メッセージ ダイジェスト アルゴリズムでは、ファイル データが一方向ハッシュ操作の入力として使用され、この入力によって HASH 関数を通じてハッシュ値が生成されます。ファイルが変更されると、ハッシュ値もそれに応じて変化し、受信者は変更の痕跡を検出できるようになります。理論的には、攻撃者が同一のメッセージ ダイジェストを生成する代替メッセージを作成することは不可能です。ハッシュ関数は、デジタル署名、メッセージの整合性の検出、メッセージの送信元の認証の検出などに使用できます。
ハッシュ関数は、次の条件を満たす場合に安全です。
一貫性: 同じ入力で同じ出力が生成されます。
ランダム性: メッセージ ダイジェストは、ソース メッセージが推測されるのを防ぐためにランダムに見えます。
一意性: 同じメッセージ ダイジェストを生成する 2 つのメッセージを見つけることは事実上不可能です。
一方向: 出力が与えられている場合、入力メッセージを判断することは困難です。
ハッシュ関数 H は一般に、次の基本要件を満たします。
(1)入力xは任意の長さにすることができるが、出力データ文字列の長さは固定である。
(2)順方向計算は容易、つまり任意のxが与えられればH(x)を計算するのは容易である。逆方向計算は困難、つまりハッシュ値hが与えられればh=H(x)となる特定の入力xを見つけるのは困難である。
(3)衝突防止(anti-collision)には2つの意味がある。1つは、メッセージxが与えられたとき、H(x) = H(y)となるようなメッセージyを見つけることが計算上不可能であるということ(弱い衝突防止)。もう1つは、H(x) = H(y)となるような任意の2つのメッセージxとyを見つけることが計算上不可能であるということ(強い衝突防止)。

2. 秘密鍵暗号化

秘密鍵暗号化は、暗号化と復号化の両方に同じ鍵が使用されるため、対称暗号化とも呼ばれます。秘密鍵暗号化アルゴリズムは (公開鍵アルゴリズムと比較して) 非常に高速であり、大規模なデータ ストリームで暗号化変換を実行するのに特に適しています。

3. 公開鍵暗号(PKCS)とデジタル署名

公開鍵暗号化では、権限のないユーザーから秘密にしておく必要がある秘密鍵と、誰でも利用できる公開鍵が使用されます。公開鍵で暗号化されたデータは秘密鍵でのみ復号化でき、秘密鍵で署名されたデータは公開鍵でのみ検証できます。公開鍵は誰でも使用でき、秘密鍵の所有者に送信するデータを暗号化するために使用されます。両方のキーは通信セッションに固有です。公開鍵暗号は、データを暗号化するために 1 つの鍵が必要であり、データを復号化するために別の鍵が必要であるため、非対称暗号とも呼ばれます。

データ暗号化/エンコードアルゴリズムのリスト

セキュリティを確保するために使用される一般的な暗号化またはエンコード アルゴリズムは次のとおりです。

1. 共通鍵アルゴリズム 鍵アルゴリズムは、機密データ、要約、署名、その他の情報を暗号化するために使用されます。共通鍵アルゴリズムには次のものがあります。
DES (データ暗号化標準): データ暗号化標準、高速、大量のデータの暗号化に適しています。
3DES (トリプル DES): DES に基づいて、データが 3 つの異なるキーを使用して 3 回暗号化されるため、より強力です。
RC2 および RC4: 可変長キーを使用して大量のデータを暗号化します。DES よりも高速です。
IDEA (国際データ暗号化アルゴリズム) は 128 ビットのキーを使用して非常に強力なセキュリティを提供します。
RSA: RSA によって発明された、可変長キーをサポートする公開鍵アルゴリズムです。暗号化されるファイルの長さも可変です。
DSA (デジタル署名アルゴリズム): デジタル署名アルゴリズム、標準 DSS (デジタル署名標準)。
AES (Advanced Encryption Standard): Advanced Encryption Standard は、高速かつ高いセキュリティ レベルを備えた次世代の暗号化アルゴリズム標準です。現在、AES 標準の実装の 1 つに Rijndael アルゴリズムがあります。
BLOWFISH は、最大 448 ビットの可変長キーを使用し、非常に高速に動作します。
ElGamal、Deffie-Hellman、新しい楕円曲線アルゴリズム ECC などの他のアルゴリズム。

2. 一方向ハッシュアルゴリズム 一方向ハッシュ関数は、一般的にメッセージダイジェストやキー暗号化などの生成に使用されます。一般的なものは次のとおりです。
MD5 (メッセージ ダイジェスト アルゴリズム 5): RSA Data Security によって開発された一方向ハッシュ アルゴリズムです。MD5 は広く使用されており、さまざまな長さのデータ ブロックを 128 ビットの値に暗号化するために使用できます。
SHA (Secure Hash Algorithm) は、任意の長さのデータに対して 160 ビットの値を生成できる新しいハッシュ アルゴリズムです。
MAC (メッセージ認証コード): メッセージ認証コードは、秘密キーを使用してシステム上またはユーザー間でファイルやメッセージを認証する一方向の機能です。 HMAC (Keyed Hashing for Message Authentication) はそのような機能の一例です。
CRC (巡回冗長検査): 巡回冗長検査コード。CRC チェックは、実装が簡単でエラー検出能力が強いため、さまざまなデータ検証アプリケーションで広く使用されています。システムリソースをほとんど消費せず、ソフトウェアとハ​​ードウェアの両方で実装できます。データ転送エラーを検出するのに適した手段です (CRC は厳密にはハッシュ アルゴリズムではありませんが、その機能はハッシュ アルゴリズムとほぼ同じであるため、このカテゴリに分類されます)。

3. その他のデータ アルゴリズム その他のデータ アルゴリズムには、Base 64、Quoted Printable、EBCDIC など、一般的に使用されるエンコード アルゴリズムと、それらのプレーン テキスト (ASCII、Unicode など) への変換が含まれます。

VB.NET 暗号化アルゴリズムの実装<BR>一般的な暗号化およびエンコード アルゴリズムが .NET Framework に実装されており、コーディングの利便性が大幅に向上しています。これらのアルゴリズムを実装する名前空間は System.Security.Cryptography です。
System.Security.Cryptography 名前空間は、安全なデータのエンコードとデコード、ハッシュ、乱数生成、メッセージ認証などの他の多くの操作を含む VB.NET 暗号化サービスを提供します。
System.Security.Cryptography は次のように構成されています。

1. 秘密鍵暗号化 秘密鍵暗号化は、暗号化と復号化の両方に同じ鍵が使用されるため、対称暗号化とも呼ばれます。秘密鍵暗号化アルゴリズムは (公開鍵アルゴリズムと比較して) 非常に高速であり、大規模なデータ ストリームで暗号化変換を実行するのに特に適しています。
.NET Framework は、秘密キー暗号化アルゴリズムを実装する次のクラスを提供します。
DES:DESCryptoServiceProvider
RC2: RC2CryptoServiceProvider
Rijndael (AES): Rijndael マネージド
3DES:トリプルDES暗号サービスプロバイダー

2. 公開鍵暗号化とデジタル署名 公開鍵暗号化では、権限のないユーザーから秘密にしておく必要がある秘密鍵と、誰にでも公開できる公開鍵が使用されます。公開鍵で暗号化されたデータは秘密鍵でのみ復号化でき、秘密鍵で署名されたデータは公開鍵でのみ検証できます。公開鍵は誰でも使用でき、秘密鍵の所有者に送信するデータを暗号化するために使用されます。両方のキーは通信セッションに固有です。公開鍵暗号は、データを暗号化するために 1 つの鍵が必要であり、データを復号化するために別の鍵が必要であるため、非対称暗号とも呼ばれます。
.NET Framework は、公開キー暗号化アルゴリズムを実装する次のクラスを提供します。
DSA:DSACryptoServiceProvider
RSA:RSACryptoServiceProvider

3. ハッシュ値 ハッシュ アルゴリズムは、任意の長さのバイナリ値を、固定長のより小さなバイナリ値にマッピングします。この小さなバイナリ値はハッシュ値と呼ばれます。ハッシュ値は、データの一意かつ非常にコンパクトな数値表現です。プレーンテキストの一部をハッシュし、そのテキストの一部を 1 文字でも変更すると、後続のハッシュでは異なる値が生成されます。同じ値にハッシュされる 2 つの異なる入力を見つけることは計算上不可能であるため、データのハッシュ値を使用してデータの整合性を検証できます。
.NET Framework は、デジタル署名アルゴリズムを実装する次のクラスを提供します。
HMAC: HMACSHA1 (HMAC はキーを使用するハッシュ アルゴリズムです)
MAC:MACトリプルDES
MD5:MD5CryptoServiceProvider
SHA1: SHA1マネージド、SHA256マネージド、SHA384マネージド、SHA512マネージド

4. 乱数生成: 暗号化キーは、生成されたキーを再現することが困難になるように、できるだけランダムである必要があるため、乱数生成は多くの暗号化操作の不可欠な部分です。
.NET Framework では、RNGCryptoServiceProvider は乱数生成アルゴリズムの実装です。データ アルゴリズムについては、.NET Framework はそれらを他の名前空間に実装します。たとえば、Base 64 エンコードを実装する Convert クラスやエンコード変換を実装する System.Text などです。

シンプルなルーチン:

まず、System.Security.Cryptography名前空間を参照する必要があります。

セキュリティを確保するために使用される一般的な暗号化またはエンコード アルゴリズムは次のとおりです。

  1. MD5CryptoServiceProvider として暗黙の md5
  2. Dim bytValue() As Byte '暗号化するバイト配列
  3. Dim bytHash() As Byte '暗号化後に生成されたバイト配列
  4. 結果を文字列として暗くする
  5. md5 =新しいMD5CryptoServiceProvider
  6. ' 元の文字列をバイト配列に変換します
  7. bytValue = System.Text.Encoding.UTF8.GetBytes (CPUID)
  8. ' ハッシュを計算してバイト配列を返す
  9. bytHash = md5.ComputeHash (bytValue)
  10. md5.クリア()
  11. ' バイト配列を文字列に変換
  12. 結果= .ToBase64String(bytHash)に変換

他も同様です!ぜひご自身でもお試しください!
上記から、.NET Framework はデータの暗号化/エンコードをうまくサポートしており、開発者にとって非常に便利であることがわかります。ただし、唯一の欠点は、IDEA、BLOWFISH などの .NET Framework のデータ暗号化アルゴリズムや、ElGamal、Deffie-Hellman、ECC などの他のアルゴリズムがまだ十分に完成していないことです。CRC、SFV などの他のデータ検証アルゴリズムのサポートも不十分です。開発者は、初期のコードから移植するか、サードパーティ メーカーの実装を探すしかありません。

<<:  PHPソートアルゴリズムの完全実装

>>:  VB.NET コーディングアルゴリズム学習ノート

ブログ    
ブログ    

推薦する

...

画像とテキストの認識 - 人工知能の知恵

序文人間が世界を認識する際の約 80% は視覚によって行われます。そのため、コンピューターが人間の視...

5 つの負荷分散アルゴリズムのうち、いくつ知っていますか?

[[286828]] F5、LVS、HAproxy、nginx など、私たちが普段使用している負荷...

...

未来を形作るAIのトレンド

多くの人が人工知能技術の導入に非常に興味を持っていることは間違いありません。しかし、世界的な調査によ...

2023 年の 5 つの驚くべき自動化の進歩

自動化は、業界やプロセスの変革の原動力となり、効率性、コスト効率、エラーの低減を実現しています。 2...

機械学習の理論的基礎はどの程度しっかりしているのでしょうか?

機械学習の分野では、いくつかのモデルが非常に効果的ですが、その理由は完全にはわかっていません。逆に、...

推薦システムで学ぶべき対照的な学習方法

みなさんこんにちは。私はDiaobaiです。今日は、レコメンデーションシステムで学ぶべき対照学習法に...

ハーバード大学の研究者がAIを活用して世界中の密猟を阻止

ハーバード大学ジョン・A・ポールソン工学応用科学大学院のリリー・シューさんは、幼いころから環境と保護...

...

海外メディア:ソフトバンクがロボット事業を縮小し、ペッパーの生産を停止

ロイターが入手した情報筋や文書によると、ソフトバンクグループは世界的なロボット事業で人員削減を行い、...

女神の若々しい姿が全開!テンセントのAIモデルGFPGANがGitHubのホットリストで1位に

[[440335]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

負けても落ち込まないで! Google、ロボット工学プロジェクトを再開

[[260578]]海外メディアの報道によると、グーグルは以前の取り組みが失敗した後、ロボット工学プ...

R言語におけるAprioriアルゴリズムの応用

[[193979]] I. コンセプト関連性分析は、大規模なデータセットに隠された意味のあるつながり...

顔認識:最高裁は規則に従うよう求めている

近年、顔認識技術は急速に発展し、入場時の顔スキャンや支払い時の顔スキャンに広く使用され、私たちの日常...