- HOME >
- 管理人
管理人
SEとして働く「分かる君」がつ運営するサイトです。 ITの難しい用語や、仕事で感じた事などを中心に"わかりやすさ"を意識して記事にしています。少しでも共感や参考にしていただける人がいたら嬉しいです。
TCO(Total Cost of Ownership) TCO(Total Cost of Ownership)とは、システム制作に必要となる総コスト(システム導入から運用及び維持・管理までを含めた費用の総額)のことです。 システムを制作する上で必要なコストには「初期コスト」と「運用コスト」などがあります。 初期コストとは、システム制作や導入時に必要なハードウェア(パソコンなど)やソフトウェアなど。運用コストとは、システム管理者の人件費やメンテンナンス費用、消耗品の交換非など、また電気代なども含みます。 ...
バスタブ曲線 バスタブ曲線(故障率曲線)とは、機械や装置の経過時間と故障率の変化をグラフで表現したものです。お風呂の浴槽(バスタブ)のような形になることからバスタブ曲線と呼ばれています。 上記のグラフはバスタブ曲線は例です。縦軸を故障率、横軸を経過時間とします。 バスタブのような形の曲線は、はじめは故障率が高く徐々に減る期間「初期故障期」、故障率が安定している期間「偶発故障期」、故障率が徐々に増えてくる期間「摩耗故障期」の3つの期間に分けられます。 初期故障期 製品の導入初期は、設計や製造上 ...
RASIS(レイシス / ラシス) RASISとは、Reliability(信頼性)、Availability(可用性)、Serviceability(保守性)、Integrity(保全性)、Security(安全性)の代表的な5つの指標の頭文字を並べたものであり、システムの信頼性を評価する概念です。 Reliability(信頼性) Reliability(信頼性)とは、障害や不具合による故障が起きにくい安定したシステムであることを表します。 代表的な指標として、システムが安定稼働し続ける平均時間である ...
フェイルオーバー(failover) フェイルオーバー(フェールオーバー)とは、稼働中の主系システムに障害が発生した際に、自動的に待機系のシステムに切り替わる仕組みのことです。 システムを運用する際、1つのサーバなどで運用していると そのサーバに障害が発生した場合、システムが完全に停止してしまう危険性があります。そのため、予備のサーバを準備しておき、障害発生時に主系となるサーバが正常に稼働できない場合は、予備のサーバに切り替えることができます。 フェイルオーバーは、主系と待機系の2つのサーバを用意しておき ...
フォールトアボイダンス(fault avoidance) フォールトアボイダンスとは、信頼性設計の一つでなるべく障害や故障を発生させないようにする考え方です。 信頼性設計には「壊れることを前提」としている設計が多く、故障しても機能を停止することなく動作させる「フォールトトレランス」、故障時は安全性を確保した状態で機能を停止させる「フェールセーフ」、故障時には被害を最小限に抑え縮退運転で動作させる「フェールソフト」などがあります。 フォールトアボイダンスは「壊れることを前提」としている上記のような設計・思想 ...
フォールトトレランス(fault tolerance) フォールトトレランスの設計・思想 フォールトトレランスとは、機械やシステムの一部に問題が発生しても安全な状態を維持して動作するように制御する設計手法です。 機械やシステムは故障しないのが理想的ですが、老朽化や事故などでいつかは故障する可能性があります。そこで「故障しても耐える」という考え方がフォールトトレランスです。 例えば、自動車のランフラットタイヤ。(ランフラットタイヤとはタイヤの空気圧がゼロになっても、一定距離を走行できる)これは パンクが発生 ...
フールプルーフ(foolproof) フールプルーフとは、信頼性設計の一つで利用者が操作や取り扱い方法を誤っても危険が生じないようにする設計・思想です。 電化製品のような機器には、通常取り扱い説明書が存在しています。取り扱い説明書通りに操作していれば、誤操作は基本的には発生しません。 しかし「人は間違えることがある」「不慣れな人が扱うことがある」「そもそも取り扱い説明書を読まない人も多い」など、フールプルーフ設計は、間違えた使い方をすることを前提とし、意図しない使い方をしても故障しない、危険が生じないよう ...
フェールソフト(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 ...