OpenOTPなんてのが有るんですね。

最近、PCやスマートフォンなんかでVPN接続する際に、何か良い方法は無いかと色々悩んでます。
個人使用ならともかく正直ユーザー名パスワードの方式では安心して使えるとはとても言えないと思います。

ユーザー名パスワードでよければPPTPとかは比較的広く対応はしているのですけども、安全性が問題外。
とは言え、証明書を格納したスマートカードやUSBトークンはスマートフォンに繋いで使うなんて出来ないですし。
証明書をスマートフォン自体に格納する方法では、対応する接続方法が違ったり。OS毎に使えたり使えなかったり。第一管理が少し面倒...

展示会などでも気にして探していますが、結局上記の様な要件を満たした上で(比較的安価で、小規模でも利用できて)色々OSを横断的に接続できるソリューションは無い気がしています。

安全性はともかく、解りやすいところではRSAのSecureIDのような時刻同期パスワード等が機種依存なども少なくて良いのでは?とか思って居たのですが、いつの間にかアルゴリズムが公開されているのですね。そして、OpenOTPなんて言うのが出ていて驚きました。

RADIUSサーバーとしても動くようで、VPNサーバーからの認証も処理出来そうと考えて色々試していたのですが...
OpenOTPって、パスワードが復号できる状態で送られてこないと認証できないっぽいです。つまり、認証にPAPしか使えない! そして、認証にPAPを使うと暗号化させてくれないです! うーん、色々ちょっと恐ろしいです。

CHAP等でも、サーバー側で演算されたワンタイムパスワードでハッシュ照合すれば認証できそうな気がするのですが...
そもそもoptnotpのAPI的にそういったワンタイムパスワードを外部に渡す実装が無い様子。

とにかく、繋いで見るためにVPNサーバー側は、pfsenseのPPTP等を使ってみたのですが、デフォルトではPAP及び暗号化無しなんて言う状態では背接続させてくれませんでした。(笑
とりあえず/etc/inc/vpn.incの中にある、暗号化と認証を指定している3行を無効化して、PAPを有効にすれば繋がることは繋がりましたのでメモ
#set bundle enable crypt-reqd
# set link no pap chap
# set link enable chap-msv2
set link enable pap

んーー どうしたものか... 暗号化に期待せずに1次的な認証に使うぐらいなら多少はこれでも役に立つのかなぁ?