Home / 記事 / 情報セキュリティ / アプリケーションセキュリティ / 第 8 章 : 暗号化(書籍のプレビュー) / HMAC

e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。

オンライン書籍; Microsoft .NET Web アプリケーションセキュリティ

第 8 章 : 暗号化(書籍のプレビュー)

Microsoft .NET Web アプリケーションセキュリティ
Microsoft .NET Web アプリケーションセキュリティ


インドの情報セキュリティの大家が書き下ろした最新のセキュリティ書籍の一部をオンライン書籍としてご紹介します。書籍の情報は、こちらをご覧ください

HMAC

c.cs
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class zzz
{
public static void Main()
{
byte [] k = Encoding.UTF8.GetBytes("Vijay");
HMACMD5 h = new HMACMD5(k);
FileStream f = new FileStream("z.txt", FileMode.Open);
byte[] b = h.ComputeHash(f);
String s = Convert.ToBase64String(b);
Console.WriteLine("Hash is {0}",s);
}
}

コマンド プロンプト ウィンドウ
C:\encrypt>c
Hash is NcpSfRQywRNJ6ncqZyo65w==

次に、HMAC について説明します。

HMACMD5 オブジェクトの h を、キーまたはパスワード Vijay で作成します。実際には、ランダム値ジェネレータ クラスを使用して強いキーを作成することをお勧めします。FileStream クラスは、ASCII ファイル z.txt を読み取り用に開きます。このファイルには、暗号化するテキストが格納されています。

ComputeHash メソッドを呼び出し、ファイル ハンドルを渡します。このメソッドにはいくつもの顔があります。ここでは、ファイル ハンドルを使用してファイル全体をメモリに読み込み、固有のハッシュ値を計算します。値は一連のバイトであり、これを Base64 文字列として表示します。上記のプログラムでは、同じ関数にバイト配列を割り当てていました。もう 1 つの方法としては、バイト配列と配列内のオフセットをこの関数に渡します。ComputeHash 関数は、オフセット以降からハッシュ値を計算します。

HMACMD5 アルゴリズムは、名前が示すように、ハッシュ MD5 文字列とキーを処理します。キーのサイズは任意です。このクラスは HMAC (Hash based Message Authentication Code) と同じように機能します。前に説明したように、SHA1 ハッシュまたは MD5 ハッシュだけでは十分ではなく、ランダムな秘密キーを使用して値をさらに暗号化する必要があります。

HMAC では、プロセスは単純なソルトよりはるかに複雑です。HMAC プロセスを開始するには、秘密キーと実際のデータを混合した後、ハッシュ値を作成します。ここで終わりではなく、結果のハッシュ値を同じキーとさらに混合し、ハッシュ値を再計算します。このように、1 つのキーでハッシュ関数を 2 回適用します。唯一の問題は、送信側と受信側が 1 つの秘密キーを共有する必要があることで、異なるチャネルでキーを送信する必要があります。

暗号化に常につきまとう問題は、キーの管理です。送信側は、データと計算済みの HMAC を送信します。受信側は、受信したデータから HMAC を再計算し、値を検証します。

この場合の利点は、キーが送信側と受信側にのみあるので、他の者が HMAC テキストを変更できないことです。既存のデータおよび HMAC テキストを変更するには再計算が必要で、そのためには秘密キーが必要です。

HMACMD5 と同様に、HMACSHA1 アルゴリズムもあります。実装は変わりありません。

コメント

コメントするにはログイン、もしくはユーザ登録を行ってください。

発売中

LET US C(上)
インド人ITエンジニアのCプログラミングのバイブル。通算100万冊以上売れています。
― 2,520円 ―

Y. Kanetkar

発売中

Introduction to Object Oriented Programming & C++
C++を例に、多彩なサンプルコードと簡潔な説明でOOPプログラミングの実際が理解できる。
2,940

Y. Kanetkar

発売中

Microsoft .NET Web Application Security
APプログラムの作り方で不正侵入の防御率を向上させる手法を解説。今までにないセキュリティーの手法を紹介します。
3,990円

Vijay Mukhi

2008年の11月発売予定

Quest C++ ビジュアルラーニングコース
これがあれば、見て聞くだけで楽しみながらプログラミングテクニックが身につきます。
― 9,975円 ―

Y. Kanetkar Asang Dani

2008年の11月発売予定

Programmer's Guide to Web Application Security
Web System への侵入方法と原理を解説する事により、防止方法を理解することが出来る。
3,990

Vijay Mukhi

フォーラムの最新ポスト