(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、本発明の実施形態について図を参照しながら説明する。
図1は、本実施形態に係るメールサーバ1と周辺装置との関係を示す図である。メールサーバ1は、第1ネットワークN1上の1又は複数の端末2と、第2ネットワークN2を介して接続される複数の外部装置3とに接続されており、電子メールの送受信を行う。メールサーバ1は、DMZ(De−Militarized Zone)に配置されており、ゲートウェイ等を介して外部装置3との通信を行う。第1ネットワークN1は、例えば、ローカルエリアネットワーク(Local Area Network)であり、第2ネットワークは、例えば、インターネットである。
【0015】
図2は、本実施形態に係るメールサーバ1の機能構成を示す図である。
メールサーバ1は、表示部10と、入力部20と、記憶部30と、通信部40と、制御部50とを備える。
【0016】
表示部10は、ブラウン管表示装置(CRT:Cathode Ray Tube)又は液晶表示装置(LCD:Liquid Crystal Display)等のディスプレイ装置により構成される。表示部10は、制御部50の制御に応じて、メールサーバ1の機能に係る表示を行う。
【0017】
入力部20は、キーボード及びマウス等により構成される。入力部20は、メールサーバ1のユーザから入力操作を受け付ける。
【0018】
記憶部30は、メモリ(RAM、ROM等)、ハードディスクドライブ(HDD)及び光ディスク(CD、DVD等)ドライブ等により構成される。記憶部30は、メールサーバ1を機能させるための各種プログラム(図示省略)を記憶する。各種プログラムは、制御部50により適宜実行、参照されることにより、制御部50と協働して本発明に係る各機能を実現する。各種プログラムは、必要に応じて通信回線を介して配布されたり、コンピュータ可読媒体に記録されて配布される。
【0019】
また、記憶部30は、所定ドメインを宛先に含むメールを記憶するメールボックス31を備える。また、記憶部30は、所定ドメインのメールアドレスに対応するアカウント情報を記憶する。アカウント情報は、ユーザIDと、パスワードとを含む。このユーザIDは、例えば、所定ドメインのメールアドレスのローカル部と一致する。すなわち、アカウント情報は、所定ドメインのメールアドレスと関連付けられている。なお、ローカル部とは、メールアドレスを構成する文字列のうち、@より前の文字列をいう。
【0020】
通信部40は、例えば、各種有線及び無線インターフェース装置等により構成される。通信部40は、制御部50の制御に応じて、端末2及び外部装置3とデータの送受信を行う。
【0021】
制御部50は、CPU等により構成されており、メールサーバ1の全体を制御する。制御部50は、受付部としての送信要求受付部51と、暗号化部52と、第1置換部53と、送信部及び受信部としての通信制御部54と、復号化部55と、第2置換部56と、記憶制御部57と、受信要求受付部58とを備える。
【0022】
送信要求受付部51は、第1ネットワークN1上の端末2から、電子メールと当該電子メールの送信要求とを受け付ける。ここで、当該電子メールの送信元のメールアドレスのドメインは、全て所定ドメインであるものとする。
【0023】
また、送信要求受付部51は、電子メールのヘッダ情報を参照し、宛先に所定ドメインのメールアドレスが含まれているか否かを判定する。送信要求受付部51は、宛先に所定ドメインのメールアドレスが含まれていると判定した場合、記憶部30のメールボックス31に当該電子メールを直接記憶させる。つまり、送信要求受付部51は、送信要求を受け付けた電子メールの宛先に所定ドメインのメールアドレスが含まれている場合、当該電子メールを記憶部30に直接記憶させる。これにより当該電子メールは、暗号化部52による暗号化を行われていない状態で記憶部30に記憶される。
【0024】
また、送信要求受付部51は、宛先に所定ドメインのメールアドレスしか含まれていない場合、当該電子メールを暗号化部52と第1置換部53に出力しないように制御する。
【0025】
暗号化部52は、送信要求受付部51により受け付けた電子メールのヘッダ情報を参照し、電子メールの送信元のメールアドレスを特定する。暗号化部52は、特定した送信元のメールアドレスのローカル部を構成する文字列の暗号化を行うことで、当該文字列の変換を行う。
【0026】
また、暗号化部52は、送信要求受付部51により受け付けた電子メールのヘッダ情報を参照し、電子メールの宛先のメールアドレスに所定ドメインのメールアドレスが含まれている場合に、当該メールアドレスのローカル部を構成する文字列の暗号化を行い、当該文字列の変換を行う。
【0027】
また、暗号化部52は、送信要求受付部51により受け付けた電子メールのメッセージ本文に含まれている、所定ドメインのメールアドレスのローカル部を構成する文字列の暗号化を行い、当該文字列の変換を行う。ここでは、暗号化されるメールアドレスのローカル部が、20桁以下(例えば6桁の整数であってもよい)の整数X
iであるものとして説明を進める。
【0028】
以下、暗号化部52の暗号化について説明する。
暗号化部52は、
図3に示すように、鍵生成部521と、第1暗号化部522と、第2暗号化部523とから構成されている。
【0029】
鍵生成部521は、文字列を暗号化するための暗号鍵Eを予め生成しておき、この暗号鍵Eを記憶部30に記憶させる。また、鍵生成部521は、暗号鍵Eにより暗号化された文字列を復号化するための復号鍵Fを予め生成しておき、この復号鍵Fを記憶部30に記憶させる。
【0030】
暗号鍵E及び復号鍵Fは、以下のように生成される。
まず、第1の素数Aと、第2の素数Bとを予め用意する。第1の素数A及び第2の素数Bは、これらの積Nが所定数Xを超えるような素数の組合せである。ここで、所定数Xとは、例えば、20桁の整数であり、乗算結果がレジスタで一度に表現できる範囲を超える整数である。また、所定数Xは、暗号化され得る全ての文字列よりも長い文字列であることとする。例えば、所定数Xは、一度に暗号化したい情報が整数で表現できる場合、この整数よりも大きい値である。なお、これらの素数は、鍵生成部521により算出させてもよいし、入力部20を介して受け付けるようにしてもよい。
【0031】
鍵生成部521は、第1の素数Aより1少ない整数を整数A’とし、素数Bより1少ない整数を整数B’とする。そして、鍵生成部521は、整数A’と整数B’との最小公倍数Kと素である整数Eであって、所定数Xを底とし整数Eを指数として算出される数(べき乗)が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超える(桁あふれが発生する)整数Eを生成する。鍵生成部521は、第1の素数A及び第2の素数Bの積Nを予め記憶部30に記憶させるとともに、整数Eを暗号鍵Eとして予め記憶部30に記憶させる。
【0032】
また、鍵生成部521は、任意の整数をmとした場合に、上述した整数E、最小公倍数Kを用いて、以下の(1)式を満たすように整数Fを生成する。鍵生成部521は、この整数Fを、暗号化鍵Eに対応する復号鍵Fとし、記憶部30に記憶させる。整数Fは、(1)式を満たすものであれば、任意の数でよい。
【0034】
また、鍵生成部521は、換字式暗号化に用いられる整数R
iを生成し、予め記憶部30に記憶させる。整数R
iは、所定数Xより小さい正の整数をランダムに選択したものである。
【0035】
第1暗号化部522は、所定数Xより小さい任意の正の整数、すなわち、暗号化される整数X
iを底とし整数Eを指数としたべき乗を、第1の素数Aと第2の素数Bとの積Nで除算した場合の剰余を算出することにより、整数X
iの暗号化数Y
iを算出する。すなわち、第1暗号化部522は、以下の(2)式で表される、整数X
iの暗号化数Y
iを算出する。(2)式に示される「mod」は、剰余を算出する関数である。
【0037】
具体的には、第1暗号化部522は、繰り返し二乗法(高速冪乗法)を用いて整数X
iの暗号化数Y
iを算出する。以下に、処理手順について以下に説明する。
【0038】
まず、第1暗号化部522は、整数Eの2進数展開を行い、整数X
iのE乗を、整数X
iの2
kのべき乗の積に展開する。ここで、kは、0からnまでの整数をとるものとし、nは、2のべき乗が整数Eを超えないべき数のうち、もっとも大きいべき数に対応するものとする。例えば、整数Eが287である場合、整数X
iのE乗は、以下の(3)式で表される。ここで、2の8乗が整数Eを超えない最も大きい数となるので、べき数「8」がnとなる。
【0040】
続いて、第1暗号化部522は、以下の(4)式に示すように、整数X
iの2
0乗を積Nで除算した場合の剰余から順に、整数X
iの2
k乗を積Nで除算した場合の剰余を算出する。例えば、整数X
iの2
2乗は、(4)式に示されるように、整数X
iの2
1乗を積Nで除算した場合の剰余を用いて簡易的に算出することができる。
【0042】
ここで、整数Eは、所定数XのE乗の演算結果がレジスタの表現できる桁数よりも大きい桁数となるように生成されているので、整数X
iの2
k乗を算出する場合に、桁あふれが生じる場合がある。そこで、第1暗号化部522は、整数X
iについて、以下の(5)式を用いて、上位の桁X
u及び下位の桁X
dに分割された整数に展開し、上位の桁X
u及び下位の桁X
dに基づいて、整数X
iの2
n乗まで算出する。
【0044】
式中、Mは底であり、Cdは整数X
iにおける下位の桁の数である。また、Cdは、1以上の整数である。
【0045】
例えば、底であるMを2とし、整数X
iの桁数を16桁、下位の桁数Cdを8桁とする場合、(5)式は、以下の(6)式のように表される。
【0047】
例えば、本実施形態に係るメールサーバ1が16ビット幅のレジスタのCPUを備える場合に、整数X
iの値が10進数の65532であるとすると、この整数X
iに対するべき乗の計算において、指数として、2を用いた時点で、16ビット幅のレジスタを用いて表現できる整数の上限値65535を超えてしまう。すなわち、単に整数X
iをべき乗する通常の計算方法に従って(2)式の右辺に含まれる整数X
iのE乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【0048】
これに対して、式(6)により表される桁の分割を用いて上位の桁と下位の桁をそれぞれ整数部分として分割すると、例えば、整数X
iが10進数の65532、すなわち、2進数の1111111111111100は、上位8桁に含まれる整数11111111(10進数の255)と、下位8桁に含まれる整数11111100(10進数の252)とに分割される。この場合、分割された2つの数は、255の2乗よりも小さい値となるので、16ビット幅のレジスタが表現できる整数の範囲内となる。よって、桁あふれによる誤りを避けることが可能である。
【0049】
また、本実施形態では、(5)式のように、2つの整数に分割することとしたが、例えば、整数X
iを20桁とした場合には、以下の(7)式に示されるように、4つの整数に分割することとしてもよい。
【0051】
式中、X
15は整数X
iの16桁目から20桁目、X
10は整数X
iの11桁目から15桁目、X
5は整数X
iの6桁目から10桁目、X
0は整数X
iの1桁目から5桁目である。また、整数X
iが20桁(所定桁数)に満たない場合(例えば、6桁の場合)に、上位の桁に対して所定の文字列を連結(例えば、所定桁数となるまで1又は複数の「0」を連結するゼロ詰め)して整数X
iの桁数を増加させるようにしてもよい。このようにすることで、メールサーバ1は、桁あふれを発生する条件で整数Eを生成した後に、(3)〜(5)式を用いて整数X
iを展開して暗号化数Y
iを算出することにより、桁あふれを避けて、暗号化数Y
iを正確に算出することができる。
なお、整数X
iは、(6)式や(7)式のように、分割後の整数の桁数が等しくなるように分割されることが好ましい。
【0052】
また、整数X
iが所定桁数(例えば、20桁)に満たない場合に、上位の桁に対してゼロ詰めを行い所定桁数の文字列としたうえで暗号化を行うこととしたが、これに限らない。例えば、記憶部30に、メールアドレスと、当該メールアドレスのユーザ名(例えばユーザの氏名)とを関連付けて記憶させるようにしてもよい。そして、暗号化部52(第1暗号化部522)は、暗号化を行う前に、所定ドメインのメールアドレスのローカル部に、所定の文字列として、当該メールアドレスのユーザ名を連結することで、当該ユーザ名が連結された状態でローカル部の文字列の暗号化を行うこととしてもよい。この場合、暗号化部52は、連結された文字列に、数以外の文字列が含まれることから、数以外の文字列を数字に変換したうえで暗号化を行うようにする。なお、数字に変換した後の文字列長は、所定桁数以下となるようにする。
【0053】
続いて、第1暗号化部522は、2のべき乗の積に展開された整数X
iのE乗の剰余を算出する。例えば、整数Eが287である場合、整数X
iのE乗の剰余は、以下の(8)式で示されるので、(4)式に示すように予め求められている整数X
iの2
k乗を積Nで除算した場合の剰余から容易に算出することが可能となる。なお、この計算において、桁あふれを回避するように、被乗数を、(5)式と同様に上位の桁と下位の桁に分割して、剰余を算出するようにしてもよい。
【0055】
第2暗号化部523は、記憶部に記憶されている鍵R
iを使用して、以下の(9)式を基づいて、暗号化数Yの換字式暗号を行い、整数Y
i’を算出する。
【0057】
(9)式中、Rot(Y
i,R
i)は、鍵R
iを秘密鍵として用いて、暗号化数Y
iを換字式暗号する関数である。具体的には、Rot(Y
i,R
i)は、暗号化数Y
iを、所定数Xの範囲で鍵R
iの値だけ加算する。また、暗号化数Y
iに鍵R
iを加算した結果が所定数Xを超える場合、Rot(Y
i,R
i)は、整数Y
i’として、Y
iにR
iを加算したことにより所定数Xを超えた分、すなわち、Y
i+R
i−Xを返す。
【0058】
また、Rot(Y
i,R
i)は、暗号化数Y
iに鍵R
iを加算する場合に、暗号化数Y
iについて、以下の(10)式を用いて、上位の桁Y
u及び下位の桁Y
dに分割された整数部分を生成し、この上位の桁Y
u及び下位の桁Y
dを用いて、整数Y
i’を算出する。
【0060】
(5)式と同様に、(10)式中、Mは底であり、Cdは暗号化数Y
iにおける下位の桁の数である。また、Cdは、少なくとも1である。
【0061】
なお、第1暗号化部522及び第2暗号化部523は、複数回実行されてもよい。この場合、後述の第1復号化部551及び第2復号化部552は、第1暗号化部522及び第2暗号化部523が実行された回数だけ実行される。
【0062】
第1置換部53は、送信要求受付部51により受け付けた電子メールの送信元、宛先及びメッセージ本文に含まれているメールアドレスのうち、所定ドメインのメールアドレスについて、当該メールアドレスのローカル部を構成する文字列を、暗号化部52により暗号化された文字列に置換する。
【0063】
通信制御部54は、第1置換部53によってローカル部が置換された電子メールについて、当該電子メールのヘッダ情報を参照し、宛先のメールアドレスのドメインを特定する。そして、通信制御部54は、通信部40を介して、当該電子メールを、送信先のドメインに対応するメールサーバに送信する。電子メールは、送信先のドメインに対応するメールサーバに直接送信されるか、1又は複数の外部装置を介して送信される。
【0064】
また、通信制御部54は、通信部40を介して、外部装置3から所定ドメインのメールアドレスを宛先に含む電子メールを受信する。
【0065】
復号化部55は、通信制御部54により受信された電子メールのヘッダ情報を参照し、電子メールの宛先のメールアドレスを特定する。復号化部55は、特定されたメールアドレスのうち、所定ドメインに対応するメールアドレスのローカル部を構成する文字列の復号化を行い、当該文字列の変換を行う。
【0066】
また、復号化部55は、通信制御部54により受信された電子メールのメッセージ本文に含まれている、所定ドメインのメールアドレスのローカル部を構成する文字列の復号化を行い、当該文字列の変換を行う。
【0067】
以下、受信された電子メールに含まれている所定ドメインのメールアドレスのローカル部を構成する文字列が、暗号化部52により暗号化されている整数Y
i’であるものとして、説明を進める。
【0068】
復号化部55は、
図4に示すように、第1復号化部551と、第2復号化部552とから構成されている。
第1復号化部551は、第1暗号化部522に対応し、第2復号化部552は、第2暗号化部523に対応している。すなわち、第2復号化部552による復号の後に第1復号化部551による復号化が行われるため、ここでは、第2復号化部552の説明から行う。
【0069】
第2復号化部552は、第2暗号化部523により換字式暗号された整数Y
i’から、換字式復号により暗号化数Y
iを算出する。具体的には、第2復号化部552は、以下の(11)式を用いた換字式復号を行い、暗号化数Y
iを算出する。
【0071】
式中に示される鍵R
iは、換字式暗号化の秘密鍵として用いられる整数であり、上述したように記憶部30に記憶されている。
【0072】
Rot
−1()は、整数Y
i’を、所定数Xの範囲で鍵R
iの値だけ減算した値を関数の戻り値として返す。整数Y
i’に鍵R
iを減算した結果が0未満となる場合、Rot
−1()は、暗号化数Y
iとして、整数Y
i’にR
iを減算したことにより0より小さい分を所定数Xから減算した値、すなわち、Y
i−R
i+Xを関数の戻り値として返す。
【0073】
また、Rot
−1()は、整数Y
i’にR
iを減算する場合に、整数Y
i’について、(10)式と同様に、上位の桁及び下位の桁に分割された整数部分を生成し、この上位の桁及び下位の桁を用いて、暗号化数Y
iを算出する。
【0074】
第1復号化部551は、記憶部30に記憶されている復号鍵Fを用いて、暗号化数Y
iを底とし復号鍵Fを指数としたべき乗を、積Nで除算した場合の剰余を算出することにより、暗号化数Y
iの元の数、すなわち整数X
iを算出する。すなわち、第1復号化部551は、以下の(12)式に基づいて、暗号化数Y
iの元の整数X
iを算出する。第1復号化部551は、第1暗号化部522と同様に、繰り返し二乗法(高速冪乗法)を用いることにより、暗号化数Y
iの元の整数X
iを算出する。第1復号化部551の詳細な処理は、第1暗号化部522の処理と同様であるので、説明を省略する。
【0076】
なお、復号化部55(第1復号化部551)は、復号化することによって得られた文字列から、所定文字列を除去する。すなわち、復号化部55は、復号化することによって得られた文字列について、所定の文字列としての、ゼロ詰めにより付加された文字列、又は、メールアドレスに対応したユーザ名に対応する文字列を除去することにより、これらが連結される前の文字列に変換する。これにより、所定の文字列が除去された文字列、すなわち、暗号化される前の文字列X
iが得られる。
【0077】
第2置換部56は、通信制御部54により受信された電子メールの宛先及びメッセージ本文に含まれているメールアドレスのうち、所定ドメインのメールアドレスについて、当該メールアドレスのローカル部を構成する文字列を、復号化部55により復号化された文字列X
iに置換する。
【0078】
記憶制御部57は、第2置換部56によりローカル部が置換された電子メールをメールボックス31に記憶させる。
【0079】
受信要求受付部58は、端末2から、電子メールの受信要求を受け付ける。受信要求は、アカウント情報を含んでいる。受信要求受付部58は、受信要求に含まれるアカウント情報と、記憶部30に記憶されているアカウント情報との照合を行う。続いて、受信要求受付部58は、一致するアカウント情報がある場合、当該アカウント情報に関連付けられている所定ドメインのメールアドレスを特定する。続いて、受信要求受付部58は、特定されたメールアドレスを宛先とする電子メールをメールボックス31から抽出し、受信要求を行った端末2に当該電子メールを送信する。
【0080】
続いて、
図5から
図8を参照して、メールサーバ1における処理の流れを説明する。
図5は、本実施形態に係るメールサーバ1において、電子メールの送信に係る処理の流れを示すフローチャートである。
【0081】
ステップS1において、制御部50(送信要求受付部51)は、端末2から電子メールの送信要求を受け付ける。
ステップS2において、制御部50(送信要求受付部51)は、宛先に所定ドメインのメールアドレスが含まれているか否かを判定する。制御部50(送信要求受付部51)は、この判定がYESの場合、ステップS3に処理を移す。また、制御部50は、この判定がNOの場合、ステップS4に処理を移す。
【0082】
ステップS3において、制御部50(送信要求受付部51)は、送信要求が行われている電子メールをメールボックス31に記憶させる。
ステップS4において、制御部50(送信要求受付部51)は、宛先に含まれているメールアドレスが所定ドメインのメールアドレスのみか否かを判定する。制御部50(送信要求受付部51)は、この判定がYESの場合、本フローチャートに係る処理を終了する。制御部50(送信要求受付部51)は、この判定がNOの場合、ステップS5に処理を移す。
【0083】
ステップS5において、制御部50(暗号化部52)は、送信対象の電子メールに含まれている所定ドメインのメールアドレスのローカル部を構成する文字列の暗号化を行うことで、当該文字列の変換を行う。
【0084】
具体的には、制御部50(暗号化部52)は、送信対象の電子メールの送信元のメールアドレスのローカル部を構成する文字列の暗号化を行う。また、制御部50(暗号化部52)は、送信対象の電子メールの宛先に所定ドメインのメールアドレスが含まれている場合、当該メールアドレスのローカル部を構成する文字列の暗号化を行う。また、制御部50(暗号化部52)は、送信対象の電子メールのメッセージ本文に所定ドメインのメールアドレスが含まれている場合、当該メールアドレスのローカル部を構成する文字列の暗号化を行う。ステップS5における暗号化の処理は、
図6で詳述する。
【0085】
ステップS6において、制御部50(第1置換部53)は、送信対象の電子メールに含まれている所定ドメインのメールアドレスのローカル部を構成する文字列を、ステップS5によって変換された文字列に置換する。
【0086】
具体的には、制御部50(第1置換部53)は、送信対象の電子メールの送信元のメールアドレスのローカル部の文字列を、ステップS5によって変換された文字列に置換する。また、制御部50(第1置換部53)は、送信対象の電子メールの宛先に含まれている所定ドメインのメールアドレスのローカル部を構成する文字列を、ステップS5によって変換された文字列に置換する。また、制御部50(第1置換部53)は、送信対象の電子メールのメッセージ本文に含まれている所定ドメインのメールアドレスを、ステップS5によって変換された文字列に置換する。
【0087】
ステップS7において、制御部50(通信制御部54)は、ステップS6においてローカル部の文字列が置換された電子メールを、送信先のメールアドレスのドメインに基づいて送信する。
【0088】
図6は、
図5のステップS5に示される暗号化処理の詳細な流れを示すフローチャートである。
【0089】
ステップS51において、制御部50(第1暗号化部522)は、整数Eの2進数展開を行い、この展開式に基づいて、整数X
iのE乗を、この整数X
iの2
kのべき乗の積に展開する。
【0090】
ステップS52において、制御部50(第1暗号化部522)は、kを0に設定する。
ステップS53において、制御部50(第1暗号化部522)は、整数X
iの2
k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部50(第1暗号化部522)は、直前に算出した整数X
iの2
k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部50(第1暗号化部522)は、整数X
iを、桁あふれが生じないように上述の(5)式に基づいて、複数の整数の和に変換し、変換された整数に基づいて、整数X
iの2
k乗を積Nで除算した場合の剰余を算出する。
【0091】
ステップS54において、制御部50(第1暗号化部522)は、kに1を加算する。
ステップS55において、制御部50(第1暗号化部522)は、kがnより大きいか否かを判定する。制御部50(第1暗号化部522)は、この判定がYESの場合、処理をステップS56に移し、この判定がNOの場合、処理をステップS53に移す。
【0092】
ステップS56において、制御部50(第1暗号化部522)は、ステップS53で算出した剰余に基づいて、整数X
iのE乗を、積Nで除算した場合の剰余を暗号化数Y
iとして算出する。
【0093】
ステップS57において、制御部50(第2暗号化部523)は、記憶部30に記憶されている鍵R
iを用いて、(9)式に基づいて、暗号化数Y
iの換字式暗号を行い、整数Y
i’を算出する。
【0094】
図7は、本実施形態に係るメールサーバ1において、電子メールの受信に係る処理の流れを示すフローチャートである。
【0095】
ステップS11において、制御部50(通信制御部54)は、外部装置から所定ドメインのメールアドレスを宛先に含む電子メールを受信する。
【0096】
ステップS12において、制御部50(復号化部55)は、ステップS11において受信された電子メールに含まれている所定ドメインのメールアドレスのローカル部を構成する文字列の復号化を行う。
【0097】
具体的には、制御部50(復号化部55)は、通信制御部54により受信された電子メールの宛先に含まれている所定ドメインのメールアドレスのローカル部を構成する文字列の復号化を行い、当該文字列の変換を行う。また、復号化部55は、通信制御部54により受信された電子メールのメッセージ本文に含まれている、所定ドメインのメールアドレスのローカル部を構成する文字列の復号化を行い、当該文字列の変換を行う。
【0098】
ステップS13において、制御部50(第2置換部56)は、ステップS11において受信した電子メールの宛先及びメッセージ本文に含まれている所定ドメインのメールアドレスのローカル部を構成する文字列を、ステップS12において復号化された文字列に置換する。
【0099】
ステップS14において、制御部50(記憶制御部57)は、ステップS13においてローカル部が置換された電子メールをメールボックス31に記憶させる。メールボックス31に記憶された電子メールは、受信要求受付部58により端末2から受信要求を受け付け、当該受信要求に含まれるアカウント情報が正当なものである場合に、当該端末2に対して送信される。
【0100】
図8は、
図7のステップS12に示される復号化処理の詳細な流れを示すフローチャートである。
【0101】
ステップS121において、制御部50(第2復号化部552)は、記憶部30に記憶されている鍵R
iを用いて、上述の(11)式に基づいて、第2暗号化部523により換字式暗号された整数Y
i’から、暗号化数Y
iを算出する。
【0102】
ステップS122において、制御部50(第1復号化部551)は、暗号化数Y
iの2進数展開を行い、この展開式に基づいて、暗号化数Y
iのF乗を、この暗号化数Y
iの2
kのべき乗の積に展開する。
【0103】
ステップS123において、制御部50(第1復号化部551)は、kを0に設定する。
ステップS124において、制御部50(第1復号化部551)は、暗号化数Y
iの2
k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部50(第1復号化部551)は、直前に算出した暗号化数Y
iの2
k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部50(第1復号化部551)は、暗号化数Y
iを、桁あふれが生じないように上述の(10)式に基づいて複数の整数の和に変換し、変換された整数に基づいて、暗号化数Y
iの2
k乗を積Nで除算した場合の剰余を算出する。
【0104】
ステップS125において、制御部50(第1復号化部551)は、kに1を加算する。
ステップS126において、制御部50(第1復号化部551)は、kがnより大きいか否かを判定する。制御部50(第1復号化部551)は、この判定がYESの場合、処理をステップS127に移し、この判定がNOの場合、処理をステップS124に移す。
【0105】
ステップS127において、制御部50(第1復号化部551)は、ステップS124で算出した剰余に基づいて、暗号化数Y
iのF乗を、積Nで除算した場合の剰余を整数X
iとして算出(復号)する。
【0106】
以上、本実施形態によれば、メールサーバ1は、暗号化部52により送信対象の電子メールの送信元のメールアドレスのローカル部の文字列の暗号化を行い、第1置換部53により、送信対象の電子メールのローカル部を暗号化された文字列に置換し、復号化部55により、受信された電子メールの宛先のメールアドレスのうち、所定ドメインに対応するメールアドレスのローカル部の文字列の復号化を行い、第2置換部56により、受信された電子メールのローカル部を復号化された文字列に置換する。
【0107】
このようにすることで、メールサーバ1は、既存のメールアドレスを含む電子メールについて、インターネットを介して外部装置に送信する場合に、ローカル部の暗号化を行ったうえで送信することができる。これにより、例えば、既存のメールアドレスのローカル部が短い桁数(例えば6桁)であっても、暗号化によって、ローカル部の文字列を、長い桁数の文字列に変換することができる。よって、メールサーバ1は、既存のメールアドレスを利用しつつ、簡易的にセキュリティを向上させることができる。
【0108】
また、メールサーバ1は、暗号化部52により、送信要求受付部51により受け付けた電子メールの送信元のメールアドレスのローカル部の文字列に所定の文字列を連結し、連結された文字列の暗号化を行い、第2置換部56により、復号化部55により復号化された文字列から所定の文字列を除去し、通信制御部54により受信された電子メールのローカル部を、所定の文字列が除去された文字列に置換する。
【0109】
このようにすることで、メールサーバ1は、所定桁数の文字列をそのまま暗号化する場合に比べて、文字列を連結するという工程を付加することによって、より複雑な暗号化を行い、メールアドレスのセキュリティを高めることができる。
【0110】
また、メールサーバ1は、送信要求受付部51により、受け付けた電子メールの宛先に所定ドメインのメールアドレスが含まれている場合、当該電子メールを記憶部30に直接記憶させる。
【0111】
所定ドメインのメールアドレスが宛先として含まれている場合、社内メールである。この場合においては、従来通り、メールアドレスを変換せずに記憶部30に電子メールを記憶させるので、メールサーバ1は、当該宛先とされたユーザ、すなわち、社内ユーザに、従来通りメールを利用させることができる。
【0112】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【0113】
上述した実施形態では、メールサーバ1がメールアドレスのローカル部の暗号化及び復号化を行うこととしたが、これに限らない。例えば、ゲートウェイサーバにおいてメールアドレスのローカル部の暗号化及び復号化を行うこととしてもよい。