ホームページにおいて、特定のユーザーしかアクセスできないようなページを作るために、パスワードによる認証を行おうと考えています。
perl による cgi を使う予定なのですが、プログラム中に
if ($passwd ne "Test") {~~}
などと書いたら、プログラムを見れる立場にある人間がみたら一目瞭然でパスワードを知られてしまいます。
そこでお聞きしたいのですが
unix の /etc/passwd は暗号化されていて、ユーザーがそれを見ても簡単には解読できないと思います。perl の cgi から、同レベルに暗号化および認証することは可能ですか? 可能だとしたら、そのための方法などを教えてください(たとえば、それを行う便利なシステムコマンドや、フリーウェアがあるなど)。
ついでに、向学のためのウンチクとして、unix のパスワードの仕組みなどもお聞きできるとうれしいです(たしか、/etc/passwd からは絶対にデコードできないと聞いたことがあるのですが)。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
UNIXのと同レベルかどうかは、判りませんが、
Perlのコマンドにcrypt(Unixのコマンドにも同様のがあります)というのが
あります。
詳しくはリファレンスを見てほしいのですが、
$val = crypt $password, $salt;
$val <- 暗号化された文字列
$password <- 暗号化する文字列
$salt <- 暗号化に使うキー(英数字2文字)
cryptで暗号化された文字列は複合化する方法が基本的にありません。
cryptに渡す$passwordと$saltが同じ物なら、当然同じ結果を返します。
なので、認証を行うときは、
すでにcryptされたデータと、入力されたデータのcryptした結果を
比較することになります。
普通は、
$val = crypt $password, $password;
という使い方をすると思います
ありがとうございます! ほんとにありがとうございます!
crypt なんていう便利なコマンドがあるって、はじめて知りました。
実際に
print (crypt ("test", "test")."\n");
などと実行してみると、みごとに暗号化された文字列が吐き出されました。これからテストを繰り返すことになると思いますが、十分にいけそうです。
ほんとうにありがとうございました。
No.3
- 回答日時:
MD5には1方向性関数が使用されており、
この1方向性関数は数学的に逆演算が
出来ないことが証明されていたはずです。
そのため、「考えられる組み合わせの総当たりで
確かめる」しか方法がないのです。
MD5にはもう1つ入力データ長に関らず、固定長の
データを出力すると言うという特徴があるので、
いろんな長さの文字列を変換して、常に一定長に
なるようであればMD5でしょう。
一方、cryptの方ですが、これはOSの暗号化機能を
使う場合があるのでMD5とは限りません。
ありがとうございました。
「常に一定長になれば・・・」
という部分から、perl の crypt コマンドによるエンコードも
おそらく MD5 であろうと推測できました。
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$」で始まらないので簡単に区別できます。
selenity さん、ご回答ありがとうございます。
質問しておいてなんですが、僕の頭脳では理解できないということがわかりました。(^-^;
しかしながら、もっとも重要な「MD5は逆方向の演算ができない」という点をお聞きできたので、安心できました。ちなみに、crypt 関数にも、当然のごとく MD5 という技術が用いられてるわけですよね? 平たく言うと「crypt による暗号も不可逆」と考えて大丈夫ですね?
そこだけ確認させてください。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有線LAN のセキュリティについて
-
Microsoft Edgeでページが開け...
-
httpをhttpsにしたい
-
ウェブページへのアクセス不可 ...
-
掲示板サイトへの書き込みがで...
-
Webゆうパックプリントとプリン...
-
PC Cleaner
-
ゲーミングノートパソコンはダメ?
-
iiyama ProLite XUB2390HSの起...
-
チャイルドライン
-
CanoScan LiDE 600FのWindows10...
-
これのどこが削除対象になるの...
-
ネットワーク構築について
-
パソコンページダウン
-
特定のサイトが開けません
-
Webサーバ(yuzu.uja.or.jp)に...
-
三井住友カードについて質問です。
-
セキュリティが軟弱過ぎてる件
-
ホームページをSSL化するのに、...
-
お願いいたします。ホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有線LAN のセキュリティについて
-
Microsoft Edgeでページが開け...
-
iiyama ProLite XUB2390HSの起...
-
Webゆうパックプリントとプリン...
-
ウェブページへのアクセス不可 ...
-
httpをhttpsにしたい
-
掲示板サイトへの書き込みがで...
-
PC Cleaner
-
トイレのコンセントにアースが...
-
マインクラフト ポート開放につ...
-
「このページは動作していませ...
-
URLパラメータ
-
マインクラフト ポート開放につ...
-
至急教えてください! このサイ...
-
会社のWi-Fiに繋いだパソコンの...
-
URLが開けずホームページが見る...
-
ゲーミングノートパソコンはダメ?
-
特定のサイトを開くとPCから異音
-
バツがない漫画広告を簡単に消...
-
サークルの複数パソコンでメー...
おすすめ情報