暗号に使う素数を判定する方法とは?
素因数分解の困難さを利用した暗号
情報の暗号化の方法の1つにRSA暗号があります。これは、「桁数が大きい素数同士を掛け合わせた数の素因数分解は簡単にはできない」という特質を利用した暗号の1つで、インターネットのセキュリティ技術に広く利用されています。RSA暗号を作るには、巨大な素数が必要になりますが、それにはまず、候補となる巨大な数が本当に素数なのかを判定する必要があります。
素数の判定は難しい!
素数判定のもっとも素朴な方法は、その数を2から順番に割っていくことです。例えば、nが素数であるかどうかを調べるためには、ルートnまで割っていきますが、nが、100桁であれば、50桁まで計算しなければならず、計算に莫大な時間がかかってしまい、実用的ではありません。そこでこれに代わる素数の判定アルゴリズムとして、2種類のアルゴリズム(計算の手順)を紹介します。
ミラー・ラビン素数判定法とAKS素数判定法
その1つは、「ミラー・ラビン素数判定法」で、素数だということをほぼ確実に判定する方法です。「ほぼ確実」ということは、100%判定できるわけではないという意味ですが、判定に失敗する確率が極めて低い上に、瞬時に判定できるという利便性から、広く利用されています。
100%正しく、かつ時間も短い判定方法を探すというのが数学者の信条ですから、その方法も長年追究されてきました。そして今世紀の初頭、確実に素数判定が可能で理論的に高速な、もう1つの「AKS素数判定法」という方法が開発されました。少し難解な説明になりますが、この方法は、リーマン予想などの仮説を用いることなく、決定性多項式時間(与えられた自然数nが素数であるかどうかの判定にかかる時間がlog(n) の多項式を上界とする時間)で判定できる初めてのアルゴリズムです。ただ、多項式の次数が高すぎることから、従来判定が不可能だった素数を高速に判定できるようになったわけではないという課題があります。
※夢ナビ講義は各講師の見解にもとづく講義内容としてご理解ください。
※夢ナビ講義の内容に関するお問い合わせには対応しておりません。
先生情報 / 大学情報
東京都立大学 理学部 数理科学科 准教授 内田 幸寛 先生
興味が湧いてきたら、この学問がオススメ!
数理科学先生への質問
- 先輩たちはどんな仕事に携わっているの?