- HOME >
- 管理人
管理人
SEとして働く管理人「まつ」がつぶやく個人運営サイトになります。 ITの難しい用語や、仕事で感じた事などを中心に"わかりやすさ"を意識して記事にしています。少しでも共感や参考にしていただける人がいたら嬉しいです。
フェールソフト(fail soft) フェールソフト(フェイルソフト)とは、信頼性設計の一つで機械やシステムが故障した時、システム全体を停止するのではなく、故障個所を切り離すなど被害を最小限に抑え、システムの継続を図る設計手法です。 機械やシステムは故障しないのが理想的ですが、老朽化や事故などでいつかは故障する可能性があります。そこで、機械やシステムはいつかは故障するということを前提とし、故障時は「被害を最小限に抑え縮退運転で動作させる」という設計がフェールソフトの考え方です。 これに対して ...
フェールセーフ(fail safe) フェールセーフ(フェイルセーフ、フェイルセイフ)とは、信頼性設計の一つで機械やシステムなどが故障した時、常に安全性を確保する方向で壊れるように制御する設計手法です。 機械やシステムは故障しないのが理想的ですが、老朽化や事故などでいつかは故障する可能性があります。そこで、機械やシステムはいつかは故障するということを前提とし、故障時は「安全性を最優先」とし被害を最小限に抑えるための設計がフェースセーフの考え方です。 これに対して、故障時は故障個所を切り離すな ...
稼働率の求め方 稼働率とは 稼働率とは、システムが正常に稼働している時間の割合を示すものであり、稼働率が100%に近い程、正常稼働している時間は長く「品質が高いシステム」ということです。 稼働率は次の式で求めることができます。 それでは、次の図を例に稼働率を求めていきます。 「正常稼働100時間」 → 「故障し修理(4時間)」→ 「正常稼働60時間」 → 「故障し修理(2時間)」→ 「正常稼働80時間」 → 「故障し修理(6時間)」とシステムが稼働しているとします。 MTBF(平均故障間隔)の求め方 MT ...
MTTR(Mean Time To Recovery) 平均修理時間とは 平均修理時間(MTTR)とは、システムが故障してから完了するまでの時間(修理の平均時間)のことです。 つまり故障すると、平均修理時間くらいは修理にかかるので、その間はシステムが稼働できないことを示しています。 平均修理時間は、修理時間の合計と故障回数から求めることができ、平均修理時間が小さいほど可用性が高いシステムといえます。 平均修理時間は、英語の Mean Time To Recoveryから「MTTR」と略されて呼ばれています ...
MTBF(Mean Time Between Failure) 平均故障間隔とは 平均故障間隔(MTBF)とは、機械や情報システムなどにおける信頼性を表す指数で、平均故障間隔という名前の通り稼働を開始してから次に故障するまでどのくらいの時間稼働できるかを表す数値です。 平均故障間隔は、連続稼働できる時間の平均値であり、平均故障間隔が大きいほど信頼性の高いシステムといえます。 平均故障間隔は、英語のMean Time Between Failureから「MTBF」と略されて呼ばれています。 平均故障間隔の計 ...
PHPのcrypt関数でソルト付きのパスワードハッシュを生成する方法 crypt関数を使用することで、ソルトやストレッチングを実施したパスワードのハッシュ値を生成することができます。 crypt関数の引数は次の通りです。戻り値はハッシュ値の文字列が返却されます。 引数 型 説明 第一引数 string パスワードの文字列 第二引数 string ソルト(任意)第二引数を省略するとソルトやストレッチングが実装されない。PHP 5.6 以降では第二引数を省略するとE_NOTICE が発生。 cr ...
ストレッチング ストレッチングとは、パスワードのハッシュ値を総当り攻撃(ブルートフォース攻撃)などから推測されないようにするために、ハッシュ値への計算を数千回~数万回繰り返し行うことです。 ストレッチングの必要性 コンピュータの進化は早く、計算する処理速度も向上しているため、弱いパスワードや文字数が長くないパスワードなどは、総当り攻撃(ブルートフォース攻撃)などで十分な時間をかければ元のデータを推測されてしまう危険性があります。 この時間を事実上不可能といえる時間にするためにストレッチングを実施します。 ...
PHPで安全なパスワードハッシュを生成する方法 パスワードを安全に管理するためには、ソルトとストレッチングを用いてハッシュ値(暗号学的ハッシュ関数)としてデータベースに保存しておく必要があります。 このソルトとストレッチングを実施してハッシュ値を生成してくれるパスワードハッシュアルゴリズムには、「bcrypt」などが存在します。 そして、PHPには「password_hash」というパスワードハッシュを生成する関数が用意されています。 本記事では「password_hash」関数を利用した安全なパスワード ...
bcryptとは bcryptとは、Blowfish暗号を基盤としたパスワードハッシュアルゴリズム(暗号学的ハッシュ関数)です。 一般的にパスワードは、元に戻すことが困難である「一方向性関数」の性質を持つハッシュ関数を用いてハッシュ値で保管します。 次の図は、パスワードを「平文」「暗号文」「ハッシュ値」で保管していた際のイメージ図です。 「平文」は漏洩したらパスワードが盗まれてしまいます。 「暗号文」は暗号化されていますが「暗号文」を復号する「鍵」があればパスワードを解読できます。パスワードが情報漏洩した ...
ソルト(Salt) ソルトとは ソルト(Salt)とは、パスワードなどをハッシュ値へと変換する際に、パスワードに付与するランダムな文字列のことです。 仮にハッシュ値で保存しているパスワードが外部に漏洩した場合、元に戻すことが困難であるハッシュ値でも、弱いパスワード(推測しやすい文字や短いパスワードなど)であれば、十分な時間をかければ元のデータを推測されてしまう危険性があります。 そこで、ソルトと呼ばれるランダムな文字列をパスワードに連結してから、ハッシュ値へと変換します。 ソルトを付与することで、レインボ ...
パスワード管理の仕組み パスワードを安全に管理するためには、ソルトとストレッチングを用いてハッシュ値(暗号学的ハッシュ関数)としてデータベースに保存しておく必要があります。 本記事では パスワードはどのように管理されているのか? なぜパスワードはハッシュ値で保管する必要があるのか? ハッシュ値のパスワードを狙うサイバー攻撃とは? なぜソルトやストレッチングが必要なのか? について図解で分かりやすく解説していきます。 パスワードはどのように管理されているのか? 【アカウント登録】パスワードの入力 パスワード ...
レインボーテーブルとは レインボーテーブル (rainbow table)とは、ハッシュ値から元のデータ(平文)を導き出すための手法で、特殊なテーブルを使用します。 レインボーテーブルは不正入手したハッシュ値(パスワード)の解析などに利用されており、サイバー攻撃の一種です。 ハッシュ関数とは ハッシュ関数とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼び、ハッシュ値から元の入 ...
PHPでハッシュ値(SHA1/SHA2/SHA3/MD5)を生成する方法 ハッシュ関数とは 代表的なハッシュ関数には次のような種類があります。 名称 説明 MD5 Message Digest 5の略で128ビット(16進数では32桁)のハッシュ値を生成するハッシュ関数。MD5は脆弱性が見つかっている古いハッシュ関数のため、セキュリティ用途での使用は推奨されていない。 SHA-1 ecure Hash Algorithm 1の略で160ビット(16進数では40桁)のハッシュ値を生成するハッシュ関数。SHA ...
Java標準のMessageDigestクラスを使用する方法 Javaでハッシュ値を生成するには、Java標準機能であるMessageDigestクラスを使用することで生成することができます。 MD5のハッシュ値を生成 MD5とは、Message Digest 5の略で128ビット(16進数では32桁)のハッシュ値を生成するハッシュ関数です。MD5は脆弱性が見つかっている古いハッシュ関数のため、セキュリティ用途での使用は推奨されていません。 MessageDigestクラスでMD5のハッシュ値を生成する実 ...
MD5(Message Digest 5) MD5とは MD5(エムディーファイブ)とは、Message Digest 5の略でハッシュ関数の一つです。128ビット(16進数では32桁)のハッシュ値を生成します。 1991年にロナルド・リベストによって開発されたハッシュ関数で、前規格であるMD4の安全性を向上させた規格です。 上記図はMD5を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 MD5の脆弱性 ハッシュ関数は、入力データが同じであれば、必ず ...
SHA-1(Secure Hash Algorithm 1) SHA-1とは SHA-1(シャーワン)とは Secure Hash Algorithm 1の略で、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず決まった長さの文字列を出力するハッシュ関数の一つです。SHA-1は、160ビット(16進数では40桁)のハッシュ値を生成します。 上記図はSHA-1を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、入力データが ...
SHA-2(Secure Hash Algorighm 2) SHA-2とは SHA-2(Secure Hash Algorighm 2)とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力するハッシュ関数の標準規格の一つで、前規格であるSHA-1(Secure Hash Algorighm 1)から多くの改良が加えられています。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。ハッシュ関数は、入力データが同じであれば、必ず同じハッシュ値を ...
ハッシュ関数とは ハッシュ関数とは、入力データを一定の手順で計算し、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、主に検索の高速化やデータ比較処理の高速化、改ざんの検出、パスワードの管理などで利用されています。 例えば、膨大なサイズのファイルが2つあるとします。この2つのファイルが同一の内容であるか比較するとき、端から順にすべてのデータを比較していると時間がかかります。 そこで、ハッシュ関 ...
暗号化と復号 暗号化とは、通信データを第三者に見られないように、一定の計算手順に基いて元の状態が容易に推定できない形に変換すること、そして復号とは、暗号化したデータを元に戻すことです。 通信を行う際、何も加工しないそのままのデータを「平文」、そして「平文」を暗号化したデータを「暗号文」といいます。 上記図は暗号化と復号のイメージ図です。 「平文」のままインターネット上で通信を行うと、仮に通信内容が盗聴されていた場合、情報漏洩に繋がる危険性があります。そこで、第三者に見られても容易に解析できないような形に変 ...
JavaのDateクラスで日付の比較 JavaのDateクラスは、日付型のクラスです。 Dateクラスには、日付を比較するメソッド(compareTo/before/after)が用意されているため、かんたんに比較できます。 compareToメソッドの使い方 Dateクラスに用意されている「compareTo」メソッドで、日付の比較ができます。 compareToメソッドの戻り値は次のとおりです。 戻り値説明0メソッドの引数と同値-1メソッドの引数より小さい1メソッドの引数より大きい それでは、「com ...