• ベストアンサー

Linux での暗号化の方法

selenityの回答

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

メインのperlの方は分からないので他の方に お任せします。 phpであればcrypt()、md5等のphp関数がありますので 多分perlにもあるでしょう。 UNIXの/etx/passwdファイルは、最近ではセキュリティ の観点から、このファイルにはパスワードは含まれていません。 その代わり誰でも開けます。 んで、パスワードの本体はOSによって異なりますが、 FreeBSDであれば/etc/master.passwd Linuxなら、/etc/shadow ファイルに含まれています。 当然暗号化された状態でですが、、、 FreeBSD/Linuxのパスワードの暗号化にはMD5という 技術が使用されており、このMD5は基本的には 逆方向の演算はできない仕組みになっています。 したがって、解析には総当たりのチェックを することになります。 つまり、パスワードとして使用可能な8文字の 組み合わせ全部を試すことになります。 MD5が使用されている場合、パスワードフィールドが 「$1$」で始まっています。 MD5以外ではDESが使われている場合もあります。 DESの場合は「$1$」で始まらないので簡単に区別できます。

posha
質問者

お礼

selenity さん、ご回答ありがとうございます。 質問しておいてなんですが、僕の頭脳では理解できないということがわかりました。(^-^; しかしながら、もっとも重要な「MD5は逆方向の演算ができない」という点をお聞きできたので、安心できました。ちなみに、crypt 関数にも、当然のごとく MD5 という技術が用いられてるわけですよね? 平たく言うと「crypt による暗号も不可逆」と考えて大丈夫ですね? そこだけ確認させてください。よろしくお願いします。

関連するQ&A

  • PerlでLinuxのユーザー認証・管理プログラム

    ブラウザでLinuxのユーザー名とパスワードと入力して、 ユーザー認証してログイン後、Linuxユーザーの パスワードを自分で変更できるプログラムが作りたいのです。 /etc/passwdにパスワードが直接記録されていれば簡単なのでしょうが、 シャドウパスワードなので苦労しています。LinuxはFedora Core3です。 まず、/etc/shadowに記録されているような、 $1$ではじまる暗号化されたシャドウパスワードをPerlで作るには どのようにしたらいいのでしょうか。 pwconvのソースをみたらどんなアルゴリズムかわかると思い、 shadow-utilのSRPMをインストールしてみたりしましたがわかりませんでした。PHPのメーリングリストに $salt = substr(md5(microtime()), 0, 9); return crypt($password, "$1$" . $salt); このようなコードがあったのですが、これでは$saltが毎回 代わってしまい、よくある $salt=substr(暗号化されたパスワード,0,2); if(crypt($pass,$salt) ne 暗号化されたパスワード){ &err("パスワードが違います"); } のような認証ができないのではないかと思いました。 Linuxではどのようなアルゴリズムでシャドウバスワード を作り、パスワードの認証をしているのでしょうか。 つまり、簡単にいうとPerlでシャドウパスワードを使った Linuxユーザーのパスワード認証と パスワード変更ができないか、ということなのです。 また、Perlでシャドウパスワードなど作らなくても system()などを使ってLinuxのコマンドを使えば 各ユーザーの認証やパスワードの変更がブラウザでできるという場合は、 教えていただけないでしょうか。 どうかご教示ください。よろしくお願いします。

  • Linuxユーザのパスワードを空に

    する(useradd直後の状態)にはどうしたらいいのでしょうか? 空のパスワードを入れるために単にリターンだけすると 以下のようになりできません。 #passwd passuser↓ Changing password for user passuser. 新しいUNIX パスワード:↓ よくないパスワード: あまりにも短かすぎます 新しいUNIX パスワードを再入力してください:↓ パスワードが与えられていません パスワードが与えられていません パスワードが与えられていません passwd: 認証トークン操作エラー # どうすればパスワードが空のユーザに出きるでしょうか? userdelした後useraddするしかないのでしょうか?

  • パスワードの暗号化

    基本認証でアクセス制限をしているページがあります。 複数の人にそれぞれユーザID、パスワードを与えるのですが、 数が多くて一つ一つ暗号化するには手間がかかります。 パスワードを一気に暗号化できるようなソフトやCGIはないでしょうか?

    • ベストアンサー
    • CSS
  • パスワードを暗号化するCGI

    基本認証のパスワードを暗号化するCGIを作ったのですが、 基本認証で認証させようとしてもうまくいきません。 cryptで行った暗号化は基本認証には使えないのでしょうか?

    • ベストアンサー
    • CGI
  • ユーザー認証についての質問

    こんにちは。5dai@perl初心者です。 お仕事でCGIユーザー認証を作成することになりました。 比較的よくあるもので、ブラウザ上でユーザー名、パスワードを入力してログインボタンを押して 認証させ、ログインページを表示させます。 又、管理者がログインすると、ユーザー登録、削除やパスワード変更が 行なえるようにするつもりです。 cgiをPerlでやろうと思うのですが、やり方としてはWeb Server機のOSがSolarisなので、 Unix機に付属しているdbmをリスト(ユーザー名、パスワード)の記憶域として利用しようと思います。 そこでちょっと質問です。 1.CGIでの認証は、どのような方法が一番多いのでしょうか??   今回は、ブラウザ ←→ WEBサーバー ←→ cgi(perl) ←→ dbm 2.又、perlでよく利用するサイト(サンプルがある)があれば教えてください。   できれば、ユーザー認証のサンプルがあれば・・・。 もし、表現が変なところがあれば遠慮なく指摘して下さい。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • .htaccessを使ったBasic認証の、パスワードを暗号化にしたいです!

    初心者です。 今回初めてBasic認証と言うものを設置してみようと思うのですが、途中から分からなくなってしまいました。そこで色々と疑問が出てきているのですが、もしご経験者の方がおられましたら、よろしくお願いいたします。 質問1 パスワードを暗号化したいのですが、やり方がわかりません。telnetで試みたのですが、入ることが出来ませんでした。なので、暗号化されたパスワードを取得することが出来ませんでした。この場合はどうしたらよいものでしょうか? 質問2 パスワードはサーバーによって違うのでしょうか?探したところ暗号化パスワードを自動で生成してくれるようなツールがネット上にあったのですが、この生成してもらったパスワードはどこのサーバーでも使えるのでしょうか?暗号化の基準はみんな一緒でしょうか? 質問3 安全性についての疑問です。Basic認証でパスワードを暗号化した場合見られても、本当に分からないでしょうか?もし詳しい人が見たら、すぐに解読して入室できてしまうものでしょうか? もし、お一つでも分かることがありましたら、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 標準のシャドウパスワードからMD5へコンバートする

    標準のシャドウパスワードからMD5へコンバートすることにしました。 そして、/etc/pam.dファイルに適切な変更を行います。 次に何を行いますか? という問に対して 答えは「passwdプログラムを利用しているすべてのパスワードを手動で変更する必要がある」 聞きたいことは暗号化を変更する場合は常にpasswdコマンドでユーザのパスワードを変更しないといけないのでしょうか? 回答のほどよろしくお願い致します。

  • ApacheのBasic認証について

    お世話になります。 ここで、このような質問をしていいのかどうか迷ったのですが、 今ちょっと悩んでいる事がありますので、どうか力を貸してください。 Apacheの機能で、特定ディレクトリにユーザ認証を設定することができますよね? パスワードによるユーザ認証の設定をし、htpasswdコマンドでパスワードを設定すると、パスワードファイルに暗号化されたパスワードが入力されますよね。 今回やりたい事は、その暗号化されたパスワードを解読し、元のかたちにもどしたいのです。 どこかのホームページでは「割と簡単に解読されやすい」と書いていたのを見た気がするので、 実際にどのような手段でやると解読されてしまうのか、今、調査しています。 どなたか分かる方、どうかご教授ください。 または、参考になるホームページがあれば是非とも教えてください。

  • アドレスの暗号化について

    検索エンジン等で検索結果のアドレスが暗号化?されていますがどうすればできるのですか? 今回、ユーザーIDとパスワードを入力して検索するページを作成しているのですが、検索結果を複数ページに表示するのにリンクアドレスに引数として渡す方法を使用しています。 パスワードがばれないように暗号化して引数にしたいのですが、解読方法を含めて宜しくお願いします。

    • ベストアンサー
    • Perl
  • 【PHPで認証】パスワードの暗号化は無意味では??

    PHPにて会員専用ページを作りたいと考えているものです。 パスワードは暗号化すれば安全…と思っていました。しかしよく考えると暗号化されたパスワードをハッカーが盗んで自分のPCのCookieに入れたらなりすましが可能ではないのか?ということに気づきました。正規のユーザーもログイン後は暗号化パスワードをサーバーに渡してページごとに認証しているわけですから。 パスワードの暗号化は本当に意味があるのでしょうか? 暗号化されたパスワードは盗まれても問題ないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP