Defense
Overview
セキュリティ対策関係をまとめたセクション。
暗号化
- 暗号化
- 復号する必要がある。
- ハッシュ化
- 復号する必要がない
SHA256
SHA-256(Secure Hash Algorithm 256-bit)は、データのハッシュ値(固定長の一意な値)を生成する暗号学的ハッシュ関数の一種。
- SHA256は256ビットのハッシュ値を生成する暗号学的ハッシュ関数
- データの整合性チェックや改ざん防止に使われる
- Dockerなどでもイメージのバージョン固定に使用される
- 元のデータを復元できない(不可逆)ため、セキュリティ用途に適している
SHA256 特徴
- 固定長(256ビット / 64文字)のハッシュ値を生成
どんな長さのデータでも、SHA256で処理すると64文字のハッシュ値が出力される。 - 元のデータを復元できない(不可逆)
SHA256は一方向性の関数で、ハッシュ値から元のデータを復元できない。 - 衝突耐性(異なる入力が同じハッシュ値にならない)
2つの異なるデータが同じハッシュ値になる確率は極めて低い。 - 改ざん検出に使われる
ファイルの整合性チェック(ダウンロードしたファイルが改ざんされていないか)
ブロックチェーン(Bitcoinなど)でのトランザクションの整合性確認。
echo -n "Hello, World!" | sha256sum
# 出力例
a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b53e2b7626c4e3a16
SHA256 用途
データの整合性チェック
例: ダウンロードしたファイルが改ざんされていないか検証
sha256sum filename
パスワードのハッシュ化
ユーザーのパスワードをデータベースへ保存する際にハッシュ化。
電子署名 / 証明書
SSL/TLS証明書でSHA256を使用。
ブロックチェーン(Bitcoinなど)
取引データをハッシュ化し、データの改ざんを防ぐ。
Dockerのイメージ識別
Dockerではsha256を使って特定のイメージのバージョンを固定する
例 node@sha256:<ハッシュ>
AES(Advanced Encryption Standard)
AESは通信データの暗号化でよく使われる暗号化技術。
経緯 米国の国立標準技術研究所(NIST)は1997年、当時標準的に使われていた共通鍵暗号のDES(DataEncryption Standard)の安全性の低下から、DESに代わる共通鍵暗号を募集した。 そのときに集まった応募案の1つ、「Rijndael(ラインダール)」は暗号の解かれにくさ(強度)だけでなく、処理負荷や計算の速さでも評価され、2000年に選定された。これが、AESになった。
GPG(GNU Privacy Guard)
Base64
暗号化ではないがここに記載。 Base64変換は一見暗号化のように見えますが、逆変換も簡単に行えるもので、暗号化の効果はまったくありません。単純に、表現の形式を変換しているだけ。 Basic認証をそのまま単体で使うと、誰でも読める状態でユーザー名とパスワードがインターネットを流れてしまう