web-dev-qa-db-ja.com

認証にUUIDを使用しても安全ですか?

認証にUUIDを使用するアプリケーションがあります。 UUIDは、iOSアプリケーション内にKeyChainとして保存されています。 UUIDを投稿するときは、httpsを使用します。デバイスに物理的またはリモートでアクセスできない限り、パスワードを取得する方法はありますか?このアプローチは強く推奨されていませんか?

この質問 は、UUIDをテキストフィールドの入力として使用する方法を示していますが、私の質問は、ログイン完了状態の後にUUIDを認証として使用することです。テキストフィールドに入力する場合、ユーザーはUUIDを知っている必要があります。 (アプリケーションについて話す)まず、ユーザーは自分のUUIDを知りません。次に、UUIDはKeyChain内で暗号化されます。

2
Test tester

いいえ、UUIDを認証トークンとして使用しないでください

UUIDはランダムまたは予測不能ではなく、一意になるように設計されています。 UUIDの生成に使用されるメソッドのリストについては、 wikipedia を参照してください。たとえば、

バージョン1(日時とMACアドレス)

バージョン1は、「ノード」(つまり、UUIDを生成するコンピューター)の48ビットMACアドレスを60ビットのタイムスタンプで連結します。これは、1582年10月15日の午前0時からの100ナノ秒間隔の数です。

私が攻撃者で、サーバーが生成する次のUUIDを予測しようとした場合は、UUIDの1つを確認したら、MACアドレスがわかっているので、システムクロックをあなたのシステムクロックの近くに同期させ、高い確率でUUIDを予測します。あなたのUUIDはあなたに与えています...多分3桁のPINに相当するセキュリティと同等です。


これで、これをサーバーとログインしたユーザーだけが知っているスーパーシークレット値として使用することを提案しています...

私はあなたのスキームを改善するためにいくつかの特定の提案をすることができますが、おそらく「ウェブ認証」と「セッション管理」について広範囲の基礎を読むことから利益を得るでしょう。ここにあなたが始めるための良い入門書があります:

https://www.owasp.org/index.php/Session_Management_Cheat_Sheet

6
Mike Ounsworth