パスワードを忘れた? アカウント作成
13858130 story
セキュリティ

フリー開発者に登録フォームを作成させたところ半分以上がパスワードをハッシュ化しなかったという研究結果 104

ストーリー by hylom
100~200ユーロだとこんなもんかという気も 部門より
あるAnonymous Coward曰く、

43人のフリーランス開発者を対象にWeb登録フォームを作らせるという調査を行ったところ、そのうち26人がパスワードを平文保存していたという論文が発表された(柴田淳氏のTweet)。

この論文では、開発者を次の4グループに分けて依頼を行った。その結果、22歳から68歳の43人の開発者がこの「業務」を請け負ったという。

  • 報酬100ユーロ、「パスワードを安全に保存するように」との指示あり
  • 報酬200ユーロ、「パスワードを安全に保存するように」との指示あり
  • 報酬100ユーロ、「パスワードを安全に保存するように」との指示なし
  • 報酬200ユーロ、「パスワードを安全に保存するように」との指示なし

その結果、ハッシュ関数を使って不可逆な形でパスワードを保存したのは17人の開発者のみで、残りの26人は可逆的な暗号化もしくは単純なBase64エンコーディングでパスワードを変換して保存していたという。また、可逆的な暗号化やBase64エンコーディングを使っていた開発者に対しセキュリティ的な問題を指摘したところ、12人がハッシュ関数を利用するように変更を行ったそうだ。

また、「パスワードを安全に保存するように」との指示を出していた開発者はその過半数がハッシュ関数を使ってパスワードを変換して保存していた一方、その指示がない開発者らはほとんどがパスワードを可逆的な暗号化もしくはBase64で保存していたという。そのほか論文では各開発者が使ったパスワード変換アルゴリズムや作業時間などについてもまとめられている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2019年03月11日 18時49分 (#3578838)

    「保存しろ」と言われたら、後で取り出せないといけないと解釈して可逆方式にするよ。
    「パスワード方式で認証できるようにしろ」なら、認証さえできればいいから、非可逆にするけど。

  • 論文を斜め読みした感じでは,実験では260人のJAVA使いに仕事(JAVA+PostgreSQL)を依頼して,211人に断れられています
    つまり,この実験はそもそも8割の人に断られて,残りの2割の人から集めたデータを解析したものです.

    断られた理由は
    返信なし:72名
    JAVAとかSQLとか判らないという理由で辞退:63 名
    忙しいから無理:22名
    などでした(ちゃんと読んでいませんが,ぱっと見では,文章中の人数と表の人数があっていないようでした)

    そして残った49名のうち,5名は仕事が完了できなくてクビ,最終的に残った44名が論文のデータになっています

    また44名のうちで,最初の納品でパスワードを暗号化してなかった人は,暗号化して再納品を指示しています
    ですので,44名のフリー開発者の納品物は,一応全て暗号化されています.(多分5名は暗号化できなくてクビ扱いです)

    ただその暗号化の方法が BASE64 だったり SHAでまちまち (詳しい事は論文の表 2に書いてあります)
    というのがこの論文の内容です

    このような内容ですので,いろんな意味で
    「フリー開発者に登録フォームを作成させたところ半分以上がパスワードをハッシュ化しなかったという研究結果」
    というタイトルは不適切な気がします.

    個人的には,特に211名つまり8割以上の人に依頼を断られている時点で実験デザインが悪いと思います.
    意地悪な言い方をすれば
    - データはサンプルが偏っている
    - 実験の結果,ハッシュ化しなかったのは 22名だけ.8割以上は調査できなかった.
    - データの解釈として,普通なら断るような仕事を引き受けた,つまり仕事に困っているエンジニアだからレベルが低いとも言える
    という感じで突っ込み可能な内容です.そのまま鵜呑みにするのは危険な論文だと思います.

  • by Anonymous Coward on 2019年03月11日 17時43分 (#3578775)

    Secure Insecure
    Prompted100 5 4
    Prompted200 8 4
    Non-Prompted100 1 10
    Non-Prompted200 3 7

    • by Anonymous Coward

      「指示を出した人は過半数がハッシュ関数を使用」とはいったものの、それでも21分の8はハッシュ関数を使わなかったのか。
      指示しなかった評価群の21分の17と比べりゃ遥かにマシとはいえ、これは酷い。。。

    • by Anonymous Coward

      MD5もSecureになってるけど、これはええのかな。
      Salt有無も特に問題とされてないようだ。
      まぁひどいやつが最悪にひどいからか。

  • by JULY (38066) on 2019年03月11日 17時49分 (#3578782)
    68 歳の開発者に親近感を感じる...

    実際、自分は 22 歳よりも 68 歳の方が遥かに近い。
  • by Anonymous Coward on 2019年03月11日 18時37分 (#3578826)

    パスワードリセットフォームを用意した開発者は1人もいなかった....(かも)

  • by Anonymous Coward on 2019年03月11日 17時55分 (#3578788)

    安全に保管しろと言われててやってない奴は論外としても
    お金をいくら積まれようが指示が無いことまで勝手にやるべきじゃないから、
    開発者としての腕だの倫理観だのそんなこととは無関係な気がする。

    通常の業務であれば真っ先に要件定義の段階で聞く内容だけど、
    この実験では発注以後の納品までコミュニケーションはたぶんないんでしょ?

    発注側は発注時に気をつけろってことを言いたいんだろうか。

    • by Anonymous Coward on 2019年03月11日 20時11分 (#3578908)

      CoCo壱なら、カレーにはスプーンがついてくるのは常識であって、個別に注文する必要があるものではない。
      しかし本格的なカレー店では、もしかしたらスプーンがついてこないかも知れない。
      # 手で食ってるところに、インド人の店長が申し訳なさそうにスプーンを持って来るまである。

      一般的に
      「××には○○するのは常識であって、個別に注文しなければならないものではない」
      ってのは往々にしてあるよね。

      今回、パスワードに関してはハッシュはセットではなくオプションである、と考える技術者が
      少なくない事が分かったのは、とても興味深い事だと思う。
      「そうあるべきである」「いやそれじゃイカンでしょ」と議論するのはこれからだね。

      親コメント
    • Re: (スコア:0, 参考になる)

      by Anonymous Coward

      > この実験では発注以後の納品までコミュニケーションはたぶんないんでしょ?
      違う。論文読め。

      > 発注側は発注時に気をつけろってことを言いたいんだろうか。
      違う。論文読め。

      • Re: (スコア:0, フレームのもと)

        by Anonymous Coward

        面倒、
        研究者ならともかく、雑談サイトでそこまで要求されても。

      • by Anonymous Coward

        で、どういう結論なのさ。

      • by Anonymous Coward

        情報ゼロのこのコメントがなぜプラスモデされるのか。

      • by Anonymous Coward

        >>発注以後の納品までコミュニケーションはたぶんないんでしょ?
        >違う。論文読め。

        アブストに書いてないようですが。英語を本文全部読めと?
        主眼はコミュニケーションじゃないようですが。

    • by Anonymous Coward

      書いてないことを勝手にやってくれなかったって言う結果に何の意味があるのか分かんないですよね

      やりがい搾取したいのかな

    • by Anonymous Coward

      パスワードのハッシュ化を言われないとやらないようなエンジニアは使うなってことじゃね。
      もしくは世の中その程度のエンジニアであふれかえってると言いたいか。

      • by Anonymous Coward

        パスワードを保存する事が要件ならハッシュ化したらパスワードは失われるから問題外

        • by Anonymous Coward

          Abstractにはwrite code that stores passwords securelyとあるね。
          確かにハッシュを保存しただけだとパスワードを保存してない。指示に問題がある?

      • by Anonymous Coward

        漏れる可能性が高いんですね
        わかります

  • by Anonymous Coward on 2019年03月11日 17時58分 (#3578792)

    報酬が100から200ユーロなのか。つまり1万円から2万円。価格相当のクオリティの気がするんだが。

    もう一桁増やしたら結果がどうなるか興味ある。

    • by minet (45149) on 2019年03月11日 19時46分 (#3578890) 日記

      言語とDBを変えた場合も気になる

      親コメント
    • by Anonymous Coward

      その通り。この金額で、やる方がおかしいでしょ。

      • by Anonymous Coward

        実際8割の人に断られたらしいし

    • by Anonymous Coward

      Cognitoで済ませる

    • by Anonymous Coward

      だから、8割の人に断られてるのでしょうね。
      この価格でも断らなかった残りの2割の調査だから、お値段相当としか言いようがない。

    • by Anonymous Coward

      バイト感覚の人に仕事頼んでみたなのかもね
      本業がプログラマでない人が小遣い稼ぎもできるのが、ネットで仕事頼むサイトを利用するメリットだったりするw

    • by Anonymous Coward

      何桁増やしてもハッシュ関数通すかどうかが変わるとも思いませんが

  • by Anonymous Coward on 2019年03月11日 21時50分 (#3578975)

    まぁコミュ障であることは否定しないが。

    指示されなかったときの「開発時」のデフォルトは暗号化しない方だと思います。
    なぜなら、暗号化した場合、開発にもデバックにも時間がかかるので。

    1,2万円程度なんて、単なる開発のサンプルだと思って、何もしないと思います。

    どのみち暗号化そのものは簡単ですし。昔はアルゴリズムから考えたものだ。。

  • 不可逆にしても良いという言質を取るまでは、生パスワードが必要な用件が追加される可能性があるので可逆な形で暗号化すると思います。

  • by Anonymous Coward on 2019年03月11日 23時52分 (#3579047)

    それよりも、外部サービスを使うためとかで、それのパスワードを可逆的に保存しなきゃいけない状態の方が面白い結果になりそう。

    諦めて平文、とりあえずbase64でなんちゃってで隠す、鍵をサーバーの読めるところに置いて暗号化、鍵はプロセスのメモリーに起動時に読み込ませて、ファイルとしては保存しない、とか付近で色々な結果になるのかな。

typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...