管理人

SEとして働く管理人「まつ」がつぶやく個人運営サイトになります。 ITの難しい用語や、仕事で感じた事などを中心に"わかりやすさ"を意識して記事にしています。少しでも共感や参考にしていただける人がいたら嬉しいです。

2024/4/11

稼働率の計算方法を図解で分かりやすく説明

稼働率の求め方 稼働率とは 稼働率とは、システムが正常に稼働している時間の割合を示すものであり、稼働率が100%に近い程、正常稼働している時間は長く「品質が高いシステム」ということです。 稼働率は次の式で求めることができます。 それでは、次の図を例に稼働率を求めていきます。 「正常稼働100時間」 → 「故障し修理(4時間)」→ 「正常稼働60時間」 → 「故障し修理(2時間)」→ 「正常稼働80時間」 → 「故障し修理(6時間)」とシステムが稼働しているとします。 MTBF(平均故障間隔)の求め方 MT ...

2022/12/25

平均修理時間(MTTR)とは

MTTR(Mean Time To Recovery) 平均修理時間とは 平均修理時間(MTTR)とは、システムが故障してから完了するまでの時間(修理の平均時間)のことです。 つまり故障すると、平均修理時間くらいは修理にかかるので、その間はシステムが稼働できないことを示しています。 平均修理時間は、修理時間の合計と故障回数から求めることができ、平均修理時間が小さいほど可用性が高いシステムといえます。 平均修理時間は、英語の Mean Time To Recoveryから「MTTR」と略されて呼ばれています ...

2022/12/25

平均故障間隔(MTBF)とは

MTBF(Mean Time Between Failure) 平均故障間隔とは 平均故障間隔(MTBF)とは、機械や情報システムなどにおける信頼性を表す指数で、平均故障間隔という名前の通り稼働を開始してから次に故障するまでどのくらいの時間稼働できるかを表す数値です。 平均故障間隔は、連続稼働できる時間の平均値であり、平均故障間隔が大きいほど信頼性の高いシステムといえます。 平均故障間隔は、英語のMean Time Between Failureから「MTBF」と略されて呼ばれています。 平均故障間隔の計 ...

2022/12/25

【PHP】crypt関数でソルト付きのパスワードハッシュを生成する

PHPのcrypt関数でソルト付きのパスワードハッシュを生成する方法 crypt関数を使用することで、ソルトやストレッチングを実施したパスワードのハッシュ値を生成することができます。 crypt関数の引数は次の通りです。戻り値はハッシュ値の文字列が返却されます。 引数 型 説明 第一引数 string パスワードの文字列 第二引数 string ソルト(任意)第二引数を省略するとソルトやストレッチングが実装されない。PHP 5.6 以降では第二引数を省略するとE_NOTICE が発生。   cr ...

2022/12/25

【パスワード】ストレッチングとは

ストレッチング ストレッチングとは、パスワードのハッシュ値を総当り攻撃(ブルートフォース攻撃)などから推測されないようにするために、ハッシュ値への計算を数千回~数万回繰り返し行うことです。 ストレッチングの必要性 コンピュータの進化は早く、計算する処理速度も向上しているため、弱いパスワードや文字数が長くないパスワードなどは、総当り攻撃(ブルートフォース攻撃)などで十分な時間をかければ元のデータを推測されてしまう危険性があります。 この時間を事実上不可能といえる時間にするためにストレッチングを実施します。 ...

2020/6/30

【bcrypt】PHPで安全なパスワードハッシュを生成する方法

PHPで安全なパスワードハッシュを生成する方法 パスワードを安全に管理するためには、ソルトとストレッチングを用いてハッシュ値(暗号学的ハッシュ関数)としてデータベースに保存しておく必要があります。 このソルトとストレッチングを実施してハッシュ値を生成してくれるパスワードハッシュアルゴリズムには、「bcrypt」などが存在します。 そして、PHPには「password_hash」というパスワードハッシュを生成する関数が用意されています。   本記事では「password_hash」関数を利用した安 ...

鍵

2022/12/25

【パスワード】bcryptとは

bcryptとは bcryptとは、Blowfish暗号を基盤としたパスワードハッシュアルゴリズム(暗号学的ハッシュ関数)です。 一般的にパスワードは、元に戻すことが困難である「一方向性関数」の性質を持つハッシュ関数を用いてハッシュ値で保管します。 次の図は、パスワードを「平文」「暗号文」「ハッシュ値」で保管していた際のイメージ図です。 「平文」は漏洩したらパスワードが盗まれてしまいます。 「暗号文」は暗号化されていますが「暗号文」を復号する「鍵」があればパスワードを解読できます。パスワードが情報漏洩した ...

ログイン

2022/12/25

【パスワード】ソルト(Salt)とは

ソルト(Salt) ソルトとは ソルト(Salt)とは、パスワードなどをハッシュ値へと変換する際に、パスワードに付与するランダムな文字列のことです。 仮にハッシュ値で保存しているパスワードが外部に漏洩した場合、元に戻すことが困難であるハッシュ値でも、弱いパスワード(推測しやすい文字や短いパスワードなど)であれば、十分な時間をかければ元のデータを推測されてしまう危険性があります。 そこで、ソルトと呼ばれるランダムな文字列をパスワードに連結してから、ハッシュ値へと変換します。 ソルトを付与することで、レインボ ...

2023/8/4

パスワード管理の仕組みを図解で分かりやすく説明

パスワード管理の仕組み パスワードを安全に管理するためには、ソルトとストレッチングを用いてハッシュ値(暗号学的ハッシュ関数)としてデータベースに保存しておく必要があります。 本記事では パスワードはどのように管理されているのか? なぜパスワードはハッシュ値で保管する必要があるのか? ハッシュ値のパスワードを狙うサイバー攻撃とは? なぜソルトやストレッチングが必要なのか? について図解で分かりやすく解説していきます。 パスワードはどのように管理されているのか? 【アカウント登録】パスワードの入力 パスワード ...

サイバー攻撃

2023/8/4

レインボーテーブルの仕組みを図解で分かりやすく解説

レインボーテーブルとは レインボーテーブル (rainbow table)とは、ハッシュ値から元のデータ(平文)を導き出すための手法で、特殊なテーブルを使用します。 レインボーテーブルは不正入手したハッシュ値(パスワード)の解析などに利用されており、サイバー攻撃の一種です。 ハッシュ関数とは ハッシュ関数とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼び、ハッシュ値から元の入 ...

2022/12/25

PHPでハッシュ値(SHA1/SHA2/SHA3/MD5)を生成する

PHPでハッシュ値(SHA1/SHA2/SHA3/MD5)を生成する方法 ハッシュ関数とは 代表的なハッシュ関数には次のような種類があります。 名称 説明 MD5 Message Digest 5の略で128ビット(16進数では32桁)のハッシュ値を生成するハッシュ関数。MD5は脆弱性が見つかっている古いハッシュ関数のため、セキュリティ用途での使用は推奨されていない。 SHA-1 ecure Hash Algorithm 1の略で160ビット(16進数では40桁)のハッシュ値を生成するハッシュ関数。SHA ...

2022/12/25

Javaでハッシュ値(SHA1/SHA2/SHA3/MD5)を生成する

Java標準のMessageDigestクラスを使用する方法 Javaでハッシュ値を生成するには、Java標準機能であるMessageDigestクラスを使用することで生成することができます。 MD5のハッシュ値を生成 MD5とは、Message Digest 5の略で128ビット(16進数では32桁)のハッシュ値を生成するハッシュ関数です。MD5は脆弱性が見つかっている古いハッシュ関数のため、セキュリティ用途での使用は推奨されていません。 MessageDigestクラスでMD5のハッシュ値を生成する実 ...

2022/12/25

MD5(Message Digest 5)とは

MD5(Message Digest 5) MD5とは MD5(エムディーファイブ)とは、Message Digest 5の略でハッシュ関数の一つです。128ビット(16進数では32桁)のハッシュ値を生成します。 1991年にロナルド・リベストによって開発されたハッシュ関数で、前規格であるMD4の安全性を向上させた規格です。 上記図はMD5を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 MD5の脆弱性 ハッシュ関数は、入力データが同じであれば、必ず ...

2022/12/25

SHA-1とは

SHA-1(Secure Hash Algorithm 1) SHA-1とは SHA-1(シャーワン)とは Secure Hash Algorithm 1の略で、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず決まった長さの文字列を出力するハッシュ関数の一つです。SHA-1は、160ビット(16進数では40桁)のハッシュ値を生成します。 上記図はSHA-1を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、入力データが ...

アルゴリズム

2022/12/25

SHA-2とは

SHA-2(Secure Hash Algorighm 2) SHA-2とは SHA-2(Secure Hash Algorighm 2)とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力するハッシュ関数の標準規格の一つで、前規格であるSHA-1(Secure Hash Algorighm 1)から多くの改良が加えられています。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。ハッシュ関数は、入力データが同じであれば、必ず同じハッシュ値を ...

関数

2023/9/9

ハッシュ関数の仕組みを図解で分かりやすく解説

ハッシュ関数とは ハッシュ関数とは、入力データを一定の手順で計算し、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、主に検索の高速化やデータ比較処理の高速化、改ざんの検出、パスワードの管理などで利用されています。 例えば、膨大なサイズのファイルが2つあるとします。この2つのファイルが同一の内容であるか比較するとき、端から順にすべてのデータを比較していると時間がかかります。 そこで、ハッシュ関 ...

暗号

2023/9/16

暗号化と復号の仕組みを図解で分かりやすく解説

暗号化と復号 暗号化とは、通信データを第三者に見られないように、一定の計算手順に基いて元の状態が容易に推定できない形に変換すること、そして復号とは、暗号化したデータを元に戻すことです。 通信を行う際、何も加工しないそのままのデータを「平文」、そして「平文」を暗号化したデータを「暗号文」といいます。 上記図は暗号化と復号のイメージ図です。 「平文」のままインターネット上で通信を行うと、仮に通信内容が盗聴されていた場合、情報漏洩に繋がる危険性があります。そこで、第三者に見られても容易に解析できないような形に変 ...

開発

2022/12/25

JavaのDateクラスで日付の比較をする方法

JavaのDateクラスで日付の比較をする方法 DateクラスのcompareToメソッド Dateクラスに用意されているcompareToメソッドで日付の比較をすることができます。 具体的な使い方は次の通りです。 package main; import java.util.Calendar; import java.util.Date; public class DateComparison { public static void main(String[] args) { // 2020年4月1日 ...

暗号

2023/3/27

RSAとは

RSA(Rivest-Shamir-Adleman cryptosystem) RSAとは RSA(Rivest-Shamir-Adleman cryptosystem)とは、桁数が大きい合成数の素因数分解を実用的な時間内に実行することは困難であることを安全性の根拠とした公開鍵暗号の一つです。 1977年に発明され、発明者である「ロナルド・リベスト」「アディ・シャミア」「レオナルド・エーデルマン」の原語表記の頭文字をつなげてRSAと呼ばれています。 RSAは鍵のペア(公開鍵と秘密鍵)を作成して一方で暗号化 ...

2023/3/27

DES(Data Encryption Standard)とは

DES(Data Encryption Standard) DESとは DES(Data Encryption Standard)とは、1977年にアメリカ連邦政府標準の暗号方式として採用された共通鍵暗号アリゴリズムの一つです。 共通鍵暗号の特徴は「暗号化」と「復号」に使用する鍵が同じという点です。 上記は共通鍵暗号のイメージ図です。送信側で「共通の鍵」を使い「平文」を「暗号文」に暗号化して送信、受け取った受信側でも同じ「共通の鍵」を使い「暗号文」を「平文」復号しています。 DESの暗号化アルゴリズム D ...