Help us understand the problem. What is going on with this article?

暗号技術についてのまとめ

More than 3 years have passed since last update.

これはあくまで書籍を元に暗号技術についての知識をまとめたものです。

しっかりと学ぶ方は書籍(http://www.hyuki.com/cr/)
などを参考にしてください。

既存知識を持っている方の整理のために使用していただければと思います。

3つの暗号(cryptography)技術  

共通鍵暗号(対称暗号:symmetric cryptography)

特徴

・暗号化(encrypt)と復号化(decrypt)に同じ鍵を用いる
・メッセージの機密性(confidentiality)を守るために用いられる
・平文(plaintext)を暗号文(ciphertext)にする

DES(Data Encryption Standard)
 ファイステル・ネットワーク(Feistl cipher)を使用したもの。ブルート・フォース・アタック(brute-force attack)で破られる。3DESなども用いられる

AES(Advanced Encryption Standard)
 2000年:Rijndael(ラインダール)という共通鍵暗号アルゴリズムがNIST(National Institute of Standards and Technology)に集まった公募から選ばれた

問題点

・鍵配送問題(key distribution problem)
 復号化するための鍵を受信者へ配送しなければいけないこと

公開鍵暗号(public-key cryptography)

特徴

・暗号化と復号化に異なる鍵を用いる
 送信者の公開鍵を受信者に送り、その鍵を使って暗号化された文を送信者がプライベート鍵で復号化する
・鍵配送問題を解決できる
(その他の解決法:鍵の事前共有、鍵配布センター、Diffie-Hellman鍵交換(盗聴者に読まれても構わない情報を交換し、鍵を作り出す方法))

RSA
 非常に大きな数の素因数分解を利用した暗号

問題点

・共通鍵暗号と比較すると速度が非常に遅い
・man-in-the-middle攻撃によってなりすまし(spoofing)をされる危険性がある
→デジタル署名を用いた公開鍵の認証が必要

ハイブリッド暗号

特徴

・共通鍵暗号+公開鍵暗号したもの(公開鍵暗号の速度の遅さとman-in-the-middle攻撃への対応)
 メッセージは共通鍵暗号、セッション鍵は公開鍵暗号で暗号化する。
・セッション鍵は擬似乱数生成器で生成されるもの

→セッション鍵は共通鍵暗号にとっては鍵となるが、公開鍵暗号にとっては平文である。

その他

・使い捨てパッド(one-time pad):絶対に解読されない暗号アルゴリズム
・ソーシャルエンジニアリング:人間というセキュリティホールを突く攻撃
・メッセージの存在を隠すのがステガノグラフィ(steganography):(はがないの部員募集とか←)
・秘密の暗号アルゴリズムを使うよりも公開されていて強いアルゴリズムを使うべき
・シーザー暗号(Caesar cipher): 文字をシフトさせる暗号化。ブルート・フォース・アタックで破られる
・単一換字暗号(simple substitution cipher): 一文字ずつ別の文字に対応。鍵空間(key-space)が広く、ブルート・フォース・アタックには耐えられるが、頻度分析によって破られる

認証(Authentication)技術

一方向ハッシュ関数(one-way hash function)

特徴

・長いメッセージを短いハッシュ値に変換する
・メッセージの正真性(完全性:integrity)の確認
・一方向性を持っている(ハッシュ値からメッセージを逆算できない)
・ハッシュ値の衝突耐性(collision resistance)は2種類
 弱衝突耐性:そのハッシュ値を持つ別のメッセージを見つけることが非常に困難
 強衝突耐性:ハッシュ値が一致する二つのメッセージを見つけることが非常に困難
・メッセージ認証コード・デジタル署名・擬似乱数生成器を構成する要素技術

SHA-1: 脆弱性がすでに見つかっている
SHA-2: SHA-256, SHA-512, etc.
SHA-3: KECCAK

問題点

・改竄を検出できるが、なりすましを検出できない

メッセージ認証コード(MAC: message authentication code)

特徴

・共通鍵暗号+一方向ハッシュ関数
・通信相手からのメッセージが改竄されていないか確かめる
・メッセージの正真性を検証し、認証を行う

HMAC
 一方向ハッシュ関数を用いてメッセージ認証コードを構成する

問題点

・鍵配送問題
・通信相手との認証しかできない(第三者の認証、通信相手に否認防止はできない)
・再生攻撃

デジタル署名(degital signature)

特徴

・公開鍵暗号技術を逆に使って認証
 プライベート鍵で署名を作成し、公開鍵で署名の検証をする。
・第三者に対してのメッセージ認証を行い、通信相手の否認防止を行うことができる
・鍵・初期化ベクトル・ノンスを作るために用いる
・なりすまし、改竄、否認(repudiation)の防止

問題点

・man-in-the-middle攻撃
・署名検証の公開鍵が本物の送信者の鍵であるのかどうか→証明書の必要性

証明書

特徴

・公開鍵の正しさを証明するもの。認証局(certification authority ; CA)が発行する
・公開鍵に対して認証局がデジタル署名を施したもの

PKI(Public Key Infrastructure): 公開鍵基盤
 利用者、認証局、リポジトリ間で証明書を発行する

乱数

特徴

・鍵、初期化ベクトル、ノンスを作るために用いる
・3つの性質
 無作為性:偏りがない

 予測不可能性:過去から予測できない
 再現不可能性:同じ数列を再現できない
(上から順に弱い擬似乱数、強い擬似乱数、真の乱数の条件)

 

擬似乱数生成器(pseudo random number generator; PRNG)
 予測不可能性を持つビット列を生成する技術。暗号や一方向ハッシュ関数などで構成。
 ※具体的な擬似乱数生成器は割愛します。

その他応用例

PGP(Pretty Good Privacy)
 暗号ソフトウェアの一種。
 使われている技術は
 ・共通鍵暗号
 ・公開鍵暗号
 ・デジタル署名
 ・一方向ハッシュ関数
 ・証明書
 ・圧縮
 ・テキストデータ

SSL/TLS(Secure Socket Layer/Transport Layer Security)
 暗号通信の方法。(https://)
 

まとめ

知識のまとめに書いたメモです。ど忘れしたときなどの参考になれば幸いです。

 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした