アルゴリズム論特論(塩田)第12回 (4) 今日のまとめ

前へ / 戻る $\newcommand{\ol}[1]{\overline{#1}}$ $\newcommand{\znz}[1]{\mathbb{Z}/#1 \mathbb{Z}}$ $\newcommand{\znzc}[1]{(\mathbb{Z}/#1 \mathbb{Z})^{\times}}$ $\newcommand{\inv}[1]{\displaystyle{\frac{1}{#1}}}$

参考

  • 暗号ライブラリ crypto.py ... 以下のプログラムに引用
  • Diffie-Hellman 鍵交換システム DH.py

参考2

 Python の組み込み関数 pow が pow(x,e,n) でべき乗剰余 $x^e\,\%\, n$ を求めてくれるのに対し、 math.pow は第3引数を受け付けません。 うっかり
from math import *
と書いてしまうと Python は pow と math.pow を混乱してしまいます。 ご注意ください。

今日のまとめ

  • 暗号通信は ( 高速な ) 共通鍵暗号で行い、その鍵交換に ( 安全な ) 公開鍵暗号を用いる暗号をハイブリッド暗号という。
  • 離散対数を利用して Diffie-Hellman は鍵交換システムを提案した。
  • 法 $p$ をランダムに作ってしまうと原始根 $g$ を求める計算量が大きいので、$g$ を求めやすい $p$ を意図的に作る。

自宅学習の例

  • サンプルプログラムを動かしてみる。