e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
オンライン書籍; Microsoft .NET Web アプリケーションセキュリティ
第 8 章 : 暗号化(書籍のプレビュー)
Microsoft .NET Web アプリケーションセキュリティ
インデックス
インドの情報セキュリティの大家が書き下ろした最新のセキュリティ書籍の一部をオンライン書籍としてご紹介します。書籍の情報は、こちらをご覧ください。
RNGCryptoServiceProvider
c.cs
using System.Security.Cryptography;
using System;
using System.Text;
class zzz
{
public static void Main()
{
byte[] s = new byte[8];
RNGCryptoServiceProvider r;
r = new RNGCryptoServiceProvider();
r.GetBytes(s);
String ss = Convert.ToBase64String(s);
Console.WriteLine(ss);
}
}
コマンド プロンプト ウィンドウ
C:\encrypt>c
4cT8V7/3u40=
C:\encrypt>c
dzMzOGxWQ8w=
C:\encrypt>c
K7PUYa/VxzQ=
どのようなオペレーティング システム、データベース、プログラムも、パスワードをリテラル テキストで格納することはありません。パスワードをハッシュ値に変換し、この値をデータベースに格納します。パスワードをクリア テキストで格納しない理由は、簡単に悪用できるためです。一方、パスワードをハッシュ値として格納すると、パスワードを破ることは困難になりますが、不可能ではありません。
今日のインターネットでは、既知および不明のあらゆる言葉とその MD5 ハッシュを収めた DVD が出回っています。MD5 のハッシュ値をデータベースから取得してしまえば、プログラムで行う必要があるのは、パスワードのハッシュと DVD のハッシュを比較することだけです。一致するものが見つかると、パスワードは破られます。パスワードが破られるのは分単位のこともあれば日単位のこともあり、すべてはハッシュ値の作成に使用されたアルゴリズムしだいです。
この場合のより安全な方法は、何らかのランダムな値を生成し、固有のハッシュ値を計算する前にその値でパスワードを暗号化することです。このランダムな値は技術的にはソルト (salt) と呼ばれ、後でデータを復号化するときのために安全に保管しておく必要があります。
ランダムな値つまりソルトを生成するには、ランダム値ジェネレータ サービス プロバイダ クラス、RNGCryptoServiceProvider を使用します。このクラスは、8 バイトの空の配列を受け取り、そこにランダムな値を設定します。GetBytes 関数は、ランダムなバイトを配列に追加します。表示の際は、それを Base64 文字列にエンコードしてから表示しています。プログラムでは、実行するたびに異なるランダム値が表示されます。
ランダム値ジェネレータはインテリジェントに機能します。割り当てられた配列のサイズを検査し、それに従って長さに合ったランダム値を生成します。



