[TIL] # 36 JWT, Bcrypt


bcrypt,jwtはapi検証と認可プロセスによって使用される
会員加入後、私の情報はサーバーのDBに保存されます.
これに基づいて認証と認証を行う場合、
これは私の情報を守るために作られたものです.

ログインプロセス


  • プレイヤー個人情報の受信

  • パスワードを暗号化してDBに保存
    ここではBcryptを用いて暗号化しDBに格納する

  • ログイン

  • 暗号化されたパスワードと入力されたパスワードの比較

  • 一致時にtokenを送信
    jwtを使用して重要でない情報を持つtokenを発行する

  • ログインするデータにアクセスする場合はtokenを使用してユーザーを検証します.
    機能はログインごとに使用できます
  • Bcrypt


    一方向ハッシュ関数.
    パスワードの保存
    パスワード生成暗号メッセージ다이제스트( digest )元のメッセージを知っている場合は簡単に復号できますが、暗号化されたメッセージは元のメッセージを取得できません.
    たんほうこうせい
    Bcryptは、Blowfishという名前のパスワードに基づいたパスワードハッシュ関数です.
    Bcryptはgensaltで暗号化
    ここでgensaltはランダムstringを作成してsaltingを行うプロセスです.
    このように暗号化されたパスワードには60バイトのコードがあります

    弱点


    Rainbow table Attack.
    これは、所望のハッシュ値を計算したテーブルを用いて暗号化メッセージを識別する方法である.
    これを比較するために,一方向hash関数は2つの方法を用いる.
  • Salting
  • key Stretching
  • Salting


    入力したデータに追加の文字列を追加して暗号化します.
    このプロセスはsaltingと呼ばれています

    Key Stretching


    ハッシュ操作は、復号化のプロセスではなく、複数回行われる.

    Bcryptでのセキュリティ


    Bcryptはgensaltで暗号化
    def hashpw(password: bytes, salt: bytes) -> bytes:
    bcryptのDefinitionが見えたらhashpwを作成中
    byteタイプのコードとsalt値を入力して暗号化

    上の場合は同じパスワードを何度も保存しています.
    バイトコードが異なることがわかります

    JWT


    Json Web Tokenの略
    アクセスtokenを発行する多くの方法の一つです
    ログインするとトークンが発行され、そのトークンを使用してユーザーを検証します.
    後続サービスにログインせずに機能を使用
    tokenはヘッダを介してフロントに渡されます
    以前は、バイトコードのtokenを使用していました.
    stringのtokenを交換します

    構成



    見出し


    アルゴリズムとトークンタイプの場所
    ヘッダの内容はBASE 64で符号化され、JWTの第1の部分に記録される

    payload


    情報を含む部分.
    公開クレーム(expなど)は、満期時間を表します.
    およびクライアントとサーバの間で協議する際に使用される専用クレーム.
    これら2つの要素を組み合わせてBASE 64を符号化して2番目の要素に配置する

    Signature


    シンボルは、BASE 64 URLで符号化されたヘッダと、ヘッダとして指定されたロードJWTsecretである
    アルゴリズムを使用して暗号化して送信
    フロントエンドで送信されたトークンに偽造・改ざんされた部分があるかどうか.
    暗号化されたコンテンツではなくコードされたコンテンツが含まれており、誰もがオリジナルを見ることができます.
    したがって、重要な情報はトークンとして格納されない
    JWTサイトにアクセスすると、エンコードされたコンテンツが何であるかを特定できます.