🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

2回答

4869閲覧

bcryptをやめてshaでハッシュ化すべきですか?

yuki84web

総合スコア1857

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

0グッド

5クリップ

投稿2019/12/16 07:17

OWASP セキュリティ要件定義書3.0 (https://github.com/ueno1000/secreq) によれば

ハッシュ関数、暗号アルゴリズムは『電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)』に記載のものを使用すること

広く使われているハッシュ関数、疑似乱数生成系、暗号アルゴリズムの中には安全でないものもあります。安全なものを使用するためには、『電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)』に記載されたものを使用する必要があります。

と、あります。

電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)※CRYPTRECホームページ
https://www.cryptrec.go.jp/list/cryptrec-ls-0001-2012r4.pdf

リストでは、ハッシュ関数としてSHA256, SHA384, SHA512が挙げられています。

現在開発で使用しているフレームワークでは、標準でbcryptを使われるようになっていますが、
カスタマイズによってshaに変更すべきでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

結論から言えば、bcryptを使うべきであって、SHAに変更するべきではありません。
OWASP セキュリティ要件定義書3.0 のルーツとして、トライコーダー版(作成者はOWASP版と同じ上野宣氏)の『発注者のためのWeb システム/Web アプリケーションセキュリティ要件書』があります。こちらには複数のネタ元がありまして、その一つは以下の資料だと思われます。トライコーダー版のセキュリティ要件書には参考文献として記載されていました。

高木浩光『安全なWeb アプリ開発の鉄則2006』

この資料の中に、

使用する暗号と乱数の指定

• 目的
– 安全性の評価されていない独自暗号アルゴリズムの使用を禁止する
• CRYPTREC電子政府推奨暗号の使用を指定
http://www.cryptrec.jp

とあります。
これが、トライコーダー版だと、

9.3 ハッシュ関数、疑似乱数生成系、暗号アルゴリズムはCRYPTRECの電子政府推奨暗号リストに記載のもののみを使用すること

広く使われているハッシュ関数、疑似乱数生成系、暗号アルゴリズムの中には安全でないものもあります。安全なものを使用するためには、CRYPTREC の電子政府推奨暗号リストに記載されたものを使用する必要があります。

となっています。これが少し修正されて、OWASP版の記載として残っているわけです。この項は、高木氏の資料を含めて、元々パスワードの保存については意図していないと思われます。

以上のような成り立ちの経緯もあって、『OWASP セキュリティ要件定義書3.0』はOWASPの冠はついているものの、現在の目から見て記載内容に統一性がなく、この内容にとらわれるのはどうかと思います。asmさんが紹介されているように、OWASPにはパスワード保存のチートシートもあることですし、広く文献を検討されたほうがよいと思います。

投稿2019/12/16 11:07

ockeghem

総合スコア11705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2019/12/17 03:00

ありがとうございます。2.0の頃から、この要件定義書をでチェックしつつ開発してきましたが、これからはご提示いただいたチートシート含め他の文献も参考にするようにします。
guest

0

「セキュリティ要件定義書」を満たすかについては策定した人の意見を聞いてみたいところですが

セキュリティ的に適切であるかについてはOWASPのパスワード保管に関するチートシートを見ると

Use Bcrypt unless you have a good reason not to.

Bcrypt is the most widely supported of the algorithms, and should be the default choice unless there are specific requirements for PBKDF2, or appropriate knowledge to tune Argon2.

と、ある通り「特別な必要」や「知識」がないのならばbcryptを使うのは現状適切なようです。

ただ、72文字制限やwork factorの問題があるので詳しくはリンク先を一読することをおすすめします。

投稿2019/12/16 09:54

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2019/12/17 02:55

ありがとうございます。チートシートを確認してみます。72文字制限については把握していましたが、とりあえずbcryptのままにしておくことにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問