スキップしてメイン コンテンツに移動

【暗号】OAuth 2.0より考察



最近はログインスクリプトを書くとき、いろいろなソーシャルプラットフォームに対応できるようにしてほしいという要望が多くあるため、OpenIDのみを使ってきたのですが、OAuth(オープンプロトコル)を学んで、おもしろいダイアグラムを見つけました。


参照:http://tools.ietf.org/html/rfc6749

ユーザーが認証を与えると、アクセストークンとリフレッシュトークンのペアをもらいます。そうすることでユーザーはアクセストークンを使ってリソースにアクセスできるようになります。

ここで最も重要なポイントは、アクセストークンはすぐに有効期限切れになってしまう点です。アクセストークンが切れると、リフレッシュトークンを使って新しいトークンのペアをもらいます。そうすることでセッションが常に新しく、乗っ取りが難しくなります(ちゃんと実装していれば。)

そこで、OAuth 2.0は安全ななメッセージ交換をするのにこれは非常にいい方法だと考えました。というのもOAuth 2.0は1.0よりもよくないのですが、参考として
It took IETF about 31 draft versions and the resignation of the lead author/developer Eran Hammer from the committee to finally publish the spec. Eran sparked a controversy by calling the spec "a bad protocol and a case of death by a thousand cuts".
参照:http://code.tutsplus.com/articles/oauth-20-the-good-the-bad-the-ugly--net-33216

自分がこれはとてもよい方法だと思う理由に入る前に、まずは基本的な暗号化方式と鍵交換をおさらいしたいと思います。



▼対称鍵暗号
最も簡単な暗号化/復号化方式で、暗号文は送信者と受信者の両方に、メッセージを相互変換するための共通鍵(ルール)を作ることです。



しかしこの方法だと、第三者に鍵を盗まれてしまう可能性があったため、ジェームズH.エリス、またはホイットフィールド・ディフィーとマーティン・ヘルマンは鍵配布のための非対称鍵技術を発明しました。



▼非対称鍵暗号


これは、受信者が公開鍵と秘密鍵の2つの鍵を作ります。公開鍵は送信者がメッセージ(平文)を暗号する用のもので、受信者は秘密鍵を使って公開鍵で暗号化された暗号文を復号します。

非対称鍵の配布によって、対称鍵のときに鍵が盗まれる危険性を回避したのですが、大きなメッセージの復号には、非常に時間がかかってしまいます。



▼PGP
PGPでは、平文を対称鍵で暗号化し、その対称鍵を保護するために非対称鍵を使います。これにより計算速度アップと、充分な強度の暗号をキープできます。



ここでOAuthダイアグラムに戻って、もし仮に、アクセストークン自身が暗号文であれば、OAuthでは非常によいメッセージ交換ができるのでないかと考えました。

流れは以下のようなイメージです。


1. 送信者は公開鍵と秘密鍵の2つの鍵を作成し、公開鍵を受信者に渡します。

2. 受信者はアクセストークンとリフレッシュトークンの2つの対称鍵を作成します。

アクセストークン……1つ目の対称鍵で構成され、公開鍵による短期限のタイムスタンプで暗号化されます。
リフレッシュトークン……2つ目の対称鍵で構成され、公開鍵による長めの有効期限のタイムスタンプで暗号化されます。

3. 受信者はアクセストークンとリフレッシュトークンの両方を送信者に渡します。すると送信者も受信者も1つ目の対称鍵で、有効期限までの時間内で、短期間対話ができるようになります。

4. 1つ目の対称鍵が期限切れになると、受信者はエラーを出したり、送信者が復号できなくなると、送信者は2つ目の対称鍵を使ってトークンの要求をし、2段階目の対話として続けることができます。



OAuthによる安全なメッセージの受け渡し理論を使ったシンプルな考えで、鍵が一般に公開されている時間が短くなるとより安全で、同じトークンが長い時間出てしまう危険性を減らせるのではと考えています。




Written by Creative Flake

コメント

このブログの人気の投稿

ブログ移転のお知らせ

いつもご覧いただきありがとうございます。 当ブログは下記URLへと引っ越しました。 http://blog2.creativeflake.com/ 今後はこちらをご覧ください!!

CSSでドット絵を描いてみよう

ドット絵(ピクセルアート)は1980年代ごろのパソコンやゲーム機で、最もよく使われた画像の表現方法でしたが、パソコン等の高解像度化にともなって、ドット絵を使われることはほとんどなくなりました。 以前は解像度が低かったため、写真や画像を今のようにきれいに表示することができなかったので、ドットで描画することが主流でした。目で見てピクセルだと分かる範囲がドット絵と呼ぶそうです。 今だからこそ逆に斬新、かわいいと思うこともあるのですが、せっかくなのでドット絵をCSSだけで描画したいと思います。 もちろん、こんなチョコボを描くことも余裕でできます。 ドット絵に使うCSS HTMLやCSSを使って描く表現方法はさまざま考えられますが、今回は「box-shadow」のみで描いていきたいと思います。 box-shadowでドットを描く HTML <div></div> まずHTMLには空のdivを用意してあげます。これだけでHTMLは完成です。 CSS div { background: transparent; width: 10px; height: 10px; box-shadow: 0 10px red, 10px 20px blue, 20px 10px green; } CSSは基点<(0, 0)の場所>をtransparent(透明)とし、基本となるドットの大きさを縦、横ともに10pxずつと設定します。 そのときに、基点から下へ10pxの箇所に赤いドットを、右へ10px、下へ20pxの箇所に青いドットを、右へ20px、下へ10pxの箇所に緑のドットを描画します。 ↓↓↓こんな感じで表示されます 本来box-shadow(ボックスシャドウ)は指定した要素に立体っぽく影をつけるCSSなのですが、ぼかし具合を入力しないことでゼロ、つまりただの直線として認識されます。 ざくざく作っていこう こんな感じで、ドット絵を書いていくには元画像を準備し、ピクセル単位で描画していきます。 チョコボを描く(HTML) <div id="chocobo...

完全無料のみ厳選!パターンを選ぶだけなのにクオリティの高い年賀状

年末が近づくとまた今年もあの季節。 年賀状のシーズンです! ハガキ年賀状は年々減少しつづけていて、年賀状発行枚数は2003年の44億枚をピークに、2016年は26億枚でした。 通信手段はメールか電話、友だちや家族ならSNSやチャットで連絡が当たり前になってきている今だからこそ、ハガキをおすすめしたい!! 年賀状注文は面倒? 年賀状の注文は写真やさん、印刷屋さん、比較的大きなスーパーなどでも取り扱っているほか、本屋さんで年賀状素材集などを買って自宅でプリントするのが大半でしょうか。 イラストレーターなどのソフトを使う手もありますが。 ちなみに弊社の年賀状は毎年イラレで描いています。 無料で作れる年賀状 最近無料で、かつクオリティの高い年賀状作成サービスが出てきています。「早くて」、「無料で」、「誰でも作れる」サービスをご紹介します。 郵便年賀.jpの「はがきデザインキット」 郵便年賀.jpは、あの郵便局が運営しているサービスです。 デザインキットはテンプレートを選ぶだけの簡単操作。 テンプレートは ・和もの ・カワイイ ・ポップ ・喪中・寒中  のカテゴリから選べます。 そのほか便利な機能として、 ・写真入れ ・文字入れ ・スタンプ入れ ・賀詞入れ などが可能です。 文字の色を変えたり、大きさを変えたりするのも、直感的にできるので簡単にオリジナルデザインが作れます。 できたデザインは、郵便局に印刷注文することも、データをダウンロードして自宅のプリンターで印刷することもできます。 「はがきデザインキット」はこちらから いらすとやの「ねんがや」 「いらすとや」は無料イラスト素材サイトです。 もしかしたらお店やWebページなどでいらすとやのイラストを見たことがある人も多いかも! こちらもテンプレート一覧からデザインを選んで、データをダウンロードするだけ。 あとはプリンターで印刷して完成! ・キャラクター ・版画 ・シンプル ・ゆるかわ ・おえかき ・コラージュ ・ししゅう・・・・などなど18カテゴリから選べます。 挨拶文のあり、なしを選択できるので、送る相手にあわせて選べますよね。 「ねんがや」はこちらから 「年賀状AC」 こちらも無料素材サイトの年賀状用サイトです。...