(57)【要約】      （修正有）【課題】中間サーバが存在する場合であっても安全性を保証することができるセキュア認証技術を提供する。【解決手段】クライアント装置１はシステムを利用するユーザuのパスワードがwuであることを中間サーバ２を介して第一〜第三秘匿計算サーバ３〜５に登録する。認証を実施する際に併せて用いるいくつかの乱数についてもクライアント装置１で生成し、各秘匿計算サーバに送る。ユーザuがパスワードw′によって認証を試みてきた場合、登録されているuのパスワードwuとw′が一致することを確認するために、wuとw′の差が0であることを協調計算によって導く。認証の権限がシステムを構成する参加者である中間サーバ２、第一秘匿計算サーバ３、第二秘匿計算サーバ４、第三秘匿計算サーバ５のいずれかに偏ることがないよう、各参加者ごとに認証のための計算を行う。【選択図】図１
2014140102.tif 000002
【特許請求の範囲】
【請求項１】
cx,cy,cz,dx,dy,dz,ex,ey,ezを所定の定数として、
クライアント装置が、乱数r(W)u,s(W)x,s(W)y,s(W)z,r(X)u,s(X)x,s(X)y,s(X)z,r(Y)u,s(Y)x,s(Y)y,s(Y)z,r(Z)u,s(Z)x,s(Z)y,s(Z)zを生成するステップと、
クライアント装置が、ユーザuのパスワードwu及び乱数r(W)u,r(X)u,r(Y)u,r(Z)uのそれぞれを秘密分散して、wuの分散値wux,wuy,wuz、r(W)uの分散値r(W)ux,r(W)uy,r(W)uz、r(X)uの分散値r(X)ux,r(X)uy,r(X)uz、r(Y)uの分散値r(Y)ux,r(Y)uy,r(Y)uz及びr(Z)uの分散値r(Z)ux,r(Z)uy,r(Z)uzを得るステップと、
クライアント装置が、s(W)ux=s(W)x-s(W)z,s(W)uy=s(W)y-s(W)x,s(W)uz=s(W)z-s(W)y,s(X)ux=s(X)x-s(X)z,s(X)uy=s(X)y-s(X)x,s(X)uz=s(X)z-s(X)y,s(Y)ux=s(Y)x-s(Y)z,s(Y)uy=s(Y)y-s(Y)x,s(Y)uz=s(Y)z-s(Y)y,s(Z)ux=s(Z)x-s(Z)z,s(Z)uy=s(Z)y-s(Z)x,s(Z)uz=s(Z)z-s(Z)yを計算するステップと、
クライアント装置が、wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxをクライアント装置と第一秘匿計算サーバとの共通鍵で暗号化したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)を生成し中間サーバに送信し、wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyをクライアント装置と第二秘匿計算サーバとの共通鍵で暗号化したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)を中間サーバに送信し、wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzをクライアント装置と第三秘匿計算サーバとの共通鍵で暗号化したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を中間サーバに送信するステップと、
中間サーバが、受信したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)を第一秘匿計算サーバに送信し、受信したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)を第二秘匿計算サーバに送信し、受信したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、受信したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)をクライアント装置と第一秘匿計算サーバとの共通鍵で復号してwux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxを生成し記憶部に記憶させるステップと、
第二秘匿計算サーバが、受信したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)をクライアント装置と第二秘匿計算サーバとの共通鍵で復号してwuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyを生成し記憶部に記憶させるステップと、
第三秘匿計算サーバが、受信したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)をクライアント装置と第三秘匿計算サーバとの共通鍵で復号してwuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzを生成し記憶部に記憶させるステップと、
クライアント装置が、入力されたパスワードw′を秘密分散して、w′の分散値w′x,w′y,w′zを得るステップと、
クライアント装置が、w′xをクライアント装置と第一秘匿計算サーバとの共通鍵で暗号化したEx(w′x)を生成し中間サーバに送信し、w′yをクライアント装置と第二秘匿計算サーバとの共通鍵で暗号化したEy(w′y)を生成し中間サーバに送信し、w′zをクライアント装置と第三秘匿計算サーバとの共通鍵で暗号化したEz(w′z)を生成し中間サーバに送信するステップと、
中間サーバが、受信したEx(w′x)を第一秘匿計算サーバに送信し、受信したEy(w′y)を第二秘匿計算サーバに送信し、受信したEz(w′z)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、乱数r′(W)x,s′(W)xを生成し、wux,r(W)ux,s(W)ux,w′xからq(W)x=cxr(W)ux(wux-w′x)+s(W)uxを計算し、q(W)xを中間サーバと第一秘匿計算サーバとの共通鍵で暗号化したEWX(q(W)x)及びr′(W)x,s′(W)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(W)x,s′(W)x)を生成し中間サーバに送信するステップと、
第二秘匿計算サーバが、乱数r′(W)y,s′(W)yを生成し、wuy,r(W)uy,s(W)uy,w′yからq(W)y=cyr(W)uy(wuy-w′y)+s(W)uyを計算し、q(W)yを中間サーバと第二秘匿計算サーバとの共通鍵で暗号化したEWY(q(W)y)及びr′(W)y,s′(W)yを第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(W)y,s′(W)y)を生成し中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(W)z,s′(W)zを生成し、wuz,r(W)uz,s(W)uz,w′zからq(W)z=czr(W)uz(wuz-w′z)+s(W)uzを計算し、q(W)zを中間サーバと第三秘匿計算サーバとの共通鍵で暗号化したEWZ(q(W)z)及びr′(W)z,s′(W)zを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(W)z,s′(W)z)を生成し中間サーバに送信するステップと、
中間サーバが、受信したEWX(q(W)x),EWY(q(W)y),EWZ(q(W)z)を復号してq(W)x,q(W)y,q(W)zを生成しq(W)=q(W)x+q(W)y+q(W)zを計算し、q(W)=0である場合には認証成功と判定するステップと、
中間サーバが、EZX(r′(W)z,s′(W)z)を第一秘匿計算サーバに送信し、EXY(r′(W)x,s′(W)x)を第二秘匿計算サーバに送信し、EYZ(r′(W)y,s′(W)y)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、受信したEZX(r′(W)z,s′(W)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してr′(W)z,s′(W)zを生成し、r(W)ux=dxr′(W)x+exr′(W)z,s(W)ux=s′(W)x-s′(W)zを計算することによりr(W)ux,s(W)uxを更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(W)x,s′(W)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してr′(W)x,s′(W)xを生成し、r(W)uy=dyr′(W)y+eyr′(W)x,s(W)uy=s′(W)y-s′(W)xを計算することによりr(W)uy,s(W)uyを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(W)y,s′(W)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してr′(W)y,s′(W)yを生成し、r(W)uz=dzr′(W)z+ezr′(W)y,s(W)uz=s′(W)z-s′(W)yを計算することによりr(W)uz,s(W)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(X)x,s′(X)xを生成し、wux,r(X)ux,s(X)ux,w′xからq(X)x=cxr(X)ux(wux-w′x)+s(X)uxを計算し、r′(X)x,s′(X)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(X)x,s′(X)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(X)y,s′(X)yを生成し、wuy,r(X)uy,s(X)uy,w′yからq(X)y=cyr(X)uy(wuy-w′y)+s(X)uyを計算し、q(X)yを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(q(X)y)及びr′(X)y,s′(X)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(X)y,s′(X)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(X)z,s′(X)zを生成し、wuz,r(X)uz,s(X)uz,w′zからq(X)z=czr(X)uz(wuz-w′z)+s(X)uzを計算し、q(X)z,r′(X)z,s′(X)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(q(X)z,r′(X)z,s′(X)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEXY(q(X)y),EZX(q(X)z,r′(X)z,s′(X)z)を送信し、第二秘匿計算サーバにEXY(r′(X)x,s′(X)x)を送信し、第三秘匿計算サーバにEYZ(r′(X)y,s′(X)y)を送信するステップと、
第一秘匿計算サーバが、受信したEXY(q(X)y)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してq(X)yを生成し、受信したEZX(q(X)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(X)zを生成し、q(X)=q(X)x+q(X)y+q(X)zを計算し、q(X)=0である場合には認証成功と判定し、r(X)ux=dxr′(X)x+exr′(X)z,s(X)ux=s′(X)x-s′(X)zを計算することによりr(X)ux,s(X)uxを更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(X)x,s′(X)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号し、r(X)uy=dyr′(X)y+eyr′(X)x,s(X)uy=s′(X)y-s′(X)xを計算することによりr(X)uy,s(X)uyを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(X)y,s′(X)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(X)uz=dzr′(X)z+ezr′(X)y,s(X)uz=s′(X)z-s′(X)yを計算することによりr(X)uz,s(X)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(Y)x,s′(Y)xを生成し、wux,r(Y)ux,s(Y)ux,w′xからq(Y)x=cxr(Y)ux(wux-w′x)+s(Y)uxを計算し、q(Y)x,r′(Y)x,s′(Y)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(q(Y)x,r′(Y)x,s′(Y)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(Y)y,s′(Y)yを生成し、wuy,r(Y)uy,s(Y)uy,w′yからq(Y)y=cyr(Y)uy(wuy-w′y)+s(Y)uyを計算し、r′(Y)y,s′(Y)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(Y)y,s′(Y)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(Y)z,s′(Y)zを生成し、wuz,r(Y)uz,s(Y)uz,w′zからq(Y)z=czr(Y)uz(wuz-w′z)+s(Y)uzを計算し、q(Y)zを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(q(Y)z)及びr′(Y)z,s′(Y)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(Y)z,s′(Y)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEZX(r′(Y)z,s′(Y)z)を送信し、第二秘匿計算サーバにEYZ(q(Y)z),EXY(q(Y)x,r′(Y)x,s′(Y)x)を送信し、第三秘匿計算サーバにEYZ(r′(Y)y,s′(Y)y)を送信するステップと、
第二秘匿計算サーバが、受信したEYZ(q(Y)z)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Y)zを生成し、受信した,EXY(q(Y)x,r′(Y)x,s′(Y)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してq(Y)x,r′(Y)x,s′(Y)xを生成し、q(Y)=q(Y)x+q(Y)y+q(Y)zを計算し、q(Y)=0である場合には認証成功と判定し、r(Y)uy=dyr′(Y)y+eyr′(Y)x,s(Y)uy=s′(Y)y-s′(Y)xを計算することによりr(Y)uy,s(Y)uyを更新するステップと、
第一秘匿計算サーバが、受信したEZX(r′(Y)z,s′(Y)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Y)ux=dxr′(Y)x+exr′(Y)z,s(Y)ux=s′(Y)x-s′(Y)zを計算することによりr(Y)ux,s(Y)uxを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(Y)y,s′(Y)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Y)uz=dzr′(Y)z+ezr′(Y)y,s(Y)uz=s′(Y)z-s′(Y)yを計算することによりr(Y)uz,s(Y)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(Z)x,s′(Z)xを生成し、wux,r(Z)ux,s(Z)ux,w′xからq(Z)x=cxr(Z)ux(wux-w′x)+s(Z)uxを計算し、q(Z)xを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEZX(q(Z)x)及びr′(Z)x,s′(Z)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(Z)x,s′(Z)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(Z)y,s′(Z)yを生成し、wuy,r(Z)uy,s(Z)uy,w′yからq(Z)y=cyr(Z)uy(wuy-w′y)+s(Z)uyを計算し、q(Z)y,r′(Z)y,s′(Z)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(Z)z,s′(Z)zを生成し、wuz,r(Z)uz,s(Z)uz,w′zからq(Z)z=czr(Z)uz(wuz-w′z)+s(Z)uzを計算し、r′(Z)z,s′(Z)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(Z)z,s′(Z)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEZX(r′(Z)z,s′(Z)z)を送信し、第二秘匿計算サーバにEXY(r′(Z)x,s′(Z)x)を送信し、第三秘匿計算サーバにEZX(q(Z)x),EYZ(q(Z)y,r′(Z)y,s′(Z)y)を送信するステップと、
第三秘匿計算サーバが、受信したEZX(q(Z)x)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Z)xを生成し、受信したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Z)y,r′(Z)y,s′(Z)yを生成し、q(Z)=q(Z)x+q(Z)y+q(Z)zを計算し、q(Z)=0である場合には認証成功と判定し、r(Z)uz=dzr′(Z)z+ezr′(Z)y,s(Z)uz=s′(Z)z-s′(Z)yを計算することによりr(Z)uz,s(Z)uzを更新するステップと、
第一秘匿計算サーバが、受信したEZX(r′(Z)z,s′(Z)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Z)ux=dxr′(Z)x+exr′(Z)z,s(Z)ux=s′(Z)x-s′(Z)zを計算することによりr(Z)ux,s(Z)ux=を更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(Z)x,s′(Z)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号し、r(Z)uy=dyr′(Z)y+eyr′(Z)x,s(Z)uy=s′(Z)y-s′(Z)xを計算することによりr(Z)uy,s(Z)uyを更新するステップと、
を含むセキュア認証方法。
【請求項２】
請求項１のセキュア認証方法であって、
第一秘匿計算サーバが、乱数tXを生成し、tXを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化してEXY(tX)を生成し、tXを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化してEZX(tX)を生成し、tX,EXY(tX),EZX(tX)を中間サーバに送信するステップと、
第二秘匿計算サーバが、乱数tYを生成し、tYを第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化してEYZ(tY)を生成し、tYを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化してEXY(tY)を生成し、tY,EYZ(tY),EXY(tY)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数tZを生成し、tZを第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化してEZX(tZ)を生成し、tZを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化してEYZ(tZ)を生成し、tZ,EZX(tZ),EYZ(tZ)を中間サーバに送信するステップと、
中間サーバが、t=tX+tY+tZを計算してクライアント装置に送信するステップと、
クライアント装置が、w′を秘密分散して、w′の分散値w′x,w′y,w′zを得るステップと、
クライアント装置が、t,w′xをクライアント装置と第一秘匿計算サーバとの共通鍵で暗号化してEx(t,w′x)を生成し、t,w′yをクライアント装置と第二秘匿計算サーバとの共通鍵で暗号化してEy(t,w′y)を生成し、t,w′zをクライアント装置と第三秘匿計算サーバとの共通鍵で暗号化してEz(t,w′z)を生成し、Ex(t,w′x),Ey(t,w′y),Ez(t,w′z)を中間サーバに送信するステップと、
中間サーバが、Ex(t,w′x),EXY(tY),EZX(tZ)を第一秘匿計算サーバに送信し、Ey(t,w′y),EXY(tX),EYZ(tZ)を第二秘匿計算サーバに送信し、Ez(t,w′z),EZX(tX),EYZ(tY)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、Ex(t,w′x),EXY(tY),EZX(tZ)を復号してt,w′x,tY,tZを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定するステップと、
第二秘匿計算サーバが、Ey(t,w′y),EXY(tX),EYZ(tZ)を復号してt,w′y,tX,tZを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定するステップと、
第三秘匿計算サーバが、Ez(t,w′z),EZX(tX),EYZ(tY)を復号してt,w′z,tX,tYを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定するステップと、
を更に含むセキュア認証方法。
【請求項３】
請求項１又は２のセキュア認証方法であって、
上記セキュア認証方法により、認証成功と判定され、かつ、認証失敗と判定されなかった場合には、
上記クライアント装置に、所定のサービスが提供される、
ことを特徴とするセキュア認証方法。
【請求項４】
請求項３のセキュア認証方法であって、
上記所定のサービスは、複数のサーバにより提供されるサービスである、
ことを特徴とするセキュア認証方法。
【請求項５】
請求項３のセキュア認証方法であって、
上記所定のサービスは、ストレージサービスである、
ことを特徴とするセキュア認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク上の認証において、複数のサーバが同時にユーザをセキュアに認証する技術に関する。
【背景技術】
【０００２】
従来、ユーザが複数のサーバにまたがるサービスを受ける際に、各サーバに同時にセキュアに認証を受ける技術として、非特許文献１に記載された技術が知られている（例えば、非特許文献１参照。）。非特許文献１に記載された技術は、安全なストレージサービスにおける認証技術であり、ユーザがパスワードを設定し、データを秘密分散と呼ばれる安全な方法でサーバに保管する。認証時パスワードが正しければユーザは正しいデータを復元でき、パスワードが誤りであれば復元に失敗する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】A.Bagherzandi, S.Jarecki, N.Saxena, L,Yanbin, “Password-protected secret sharing”, Proceedings of the ACM CCS 2011, pp.433-444
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、非特許文献１に記載された技術は、ユーザとストレージサーバは直結しているということを前提としており、Webサービス等におけるWebサーバのようにゲートウェイとしての中間サーバが存在する場合の安全性は保証できない。
【０００５】
この発明の目的は、中間サーバが存在する場合であっても安全性を保証することができるセキュア認証方法を提供することである。
【課題を解決するための手段】
【０００６】
この発明の一態様によるセキュア認証方法は、
cx,cy,cz,dx,dy,dz,ex,ey,ezを所定の定数として、
クライアント装置が、乱数r(W)u,s(W)x,s(W)y,s(W)z,r(X)u,s(X)x,s(X)y,s(X)z,r(Y)u,s(Y)x,s(Y)y,s(Y)z,r(Z)u,s(Z)x,s(Z)y,s(Z)zを生成するステップと、
クライアント装置が、ユーザuのパスワードwu及び乱数r(W)u,r(X)u,r(Y)u,r(Z)uのそれぞれを秘密分散して、wuの分散値wux,wuy,wuz、r(W)uの分散値r(W)ux,r(W)uy,r(W)uz、r(X)uの分散値r(X)ux,r(X)uy,r(X)uz、r(Y)uの分散値r(Y)ux,r(Y)uy,r(Y)uz及びr(Z)uの分散値r(Z)ux,r(Z)uy,r(Z)uzを得るステップと、
クライアント装置が、s(W)ux=s(W)x-s(W)z,s(W)uy=s(W)y-s(W)x,s(W)uz=s(W)z-s(W)y,s(X)ux=s(X)x-s(X)z,s(X)uy=s(X)y-s(X)x,s(X)uz=s(X)z-s(X)y,s(Y)ux=s(Y)x-s(Y)z,s(Y)uy=s(Y)y-s(Y)x,s(Y)uz=s(Y)z-s(Y)y,s(Z)ux=s(Z)x-s(Z)z,s(Z)uy=s(Z)y-s(Z)x,s(Z)uz=s(Z)z-s(Z)yを計算するステップと、
クライアント装置が、wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxをクライアント装置と第一秘匿計算サーバとの共通鍵で暗号化したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)を生成し中間サーバに送信し、wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyをクライアント装置と第二秘匿計算サーバとの共通鍵で暗号化したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)を中間サーバに送信し、wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzをクライアント装置と第三秘匿計算サーバとの共通鍵で暗号化したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を中間サーバに送信するステップと、
中間サーバが、受信したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)を第一秘匿計算サーバに送信し、受信したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)を第二秘匿計算サーバに送信し、受信したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、受信したEx(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)をクライアント装置と第一秘匿計算サーバとの共通鍵で復号してwux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxを生成し記憶部に記憶させるステップと、
第二秘匿計算サーバが、受信したEy(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)をクライアント装置と第二秘匿計算サーバとの共通鍵で復号してwuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyを生成し記憶部に記憶させるステップと、
第三秘匿計算サーバが、受信したEz(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)をクライアント装置と第三秘匿計算サーバとの共通鍵で復号してwuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzを生成し記憶部に記憶させるステップと、
クライアント装置が、入力されたパスワードw′を秘密分散して、w′の分散値w′x,w′y,w′zを得るステップと、
クライアント装置が、w′xをクライアント装置と第一秘匿計算サーバとの共通鍵で暗号化したEx(w′x)を生成し中間サーバに送信し、w′yをクライアント装置と第二秘匿計算サーバとの共通鍵で暗号化したEy(w′y)を生成し中間サーバに送信し、w′zをクライアント装置と第三秘匿計算サーバとの共通鍵で暗号化したEz(w′z)を生成し中間サーバに送信するステップと、
中間サーバが、受信したEx(w′x)を第一秘匿計算サーバに送信し、受信したEy(w′y)を第二秘匿計算サーバに送信し、受信したEz(w′z)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、乱数r′(W)x,s′(W)xを生成し、wux,r(W)ux,s(W)ux,w′xからq(W)x=cxr(W)ux(wux-w′x)+s(W)uxを計算し、q(W)xを中間サーバと第一秘匿計算サーバとの共通鍵で暗号化したEWX(q(W)x)及びr′(W)x,s′(W)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(W)x,s′(W)x)を生成し中間サーバに送信するステップと、
第二秘匿計算サーバが、乱数r′(W)y,s′(W)yを生成し、wuy,r(W)uy,s(W)uy,w′yからq(W)y=cyr(W)uy(wuy-w′y)+s(W)uyを計算し、q(W)yを中間サーバと第二秘匿計算サーバとの共通鍵で暗号化したEWY(q(W)y)及びr′(W)y,s′(W)yを第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(W)y,s′(W)y)を生成し中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(W)z,s′(W)zを生成し、wuz,r(W)uz,s(W)uz,w′zからq(W)z=czr(W)uz(wuz-w′z)+s(W)uzを計算し、q(W)zを中間サーバと第三秘匿計算サーバとの共通鍵で暗号化したEWZ(q(W)z)及びr′(W)z,s′(W)zを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(W)z,s′(W)z)を生成し中間サーバに送信するステップと、
中間サーバが、受信したEWX(q(W)x),EWY(q(W)y),EWZ(q(W)z)を復号してq(W)x,q(W)y,q(W)zを生成しq(W)=q(W)x+q(W)y+q(W)zを計算し、q(W)=0である場合には認証成功と判定するステップと、
中間サーバが、EZX(r′(W)z,s′(W)z)を第一秘匿計算サーバに送信し、EXY(r′(W)x,s′(W)x)を第二秘匿計算サーバに送信し、EYZ(r′(W)y,s′(W)y)を第三秘匿計算サーバに送信するステップと、
第一秘匿計算サーバが、受信したEZX(r′(W)z,s′(W)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してr′(W)z,s′(W)zを生成し、r(W)ux=dxr′(W)x+exr′(W)z,s(W)ux=s′(W)x-s′(W)zを計算することによりr(W)ux,s(W)uxを更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(W)x,s′(W)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してr′(W)x,s′(W)xを生成し、r(W)uy=dyr′(W)y+eyr′(W)x,s(W)uy=s′(W)y-s′(W)xを計算することによりr(W)uy,s(W)uyを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(W)y,s′(W)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してr′(W)y,s′(W)yを生成し、r(W)uz=dzr′(W)z+ezr′(W)y,s(W)uz=s′(W)z-s′(W)yを計算することによりr(W)uz,s(W)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(X)x,s′(X)xを生成し、wux,r(X)ux,s(X)ux,w′xからq(X)x=cxr(X)ux(wux-w′x)+s(X)uxを計算し、r′(X)x,s′(X)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(X)x,s′(X)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(X)y,s′(X)yを生成し、wuy,r(X)uy,s(X)uy,w′yからq(X)y=cyr(X)uy(wuy-w′y)+s(X)uyを計算し、q(X)yを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(q(X)y)及びr′(X)y,s′(X)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(X)y,s′(X)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(X)z,s′(X)zを生成し、wuz,r(X)uz,s(X)uz,w′zからq(X)z=czr(X)uz(wuz-w′z)+s(X)uzを計算し、q(X)z,r′(X)z,s′(X)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(q(X)z,r′(X)z,s′(X)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEXY(q(X)y),EZX(q(X)z,r′(X)z,s′(X)z)を送信し、第二秘匿計算サーバにEXY(r′(X)x,s′(X)x)を送信し、第三秘匿計算サーバにEYZ(r′(X)y,s′(X)y)を送信するステップと、
第一秘匿計算サーバが、受信したEXY(q(X)y)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してq(X)yを生成し、受信したEZX(q(X)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(X)zを生成し、q(X)=q(X)x+q(X)y+q(X)zを計算し、q(X)=0である場合には認証成功と判定し、r(X)ux=dxr′(X)x+exr′(X)z,s(X)ux=s′(X)x-s′(X)zを計算することによりr(X)ux,s(X)uxを更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(X)x,s′(X)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号し、r(X)uy=dyr′(X)y+eyr′(X)x,s(X)uy=s′(X)y-s′(X)xを計算することによりr(X)uy,s(X)uyを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(X)y,s′(X)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(X)uz=dzr′(X)z+ezr′(X)y,s(X)uz=s′(X)z-s′(X)yを計算することによりr(X)uz,s(X)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(Y)x,s′(Y)xを生成し、wux,r(Y)ux,s(Y)ux,w′xからq(Y)x=cxr(Y)ux(wux-w′x)+s(Y)uxを計算し、q(Y)x,r′(Y)x,s′(Y)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(q(Y)x,r′(Y)x,s′(Y)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(Y)y,s′(Y)yを生成し、wuy,r(Y)uy,s(Y)uy,w′yからq(Y)y=cyr(Y)uy(wuy-w′y)+s(Y)uyを計算し、r′(Y)y,s′(Y)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(r′(Y)y,s′(Y)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(Y)z,s′(Y)zを生成し、wuz,r(Y)uz,s(Y)uz,w′zからq(Y)z=czr(Y)uz(wuz-w′z)+s(Y)uzを計算し、q(Y)zを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(q(Y)z)及びr′(Y)z,s′(Y)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(Y)z,s′(Y)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEZX(r′(Y)z,s′(Y)z)を送信し、第二秘匿計算サーバにEYZ(q(Y)z),EXY(q(Y)x,r′(Y)x,s′(Y)x)を送信し、第三秘匿計算サーバにEYZ(r′(Y)y,s′(Y)y)を送信するステップと、
第二秘匿計算サーバが、受信したEYZ(q(Y)z)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Y)zを生成し、受信した,EXY(q(Y)x,r′(Y)x,s′(Y)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号してq(Y)x,r′(Y)x,s′(Y)xを生成し、q(Y)=q(Y)x+q(Y)y+q(Y)zを計算し、q(Y)=0である場合には認証成功と判定し、r(Y)uy=dyr′(Y)y+eyr′(Y)x,s(Y)uy=s′(Y)y-s′(Y)xを計算することによりr(Y)uy,s(Y)uyを更新するステップと、
第一秘匿計算サーバが、受信したEZX(r′(Y)z,s′(Y)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Y)ux=dxr′(Y)x+exr′(Y)z,s(Y)ux=s′(Y)x-s′(Y)zを計算することによりr(Y)ux,s(Y)uxを更新するステップと、
第三秘匿計算サーバが、受信したEYZ(r′(Y)y,s′(Y)y)を第二秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Y)uz=dzr′(Y)z+ezr′(Y)y,s(Y)uz=s′(Y)z-s′(Y)yを計算することによりr(Y)uz,s(Y)uzを更新するステップと、
第一秘匿計算サーバが、乱数r′(Z)x,s′(Z)xを生成し、wux,r(Z)ux,s(Z)ux,w′xからq(Z)x=cxr(Z)ux(wux-w′x)+s(Z)uxを計算し、q(Z)xを第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で暗号化したEZX(q(Z)x)及びr′(Z)x,s′(Z)xを第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で暗号化したEXY(r′(Z)x,s′(Z)x)を中間サーバへ送信するステップと、
第二秘匿計算サーバが、乱数r′(Z)y,s′(Z)yを生成し、wuy,r(Z)uy,s(Z)uy,w′yからq(Z)y=cyr(Z)uy(wuy-w′y)+s(Z)uyを計算し、q(Z)y,r′(Z)y,s′(Z)yを第二秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を中間サーバに送信するステップと、
第三秘匿計算サーバが、乱数r′(Z)z,s′(Z)zを生成し、wuz,r(Z)uz,s(Z)uz,w′zからq(Z)z=czr(Z)uz(wuz-w′z)+s(Z)uzを計算し、r′(Z)z,s′(Z)zを第一秘匿計算サーバ及び第三秘匿計算サーバとの共通鍵で暗号化したEZX(r′(Z)z,s′(Z)z)を中間サーバに送信するステップと、
中間サーバが、第一秘匿計算サーバにEZX(r′(Z)z,s′(Z)z)を送信し、第二秘匿計算サーバにEXY(r′(Z)x,s′(Z)x)を送信し、第三秘匿計算サーバにEZX(q(Z)x),EYZ(q(Z)y,r′(Z)y,s′(Z)y)を送信するステップと、
第三秘匿計算サーバが、受信したEZX(q(Z)x)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Z)xを生成し、受信したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号してq(Z)y,r′(Z)y,s′(Z)yを生成し、q(Z)=q(Z)x+q(Z)y+q(Z)zを計算し、q(Z)=0である場合には認証成功と判定し、r(Z)uz=dzr′(Z)z+ezr′(Z)y,s(Z)uz=s′(Z)z-s′(Z)yを計算することによりr(Z)uz,s(Z)uzを更新するステップと、
第一秘匿計算サーバが、受信したEZX(r′(Z)z,s′(Z)z)を第一秘匿計算サーバと第三秘匿計算サーバとの共通鍵で復号し、r(Z)ux=dxr′(Z)x+exr′(Z)z,s(Z)ux=s′(Z)x-s′(Z)zを計算することによりr(Z)ux,s(Z)ux=を更新するステップと、
第二秘匿計算サーバが、受信したEXY(r′(Z)x,s′(Z)x)を第一秘匿計算サーバと第二秘匿計算サーバとの共通鍵で復号し、r(Z)uy=dyr′(Z)y+eyr′(Z)x,s(Z)uy=s′(Z)y-s′(Z)xを計算することによりr(Z)uy,s(Z)uyを更新するステップと、
を有する。
【発明の効果】
【０００７】
中間サーバが存在する場合であっても安全性を保証することができる。
【図面の簡単な説明】
【０００８】
【図１】セキュア認証装置の例を説明するためのブロック図。
【図２】セキュア認証方法の例を説明するためのフローチャート。
【図３】セキュア認証方法の例を説明するためのフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、セキュア認証方法の実施形態を説明する。
【００１０】
［第一実施形態］
セキュア認証方法を行う第一実施形態のセキュア認証システムは、図１に示すように、クライアント装置１、中間サーバ２、第一秘匿計算サーバ３、第二秘匿計算サーバ４及び第三秘匿計算サーバ５を例えば備える。クライアント装置１と中間サーバ２は、データの送受信が可能なように接続されている。中間サーバ２と各秘匿計算サーバは、データの送受信が可能なように接続されている。
【００１１】
まず、第一実施形態のセキュア認証方法の概要を説明する。まず、システムを利用するユーザuのパスワードがwuであることを登録する（ステップＳ１からステップＳ６，図２）。認証を実施する際に併せて用いるいくつかの乱数についてもクライアントで生成し、各秘匿計算サーバに送る。このとき、間に入る例えばWebサーバである中間サーバ２がこれらの情報を悪用しクライアントに成りすまさないよう、送信する分散値等は各秘匿計算サーバとの共有鍵で暗号化しておく。
【００１２】
次に、認証の実施手順について述べる。ユーザuがパスワードw′によって認証を試みてきた場合、登録されているuのパスワードwuとw′が一致することを確認するために、wuとw′の差が0であることを協調計算によって導く（ステップＳ７からステップＳ３８）。認証の権限がシステムを構成する参加者である中間サーバ２、第一秘匿計算サーバ３、第二秘匿計算サーバ４、第三秘匿計算サーバ５のいずれかに偏ることがないよう、各参加者ごとに認証のための計算を行う。協調計算によって、wu,w′が各参加者に知られることがないよう、乱数と組み合わせて協調計算する。また、このとき用いられる乱数を次回の認証で使いまわさないよう、認証の手順の最後で更新を行う。
【００１３】
<ユーザ登録・パスワード変更（ステップＳ１からステップＳ６）>
<<クライアント装置１の処理（ステップＳ１からステップＳ４）>>
クライアントユーザuのパスワードwuと乱数を秘密分散し、クライアント装置１から中間サーバ２を経由して各秘匿計算サーバに送信する。ここで、予めクライアント装置１と各秘匿計算サーバで共通鍵を共有しているものとする。
【００１４】
クライアント装置１と第一秘匿計算サーバ３との間の共通鍵をxとし、共通鍵xによる暗号化をExと表現する。
【００１５】
クライアント装置１と第二秘匿計算サーバ４との間の共通鍵をyとし、共通鍵yによる暗号化をEyと表現する。
【００１６】
クライアント装置１と第三秘匿計算サーバ５との間の共通鍵をzとし、共通鍵zによる暗号化をEzと表現する。
【００１７】
<<<ステップＳ１>>>
クライアント装置１は、乱数r(W)u,s(W)x,s(W)y,s(W)z,r(X)u,s(X)x,s(X)y,s(X)z,r(Y)u,s(Y)x,s(Y)y,s(Y)z,r(Z)u,s(Z)x,s(Z)y,s(Z)zを生成する（ステップＳ１）。
【００１８】
r(W)u,s(W)x,s(W)y,s(W)zは、中間サーバ２主体の認証で用いられる乱数である。
【００１９】
r(X)u,s(X)x,s(X)y,s(X)zは、第一秘匿計算サーバ３主体の認証で用いられる乱数である。
【００２０】
r(Y)u,s(Y)x,s(Y)y,s(Y)zは、第二秘匿計算サーバ４主体の認証で用いられる乱数である。
【００２１】
r(Z)u,s(Z)x,s(Z)y,s(Z)zは、第三秘匿計算サーバ５主体の認証で用いられる乱数である。
【００２２】
<<<ステップＳ２>>>
クライアント装置１は、ユーザuのパスワードwu及び乱数r(W)u,r(X)u,r(Y)u,r(Z)uのそれぞれを秘密分散して、以下の分散値を得る（ステップＳ２）。秘密分散は、既存の方法により適宜行われる。
【００２３】
wuの分散値は、wux,wuy,wuzである。
【００２４】
r(W)uの分散値は、r(W)ux,r(W)uy,r(W)uzである。
【００２５】
r(X)uの分散値は、r(X)ux,r(X)uy,r(X)uzである。
【００２６】
r(Y)uの分散値は、r(Y)ux,r(Y)uy,r(Y)uzである。
【００２７】
r(Z)uの分散値は、r(Z)ux,r(Z)uy,r(Z)uzである。
【００２８】
<<<ステップＳ３>>>
クライアント装置は、それぞれ以下のように定義される(s(W)ux,s(W)uy,s(W)uz),(s(X)ux,s(X)uy,s(X)uz),(s(Y)ux,s(Y)uy,s(Y)uz),(s(Z)ux,s(Z)uy,s(Z)uz)を計算する（ステップＳ３）。
【００２９】
s(W)ux=s(W)x-s(W)z,s(W)uy=s(W)y-s(W)x,s(W)uz=s(W)z-s(W)y
s(X)ux=s(X)x-s(X)z,s(X)uy=s(X)y-s(X)x,s(X)uz=s(X)z-s(X)y
s(Y)ux=s(Y)x-s(Y)z,s(Y)uy=s(Y)y-s(Y)x,s(Y)uz=s(Y)z-s(Y)y
s(Z)ux=s(Z)x-s(Z)z,s(Z)uy=s(Z)y-s(Z)x,s(Z)uz=s(Z)z-s(Z)yを計算する
<<<ステップＳ４>>>
クライアント装置１は、暗号文Ex(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux), Ey(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy),Ez(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を生成し、中間サーバ２に送信する（ステップＳ４）。
【００３０】
Ex(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)は、wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxをクライアント装置１と第一秘匿計算サーバ３との共通鍵xで暗号化した暗号文である。
【００３１】
Ey(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)は、wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyをクライアント装置１と第二秘匿計算サーバ４との共通鍵yで暗号化した暗号文である。
【００３２】
Ez(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)は、wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzをクライアント装置１と第三秘匿計算サーバ５との共通鍵zで暗号化した暗号文である。
【００３３】
<<中間サーバ２の処理（ステップＳ５）>>
<<<ステップＳ５>>>
中間サーバ２は、クライアント装置１から受信した暗号文を各秘匿計算サーバに送信する（ステップＳ５）。具体的には、以下の処理を行う。
【００３４】
中間サーバ２は、Ex(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)を、第一秘匿計算サーバ３に送信する。
【００３５】
中間サーバ２は、Ey(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)を、第二秘匿計算サーバ４に送信する。
【００３６】
中間サーバ２は、Ez(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)を、第三秘匿計算サーバ５に送信する。
【００３７】
<<秘匿計算サーバの処理（ステップＳ６）>>
<<<ステップＳ６>>>
各秘匿計算サーバは、クライアント装置１から中間サーバを経由して送られてきた暗号文を復号し、パスワードと乱数の分散値を図示していない記憶部に記憶する（ステップＳ６）。具体的には、以下の処理を行う。
【００３８】
第一秘匿計算サーバ３は、受信した暗号文Ex(wux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)ux)をクライアント装置１と第一秘匿計算サーバ３との共通鍵xで復号してwux,r(W)ux,s(W)ux,r(X)ux,s(X)ux,r(Y)ux,s(Y)ux,r(Z)ux,s(Z)uxを生成し記憶部に記憶させる。
【００３９】
第二秘匿計算サーバ４は、受信した暗号文Ey(wuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uy)をクライアント装置１と第二秘匿計算サーバ４との共通鍵yで復号してwuy,r(W)uy,s(W)uy,r(X)uy,s(X)uy,r(Y)uy,s(Y)uy,r(Z)uy,s(Z)uyを生成し記憶部に記憶させる。
【００４０】
第三秘匿計算サーバ５は、受信した暗号文Ez(wuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uz)をクライアント装置１と第三秘匿計算サーバ５との共通鍵zで復号してwuz,r(W)uz,s(W)uz,r(X)uz,s(X)uz,r(Y)uz,s(Y)uz,r(Z)uz,s(Z)uzを生成し記憶部に記憶させる。
【００４１】
<認証（基本動作）（ステップＳ７からステップＳ３７）>
認証は、図３に例示するように、（１）認証の前処理、（２）中間サーバ２で認証を行うフェーズＷ、（３）第一秘匿計算サーバ３で認証を行うフェーズＸ、（４）第二秘匿計算サーバ４で認証を行うフェーズＹ、（５）第三秘匿計算サーバ５で認証を行うフェーズＺの５つの段階から構成される。認証はステップＳ７からステップＳ３７で構成され、ステップ７からステップＳ９が認証の前処理に対応し、ステップＳ１０からステップＳ１６がフェーズＷに対応し、ステップＳ１７からステップＳ２３がフェーズＸに対応し、ステップＳ２４からステップＳ３０がフェーズＹに対応し、ステップＳ３１からステップＳ３７がフェーズＺに対応する。
【００４２】
ユーザuとしてパスワードw′が来たときの認証方法を示す。予め秘匿計算サーバ間、及び、中間サーバ２と各秘匿計算サーバ間で共通鍵を共有しているものとする。
【００４３】
第一秘匿計算サーバ３と第二秘匿計算サーバ４との間の共通鍵をXYとし、共通鍵XYによる暗号化をEXYと表現する。
【００４４】
第二秘匿計算サーバ４と第三秘匿計算サーバ５との間の共通鍵をYZとし、共通鍵YZによる暗号化をEYZと表現する。
【００４５】
第三秘匿計算サーバ５と第一秘匿計算サーバ３との間の共通鍵をZXとし、共通鍵ZXによる暗号化をEZXと表現する。
【００４６】
中間サーバ２と第一秘匿計算サーバ３との間の共通鍵をWXとし、共通鍵WXによる暗号化をEWXと表現する。
【００４７】
中間サーバ２と第二秘匿計算サーバ４との間の共通鍵をWYとし、共通鍵WYによる暗号化をEWYと表現する。
【００４８】
中間サーバ２と第三秘匿計算サーバ５との間の共通鍵をWZとし、共通鍵WZによる暗号化をEWZと表現する。
【００４９】
<<クライアント装置１の処理（ステップＳ７からステップＳ８）>>
クライアント装置１は、ユーザuとして、パスワードw′で認証を試みる。
【００５０】
<<<ステップＳ７>>>
クライアント装置は、入力されたパスワードw′を秘密分散して、w′の分散値w′x,w′y,w′zを得る（ステップＳ７）。
【００５１】
<<<ステップＳ８>>>
クライアント装置１が、分散値w′x,w′y,w′zのそれぞれを共通鍵で暗号化して、中間サーバ２に送信する（ステップＳ８）。具体的には、以下の処理を行う。
【００５２】
クライアント装置１は、w′xをクライアント装置１と第一秘匿計算サーバ３との共通鍵xで暗号化したEx(w′x)を生成し中間サーバ２に送信する。
【００５３】
クライアント装置１は、w′yをクライアント装置１と第二秘匿計算サーバ４との共通鍵yで暗号化したEy(w′y)を生成し中間サーバ２に送信する。
【００５４】
クライアント装置１は、w′zをクライアント装置１と第三秘匿計算サーバ５との共通鍵zで暗号化したEz(w′z)を生成し中間サーバ２に送信する。
【００５５】
<<中間サーバ２の処理（ステップＳ９）>>
<<<ステップＳ９>>>
中間サーバ２は、受信した暗号文を各秘匿計算サーバに送信する。具体的には、以下の処理を行う（ステップＳ９）。
【００５６】
中間サーバ２は、受信したEx(w′x)を第一秘匿計算サーバ３に送信する。
【００５７】
中間サーバ２は、受信したEy(w′y)を第二秘匿計算サーバ４に送信する。
【００５８】
中間サーバ２は、受信したEz(w′z)を第三秘匿計算サーバ５に送信する。
【００５９】
＊フェーズＸ＊
<<秘匿計算サーバの処理（ステップＳ１０からステップＳ１２）>>
各秘匿計算サーバは、クライアント装置１から中間サーバ２を経由送られてきた暗号文を復号し、保管しているパスワードと一致するか確認する。具体的には、以下の処理を行う。
【００６０】
cx,cy,cz,dx,dy,dz,ex,ey,ezは、秘密分散のやり方に応じて定まる所定の定数である。例えば、wuをwux=wu+2r′′ (mod p)とwuy=wu+3r′′ (mod p)とwuz=wu+4r′′ (mod p) （ただしr′′≠p）に秘密分散した場合、cx=6,cy=-8,cz=3,dx=1/2,dy=-1/2,dz=-1/3,ex=1/3,ey=1/4,ez=-1 (mod p)とする。cx,cy,cz,dx,dy,dz,ex,ey,ezは、パスワードが正しいときにq(W)=q(W)x+q(W)y+q(W)z=0を満たすように定められる。
【００６１】
<<<ステップＳ１０>>>
第一秘匿計算サーバ３は、乱数r′(W)x,s′(W)xを生成し、wux,r(W)ux,s(W)ux,w′xからq(W)x=cxr(W)ux(wux-w′x)+s(W)uxを計算し、q(W)xを中間サーバ２と第一秘匿計算サーバ３との共通鍵WXで暗号化したEWX(q(W)x)及びr′(W)x,s′(W)xを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵XYで暗号化したEXY(r′(W)x,s′(W)x)を生成し中間サーバ２に送信する（ステップＳ１０）。
【００６２】
換言すれば、第一秘匿計算サーバ３は、以下の(a)から(c)の処理を行う。
【００６３】
(a)乱数r′(W)x,s′(W)xを生成する。
【００６４】
(b)wux,r(W)ux,s(W)ux,w′xからq(W)x=cxr(W)ux(wux-w′x)+s(W)uxを計算する。
【００６５】
(c)q(W)x,r′(W)x,s′(W)xを暗号化し、EWX(q(W)x),EXY(r′(W)x,s′(W)x)を中間サーバ２に送信する。
【００６６】
<<<ステップＳ１１>>>
第二秘匿計算サーバ４は、乱数r′(W)y,s′(W)yを生成し、wuy,r(W)uy,s(W)uy,w′yからq(W)y=cyr(W)uy(wuy-w′y)+s(W)uyを計算し、q(W)yを中間サーバ２と第二秘匿計算サーバ４との共通鍵WYで暗号化したEWY(q(W)y)及びr′(W)y,s′(W)yを第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵YZで暗号化したEYZ(r′(W)y,s′(W)y)を生成し中間サーバ２に送信する（ステップＳ１１）。
【００６７】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【００６８】
(a)乱数r′(W)y,s′(W)yを生成する。
【００６９】
(b)wuy,r(W)uy,s(W)uy,w′yからq(W)y=cyr(W)uy(wuy-w′y)+s(W)uyを計算する。
【００７０】
(c)q(W)y,r′(W)y,s′(W)yを暗号化し、EWY(q(W)y),EYZ(r′(W)y,s′(W)y)を中間サーバ２に送信する。
【００７１】
<<<ステップＳ１２>>>
第三秘匿計算サーバ５は、乱数r′(W)z,s′(W)zを生成し、wuz,r(W)uz,s(W)uz,w′zからq(W)z=czr(W)uz(wuz-w′z)+s(W)uzを計算し、q(W)zを中間サーバ２と第三秘匿計算サーバ５との共通鍵WZで暗号化したEWZ(q(W)z)及びr′(W)z,s′(W)zを第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵ZXで暗号化したEZX(r′(W)z,s′(W)z)を生成し中間サーバ２に送信する（ステップＳ１２）。
【００７２】
換言すれば、第三秘匿計算サーバ５は、以下の(a)から(c)の処理を行う。
【００７３】
(a)乱数r′(W)z,s′(W)zを生成する。
【００７４】
(b)wuz,r(W)uz,s(W)uz,w′zからq(W)z=czr(W)uz(wuz-w′z)+s(W)uzを計算する。
【００７５】
(c)q(W)z,r′(W)z,s′(W)zを暗号化し、EWZ(q(W)z),EZX(r′(W)z,s′(W)z)を中間サーバ２に送信する。
【００７６】
<<中間サーバ２の処理（ステップＳ１３からステップＳ１４）>>
<<<ステップＳ１３>>>
中間サーバ２は、受信したEWX(q(W)x),EWY(q(W)y),EWZ(q(W)z)をそれぞれ共通鍵WX,WY,WZで復号してq(W)x,q(W)y,q(W)zを生成しq(W)=q(W)x+q(W)y+q(W)zを計算し、q(W)=0である場合には認証成功と判定する（ステップＳ１３）。q(W)≠0である場合には認証失敗と判定する。判定の結果は、クライアント装置１に通知される。
【００７７】
言すれば、中間サーバ２は、以下の(a),(b)の処理を行う。
【００７８】
(a)受信したEWX(q(W)x),EWY(q(W)y),EWZ(q(W)z)をそれぞれ共通鍵WX,WY,WZで復号してq(W)x,q(W)y,q(W)zを生成しq(W)=q(W)x+q(W)y+q(W)zを計算する。
【００７９】
(b)q(W)=0である場合には認証成功と判定する。q(W)≠0である場合には認証失敗と判定する。判定の結果を、クライアント装置１に送信する。
【００８０】
<<<ステップＳ１４>>>
中間サーバ２は、暗号文を秘匿計算サーバに送信する（ステップＳ１４）。具体的には、以下の処理を行う。
【００８１】
中間サーバ２は、EZX(r′(W)z,s′(W)z)を第一秘匿計算サーバ３に送信する。
【００８２】
中間サーバ２は、EXY(r′(W)x,s′(W)x)を第二秘匿計算サーバ４に送信する。
【００８３】
中間サーバ２は、EYZ(r′(W)y,s′(W)y)を第三秘匿計算サーバ５に送信する。
【００８４】
<<秘匿計算サーバの処理（ステップＳ１５からステップＳ１７）>>
<<<ステップＳ１５>>>
第一秘匿計算サーバ３は、受信したEZX(r′(W)z,s′(W)z)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号してr′(W)z,s′(W)zを生成し、r(W)ux=dxr′(W)x+exr′(W)z,s(W)ux=s′(W)x-s′(W)zを計算することによりr(W)ux,s(W)uxを更新する（ステップＳ１５）。
【００８５】
換言すれば、第一秘匿計算サーバ３は、以下の(a),(b)の処理を行う。
【００８６】
(a)EZX(r′(W)z,s′(W)z)を復号してr′(W)z,s′(W)zを生成する。ここでは、検証を行わない。
【００８７】
(b)r(W)ux,s(W)uxを次のように更新する。
【００８８】
r(W)ux=dxr′(W)x+exr′(W)z
s(W)ux=s′(W)x-s′(W)z
<<<ステップＳ１６>>>
第二秘匿計算サーバ４は、受信したEXY(r′(W)x,s′(W)x)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号してr′(W)x,s′(W)xを生成し、r(W)uy=dyr′(W)y+eyr′(W)x,s(W)uy=s′(W)y-s′(W)xを計算することによりr(W)uy,s(W)uyを更新する（ステップＳ１６）。
【００８９】
換言すれば、第二秘匿計算サーバ４は、以下の(a),(b)の処理を行う。
【００９０】
(a)EXY(r′(W)x,s′(W)x)を復号してr′(W)x,s′(W)xを生成する。ここでは、検証を行わない。
【００９１】
(b)r(W)uy,s(W)uyを次のように更新する。
【００９２】
r(W)uy=dyr′(W)y+eyr′(W)x
s(W)uy=s′(W)y-s′(W)x
<<<ステップＳ１７>>>
第三秘匿計算サーバ５は、受信したEYZ(r′(W)y,s′(W)y)を第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で復号してr′(W)y,s′(W)yを生成し、r(W)uz=dzr′(W)z+ezr′(W)y,s(W)uz=s′(W)z-s′(W)yを計算することによりr(W)uz,s(W)uzを更新する（ステップＳ１７）。
【００９３】
換言すれば、第二秘匿計算サーバ４は、以下の(a),(b)の処理を行う。
【００９４】
(a)EYZ(r′(W)y,s′(W)y)を復号してr′(W)y,s′(W)yを生成する。ここでは、検証を行わない。
【００９５】
(b)r(W)uz,s(W)uzを次のように更新する。
【００９６】
r(W)uz=dzr′(W)z+ezr′(W)y
s(W)uz=s′(W)z-s′(W)y
＊フェーズＸ＊
<<秘匿計算サーバの処理（ステップＳ１８からステップＳ２０）>>
<<<ステップＳ１８>>>
第一秘匿計算サーバ３は、乱数r′(X)x,s′(X)xを生成し、wux,r(X)ux,s(X)ux,w′xからq(X)x=cxr(X)ux(wux-w′x)+s(X)uxを計算し、r′(X)x,s′(X)xを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で暗号化したEXY(r′(X)x,s′(X)x)を中間サーバ２へ送信する（ステップＳ１８）。
【００９７】
換言すれば、第一秘匿計算サーバ３は、以下の(a)から(c)の処理を行う。
【００９８】
(a)乱数r′(X)x,s′(X)xを生成する。
【００９９】
(b)wux,r(X)ux,s(X)ux,w′xからq(X)x=cxr(X)ux(wux-w′x)+s(X)uxを計算する。
【０１００】
(c)r′(X)x,s′(X)xを暗号化し、EXY(r′(X)x,s′(X)x)を中間サーバ２へ送信する。
【０１０１】
<<<ステップＳ１９>>>
第二秘匿計算サーバ４は、乱数r′(X)y,s′(X)yを生成し、wuy,r(X)uy,s(X)uy,w′yからq(X)y=cyr(X)uy(wuy-w′y)+s(X)uyを計算し、q(X)yを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で暗号化したEXY(q(X)y)及びr′(X)y,s′(X)yを第二秘匿計算サーバ４及び第三秘匿計算サーバ５との共通鍵で暗号化したEYZ(r′(X)y,s′(X)y)を中間サーバ２に送信する（ステップＳ１９）。
【０１０２】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１０３】
(a)乱数r′(X)y,s′(X)yを生成する。
【０１０４】
(b)wuy,r(X)uy,s(X)uy,w′yからq(X)y=cyr(X)uy(wuy-w′y)+s(X)uyを計算する。
【０１０５】
(c)q(X)y,r′(X)y,s′(X)yを暗号化し、EYZ(r′(X)y,s′(X)y),EXY(q(X)y)を中間サーバ２に送信する。
【０１０６】
<<<ステップＳ２０>>>
第三秘匿計算サーバ５は、乱数r′(X)z,s′(X)zを生成し、wuz,r(X)uz,s(X)uz,w′zからq(X)z=czr(X)uz(wuz-w′z)+s(X)uzを計算し、q(X)z,r′(X)z,s′(X)zを第一秘匿計算サーバ３及び第三秘匿計算サーバ５との共通鍵で暗号化したEZX(q(X)z,r′(X)z,s′(X)z)を中間サーバ２に送信する（ステップＳ２０）。
【０１０７】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１０８】
(a)乱数r′(X)z,s′(X)zを生成する。
【０１０９】
(b)wuz,r(X)uz,s(X)uz,w′zからq(X)z=czr(X)uz(wuz-w′z)+s(X)uzを計算する。
【０１１０】
(c)q(X)z,r′(X)z,s′(X)zを暗号化し、EZX(q(X)z,r′(X)z,s′(X)z)を中間サーバ２に送信する。
【０１１１】
<<中間サーバ２の処理（ステップＳ２１）>>
<<<ステップＳ２１>>>
中間サーバ２は、受信した暗号文を秘匿計算サーバに送信する（ステップＳ２１）。具体的には、以下の処理を行う。
【０１１２】
中間サーバ２は、第一秘匿計算サーバ３にEXY(q(X)y),EZX(q(X)z,r′(X)z,s′(X)z)を送信する。
【０１１３】
中間サーバ２は、第二秘匿計算サーバ４にEXY(r′(X)x,s′(X)x)を送信する。
【０１１４】
中間サーバ２は、第三秘匿計算サーバ５にEYZ(r′(X)y,s′(X)y)を送信する。
【０１１５】
<<第一秘匿計算サーバ３の処理（ステップＳ２２）>>
<<<ステップＳ２２>>>
第一秘匿計算サーバ３は、受信したEXY(q(X)y)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号してq(X)yを生成し、受信したEZX(q(X)z)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号してq(X)zを生成し、q(X)=q(X)x+q(X)y+q(X)zを計算し、q(X)=0である場合には認証成功と判定し、r(X)ux=dxr′(X)x+exr′(X)z,s(X)ux=s′(X)x-s′(X)zを計算することによりr(X)ux,s(X)uxを更新する（ステップＳ２２）。
【０１１６】
換言すれば、第一秘匿計算サーバ３は、以下の(a),(b)の処理を行う。
【０１１７】
(a)EXY(q(X)y),EZX(q(X)z)を復号し、q(X)=q(X)x+q(X)y+q(X)zを計算し、q(X)=0である場合には認証成功と判定し、q(X)≠0であれば認証失敗と判定する。
【０１１８】
(b)r(X)ux,s(X)uxを次のように更新する。
【０１１９】
r(X)ux=dxr′(X)x+exr′(X)z
s(X)ux=s′(X)x-s′(X)z
<<他の秘匿計算サーバの処理（ステップＳ２３からステップＳ２４）>>
<<<ステップＳ２３>>>
第二秘匿計算サーバ４は、受信したEXY(r′(X)x,s′(X)x)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号し、r(X)uy=dyr′(X)y+eyr′(X)x,s(X)uy=s′(X)y-s′(X)xを計算することによりr(X)uy,s(X)uyを更新する（ステップＳ２３）。
【０１２０】
換言すれば、第二秘匿計算サーバ４は、以下の(a),(b)の処理を行う。
【０１２１】
(a)EXY(r′(X)x,s′(X)x)を復号する。ここでは、検証を行わない。
【０１２２】
(b)r(X)uy,s(X)uyを次のように更新する。
【０１２３】
r(X)uy=dyr′(X)y+eyr′(X)x
s(X)uy=s′(X)y-s′(X)x
<<<ステップＳ２４>>>
第三秘匿計算サーバ５は、受信したEYZ(r′(X)y,s′(X)y)を第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で復号し、r(X)uz=dzr′(X)z+ezr′(X)y,s(X)uz=s′(X)z-s′(X)yを計算することによりr(X)uz,s(X)uzを更新する（ステップＳ２４）。
【０１２４】
換言すれば、第三秘匿計算サーバ５は、以下の(a),(b)の処理を行う。
【０１２５】
(a)EYZ(r′(X)y,s′(X)y)を復号する。ここでは、検証を行わない。
【０１２６】
(b)r(X)uz,s(X)uzを次のように更新する。
【０１２７】
r(X)uz=dzr′(X)z+ezr′(X)y
s(X)uz=s′(X)z-s′(X)y
＊フェーズＹ＊
<<秘匿計算サーバの処理（ステップＳ２５からステップＳ２７）>>
<<<ステップＳ２５>>>
第一秘匿計算サーバ３は、乱数r′(Y)x,s′(Y)xを生成し、wux,r(Y)ux,s(Y)ux,w′xからq(Y)x=cxr(Y)ux(wux-w′x)+s(Y)uxを計算し、q(Y)x,r′(Y)x,s′(Y)xを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で暗号化したEXY(q(Y)x,r′(Y)x,s′(Y)x)を中間サーバ２へ送信する（ステップＳ２５）。
【０１２８】
換言すれば、第一秘匿計算サーバ３は、以下の(a)から(c)の処理を行う。
【０１２９】
(a)乱数r′(Y)x,s′(Y)xを生成する。
【０１３０】
(b)wux,r(Y)ux,s(Y)ux,w′xからq(Y)x=cxr(Y)ux(wux-w′x)+s(Y)uxを計算する。
【０１３１】
(c)q(Y)x,r′(Y)x,s′(Y)xを暗号化し、EXY(q(Y)x,r′(Y)x,s′(Y)x)を中間サーバ２へ送信する。
【０１３２】
<<<ステップＳ２６>>>
第二秘匿計算サーバ４は、乱数r′(Y)y,s′(Y)yを生成し、wuy,r(Y)uy,s(Y)uy,w′yからq(Y)y=cyr(Y)uy(wuy-w′y)+s(Y)uyを計算し、r′(Y)y,s′(Y)yを第二秘匿計算サーバ４及び第三秘匿計算サーバ５との共通鍵で暗号化したEYZ(r′(Y)y,s′(Y)y)を中間サーバ２に送信する（ステップＳ２６）。
【０１３３】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１３４】
(a)乱数r′(Y)y,s′(Y)yを生成する。
【０１３５】
(b)wuy,r(Y)uy,s(Y)uy,w′yからq(Y)y=cyr(Y)uy(wuy-w′y)+s(Y)uyを計算する。
【０１３６】
(c)r′(Y)y,s′(Y)yを暗号化し、EYZ(r′(Y)y,s′(Y)y)を中間サーバ２に送信する。
【０１３７】
<<<ステップＳ２７>>>
第三秘匿計算サーバ５は、乱数r′(Y)z,s′(Y)zを生成し、wuz,r(Y)uz,s(Y)uz,w′zからq(Y)z=czr(Y)uz(wuz-w′z)+s(Y)uzを計算し、q(Y)zを第二秘匿計算サーバ４及び第三秘匿計算サーバ５との共通鍵で暗号化したEYZ(q(Y)z)及びr′(Y)z,s′(Y)zを第一秘匿計算サーバ３及び第三秘匿計算サーバ５との共通鍵で暗号化したEZX(r′(Y)z,s′(Y)z)を中間サーバ２に送信する（ステップＳ２７）。
【０１３８】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１３９】
(a)乱数r′(Y)z,s′(Y)zを生成する。
【０１４０】
(b)wuz,r(Y)uz,s(Y)uz,w′zからq(Y)z=czr(Y)uz(wuz-w′z)+s(Y)uzを計算する。
【０１４１】
(c)q(Y)z,r′(Y)z,s′(Y)zを暗号化し、EYZ(q(Y)z),EZX(r′(Y)z,s′(Y)z)を中間サーバ２に送信する。
【０１４２】
<<中間サーバ２の処理（ステップＳ２８）>>
<<<ステップＳ２８>>>
中間サーバ２は、受信した暗号文を秘匿計算サーバに送信する（ステップＳ２８）。具体的には、以下の処理を行う。
【０１４３】
中間サーバ２は、第一秘匿計算サーバ３にEZX(r′(Y)z,s′(Y)z)を送信する。
【０１４４】
中間サーバ２は、第二秘匿計算サーバ４にEYZ(q(Y)z),EXY(q(Y)x,r′(Y)x,s′(Y)x)を送信する。
【０１４５】
中間サーバ２は、第三秘匿計算サーバ５にEYZ(r′(Y)y,s′(Y)y)を送信する。
【０１４６】
<<第二秘匿計算サーバ４の処理（ステップＳ２９）>>
<<<ステップＳ２９>>>
第二秘匿計算サーバ４は、受信したEYZ(q(Y)z)を第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で復号してq(Y)zを生成し、受信した,EXY(q(Y)x,r′(Y)x,s′(Y)x)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号してq(Y)x,r′(Y)x,s′(Y)xを生成し、q(Y)=q(Y)x+q(Y)y+q(Y)zを計算し、q(Y)=0である場合には認証成功と判定し、r(Y)uy=dyr′(Y)y+eyr′(Y)x,s(Y)uy=s′(Y)y-s′(Y)xを計算することによりr(Y)uy,s(Y)uyを更新する（ステップＳ２９）。
【０１４７】
換言すれば、第二秘匿計算サーバ４は、以下の(a),(b)の処理を行う。
【０１４８】
(a) 受信したEYZ(q(Y)z)を第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で復号してq(Y)zを生成し、受信した,EXY(q(Y)x,r′(Y)x,s′(Y)x)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号してq(Y)x,r′(Y)x,s′(Y)xを生成し、q(Y)=q(Y)x+q(Y)y+q(Y)zを計算し、q(Y)=0である場合には認証成功と判定し、q(Y)≠0である場合には認証失敗と判定する。
【０１４９】
(b)r(Y)uy,s(Y)uyを次のように更新する。
【０１５０】
r(Y)uy=dyr′(Y)y+eyr′(Y)x
s(Y)uy=s′(Y)y-s′(Y)x
<<他の秘匿計算サーバの処理（ステップＳ３０からステップＳ３１）>>
<<<ステップＳ３０>>>
第一秘匿計算サーバ３は、受信したEZX(r′(Y)z,s′(Y)z)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号し、r(Y)ux=dxr′(Y)x+exr′(Y)z,s(Y)ux=s′(Y)x-s′(Y)zを計算することによりr(Y)ux,s(Y)uxを更新する（ステップＳ３０）。
【０１５１】
換言すれば、第一秘匿計算サーバ３は、以下の(a),(b)の処理を行う。
【０１５２】
(a)EZX(r′(Y)z,s′(Y)z)を復号する。ここでは、検証を行わない。
【０１５３】
(b)r(Y)ux,s(Y)uxを次のように更新する。
【０１５４】
r(Y)ux=dxr′(Y)x+exr′(Y)z
s(Y)ux=s′(Y)x-s′(Y)z
<<<ステップＳ３１>>>
第三秘匿計算サーバ５は、受信したEYZ(r′(Y)y,s′(Y)y)を第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で復号し、r(Y)uz=dzr′(Y)z+ezr′(Y)y,s(Y)uz=s′(Y)z-s′(Y)yを計算することによりr(Y)uz,s(Y)uzを更新する（ステップＳ３１）。
【０１５５】
換言すれば、第三秘匿計算サーバ５は、以下の(a),(b)の処理を行う。
【０１５６】
(a)EYZ(r′(Y)y,s′(Y)y)を復号する。ここでは、検証を行わない。
【０１５７】
(b)r(Y)uz,s(Y)uzを次のように更新する。
【０１５８】
r(Y)uz=dzr′(Y)z+ezr′(Y)y
s(Y)uz=s′(Y)z-s′(Y)y
＊フェーズＺ＊
<<秘匿計算サーバの処理（ステップＳ３２からステップＳ３４）>>
<<<ステップＳ３２>>>
第一秘匿計算サーバ３は、乱数r′(Z)x,s′(Z)xを生成し、wux,r(Z)ux,s(Z)ux,w′xからq(Z)x=cxr(Z)ux(wux-w′x)+s(Z)uxを計算し、q(Z)xを第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で暗号化したEZX(q(Z)x)及びr′(Z)x,s′(Z)xを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で暗号化したEXY(r′(Z)x,s′(Z)x)を中間サーバ２に送信する（ステップＳ３２）。
【０１５９】
換言すれば、第一秘匿計算サーバ３は、以下の(a)から(c)の処理を行う。
【０１６０】
(a)乱数r′(Z)x,s′(Z)xを生成する。
【０１６１】
(b)wux,r(Z)ux,s(Z)ux,w′xからq(Z)x=cxr(Z)ux(wux-w′x)+s(Z)uxを計算する。
【０１６２】
(c)q(Z)x,r′(Z)x,s′(Z)xを暗号化し、EZX(q(Z)x),EXY(r′(Z)x,s′(Z)x)を中間サーバ２に送信する。
【０１６３】
<<<ステップＳ３３>>>
第二秘匿計算サーバ４は、乱数r′(Z)y,s′(Z)yを生成し、wuy,r(Z)uy,s(Z)uy,w′yからq(Z)y=cyr(Z)uy(wuy-w′y)+s(Z)uyを計算し、q(Z)y,r′(Z)y,s′(Z)yを第二秘匿計算サーバ４及び第三秘匿計算サーバ５との共通鍵で暗号化したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を中間サーバ２に送信する（ステップＳ３３）。
【０１６４】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１６５】
(a)乱数r′(Z)y,s′(Z)yを生成する。
【０１６６】
(b)wuy,r(Z)uy,s(Z)uy,w′yからq(Z)y=cyr(Z)uy(wuy-w′y)+s(Z)uyを計算する。
【０１６７】
(c)q(Z)y,r′(Z)y,s′(Z)yを暗号化し、EYZ(q(Z)y,r′(Z)y,s′(Z)y)を中間サーバ２に送信する。
<<<ステップＳ３４>>>
第三秘匿計算サーバ５は、乱数r′(Z)z,s′(Z)zを生成し、wuz,r(Z)uz,s(Z)uz,w′zからq(Z)z=czr(Z)uz(wuz-w′z)+s(Z)uzを計算し、r′(Z)z,s′(Z)zを第一秘匿計算サーバ３及び第三秘匿計算サーバ５との共通鍵で暗号化したEZX(r′(Z)z,s′(Z)z)を中間サーバ２に送信する（ステップＳ３４）。
【０１６８】
換言すれば、第二秘匿計算サーバ４は、以下の(a)から(c)の処理を行う。
【０１６９】
(a)乱数r′(Z)z,s′(Z)zを生成する。
【０１７０】
(b)wuz,r(Z)uz,s(Z)uz,w′zからq(Z)z=czr(Z)uz(wuz-w′z)+s(Z)uzを計算する。
【０１７１】
(c)r′(Z)z,s′(Z)zを第一秘匿計算サーバ３及び第三秘匿計算サーバ５との共通鍵で暗号化したEZX(r′(Z)z,s′(Z)z)を中間サーバ２に送信する。
【０１７２】
<<秘匿計算サーバの処理（ステップＳ３５）>>
<<<ステップＳ３５>>>
中間サーバ２は、受信した暗号文を秘匿計算サーバに送信する（ステップＳ３５）。具体的には以下の処理を行う。
【０１７３】
中間サーバ２は、第一秘匿計算サーバ３にEZX(r′(Z)z,s′(Z)z)を送信する。
【０１７４】
中間サーバ２は、第二秘匿計算サーバ４にEXY(r′(Z)x,s′(Z)x)を送信する。
【０１７５】
中間サーバ２は、第三秘匿計算サーバ５にEZX(q(Z)x),EYZ(q(Z)y,r′(Z)y,s′(Z)y)を送信する。
【０１７６】
<<第三秘匿計算サーバ５の処理（ステップＳ３６）>>
<<<ステップＳ３６>>>
第三秘匿計算サーバ５は、受信したEZX(q(Z)x)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号してq(Z)xを生成し、受信したEYZ(q(Z)y,r′(Z)y,s′(Z)y)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号してq(Z)y,r′(Z)y,s′(Z)yを生成し、q(Z)=q(Z)x+q(Z)y+q(Z)zを計算し、q(Z)=0である場合には認証成功と判定し、r(Z)uz=dzr′(Z)z+ezr′(Z)y,s(Z)uz=s′(Z)z-s′(Z)yを計算することによりr(Z)uz,s(Z)uzを更新する（ステップＳ３６）。
【０１７７】
換言すれば、第三秘匿計算サーバ５は、以下の(a),(b)の処理を行う。
【０１７８】
(a)EZX(q(Z)x),EYZ(q(Z)y,r′(Z)y,s′(Z)y)を復号し、q(Z)=q(Z)x+q(Z)y+q(Z)zを計算し、q(Z)=0である場合には認証成功と判定し、q(Z)≠0である場合には認証失敗と判定する。
【０１７９】
(b)r(Z)uz,s(Z)uzを次のように更新する。
【０１８０】
r(Z)uz=dzr′(Z)z+ezr′(Z)y
s(Z)uz=s′(Z)z-s′(Z)y
<<他の秘匿計算サーバの処理（ステップＳ３７からステップＳ３８）>>
<<<ステップＳ３７>>>
第一秘匿計算サーバ３は、受信したEZX(r′(Z)z,s′(Z)z)を第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で復号し、r(Z)ux=dxr′(Z)x+exr′(Z)z,s(Z)ux=s′(Z)x-s′(Z)zを計算することによりr(Z)ux,s(Z)ux=を更新する（ステップＳ３７）。
【０１８１】
換言すると、第一秘匿計算サーバ３は、以下の(a),(b)の処理を行う。
【０１８２】
(a)EZX(r′(Z)z,s′(Z)z)を復号する。ここでは、検証を行わない。
【０１８３】
(b)r(Z)ux,s(Z)ux=を次のように更新する。
【０１８４】
r(Z)ux=dxr′(Z)x+exr′(Z)z
s(Z)ux=s′(Z)x-s′(Z)z
<<<ステップＳ３８>>>
第二秘匿計算サーバ４は、受信したEXY(r′(Z)x,s′(Z)x)を第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で復号し、r(Z)uy=dyr′(Z)y+eyr′(Z)x,s(Z)uy=s′(Z)y-s′(Z)xを計算することによりr(Z)uy,s(Z)uyを更新する（ステップＳ３８）。
【０１８５】
換言すると、第二秘匿計算サーバ４は、以下の(a),(b)の処理を行う。
【０１８６】
(a)EXY(r′(Z)x,s′(Z)x)を復号する。
【０１８７】
(b)r(Z)uy,s(Z)uyを次のように更新する。
【０１８８】
r(Z)uy=dyr′(Z)y+eyr′(Z)x
s(Z)uy=s′(Z)y-s′(Z)x
［第二実施形態］
第二実施形態のセキュア認証方法は、第一実施形態の改良方法であり、認証手順において中間サーバ２を介して交わされる暗号文を悪用することによるリプレイ攻撃（認証成功した暗号文を再利用し、中間サーバ２がクライアント装置１に成りすまして認証を成功させてしまう攻撃）に対処するため、予め各秘匿計算サーバで乱数を生成しクライアント装置と共有することによって、認証時に送信するパスワードの暗号文を再利用できなくするものである。
【０１８９】
リプレイ攻撃への対処策、言い換えれば対リプレイ攻撃認証は、ステップＳ６とステップＳ７の間に実行される。
【０１９０】
<対リプレイ攻撃認証（ステップＲ１からステップＲ１０）>
<<秘匿計算サーバの処理（ステップＲ１からステップＲ３）>>
<<<ステップＲ１>>>
第一秘匿計算サーバ３は、乱数tXを生成し、tXを第一秘匿計算サーバ３と第二秘匿計算サーバ４との共通鍵で暗号化してEXY(tX)を生成し、tXを第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で暗号化してEZX(tX)を生成し、tX,EXY(tX),EZX(tX)を中間サーバ２に送信する（ステップＲ１）。
【０１９１】
換言すれば、第一秘匿計算サーバ３は、以下の(1),(2)の処理を行う。
【０１９２】
(1)乱数tXを生成する。
【０１９３】
(2)tXを暗号化し、tX,EXY(tX),EZX(tX)を中間サーバ２に送信する。
【０１９４】
<<<ステップＲ２>>>
第二秘匿計算サーバ４は、乱数tYを生成し、tYを第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で暗号化してEYZ(tY)を生成し、tYを第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で暗号化してEXY(tY)を生成し、tY,EYZ(tY),EXY(tY)を中間サーバ２に送信する（ステップＲ２）。
【０１９５】
換言すれば、第一秘匿計算サーバ３は、以下の(1),(2)の処理を行う。
【０１９６】
(1)乱数tYを生成する。
【０１９７】
(2)tYを暗号化し、tY,EYZ(tY),EXY(tY)を中間サーバ２に送信する。
【０１９８】
<<<ステップＲ３>>>
第三秘匿計算サーバ５は、乱数tZを生成し、tZを第二秘匿計算サーバ４と第三秘匿計算サーバ５との共通鍵で暗号化してEZX(tZ)を生成し、tZを第一秘匿計算サーバ３と第三秘匿計算サーバ５との共通鍵で暗号化してEYZ(tZ)を生成し、tZ,EZX(tZ),EYZ(tZ)を中間サーバ２に送信する（ステップＲ３）。
【０１９９】
換言すれば、第一秘匿計算サーバ３は、以下の(1),(2)の処理を行う。
【０２００】
(1)乱数tZを生成する。
【０２０１】
(2)tZを暗号化し、tZ,EZX(tZ),EYZ(tZ)を中間サーバ２に送信する
<<中間サーバ２の処理（ステップＲ４）>>
<<<ステップＲ４>>>
中間サーバ２が、t=tX+tY+tZを計算してクライアント装置１に送信する（ステップＲ４）。
【０２０２】
<<クライアント装置１の処理（ステップＲ５からステップＲ６）>>
<<<ステップＲ５>>>
クライアント装置１は、w′を秘密分散して、w′の分散値w′x,w′y,w′zを得る（ステップＲ５）。
【０２０３】
<<<ステップＲ６>>>
クライアント装置１は、t,w′xをクライアント装置１と第一秘匿計算サーバ３との共通鍵で暗号化してEx(t,w′x)を生成し、t,w′yをクライアント装置１と第二秘匿計算サーバ４との共通鍵で暗号化してEy(t,w′y)を生成し、t,w′zをクライアント装置１と第三秘匿計算サーバ５との共通鍵で暗号化してEz(t,w′z)を生成し、Ex(t,w′x),Ey(t,w′y),Ez(t,w′z)を中間サーバ２に送信する（ステップＲ６）。
【０２０４】
<<中間サーバ２の処理（ステップＲ７）>>
<<<ステップＲ７>>>
中間サーバ２は、受信した暗号文を秘匿計算サーバに送信する（ステップＲ７）。具体的には以下の処理を行う。
【０２０５】
中間サーバ２は、Ex(t,w′x),EXY(tY),EZX(tZ)を第一秘匿計算サーバ３に送信する。
【０２０６】
中間サーバ２は、Ey(t,w′y),EXY(tX),EYZ(tZ)を第二秘匿計算サーバ４に送信する。
【０２０７】
中間サーバ２は、Ez(t,w′z),EZX(tX),EYZ(tY)を第三秘匿計算サーバに送信する。
【０２０８】
<<秘匿計算サーバの処理（ステップＲ８からステップＲ１０）>>
<<<ステップＲ８>>>
第一秘匿計算サーバ３は、Ex(t,w′x),EXY(tY),EZX(tZ)を復号してt,w′x,tY,tZを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定する（ステップＲ８）。
【０２０９】
換言すれば、第一秘匿計算サーバ３は、以下の(1),(2)の処理を行う。
【０２１０】
(1)Ex(t,w′x),EXY(tY),EZX(tZ)を復号し、t′=tX+tY+tZを計算する。
【０２１１】
(2)t′≠tである場合には認証失敗と判定する。
【０２１２】
<<<ステップＲ９>>>
第二秘匿計算サーバ４は、Ey(t,w′y),EXY(tX),EYZ(tZ)を復号してt,w′y,tX,tZを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定する（ステップＲ９）。
【０２１３】
換言すれば、第二秘匿計算サーバ４は、以下の(1),(2)の処理を行う。
【０２１４】
(1)Ey(t,w′y),EXY(tX),EYZ(tZ)を復号し、t′=tX+tY+tZを計算する。
【０２１５】
(2)t′≠tである場合には認証失敗と判定する。
【０２１６】
<<<ステップＲ１０>>>
第三秘匿計算サーバ５は、Ez(t,w′z),EZX(tX),EYZ(tY)を復号してt,w′z,tX,tYを生成し、t′=tX+tY+tZを計算し、t′≠tである場合には認証失敗と判定する（ステップＲ１０）。
【０２１７】
換言すれば、第三秘匿計算サーバ５は、以下の(1),(2)の処理を行う。
【０２１８】
(1)Ez(t,w′z),EZX(tX),EYZ(tY)を復号し、t′=tX+tY+tZを計算する。
【０２１９】
(2)t′≠tである場合には認証失敗と判定する。
【０２２０】
以後、ステップＳ７以降の処理を第一実施形態と同様に行う。
【０２２１】
［第三実施形態］
第三実施形態は、第一実施形態又は第二実施形態で認証に成功した場合に、所定のサービスを提供するというものである。
【０２２２】
換言すれば、ユーザがWebページを経由して、サーバのサービスを受ける際に、ユーザをクライアント装置１、Webページのサーバを中間サーバ２、各サービスプロバイダを秘匿計算サーバとして第一実施形態又は第二実施形態の認証を行ってから、各サービスプロバイダは当該サービスをユーザに提供する。
【０２２３】
提供される所定のサービスは、中間サーバ２、第一秘匿計算サーバ３、第二秘匿計算サーバ４、第三秘匿計算サーバ５の２以上のサーバが連携して行うサービスであってもよいし、これらのサーバの１つだけで実施できるサービスであってもよい。
【０２２４】
例えば、第一実施形態及び第二実施形態の発明をシングルサインオンの方式として用いる形態が考えられる。ユーザは各サーバのそれぞれのサービスを一つのパスワードで受けることができる。これにより、成りすましによる漏洩のリスクを低下させることができる。
【０２２５】
また、提供される所定のサービスは、例えば、秘密分散を用いたストレージサービスであってもよい。秘密分散とは、データを３つのシェアに分割する分割方法であって、そのうち１つのシェアだけでは決して元のデータの情報を一切得ることができない分割方法であり、さらにそのうち任意の２つのシェアがあれば元のデータを完全に復元することができる分割方法である。
【０２２６】
連携して行うサービス、といってもサーバ同士で通信する必要はないため、サーバ同士の通信が不要な本発明とマッチしていると言える。
【０２２７】
［ポイント］
このようにすることで、Webサーバなどの中間者を介していても、不正者がユーザになりすまして認証を成功させることはできない。不正者とは中間者やサーバであることも想定される。すなわち、パスワードを中間者もサーバも知らないということを含む。
【０２２８】
第一実施形態のポイントを以下に説明する。Webのサービスモデルが適用できることの他に、1.ユーザは複数のパスワードや、煩わしい証明書のインストールが必要ないこと、2.中間者やサーバでさえ成りすましができないこと、3.サーバ間には通信路が不要であること、4.ユーザへのレスポンスまでの通信回数が最低限なことからインターネット環境でレスポンスタイムを最低限にできること、の4つが要件である、という点がポイントである。
【０２２９】
1.,4.の要件は自然である。2.は, サーバが単一主体のモデルでは、サーバは自分でデータを持っているためわざわざ外部から認証を通って不正をするメリットが小さいが、サーバが複数ありそれぞれ異なるデータを持つ場合には、他サーバのもつデータを外部から閲覧することにメリットがある。特に秘密分散においては、データが２つ集まるとセキュリティの効力が失われるため、この問題は重大である。
【０２３０】
3.は、システム構築の際にお互いの間に通信路を持たないようなサーバ上であっても連携したサービスを展開できることを意味する。例えばクラウドサービス上に、アプリケーションプロバイダが、適当な複数クラウドサービス上に自社サービスを展開できる。クラウドサービス同士が連携している必要がない。
【０２３１】
1.,2.の要件のために、パスワードが１つかつサーバも中間者もパスワードを知ることができない秘密分散によってパスワードを保護している。ハッシュ関数などではサーバのローカルで辞書攻撃が可能なため不十分である。
【０２３２】
また、3.,4.の要件のため、サーバ間通信を許せばよく知られた秘匿回路計算を用いればよく(3.に対応)、また通信回数を増やせば暗号化通信路を用いて中間者がいない場合と同等の設定とできる(4.に対応) ところを、中間者を中間した低通信回数の秘匿回路計算を専用に設計している。
【０２３３】
［変形例］
上記装置及び方法において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【０２３４】
また、セキュア認証方法における各処理をコンピュータによって実現する場合、セキュア認証方法が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、セキュア認証方法における処理手段がコンピュータ上で実現される。
【０２３５】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０２３６】
また、各処理手段は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【０２３７】
その他、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【符号の説明】
【０２３８】
１      クライアント装置
２      中間サーバ
３      第一秘匿計算サーバ
４      第二秘匿計算サーバ
５      第三秘匿計算サーバ
【図１】
2014140102.tif 000003
【図２】
2014140102.tif 000004
【図３】
2014140102.tif 000005