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

【暗号】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/ 今後はこちらをご覧ください!!

太字にしても文字を潰さない方法「太字に強い無料の日本語フォント」付き

PhotoshopやIllustratorなどで、太文字を書きたいとき文字がつぶれて見づらいことはありませんか? つぶれ文字の場合 文字がつぶれてしまった場合の多くは、 ・ボールド「B」で太くしている ・枠線をつけて太くしている こういうケースが多く見られます。 これは、元の文字の外側に太線をつけるため、スキマが埋められてしまうことでつぶれて見えるためです。 つぶれない文字にするには 文字をつぶさないようにするには、文字そのもののウェイトで調整します。 ウェイトというのは「太さ」という意味です。 例えば、「●●ゴシック-M」とか、「▲▲明朝-W3」などという、フォント名の最後にアルファベットや数字がついているのを見たことはありませんか? まずはフォント(文字)を選ぶ際に、ウェイトのバリエーションが存在するかどうか確認してから使うことをおすすめします。 太字にできる無料の日本語フォント そもそもどんなフォントが太字のバリエーションがあるのか、今回は無料の日本語フォントを紹介します。 M+フォント やや丸みのあるやさしいイメージのゴシックフォント。 極細から太字までフォントウェイトがあります。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Kazesawaフォント こちらも丸みのある、認識性の高いフォントです。 エクストラライトからエクストラボールドまで6種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード 源ノ角ゴシック AdobeとGoogleが共同開発したオープンソースのフォントです。 エクストラライトからヘビーまで7種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード Rounded M+ 丸ゴシックのかわいい感じなのに品のあるのフォントです。 また、「標準」、「丸さ強め」、「丸さ弱め」からも選んでダウンロードが可能です。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Written by Cr...

CSS3でアニメーションを作ってみよう(理論編)

こんにちは、クリエイティブフレークです。 Windows XPのサポートが終了してから、国内のIE10のシェア率が急激に高まり、Chromeも急伸しています。 これまでどうしてもIEの古いバージョンのユーザーのことを考慮すると、完全CSS3はまだ先かなと思うところでしたが、そろそろ勉強し始めどきかもしれません。 今回はCSS3だけで動くアニメーションの簡単なサンプルを。 【デモ : DEMO】 CSS3だけでアニメーション そもそも、アニメーションといえば、 ・gif(Photoshopなどでタイムラインでコマ送り。あくまで画像なのでパラパラ漫画と同じ理論。) ・Flash(タイムラインもしくはプログラミングで制御。見るにはFlash Playerのインストールが必要。) ・jQuery(JavaScript言語を使用して動的に制御。) 時代ごとに移り変わってきましたね。 では、こんなにアニメーションは存在するのに、なんでCSS3を使いたがるの? ・gifの欠点 gifアニメーションの欠点は細かく動かすとファイル容量が大きくなります。 また、滑らかな動きには向いていません。 ・Flashの欠点 FlashはFlash Playerが必要なので、インストールしていないPCや、スマートフォンには対応していません。 ・jQueryの欠点 jQueryはプログラミング可能なので、細かく動作を指示できますが、jQueryを使用する場合、JavaScript単体とjQuery本体の組み合わせで、ファイルは大きくなります。 ここで登場するのがCSS3。以前ならマークアップ言語で動作の指示ができるなんて思ってもみませんでした。 今回の目標 ・CSSで丸や四角などの図形を描く ・CSSで回転させる ・CSSでフェードさせる 【デモ : DEMO】 CSS3だけでアニメーション ▲こんなかんじ 今回のデモのソースコードはすべてHTML内に記述してあります。 ソースコードが長いので、ここでは解説だけを記載します。 サンプルソースコードの解説 div { position: absolute !important; top: calc(50% - 100px); left...