携帯電話からmixiの日記を書く際などに、134747-5dxxxx74xx@example.com
にメールを送ってね、というような形で、ユーザーごとに推測困難なメールアドレスを割り当てる手法が使われています。
この手法の名前や、実装方法、セキュリティ上の強度について考察したサイトがあれば教えてください。
mixiの方式は、推測しにくいメールアドレスによるセキュリティ保護ではありません。
ユーザごとの日記登録用メールアカウントは作成しますが、そのアドレスにはあらかじめ登録した携帯電話のメールアドレスからのみ受け付けるようになっています。
アドレスが推測しにくいだけでは電文の盗聴などによるアドレス漏洩には対応できないため、セキュリティの確保レベルは決して高くないと思われます。
たぶん実際知っている人はあまり回答しないかと。
で私は予測で書きます。
■文字列生成に使われるアルゴリズム
SHA-1
http://e-words.jp/w/SHA-1.html
MD5
実際は何を使ってるか分かりませんが、このあたりかと。
このあたりを使っていたら、
PHPのセッションIDにはこの2つのどちらかを使用されています。
PerlやPHPにこの関数があることから、これを利用して
メールの文字列生成してるかと思います。
■セキュリティ強度
http://ml.php.gr.jp/pipermail/php-users/2001-July/000705.html
セッションIDにはこれぐらいの強度があります。
強度に関しては、用いているアルゴリズムを調べれば
理論値がわかります。
■その他
メールによる場合は、携帯端末の識別番号や時間制限とうの
他の組み合わせにより強度を上げることが可能です。
ありがとうございます。だいたいこんなところですよね。
べつにmixi独自の技術じゃないので、そろそろ手法としてまとめられてないかな、と思ったのですが、まだそんなに一般化はしていないということなのかな。
SMTPの送信元アドレスが携帯電話網のGWのアドレスかどうかをチェックする必要がありますが、携帯電話網からのSMTPに於いて、ヘッダ、エンベロープ共に偽装は困難です。
いずれにしても、意図とはずれた回答ですね。
既に回答されているとおり、セッション管理の手法を応用してID生成やタイムアウトを見ているものとは思いますが。
お役に立てず申し訳ありません。
一般化してないってより、単にメールアドレスのユーザー部分を、衝突が発生しない文字列にすればいいだけなので、具体的な手法として名前がないだけだと思いますよ。
推測不能にするなら、手っ取り早いのは先に述べられているSHAなんかのハッシュ関数ですが、単純に作るなら(ID+時間+ほかの何か~)な文字列をハッシュ化して、アドレスに使えばよいかと。
あとはハッシュ化する文字列を変えるとか、プレフィックス、差フィックスを適当につけるとか、さらにエンコードしてみるとか。
ありがとうございます。
以下、「ないんじゃない?」「こうだと思う」系の回答は不要です。回答がつかなければ「ないんだな」と理解しますので、ズバリ知っている方の回答をお待ちしております。
セキュリティという言い方がよくなかったか...
つまり、推測困難なメールアドレスが必要ないのであれば、メールの宛先はdialy@example.com固定で、ユーザが誰であるかはメールのfromを見て判断、でもいいはずですよね。
でも実際にはそれだとfromの偽装に対して無力なので、その意味で推測困難なアドレスがつかわれているのだと思っています。
で、この手法に穴はないのか?(他人が日記を登録できてしまう可能性がないのか)とか、実際実装するとしたら、そのメールアドレスはどんな原理で生成すべきなのか?とか、実はCPANにそういうモジュールがあるよ、とか、そんな情報を求めております。