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

【暗号】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...

Googleの検索結果から情報を削除する方法(2015年12月現在)

削除できるもの 確実に削除できるコンテンツとしては、「法律に基づく削除」で具体的には次の2点です。 ・児童ポルノ ・デジタルミレニアム著作権法(音楽、動画、ソフトウェアなどの無断コピー、海賊版など)に抵触するもの 削除できる可能性が高いもの ・個人情報 特に以下のもの ○国が発行する識別番号(マイナンバーなど) ○銀行口座番号 ○クレジット カード番号 ○署名(サイン)の画像 ○当人の承諾なしにアップロードまたは共有された、ヌードや露骨な性描写を含む画像 個人情報でも削除の対象とならないものとして ○生年月日 ○住所 ○電話番号 それらの情報を利用して、金融取引に使えたり、身元詐称に使えたりするものは削除の対象です。 また公的な情報は削除の対象になりません。 コンテンツやページを削除する方法 まずはサイトの管理者に連絡し、削除依頼することをGoogleは推奨しています。 その方法としては、 1.当該サイトの「お問い合わせ」や連絡先メールアドレスがあればそこから連絡をする 2.上記1のお問い合わせなどの連絡先がない場合、whoisを利用して、ドメインの所有者の連絡先を確認する 3.上記2の直接の連絡先がない場合、サーバーホスティング会社に問い合わせる なぜサイト管理者に連絡するのか? 仮にGoogleが検索結果から情報を削除したとしても、そのWebページやコンテンツは残ったままです。 URLもそのまま存在するわけなので、直接URLにアクセスするとページは見える状態にあります。 クレジット番号やマイナンバーなどの情報が公開されている場合 クレジット番号やマイナンバーなどの個人情報が含まれる場合は、できるかぎりサイト管理者に連絡したうえで、Googleにも確認してください。 https://support.google.com/websearch/troubleshooter/3111061 Written by Creative Flake