暗号技術入門-秘密の国のアリス-
- 目次
- はじめに
- 暗号の世界ひとめぐり
- 第一部 暗号
- 第ニ部 認証
- 一方向ハッシュ関数 ―― メッセージの「指紋」をとる
- メッセージ認証コード ―― メッセージは正しく送られてきたか
- デジタル署名 ―― このメッセージを書いたのは誰か
- 証明書 ―― 公開鍵へのデジタル署名
- 第三部 鍵・乱数・応用技術
- 付録:暗号技術確認クイズ
- 付録:参考文献
結城さんの本はどれもおもしろい。
PKI、公開鍵、MAC、デジタル署名等については以前調べたこともあり、理解していたのだが、暗号化の方法や、ブロック暗号のモードについて、改めて勉強できた。
なるほどと思ったこと、勉強になったことをおさらいも兼ねて記録。
隠すことによるセキュリティ(security by obscurity)は危険かつ愚か
公開されていて、十分に検証されている方式を採用しましょう。
使い捨てパッドは無条件に安全(unconditionally secure)で、理論的に解読不可能(theoretically unbreakable)
使い捨てパッドをつかうと、復号化を試みてもどれが正しい平文か判断できない。言われてみれば、なるほどと思うけど、最初に絶対に解読できない暗号と聞いたときにはにわかには理解できなかった。平文と同じ長さの鍵が必要で、その鍵を配送、保存、生成が困難ということ。
DES(ファイステルネットワーク)
好きなだけラウンド数を増やすことができる。
ラウンド関数fにどんな関数をつかっても復号化が可能である。(逆関数が存在しなくてもよい。)
暗号化と復号化がまったく同じ構造で実現できる
ブロック暗号モード
- ECB(Electric CodeBlock)
- CBC(Cipher Block Chaining)<-オススメ
- CFB(Cipher-FeedBack)
- OFB(Output-FeedBack)
- CTR(CounTeR)<-オススメ
IV(初期化ベクトル(Initial Vector))について理解できた。
- 暗号文=平文^E mod N
- 平文=暗号文^D mod N
- step1
N = p x q (p,q は素数) - step2
L = lcm(p - 1, q - 1) (Lはp-1とq-1の最小公倍数(least common multiple)) - step3
1 < E < L
gcd(E, L) = 1 EとLの最大公約数(greatest common divisor)は1(EとLは互いに素) - step4
1 < D < L
E x D mod L = 1
乱数の性質は3つに分類される。
- 無作為せい
- 予測不可能性
- 再現不可能性
乱数についても正しく理解できていなかった。特に、「ソフトウェアだけでは再現不可能性をもつ乱数を生成することはできない 」ので、再現不可能性をもつ乱数を生成するためには、周りの温度や音の変化、ユーザーのマウスの位置、キーボードの入力の時間感覚などを使用する。