共通鍵暗号と公開鍵暗号

1: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:51:59.16 ID:eFoRVj/r0.net

みなさん、こんばんは
第23回となる今回は「暗号方式」について勉強していきましょう


スポンサードリンク

2: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:52:18.70 ID:qNE86U7G0.net

待ってました!


3: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:52:55.61 ID:sTuQb+HO0.net

暗号方式ってなに?


5: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:53:43.92 ID:WyuU5XDW0.net

2chでいうトリップが暗号方式だよ


4: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:53:30.47 ID:eFoRVj/r0.net

まずは秘密鍵暗号方式です


7: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:54:43.96 ID:SHN7FfUO0.net

NSAに解読されないやつにしてね!


9: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:56:05.01 ID:eFoRVj/r0.net

秘密鍵暗号方式(共通鍵暗号方式)とは、2者が共通の鍵を用いて暗号化・復号化するものです。

例えば「200」という共通鍵を用意しました。
いま、「3」というデータを送りたいとします。
ここで暗号化アルゴリズムを データ×共通鍵 と定義します。

3 * 200 = 600

を送信します。
受け取った人は受け取ったものを「200」で割ります

600 / 200 = 3

これが秘密鍵暗号方式です。


12: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:58:41.25 ID:vYTBlDLq0.net

じょうほうのじゅぎょうでやったよ!


13: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:58:53.33 ID:eFoRVj/r0.net

しかし、これにはいくつかのリスクが考えられますね。

リスクの一つに秘密鍵の盗聴・傍受があります。
この秘密鍵を教える段階で盗聴された場合、もはや打つ手はありません。
盗聴者にもろバレの状態で通信を行わなければなりません。

さらにリスクの一つとして「2者間の信頼関係」があります。
秘密鍵を持つ物同士は「お互いが鍵を流出させない」という前提の元でやりとりします。
もし、どちらかに悪意があった場合、流出の危険性が考えられます。


14: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 22:59:25.25 ID:eFoRVj/r0.net

次は「公開鍵暗号方式」です。


15: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:01:46.55 ID:eFoRVj/r0.net

公開鍵暗号方式では2種類の鍵を生成して運用します。

2種類の鍵をそれぞれ「秘密鍵」「公開鍵」と呼びます。


17: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:03:26.36 ID:eFoRVj/r0.net

暗号通信を行いたい場合、以下の手順で通信を行います。

1. Aさんが鍵を生成
2. AさんがBさんに公開鍵を渡す
3. Bさんは公開鍵を使ってデータを暗号化する
4. 暗号化したデータをAさんに渡す
5. Aさんは秘密鍵を使って復号化する

この手順からわかるように「公開鍵で暗号化したものは秘密鍵でしか復号化できない」です


18: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:03:39.47 ID:ZOzbaipL0.net

プログラミング関係ないな


36: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:21:28.21 ID:/c6T+G2N0.net

プログラミングって言うか基本情報講座だな


20: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:07:34.53 ID:NkExT3O80.net

秘密鍵公開鍵って暗号通貨でよく見る


21: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:08:53.84 ID:BUZOIB8Q0.net

「これ、俺の秘密鍵」
「キャー!!」


19: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:05:20.10 ID:eFoRVj/r0.net

ではなぜそのような特徴が生じ得るのでしょうか。
それは公開鍵暗号方式で用いられる「RSA」というアルゴリズムによります。

RSAは簡単にいえば「すっごいでかい数を掛け算するのは簡単だけどすっごいでかい数を素因数分解するのは難しい」という原理に基づいています。


29: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:15:21.27 ID:DcUXeSoH0.net

ここ基本情報の範囲やで!要チェックや!


22: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:11:57.80 ID:1MFmrz4S0.net

ビットコインの仕組みこいこい


23: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:13:07.99 ID:eFoRVj/r0.net

もうめんどくさくなった


26: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:14:26.79 ID:Ntj6iPlc0.net

情報系中退のゴミが見てるからがんばって!


24: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:13:45.38 ID:ZOzbaipL0.net

頑張れ みんな読んでる


28: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:14:53.10 ID:eFoRVj/r0.net

>>24
もう続きない
なんか質問して


31: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:16:34.31 ID:Z8HdB2EF0.net

素因数分解の原理を使ってるんだな


30: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:15:24.54 ID:o93tHqIr0.net

では何故、素因数分解が難しいのか、その原理上の原因を説明してみようか。
続けて


37: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:22:48.10 ID:eFoRVj/r0.net

>>30
理論的に計算することが不可能で総当り的に探さないといけないから


35: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:19:08.41 ID:ZOzbaipL0.net

>>30
P≠NPだから


32: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:16:55.12 ID:qLPX73J50.net

公開鍵でどうやって暗号化するのか知りたい


37: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:22:48.10 ID:eFoRVj/r0.net

>>32
n = pq( p と qは素数)
暗号文 = 入力文^e mod n

複合文 = 暗号文^d mod n

ここで パラメータ n、e を公開鍵として渡して、 d を秘密鍵として使う


33: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:17:26.32 ID:Ntj6iPlc0.net

そもそも鍵って何? 計算式?


37: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:22:48.10 ID:eFoRVj/r0.net

>>33
暗号化・復号化で使うパラメータ(数値)


38: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:23:36.43 ID:DcUXeSoH0.net

暗号方式の説明するときにゃ子供の頃のコナンパズルとかでやってるはずの暗号について説明した方がいいと思う
0->り
1->ん
2->ご

012->りんご

みたいな


40: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:30:30.56 ID:DcUXeSoH0.net

暗号文の基本は
・1文字それぞれ別な文字に置き換える
・文字の順番のルールを一定のルールにそって変更する abcde->edcbaみたいな逆順とか

これだけで理解しやすくなると思われる


39: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:28:15.32 ID:eFoRVj/r0.net

一般的な「暗号」だと3種類ある

・ステガノグラフィ
・コード
・サイファー

ステガノグラフィは見えないように送る方法
封筒に入れて外から見えないように送るのも一種の暗号方法でステガノグラフィの一例。

コードは単語とかを他の単語に置き換える方法
兵器→バナナ、日本→俺の家、配備する→届ける
みたいに置き換えるルールをつけとくとすると
兵器を日本に配備しろ
という文が
バナナを俺の家に届けろ
になる

サイファーは>>38がいってるように文字レベルで適当な別の言葉に置き換える方法


25: 以下、\(^o^)/でVIPがお送りします 2015/02/28(土) 23:14:15.53 ID:kou4wqNB0.net

説明うまかった


関連
プログラミング講座第16回「ユニットテスト」
プログラミング講座第18回「オブジェクト指向プログラミング」
2ちゃん式iOSプログラミング講座第9回「デリゲート」
【第2回】java8講座ラムダ式
初心者でも5分で作れそうなiPhoneアプリ講座