現代暗号の基礎知識
暗号のイメージ
https://gyazo.com/d25af3d731fa184e25e2c1564af25c95
オススメ書籍
この記事は例によって現代のインターネットやコンピューターで使われる暗号に関する基礎的な知識の全体像を可能な限り薄く広くまとめているだけなので、詳しくは以下の本を読んでください
https://gyazo.com/f6fb15d4de3b31ed2414fadd99eca7cd
https://gyazo.com/7cb07fe8d80adad28b7819d373f874c5
https://gyazo.com/dcfcabc89f1c28a534d836cd41a1f809
決められた数だけ文字をずらす方式
code:example 3文字ずらす場合
平文 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w |...
暗号文| d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |...
neet
-> qhhw
文字の順番を変えて暗号文を作る方式
ランダムに変えると元に戻せなくなるので、通常はなんらかの道具や決められた規則を用いる
https://gyazo.com/eb4bc02754ded4429eb2954af0b14f19
https://gyazo.com/e27c393865b92d8722dced3c359b09b7
暗号化と復号に同一の鍵を用いる暗号方式
換字式暗号や転置式暗号もここに含まれる
暗号化と復号に別々の鍵を用い、暗号化の鍵を公開できるようにした暗号方式
任意の長さの鍵と平文に対して、1ビットごとに排他的論理和を適用する暗号方式 code:example
平文: 10011100
鍵: 10101010
-> 暗号文: 001101101
鍵を秘密にしたまま安全に配送できるなら、平文をそのまま配送したほうが早いのであまり使われない
バーナム暗号の鍵を擬似乱数生成器で生成するようにしたバージョン
同じ種と同じ擬似乱数生成アルゴリズムなら同じ鍵が出てくる
平文を何文字かずつに区切って、区切られた文字列ごとに暗号化する
鍵は1つの鍵から複数の副鍵を生成して用いる
鍵生成器と鍵が同じなら同じ副鍵ができる
ブロック暗号やストリーム暗号などで必要となるような性能を持つ擬似乱数生成器のこと
具体的にどういう性能を持っているかは暗号の種類によって違う
任意の文字列からある長さの擬似乱数を求めるアルゴリズムのこと
擬似乱数から元の文字列を求めることは(事実上)不可能
擬似乱数から元の文字列を求めることは(事実上)不可能であるという特性のこと
弱衝突耐性ともいう
ある文字列から作られた擬似乱数から、その擬似乱数を作ることができる別の文字列を求めることが(事実上)不可能であるという特性のこと
同じ擬似乱数を作るような文字列の組を見つけることは事実上不可能であるという特性のこと
本人自身に本人であることを確認させる認証方式
パスワード、秘密の質問等はこれにあたる
本人確認の前に、相手側が正しく自分が意図した相手なのか確認する方式
パスワードを入力した先がフィッシング詐欺のサイトだったらパスワードの意味がないので
デジタル証明書等はこれにあたる
相互認証でない認証方式のこと
2つの認証をもってして本人と認める形式のこと
指紋認証とパスワードとか
本人が持っているデバイスであるということを、本人であるという証明に含む形式の認証のこと
サーバーが間違いなく(フィッシングサイト等ではなく)目的のサーバーであることを確認すること
サーバーからユーザー側にランダムな文字列(チャレンジ)を送り、ユーザー側でパスワードとランダムな文字列を組み合わせてハッシュ関数に通したもの(レスポンス)をサーバー側へ送り、サーバー側で同じ計算をして結果が同じになるか確認する方式
パスワードが直接やりとりされないのが利点
暗号学的ハッシュ関数の性質によりチャレンジやレスポンスからパスワードを推測するのは不可能
公開鍵と秘密鍵の二種類の鍵をつかう方式
どちらか片方で暗号化したデータはもう片方の鍵でしか復号できない
送信側が公開鍵で暗号化したものを受信側が秘密鍵で復号する
パスワードが直接やりとりされないのが利点
秘密鍵(各自のlocalマシンに入っているほう)が漏れない限りデータを盗み見られることはない
公開鍵の正当な所有者であることを証明するもの
公開鍵証明書を用いて、あるメッセージをある人が書いたということを認証すること
事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする暗号プロトコル
https://gyazo.com/c5a5332018942e6827ac42148bc20698