ホームページにおいて、特定のユーザーしかアクセスできないようなページを作るために、パスワードによる認証を行おうと考えています。
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で質問しましょう!
似たような質問が見つかりました
- その他(セキュリティ) IDと暗証番号・パスワードの管理の画期的かつ簡単便利な方法を考案した。他人に検証してもらう方法は? 5 2023/02/08 08:49
- その他(コンピューター・テクノロジー) 下に書いたの条件でgoogleアカウントの復旧方法等を教えてください。 1 2023/02/06 23:32
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- バックアップ パソコンHDDごとの暗号化(見られたくないファイルやフォルダ) 1 2022/05/21 22:08
- クレジットカード VISAでのネット決済にパスワードが2度も必要? 1 2022/04/04 14:40
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Yahoo!メール YahooIDをパスワード形式にしただけなのに、利用規約違反とされて電話番号が使えなくなりました 3 2023/03/25 04:08
- 戸籍・住民票・身分証明書 マイナンバーカードの問題点? 4 2022/11/10 16:32
- UNIX・Linux Ubuntu on Xorgのログインについて 2 2023/08/10 15:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スペースデスクというアプリは...
-
有線LAN のセキュリティについて
-
Webサーバ(yuzu.uja.or.jp)に...
-
Microsoft Edgeでページが開け...
-
ウェブページへのアクセス不可 ...
-
トイレのコンセントにアースが...
-
iiyama ProLite XUB2390HSの起...
-
三井住友カードについて質問です。
-
httpをhttpsにしたい
-
特定のサイトを開くとPCから異音
-
楽天ID利用停止
-
シャープのチャンネル設定
-
PC Cleaner
-
httpサイトの危険性について
-
httpd IPアドレスによるアクセ...
-
デジタル証明書の仕組みについて
-
SSL対応なのにhttp://で入力し...
-
あるサイトに、繋がる回線と繋...
-
URLが開けずホームページが見る...
-
セキュリティが軟弱過ぎてる件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースデスクというアプリは...
-
Microsoft Edgeでページが開け...
-
有線LAN のセキュリティについて
-
iiyama ProLite XUB2390HSの起...
-
セキュリティが軟弱過ぎてる件
-
お願いいたします。ホームペー...
-
URLのhttps://☓☓☓☓、、と http:...
-
httpをhttpsにしたい
-
ホームページをSSL化するのに、...
-
PC Cleaner
-
ウェブページへのアクセス不可 ...
-
トイレのコンセントにアースが...
-
Webゆうパックプリントとプリン...
-
URLが開けずホームページが見る...
-
掲示板サイトへの書き込みがで...
-
マインクラフト ポート開放につ...
-
あるサイトに、繋がる回線と繋...
-
「このページは動作していませ...
-
特定のサイトを開くとPCから異音
-
バツがない漫画広告を簡単に消...
おすすめ情報