【2023年最新】セキュリティを意識したパスワードに関する要件定義の仕方について
要件定義をする際、自社の業務を正しく理解している方であれば業務要件や機能要件の策定はまだ出来ると思います。しかし、システム開発における正しい知識がなければどうしても出来ない要件、それがセキュリティやデータベースに関連する要件です。
そこで、本日は多くのサービスに使われているであろう「パスワード」に関してどの様な要件を出せばよいか実際に書いた要件定義の資料をベースに解説していきたいと思います。
要件定義の内容
一般的なセキュリティレベルであれば、以下の内容を要件定義に含めるようにしましょう。
概要 | 詳細 |
パスワードの形式 | 半角英数字+記号の中で2種類以上、かつ8文字以上とする。 ※記号の一部は別途禁則文字として定義するため割愛。 |
パスワードの保存方法 | ユーザーが指定したパスワードはそのまま保存せず、ソルト付きで生成した不可逆のハッシュ値として保存し、その情報で認証する仕組みにすること。(可逆形式の暗号化は禁止とする) |
暗号化 | CRYPTREC暗号リスト(電子政府推奨暗号リスト)によって定められる暗号化技術(暗号アルゴリズム、ハッシュ関数)を使用すること。 ※CRYPTREC暗号リストは「https://www.cryptrec.go.jp/list.html」に公開されています。 |
この要件をみてもピンと来ない方はそのままベンダーに対して伝えても問題ありません。しっかりとしたベンダー(SIerや開発会社)であれば、この要件をみただけでそれに則したシステムを構築してくれます。
逆を言えば、この要件に対して「分からない」「疑問を投げる」ようなベンダーはかなり危険です。
前述した要件は極めて一般的なものであり、仮にこのレベルのセキュリティ要件が伝わらないとすれば、他の要件に対しても明らかに落ち度が出てくるであろうことは明白です。最悪のケースで言えば「情報漏洩」などの企業にとって最大のリスクを抱えてしまうためしっかりとしたベンダーを選定していただければ幸いです。(ベンダー選定については別途お話したいと思いますので今回は割愛します。)
曖昧な要件定義をしてしまうことでどの様なトラブルが起きるのか?その原因になる部分について解説!
先ほどお話した通り、要件定義をしっかりと行うことは非常に重要なことであり、それこそがお客様の情報を守る手段と言えます。ただ、実例がないと少し分かり辛いと思いますので、他社サイトをみていて間違いなくトラブルになるだろうと感じたものをご紹介していきます。
1.パスワード忘れ機能
あるサイトを使っていた際、パスワードを忘れてしまったため「パスワードを忘れた方」というリンクからパスワードの再発行を行おうとした時のことです。メールアドレスを入力し、届いたメールを見た時衝撃を受けました。
なんと、「メールの本文にパスワードがそのまま書かれていた」のです。
これの何に問題があるのかと言えば、このパスワード忘れの機能によって「知らない誰かのメールアドレスを入力してしまえば、その人になりすますことが出来る可能性がある」のです。
現代では多くのサイトがメールアドレスとパスワードの組み合わせでログイン出来るため、仮にそのメールアドレスの持ち主がパスワードを使い回しているとあらゆるサイトでなりすましが成立してしまいます。これは、もちろん本人が正しくパスワード管理出来ていないことも問題ではあるのですが、それでもこの仕様がトラブルを起こす元であることはご理解いただけると思います。
だからこそ、今回ご紹介した要件定義で「暗号化」という項目があるのも納得していただけたのではないでしょうか?
2.ログイン機能とアカウントロック機能
次に取り上げたい例が、パスワードを入力する「ログイン機能」と「アカウントロック機能」についてです。
これはパスワードに関する要件定義というより、機能要件に相当する部分になるため、機能要件として一つにまとめても問題はありません。ただ、ログイン機能を提供するのであれば、間違いなく気を付けて欲しい要件があります。
それが、ログインに失敗したメールアドレスのアカウントをロックする機能「アカウントロック機能」です。
アカウントロック機能が実装されていないと、早い話ハッカーが必ずパスワードの解読に成功が出来てしまいます。それがどれほど複雑なパスワードであってもです。更に言えば、ネットワークを介してそのアカウントが攻撃され続けるため、余計なネットワークコストがかかったり、最悪の場合はシステム自体が動作しなくなるなどのリスクもあります。
こうした損失は計り知れないものであり、間違いなく是正すべき対象と言えることが分かることでしょう。
まとめ
パスワード関連の要件定義についてまとめていきましたが、いかがでしたか?
他にも気を付けなければならないことはありますが、お伝えしたかったのが「こうしたリスクを可能な限り少なくしていくというのが非常に重要な意味を持つ」ということです。些細なことに感じるかもしれませんが、本当に大切なことなので、折角システムを構築するのであれば是非ケアしていただければ幸いです。
もし、要件定義に悩んでいるという方は是非弊社までご連絡ください。経験豊富なコンサルタントやエンジニアが必ずシステム開発を成功に導きます。