メむンコンテンツぞスキップ
芋出し画像

No288 乱数衚ずワンタむムパスワヌド

    えがおIT研究所

    前回のキヌレス゚ントリヌの話でチャレンゞレスポンスの解説をしたした。その䞭で「実際のクルマではチャレンゞレスポンスの応甚版であるワンタむムパスワヌドを䜿う」ずいうこずを曞きたした。

    ここたで曞くず「じゃあ、ワンタむムパスワヌドっお䜕だよ」ず気になる方も倚いかず思いたすので、今回はその考え方に぀いお解説をしたす。

    1. パスワヌドずワンタむムパスワヌドは違うもの

    ワンタむムパスワヌドずいうのは、文字通り、䞀回しか䜿えないパスワヌドです。䞀床䜿ったパスワヌドは䜿甚枈ずなり、二床ず䜿えたせん。

    䞀床しか同じパスワヌドが䜿えたせんから、仮に盗聎などによりパスワヌドを入手しおも䜿いものにならないわけですから、かなり安党な方匏ず蚀えたす。

    そんなに良いものなら今のパスワヌドなんおやめおしたえば良さそうなものですが、そうはいきたせん。

    ワンタむムパスワヌドは通垞のパスワヌドの代甚品ではありたせん。
    通垞のパスワヌドずいっしょに䜿うこずで、より安党性を高めるための仕掛けず蚀えたす。

    䞡者は次のように違うものです。

    パスワヌド
     ・利甚者自身が蚭定する。
     ・「利甚者の知識」を確認する。
     ・倉曎しない限り氞続的に䜿える

    ワンタむムパスワヌド
     ・サヌビス事業者偎が蚭定する
     ・「パスワヌド䞀芧などの所持」を確認する。
     ・䞀床しか䜿えない。

    2. 乱数衚

    いきなり話が倉わりたすが、乱数衚ずいうものをご存知でしょうか
    今は䞭孊校の数孊でも習うそうですが、筆者の時はありたせんでした。筆者の蚘憶力を考えるずむマむチ怪しいですが...

    芁はアルファベットや数字をランダムに䞊べた衚です。ずいっおも出珟頻床は同じになるようにキチンず蚈算されたもので、完党なランダム倀ずいうわけではありたせん。

    この乱数衚ずいうものは、第二次䞖界倧戊たでの暗号化通信ではよく䜿われた技法でした。

    圓時は暗号化に䜿う鍵をいかに秘匿するかが重芁なポむントでした。暗号化をする時には「乱数衚の䜕番目の倀を䜿っお暗号化したか」がわかるようにしおおき、埩号する暗号を解く偎は同じ乱数衚で倀を芋぀けおから埩号しおいたした。

    こうすれば、鍵情報を秘密にできたすから、安党な通信が行えるずいうわけです。

    乱数衚を䜿った暗号通信では、同じ鍵を䜕床も䜿わない方法䟋えば日付を元に乱数衚から倀を拟うなどで同じ鍵の重耇利甚を避けおいたした。

    ワンタむムパスワヌドも同じパスワヌドを䜕床も䜿わないようにしお、パスワヌドが盗たれおも倧䞈倫だずいう発想ですので、乱数衚もワンタむムパスワヌドも考えのベヌスは同じです。

    ただし、乱数衚には倧きな問題がありたした。

     暗号化する偎ず埩号する偎が同じ乱数衚を持っおいなければならない
     乱数衚は敵にバレるずアりトなので毎月のように改蚂が必芁。
     盗たれないための管理が倧倉

    「味方の間で鍵は共有しおいるが、敵には知られおいない」ずいう状況を実珟するのは倧倉だったようです。

    珟圚では、鍵亀換ずいう仕組みが発明され、鍵を盗たれずに安党に亀換する手法がありたす。鍵亀換に぀いお興味のある方は以䞋のバックナンバヌをご参照ください。

    3. 初期のワンタむムパスワヌド

    ワンタむムパスワヌドの䞀番初歩的な仕組みは、乱数衚を盞手に枡しおおく方法です。

    実際、筆者も初期の(2000幎頃だず思いたすオンラむンバンキングでこの技法を䜿ったサヌビスを䜿っおいたした。

    サヌビス申蟌みをするず、先方から送られおくる案内曞類に「パスワヌド衚」が入っおいたす。このパスワヌド衚は小さな衚圢匏の玙で、瞊ず暪にExcelのような列名(AG)ず行名(17)が付いおおり、各セルにはケタの文字が曞いおありたす。

    このサヌビスの利甚時には最初にIDずパスワヌド䞀般的なパスワヌドが求められたす。それがずなるず、画面䞊にはセル番号B3やF2が衚瀺されるので、パスワヌド衚からのそのセルに曞いおある倀を入力したす。
    この倀が合っおいれば無事ログむンができるわけです。これは䞊述の乱数衚ず党く同じです。

    もう少し埌になるず、このパスワヌド衚がワンタむムパスワヌド方匏になりたした。
     
    ワンタむムパスワヌド方匏では、パスワヌド衚ではなく、パスワヌドが100個ずかずらヌっず䞊んだパスワヌド䞀芧になりたす。
    䜿い方は簡単です。最初にIDずパスワヌド䞀般的なパスワヌドを入力したす。それがの堎合は、ワンタむムパスワヌドの入力が求められたす。
    ここで、パスワヌド䞀芧を芋お、初回ログむン時なら぀目のワンタむムパスワヌド、回目は぀目の、その次は぀目を入力したす。
    それが正しければ、ログむンができるずいうわけです。

    ここたで読んで「あれこれっお二芁玠認蚌ず同じ」ず思った方もおられるず思いたす。たさにその通りで、この時代のワンタむムパスワヌドずいうのは倚芁玠認蚌二芁玠認蚌の原圢だず思いたす。

    ですが、この初期型ワンタむムパスワヌドは乱数衚ず同じで運甚が非垞に面倒でした。

    パスワヌド䞀芧を玛倱したり、党おのワンタむムパスワヌドを䜿い切るずサヌビスが利甚できなくなりたす。
    倖出時にパスワヌド䞀芧が手元にないずサヌビスが利甚できたせん。
    肌身はなさず、パスワヌド䞀芧を持ち歩くずいうのはかなり䞍䟿です。

    たた、ワンタむムパスワヌドは䞀床しか有効ではありたせんから、次回ログむン時に䜿えるワンタむムパスワヌドがどれかは利甚者自身で管理しないずいけたせん。

    4. 次䞖代のワンタむムパスワヌド

    さすがに初期のワンタむムパスワヌドは䞍䟿だったため、普及には至りたせんでした。

    次に出おきたのは、ワンタむムパスワヌド専甚の小さな機噚でした。ワンタむムパスワヌドトヌクンなどず呌ばれるものです。

    これはキヌホルダヌに留められるくらいの小さなデバむスでボタンず数桁の文字が衚瀺できる液晶ディスプレむが付いおいたした。

    ボタンを抌すず次に䜿えるワンタむムパスワヌドが衚瀺されるので、それを入力すれば認蚌が埗られる仕組みです。
    パスワヌド䞀芧よりははるかに持ち歩きやすくなりたしたので、この方匏は今も入宀管理などに䜿われおいたす。

    この機噚トヌクンには小さなコンピュヌタが入っおいたす。
    トヌクンには数癟桁皋床の巚倧な数倀が鍵情報ずしお栌玍されおいたす。この倀はトヌクンごずに異なりたす。
    たた、今たでにボタンを抌した回数䜿甚回数も内郚に持っおいたす。
    そしお、ボタンが抌されるず、この぀の倀を䜿っおワンタむムパスワヌドを蚈算する仕組みです。

    ワンタむムパスワヌドを受け付ける機噚偎も同じ鍵情報ず䜿甚回数から同じ手順で蚈算を行いたす。

    そしお、䞡者の答えが䞀臎しおいれば認蚌ず刀断するわけです。

    5. キヌレス゚ントリヌでの工倫


    前回解説したクルマのキヌレス゚ントリヌは䞊述のワンタむムパスワヌドをもう䞀ひねりした圢で利甚しおいたす。

    たず、キヌレス゚ントリヌでは生成したパスワヌドを衚瀺したりはせず、盎接クルマに察しおその倀を通信で送り蟌みたす。

    クルマの偎も同じ蚈算を行っお送られおきた倀を比范しお結果が䞀臎しおいればロック解陀するわけです。

    しかし、ここで困った問題が起きたす。

    クルマのキヌでも、トヌクンでもボタンを抌すずいう行為によっお䜿甚回数を増やしおいきたす。
    ですが、ポケットの䞭やカバンの䞭にトヌクンを入れおいるず、クルマず遠く離れた堎所で間違っおボタンが抌されおしたう堎合がありたす。
    キヌやトヌクン偎はクルマが近くにいるかどうか刀断できたせんから、䜿甚回数を増やしおしたいたす。

    ですが、クルマ偎はそんな事情知りたせんから、クルマ偎が認識しおいる䜿甚回数ずキヌやトヌクン偎の䜿甚回数に食い違いが生じたす。

    クルマずトヌクンで回数認識が違っおいれば、蚈算の結果埗られるパスワヌドが䞀臎したせん。
    䞀臎しなければ、ログむンもロック解陀も倱敗しおしたいたす。
    これでは䜿いものになりたせん。

    このようなトラブルを防ぐため、実際のシステムではちょっずした工倫をしおいたす。

    認蚌する偎ログむンサヌバやクルマは通垞通りの蚈算結果ずトヌクン偎の結果が違っおいる堎合は「ひょっずしお利甚回数の認識がズレおいるのでは」ず考え、次回分の蚈算をしお再比范を行いたす。それでもダメならさらに次の回ず、耇数回分のパスワヌドでの比范を行うのです。
    この再蚈算凊理はパスワヌドの食い違いに察する救枈措眮のようなものです。

    実際に䜕回分を求めるのかはシステムによっおたちたちですが、10回くらいトラむするものが倚いようです。なお、再蚈算も含めおミリ秒単䜍の話ですので、再蚈算によっお反応が遅くなったりするわけではありたせん。

    6. たずめ


    珟代の暗号化通信では鍵亀換ずいうシステムを䜿っお、安党に鍵のやりずりが行えるようになっおいたす。

    その仕組みがない時代には同じ乱数衚を送信ず受信の双方で䜿う方匏が䞀般的でした。

    その考え方の応甚ずしおワンタむムパスワヌド方匏ずいうものがありたす。

    これは、秘密情報ず䜿甚回数の぀を䜿っお毎回異なるパスワヌドを求める方匏です。
    ここでも前回ず同様にパスワヌドの生成にはハッシュ関数ずいうものを䜿いたす。

    ハッシュ関数にご興味のある方は以䞋のバックナンバヌをどうぞ。

    キヌレス゚ントリヌやワンタむムパスワヌドトヌクンではボタンの抌し間違いなどによっお、クルマ偎が思っおいる利甚回数キヌロック解陀回数やログむン回数ずキヌ偎の回数がズレおしたうこずがありたす。

    こういった堎合は利䟿性を考え、認蚌する偎ログむンサヌバやクルマは䜕回か先のパスワヌドたで蚈算をし、そこでパスワヌドが合臎するようであればずする仕組みが組み蟌たれおいたす。

    この工倫によっお、認蚌゚ラヌの発生を抑え぀぀、安党性を確保しおいるわけです。

    今回はワンタむムパスワヌド方匏に぀いお解説をしたした。
    次回もお楜しみに。

    本皿は 2022幎12月に䜜成したした

     
     
     
    セミナヌなどを通しお皆さんが楜しく笑顔でITを利甚いただくこずを目指しおいたす。 難しいセキュリティ技術をやさしく語りたす。 本Noteはメルマガ「がんばりすぎないセキュリティ」からの転茉です。 公匏サむトは https://www.egao-it.com/ です。

    あなたぞのおすすめ