Q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q.

Slides:



Advertisements
Similar presentations
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
Advertisements

香川大学工学部 富永浩之 情報数学1 第1-1章 除法定理と整除演算 香川大学工学部 富永浩之
黒澤 馨 (茨城大学) 情報セキュリティ特論(4) 黒澤 馨 (茨城大学) 2017/3/4 confidential.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
Problem J Tile Puzzle 原案:野田 担当:平野,吉田,泉,松本.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
香川大学工学部 富永浩之 情報数学1 第1-2章 最大公約数とユークリッドの互除法 香川大学工学部 富永浩之
Verilog HDL 12月21日(月).
Q q 情報セキュリティ 第6回:2005年5月20日(金) q q.
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
香川大学工学部 富永浩之 情報数学1 第2-2章 合同式の逆元と応用 香川大学工学部 富永浩之
香川大学工学部 富永浩之 情報数学1 第2-1章 合同式の性質と計算 香川大学工学部 富永浩之
データ構造と アルゴリズム 知能情報学部 新田直也.
第4回 カルノー図による組合せ回路の簡単化 瀬戸 目標 ・AND-OR二段回路の実現コスト(面積、遅延)が出せる
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
第7回 条件による繰り返し.
暗号技術 ~公開鍵暗号方式の仕組み~ (3週目)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
博士たちの愛する素数 徳山 豪 東北大学 Prime numbers that professors love
Q q 情報セキュリティ 第14回:2005年7月15日(金) q q.
情報セキュリティ  第11回 デジタル署名.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
第7回 条件による繰り返し.
情報セキュリティ  第8回 RSA暗号.
 情報の授業 アルゴリズムとプログラム(1) Go.Ota.
5.RSA暗号 素因数分解の困難性を利用した暗号.
計算機構成 第2回 ALUと組み合わせ回路の記述
Q q 情報セキュリティ 第8回:2005年6月3日(金) q q.
Q q 情報セキュリティ 第6回:2007年5月25日(金) q q.
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
第4回 ファイル入出力方法.
11.再帰と繰り返しの回数.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
香川大学創造工学部 富永浩之 情報数学1 第1-3章 素数と素因数分解 香川大学創造工学部 富永浩之
香川大学創造工学部 富永浩之 情報数学1 第1-2章 最大公約数とユークリッドの互除法 香川大学創造工学部 富永浩之
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
補講:アルゴリズムと漸近的評価.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Q q 情報セキュリティ 第5回:2006年5月19日(金) q q.
香川大学工学部 富永浩之 情報数学1 第1-2章 最大公約数とユークリッドの互除法 香川大学工学部 富永浩之
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
香川大学創造工学部 富永浩之 情報数学1 第2-1章 合同式の性質と計算 香川大学創造工学部 富永浩之
2008/7/16(情報コース)2008/7/22(通信コース) 住井
情報処理Ⅱ 2006年11月24日(金).
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
Q q 情報セキュリティ 第6回:2005年5月26日(金) q q.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
暗号技術・セキュリティ 情報工学科  04A1004 石川 真悟.
香川大学創造工学部 富永浩之 情報数学1 第2-2章 合同式の逆元と応用 香川大学創造工学部 富永浩之
参考:大きい要素の処理.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
情報処理Ⅱ 2005年11月25日(金).
Q q 情報セキュリティ 第7回:2005年5月27日(金) q q.
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
香川大学創造工学部 富永浩之 情報数学1 第3-3章 多進法での四則演算 香川大学創造工学部 富永浩之
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
知能情報工学演習I 第10回( C言語第4回) 課題の回答
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
Presentation transcript:

q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q

この補足スライドの目的 RSAに必要な計算を明確にし,教科書で割愛している箇所を詳細に説明すること アルゴリズムの書き方の一例を示すこと ただしアルゴリズムを書き下す問題は試験に出さない

RSAに必要な計算 整数に対する加減乗除と剰余 べき剰余 乱数生成 素数生成および素数判定 最大公約数と最小公倍数 拡張ユークリッドの互助法

アルゴリズムの書き方・読み方 「入力」「出力」「手順(アルゴリズム)」の順に書く. 代入と比較を区別する. ここでは「←」と「=」 C言語では「=」と「==」 手順では適切に番号を振り,「…へ進む」「…へ戻る」という形でジャンプ先を明記する. 処理を終えるときは「…を出力して終了する」と書く.(「…を出力する」のみだと,まだ終了しないと考える.) 書く人は簡単に検証できる例を添えておく. 読む人は最低限,その例でうまくいくことを確認する.

整数に対する加減乗除と剰余 加算 減算 乗算 除算 剰余 注意点 入力:整数x, y 出力:x+y 出力:x-y 出力:x*y 入力:整数x, y (y≠0) 出力:x/y (xをyで割った商) 剰余 入力:整数x, y (y≠0) 出力:x%y (xをyで割った余り) 注意点 いずれも自明なのでアルゴリズムは省略 x, yがともにNビットのとき 加減算の結果は 最大N+1ビット 乗算の結果は最大2Nビット 除算と剰余の結果は 最大Nビット

「正整数m」と「% m」を 削除すれば,これは べき剰余 入力:正整数a,非負整数b,正整数m 出力:ab % mとなる整数値 アルゴリズム Step 1. r ← 1, s ← a, t ← b とする. Step 2. t=0 ならば,Step 5へ進む. Step 3. t%2=1 ならば,r ← r*s % m とする. Step 4. s ← s*s % m, t ← t / 2 とし,Step 2へ戻る. Step 5. r を出力して終了する. 例 a=225, b=29, m=323 のとき, ab % m=123 なぜこれでうまくいくのか? (x * y) % m = (x % m) * (y % m) だから 「正整数m」と「% m」を 削除すれば,これは ab を求める アルゴリズムである.

乱数生成 乱数生成法 乱数の種(seed)について C言語なら,random関数が手軽 メルセンヌツイスターを使用するのもよい 自作の乱数生成アルゴリズムは,自作の暗号アルゴリズムと同じく,良いものはできない 乱数の種(seed)について 種とは,生成する乱数の順番(「乱数系列」という)を指定する方法のこと 同じ種を与えれば,同じ乱数系列を生成する 実行のたびに異なる乱数がほしいときは,現在時刻の情報をもとに種を作ることが多い random関数に対しては,srandom関数で種を設定する

素数生成 入力:ビット数N 出力:Nビットの素数 アルゴリズム Step 1. 最上位が1,間は(N-2回の1ビット乱数生成により)N-2ビットの乱数,最下位は1となるような,Nビットの整数nをランダムに生成する. Step 2. nが素数であるかどうかを判定する.素数でないと判定されたら,Step 1に戻る. Step 3. nを出力して終了する.

素数判定 入力:2以上の整数n,テスト回数T 出力:nが素数なら「yes」,素数でないなら「no」 アルゴリズム(フェルマーテスト) Step 1. i←1とする. Step 2. 2以上n未満の正整数aをランダムに生成する. Step 3. gcd(a,n)>1ならば,Step 7に進む. Step 4. an-1%n≠1ならば, Step 7に進む. Step 5. i←i+1とする.i≦Tならば,Step 2に戻る. Step 6. 「yes」と出力して終了する. Step 7. 「no」と出力して終了する. うまくいく? 素数であれば必ず「yes」と出力するが,素数でないのに誤って「yes」を出力することもある.

最大公約数 入力:正整数a, b 出力:最大公約数 gcd(a,b) アルゴリズム(ユークリッドの互助法) 例 Step 1. r←a%b とする. Step 2. r=0ならば,Step 4へ進む. Step 3. a←b, b←r として,Step 1へ戻る. Step 4. bを出力して終了する. 例 a=144, b=5のとき,gcd(a,b)=1

最小公倍数 入力:正整数a, b 出力:最小公倍数 lcm(a,b) = a * b / gcd(a,b)

拡張ユークリッドの互助法 入力:正整数a, b 出力:a*x+b*y=gcd(a,b)を満たす整数x,y アルゴリズム 例 一般に無限個ある中の 1組 入力:正整数a, b 出力:a*x+b*y=gcd(a,b)を満たす整数x,y アルゴリズム Step 1. s←a, t←b, u←0, v←1 とする. Step 2. q←s/t, r←s%t (=s-t*q), w←u-v*q とする. Step 3. r=0ならば,Step 5へ進む. Step 4. s←t, t←r, u←v, v←w として,Step 1へ戻る. Step 5. (t-b*v)/a, v を出力して終了する. 例 a=1440, b=50のとき,x=-1, y=29.実際, 1440*(-1)+5*290 = 10 = gcd(1440,50) である. なぜこれでうまくいくのか? b*v % a = t だから

拡張ユークリッドの互助法の応用 入力:正整数a, n 出力:a*b % n = 1, 0<b<n を満たす整数b アルゴリズム Step 1. gcd(a,n)>1ならば,「解なし」を出力して終了する. Step 2. a, nを入力として拡張ユークリッドの互助法を呼び出し,その出力をx, yに代入する. Step 3. x%n を出力して終了する. 例 a=5, n=144のとき,29を出力する.実際, 5*29 % 144 = 145 % 144 = 1である. Step 1では,a と n が 互いに素でない場合の 例外処理をしている. (互いに素 ⇔ gcd(a,n)=1)