メインコンテンツまでスキップ

Defense

Overview

セキュリティ対策関係をまとめたセクション。

暗号化

とほほの暗号化入門
暗号化初心者

  • 暗号化
    • 復号する必要がある。
  • ハッシュ化
    • 復号する必要がない

SHA256

SHA-256(Secure Hash Algorithm 256-bit)は、データのハッシュ値(固定長の一意な値)を生成する暗号学的ハッシュ関数の一種。

  • SHA256は256ビットのハッシュ値を生成する暗号学的ハッシュ関数
  • データの整合性チェックや改ざん防止に使われる
  • Dockerなどでもイメージのバージョン固定に使用される
  • 元のデータを復元できない(不可逆)ため、セキュリティ用途に適している

SHA256 特徴

  1. 固定長(256ビット / 64文字)のハッシュ値を生成
    どんな長さのデータでも、SHA256で処理すると64文字のハッシュ値が出力される。
  2. 元のデータを復元できない(不可逆)
    SHA256は一方向性の関数で、ハッシュ値から元のデータを復元できない。
  3. 衝突耐性(異なる入力が同じハッシュ値にならない)
    2つの異なるデータが同じハッシュ値になる確率は極めて低い。
  4. 改ざん検出に使われる
    ファイルの整合性チェック(ダウンロードしたファイルが改ざんされていないか)
    ブロックチェーン(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)

参考URL

Base64

暗号化ではないがここに記載。 Base64変換は一見暗号化のように見えますが、逆変換も簡単に行えるもので、暗号化の効果はまったくありません。単純に、表現の形式を変換しているだけ。 Basic認証をそのまま単体で使うと、誰でも読める状態でユーザー名とパスワードがインターネットを流れてしまう