Qt Tech. OpenSSL通信、HTTPS通信を行うプログラムが簡単じゃない!対処方法のソースを表示
新しいページはコチラ
移動:
案内
,
検索
== '''概要''' == 説明書を読んでHTTP通信のプログラムを勉強しようとしたのですが、説明書が古くて、HTTP通信とかやってるんすよ。今どきはhttp://のような通信プロトコルは、あまり使わない。https://これです。暗号化ですね。通信ログっていろいろな部分で確認できるようになっていて、暗号化していないと途中に待ち構えているルーティングの中にいるサーバの主が、悪意を持ってパスワードの入力や個人情報が飛んでくるのを待っていることがあります。これを防ぐのが暗号化です。 一般的に使われるのが公開鍵方式と呼ばれている方式です。大事なのは公開する鍵(公開キーワード文字列)が秘密の鍵(非公開キーワード文字列)から生成されているということであり、この生成処理の逆が難しいということです。 難しいというのは、一般人が自由に保有できるであろう演算装置で計算させても数年以上かかるくらい難しいのだけれど、生成処理は簡単であり、生成処理には法則が唯一に存在するという仕組みにある。例えば因数分解みたいな計算がその一例だ。学校で習った因数分解(例えばx^2+4x+3=(x+1)(x+3))は考えれば解ける程度の問題になっているが、桁数が増えると無理っ!ってなる。じゃコンピュータにやらせてみるか?ってなってプログラムを作ってみたら、a+b=4、axb=3となるようなaとbを求めるというのは桁数が増えるとコンピュータを使ってやっても時間がかかるということがわかってきたりした。そういうたぐいの演算は存在するということがわかったのがこの仕組みの大事なところでもある。(x+1)(x+3)のような分解された値を演算するのはスグだよね。手順通り計算すれば、x^2+4x+3だってわかる。数字だけを扱う因数分解の桁数が少し増えただけでも大変なのに文字列をキーワードにしたら短くまとめたような長さでも相当時間がかかる。そんなイメージがいいかなって思う。実際の演算アルゴリズムでは素因数分解のような演算ではありません。別のところで理解して下さい。 公開鍵暗号方式でのやりとりの手順は以下のようなものです。 :1.Webサーバー側が秘密の鍵(非公開キーワード文字列)を所有している状態になります。 :2.ユーザはサーバにて計算された秘密鍵から生成された公開鍵(公開キーワード文字列)を受け取ります。 :3.ユーザは送信するデータを公開鍵で暗号化して、サーバ側に送ります。公開鍵で暗号化されたデータを元のデータに戻すことは難しい状態になっている。 :4.Webサーバは受け取ったデータを秘密鍵で複合化(元のデータ)して処理をする。 こんな感じ。 これがSSLのやり取りになると少しだけ変わります。変わる部分を追記した文章を以下に記します。 :1.Webサーバー側が秘密の鍵(非公開キーワード文字列)を所有している状態になります。<span style="color:darkred;">通信の要求が来る。</span> :2.ユーザはサーバにて計算された秘密鍵から生成された公開鍵(公開キーワード文字列)を受け取ります。<span style="color:darkred;">同時に証明書を受け取り、後々、レジストラと照合する。そして、ユーザ側で公開鍵(公開キーワード文字列)から更に共通鍵(公開共通キーワード文字列)を生成します。</span> :3.ユーザは送信するデータを公開鍵で暗号化して、サーバ側に送ります。公開鍵で暗号化されたデータを元のデータに戻すことは難しい状態になっている。<span style="color:darkred;">共通鍵を公開鍵で暗号化した暗号化共通鍵をサーバ側に送る。サーバー側は秘密鍵によって暗号化共通鍵の復元を行い共通鍵をユーザとサーバだけが保有した状態にする。</span> :4.Webサーバは受け取ったデータを秘密鍵で複合化(元のデータ)して処理をする。<span style="color:darkred;">共通鍵を使って暗号文を作る通信を行う。</span> 双方の秘密を、サーバーの秘密のキーワードを使って生成することにより、手順4ではすっかり変わった通信方法になってしまったことが面白いところです。 この文字だけの説明を理解できた人は凄いかもしれない。あるいは、管理人が凄いのか。共通鍵を生成するときのメカニズムはセッション毎に変わるので、一定時間で変わります。したがって、計算は追いつかない仕組みです。盗もうと思った頃には鍵は変わっている筈です。これだけの技術でありながらも、盗まれている可能性はゼロではない。いや今後もか。 *あるIP区間からの通信のすべての通信ログをとっておいて、いつの日か全ての暗号を解読して読み解くという方式 *秘密裏に超高速計算コンピュータを開発して、読み解く とかあるんかな。ないだろうな。量子コンピュータを使ったとしても、生きている内には無理だそうです。 なんしか、本題はここからです。なんしか。日本語なのかな。なんしか。QtでSSL!
Qt Tech. OpenSSL通信、HTTPS通信を行うプログラムが簡単じゃない!対処方法
に戻る。
個人用ツール
3.145.17.230
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ