Menu
CoddyTech

新しいソルト

CoddyのNode.jsジャーニー「認証とセキュリティ」セクションの一部。レッスン 3/24。

同じパスワードを選ぶ人もいます。ソルトとは、保存するパスワードキーを導出するときに含めるランダムなデータです。新しいソルトを使うと、同じパスワードから異なる保存キーが生成されます。ソルトはキーの隣に保存され、秘密にする必要はありません。

const salt = randomBytes(8).toString('hex');
// 8バイトの乱数を16文字の16進数で表したもの

新しいパスワードごとに呼び出される関数の中でソルトを生成します。サーバーの起動時に一度だけ作成した値は再利用されてしまいます。固定の練習用ソルトを使ってキーを導出しました。パスワードを保存するには、毎回新しいソルトが必要です。ここでは、ソルトの生成と、そのテキストの長さが32文字であることの確認だけを練習します。

randomBytes は暗号学的な乱数生成器を使用します。Math.random() はセキュリティ上重要な値を生成する目的ではありません。ソルトには、インポートした暗号関数を使ってください。

challenge icon

チャレンジ

簡単

これは小規模な練習プロジェクトです。セットアップは用意されているので、編集するのは exercise.js だけです。

salt に、新しい16バイトのランダムなソルトを16進数で返してください。実行して GET /result を2回呼び出すと、それぞれの応答に異なる32文字の16進数文字列が含まれます。固定のソルトは使用しないでください。

自分で試してみよう

import { randomBytes } from 'node:crypto';
export function exercise() {
    return { salt: '00000000000000000000000000000000' };
}

認証とセキュリティのすべてのレッスン

自分で練習してみよう: Expressプレイグラウンド