マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

を参照。

ハッシュ化

ハッシュ化とは、「ハッシュ関数」を用いて指定のメッセージの「ハッシュ値」を求める行為である。

ハッシュ値

「メッセージ ダイジェスト」、あるいは単に「ダイジェスト」と呼ぶことがある。
認証アルゴリズムの「ダイジェスト認証」や、「チャレンジ&レスポンス認証」で使用されている。

目的によってはハッシュ値のことを「フィンガープリント」、「チェックサム」とも呼ぶ。

ハッシュ関数

ココでは、正確には「暗号学的」ハッシュ関数について。

など、様々に利用されている。

などの用途にも利用されている 。

暗号学的ハッシュ関数

安全性

キーなし方式・あり方式

「暗号学的ハッシュ関数」には、

「暗号学的ハッシュ関数」自体は不可逆であるものの、
「キーなし方式」の場合、辞書攻撃 により、容易にメッセージが割れる可能性がある。
このため、辞書攻撃を防ぐ場合、「キーあり方式」を採用する。

衝突耐性

「暗号学的ハッシュ関数」を使用する際は、
最新の「ハッシュの衝突耐性」の情報を入手する事が推奨される。
これは、例えば、2010/5現在、MD5、SHA-0、SHA-1について
「強衝突耐性」が突破される脆弱性が発見されているためである。

ただし、「強衝突耐性」が突破されても、直ちに、これらの「暗号学的ハッシュ関数」を用いている
暗号化通信が盗聴・改竄されたり、電子署名の有効性が無くなったりすると言うわけではない。
これは、将来的な「弱衝突耐性」の突破を示唆し、「弱衝突耐性」が突破された場合は、
暗号化通信や電子署名の無改竄性を証明できなくなる。

.NETの暗号学的ハッシュ関数のプロバイダ

キーなし方式

キーあり方式

暗号化

暗号化の方式には、大きく分けて、

の2つの方式がある。

以下の表に「秘密鍵・暗号化」と、「公開鍵・暗号化」との比較を示す。

なお、両者のメリット・デメリットを考慮し、両者を組み合わせたハイブリッドの方式もある。
これについては、「ハイブリッド・暗号化方式」の項にて説明する。

暗号化方式の比較

秘密鍵・暗号化

概要

アルゴリズム

.NETの秘密鍵・暗号化方式のプロバイダ

公開鍵・暗号化

処理シーケンス

アルゴリズム

.NETの公開鍵・暗号化方式のプロバイダ

.NETにて提供されるRSACryptoServiceProvider?を使用した場合、

なお、リプレイ攻撃とは、ユーザがログインするときにネットワークを流れる電文を盗聴し、
これを自分の送信する電文として利用することでシステムへ不正にログインしようとする行為を指す。

ハイブリッド・暗号化(キー交換)

秘密鍵・暗号化公開鍵・暗号化の両者のメリットとデメリットを考慮し、
組み合わせた「ハイブリッド・暗号化方式」もある。
一般的には、アリスとボブ - Wikipediaで知られている。

処理シーケンス

アルゴリズム

.NETの公開鍵・暗号化方式のプロバイダ

デジタル署名

概要

「デジタル署名」は、元となるメッセージのハッシュを秘密鍵で暗号化したものである。

送信元が、この「デジタル署名」を、元となるメッセージと同梱して送付することにより、
送信先は、元となるメッセージの正当性を(= 改ざんされていない事を)検証できる。

処理シーケンス

アルゴリズム

.NETのデジタル署名のプロバイダ

「デジタル署名」では、秘密鍵・公開鍵のキー・ペアを、プロバイダを使用して生成する必要がある。

認証

メッセージ認証符号(MAC)

概要

処理シーケンス

https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E8%AA%8D%E8%A8%BC%E7%AC%A6%E5%8F%B7#/media/File:MAC.svg

例:SSH2のトランスポート層のデータ一貫性を確保するためのMAC用の共通鍵を、
ハイブリッド・暗号化ECDHで生成された共通鍵からハッシュ関数によって生成される。

アルゴリズム

APIインターフェイス

.NETのメッセージ認証符号(MAC)のプロバイダ

認証付き暗号(AEAD)

概要

処理シーケンス

アルゴリズム

6種類の異なるモードが、
ISO/IEC 19772:2009 によって標準化され、
さらにNISTによって開発がすすめられた。

APIインターフェイス

AEADの典型的な APIインターフェイス は次のような関数を提供する:

.NETの認証付き暗号のプロバイダ

その他

パスワードを格納する方式

WebサイトのForms認証などを実装する場合、ハッシュのみ保管が一般的。

ハッシュのみ保管

パスワードのハッシュ値のみ保存する方式。

ベスト・プラクティス

暗号化して保管

昨今、あまり選択されない方式。

パスワードを暗号化して保存する方式としては、「秘密鍵・暗号化」と「公開鍵・暗号化」があるが、
ユーザは不特定多数でなく、サーバ機能上で暗号化・復号化を行うだけであるため、「公開鍵・暗号化」を使用する。

ベスト・プラクティス

ベストプラクティスは、後者。

ネットワークへパスワードを流す方式

HTTPS

一般的にはコレ。

チャレンジ&レスポンス

NTLMCHAPなどで採用されている方式。

を使用してパスワードをハッシュ化してネットワーク上に流す。

公開鍵・暗号化

ネットワークへ認証チケットを流す方式

OpenID ConnectにおけるJWTの用例などが参考になる。

秘密鍵・暗号化の詳細

ストリーム暗号

秘密鍵・暗号化で使用される一方式

概要

詳細

鍵ストリーム(擬似乱数列)

アルゴリズム

ブロック暗号

秘密鍵・暗号化で使用される一方式

概要

詳細

アルゴリズム

処理シーケンス

暗号化モード(暗号利用モード)

パディングモード(パディング方式)

初期化ベクトル

初期化ベクトル(IV: Initialization Vector)

公開鍵・暗号化の詳細

計算の困難性を安全性の根拠とする暗号。

RSA

DSA

ECC

ECDSA

ECDH

参考

暗号についての概要や体系や、各種の「暗号化アルゴリズム」の詳細については、
説明しないので、これについては、下記サイトや、他の情報源を参照のこと。

RFC

RFC4949 Internet Security Glossary, Version 2

Wikipedia

ハッシュ関数

共通鍵暗号

公開鍵暗号

その他

Qiita

デジタル証明書

デジタル証明書」の検証は、「送信側の公開鍵」を拠り所にしていると言えるが、提供される「送信側の公開鍵」の出所が、正規の出所か、検証できない(場合がある)という問題がある。
このため、この問題を解決するための、「認証局」と呼ばれる、信頼のおける第三者が発行した「デジタル証明書」を使用して「送信側の公開鍵」が信頼できるものであるかを検証する機構がある。

パスワードの保存

ソルト、ストレッチング

ハッシュとソルト、ストレッチングを正しく理解する:本当は怖いパスワードの話 - @IT
http://www.atmarkit.co.jp/ait/articles/1110/06/news154.html

パスワード・クラック

暗号の年問題

なお、各種の「暗号化アルゴリズム」の「安全性」の問題については、
日々、調査・研究が進められていため、NIST やCRYPTREC などから
公にアナウンスされる情報源を確認のこと。

.NETの署名・暗号化アルゴリズム

.NET Framework、.NET Coreのライブラリで提供される署名・暗号化アルゴリズム


Tags: :IT国際標準, :セキュリティ, :暗号化


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS