Handshake Protocol拡張!?
OpenSSLのHandshake Protocolってどうなってるんだろう?ってことで、TLS Handshake Protocolの流れを追ってみる。
大きく分けると以下のような感じかな。
・Hello
・Certificate
・KeyExchange
・ChangeChiperSpec
(・Finished)
以後は基本的にはアプリケーションデータプロトコルへ移行して、実際のデータのやり取りが行われます。
で、拡張!なのですが、今やろうとしていることは上記のCertificateにあたる部分かなぁと。
ただ、HandshakeProtocol内のCertificateはまた意味が違ってくるので、SSL通信を行う前にSessionの確立という意味もかねて入れるべきかなと。。。
となるとHelloの前に一度認証するべきなのかなと思っていますが、なんか不思議な感じがしなくもないですね。
WEBアプリなんかではよくあると思うんですが、ID/Pass認証が通ってログインしたらSSL接続になるような感じを、1回のHandshakeにまとめましょう的なことの試みだったりします。
独自認証を通過したらSSL認証を経て、暗号化された経路でのデータ転送を行うといった感じです。(Renegotiateどうしよう?ってのは今は考えてないですがw)
NIC(MACアドレス)が一意(なはず)なので、それをID/Pass代わりにして、認証の1Phaseにしたり・・・みたいなことをやりたいのです!w
まぁ、実装に関してOpenSSLをどう拡張していくかは折を見て時間があれば書いていこうとは思っていますが、まぁOpenSSLである必要も実はないのかもしれません><