サーバーへの通常の旅行なしでユーザーを認証するためのアイデアを探しています。クライアント側でユーザーを認証する半安全な方法は受け入れられます。
暗号化されたシークレットをjsファイルに保存することを考えています。正しいコードを持っているユーザーだけがそれを解読でき、正しいコードを入力するか、Cookieなどに保存できます。いいですね、または他のアイデアはありますか?
サーバーへの通常の旅行なしでユーザーを認証するためのアイデアを探しています。クライアント側でユーザーを認証する半安全な方法は受け入れられます。
暗号化されたシークレットをjsファイルに保存することを考えています。正しいコードを持っているユーザーだけがそれを解読でき、正しいコードを入力するか、Cookieなどに保存できます。いいですね、または他のアイデアはありますか?
クライアント側の JavaScript による oauth を見てみましょう。Google で「oauth クライアント側のみ」を検索します。
たとえば、これ - https://developers.google.com/accounts/docs/OAuth2UserAgent
暗号化された秘密をjsファイルに保存することを考えています。正しいコードを持っているユーザーだけがそれを復号化でき、正しいコードを入力するか、Cookieなどに保存できます。
あなたが求めていることは間違いなく可能ですが、実際に役立つかどうかはわかりません.
PBDFK2 (「パスワードベースのキー派生関数 2」) のようなキー派生関数を使用する必要があります。ユーザーがパスワードを入力すると、KDF がパスワードをキーに変換します。次に、キーを使用して AES のような強力な対称暗号を操作します (また、CBC のような安全な操作モードを使用するようにしてください)。このアプローチはかなり安全ですが、キー ロガー (OS レベルおよびブラウザー レベル) とメモリ状態の検査に対して依然として脆弱です。
ここで重要な点は、最初にシークレットを暗号化するためにユーザーがパスワードを入力する必要があることです。ユーザーにシークレットを送信してからパスワードを要求することはできません。ユーザーはパスワードを使用してメッセージを暗号化し、後でアクセスするためにシステムに同じパスワードを要求させることができます。
または、自分でパスワードを選択し、キーと暗号化されたデータを生成してから、選択したパスワードを (暗号化されたデータと共に) ユーザーに送信して、記憶または安全に保存することもできます。
実際には、CryptoJSは AES と PBKDF2 の両方をサポートする JavaScript 実装です。