認証しますか#2


#検証または再試行
認証.ログイン時に入力したID/パスワードが正しいことを確認します.
なぜ認証が必要なのですか?誰がサービスをどのように使用するかを追跡できます.
一番大切なのはもちろんパスワードです
個人情報の暗号化を保護するには?ワンウェイフラッシュ

hash?


元のデータをすばやく参照するためのデータ構造.
入出力が高速であるため、暗号化に用いられる.

input=>hash関数=>output(未知値)
同じinput=>同じoutput
異なるinput=>異なる出力
MD 5、SHA-1(セキュリティホール)SHA-256
可能な場合には、数をすべてハッシュ値として販売するサービス、Rainbow Tableが存在する.
->補足?salting, Key Stretching

salting

  • salt? これは、一方向ハッシュ関数でダイシングを作成するときに追加されるバイト単位の任意の文字列を意味します.
  • ソースメッセージに文字列を追加してサマリーsaltingを作成

    salt値は、会員加入のたびにランダムに生成される->ログイン時にDBに保存されます.
  • Key stretching


    random salt+hashプロセスを複数回繰り返します.
    ハッシュ値の計算に要する時間を増やし続け,元の値の導出が困難になる.

    bcrypt


    Salting、Key Stretching代表ライブラリ
    bcryptハッシュによる結果値=要約
    一方向ハッシュ?
    ハッシュ関数は、資料構造内で資料を迅速に検索し、データの偽改ざんを確認するために使用されるが、復元できない一方向ハッシュ関数は暗号学的用途に使用される.
    「出力推定不可入力=復号不可」
    (cf.双方向ハシカ情報、accesstokenを保存)

    承認


    ログインに成功したらtokenに!
    JWT(JSON Web Token)
    タイトル+コンテンツ+署名=>ここで署名を復号して、ユーザーが理解できるようにします.

    bcryptの使用を試みる

    import { genSalt } from 'bcrypt';
    
    const pw = "hellojihyun";
    const generateSalt = async() => {
        console.log(await genSalt(10))
    }
    generateSalt();
    
    結果.
    tokenはログイン時に作成されます.
    tokenを解放する関数は?権限があるかどうかを確認するときに実行します.
    ex.私のページに接続するとき
    参考資料https://d2.naver.com/helloworld/318732
    学習資料https://emmanuelhayford.com/understanding-the-bcrypt-hashing-function-and-its-role-in-rails/