メモ
ストリーム暗号
- 1ビット・1バイト・1文字ずつ処理する
- 代表的なのはRC4
- 処理速度が早い
- 暗号化してもデータがでかくならない
ブロック暗号
- 平文を分割してブロックごとに暗号化
- 代表的なのはDES
- ブロック分のデータが揃わないと暗号化出来ない、待ち時間が発生しうる
- ストリーム暗号より複雑
- ECBは使っちゃ駄目
- ECB以外はブロックを暗号化→暗号化した結果を次のブロックの暗号化に使うみたいな
CBC(Cipher Block Chaining)
- IV(初期ベクトル)とブロックでXOR演算
- 結果を暗号化
- 次のブロックの平文と2で暗号化した結果でXOR演算
- 2,3を繰りかえし Cipherは「暗号化する」
CFB(Cipher Feedbac)
- 大体CBCの1での前にIVを暗号化する、みたいなイメージ
OFB(Output Feedback)
- IVを暗号化
- 平文と暗号化したIVでXOR
- 1を更に暗号化
- 平文と3で暗号化したIVでXOR
- 3,4を繰り返し
RSA
- でかい整数の素因数分解は難しい
- 1024ビットは危殆化が懸念
楕円曲線暗号
- RSAよりつよいらしい
共通鍵で必要な鍵の数
- nC2 = n(n-1)/2
公開鍵で必要な鍵の数
- 2n
ハイブリッド方式
- 公開鍵方式で安全に共通鍵の受け渡しをしてあとは共通鍵で頑張る
MAC(Message Authentication Code)
- データの改ざんを検知するためにデータから作るコード
- ハッシュ同士を比較して同じなら元データも同じだろみたいな youtu.be
HMAC(keyed-Hashing)
- MACはデータを改変されたら改変されたデータから作られたコードと検証用のコードが違ったら改変されてんじゃね?ってなる
- 検証用のコードも改変されたらどうしようもなくね?ってなる
- コード作るときに秘密鍵使ってコード作ったら改ざんしたやつが検証用のコード作れなくね?的な
フィンガプリント
- データが改善されてないことを証明するためのデータ
Diffie-Hellman 鍵交換アルゴリズム
- AさんとBさんがそれぞれ値a,bを持っている
- それぞれa,bを計算に使って通信して、ってやるとAさんとBさんが同じ値を(a,bそのものを通信に載せずに)共有できる