具体实施方式
(实施方式1)
如图1所示那样,本实施方式的密钥发布系统具备多个终端10、和经由通信网络30与各终端10连接的服务器20。通信网络30可以是广域网和内部网的其中一种。终端10和服务器20利用用于连接通信网络30的通信接口、用于存储规定的数据的存储器、和用于实现规定的功能的微型计算机而构成。
终端10经由通信网络30与服务器20连接。终端10具有第一密钥存储单元11、第一通信单元12、密钥请求单元13、第一识别信息存储单元14、会话密钥请求单元15、和会话密钥接收单元16。
第一密钥存储单元11是可改写的记录介质。第一密钥存储单元11被构成为存储通信用私人密钥和会话密钥。另外,在本实施方式中,通信用私人密钥也作为公开密钥使用。因此,第一密钥存储单元11也可以说是存储通信用私人密钥和公开密钥。
第一识别信息存储单元14例如是可改写的记录介质。第一识别信息存储单元14存储用于在密钥发布系统中确定终端10和服务器20的识别信息(识别符)。另外,上述的识别信息是密钥发布系统中固有的(唯一的)信息。识别信息例如是MAC地址、IPv6中的IP地址、内部网中设定的地址。
第一通信单元12被设置为用于与服务器20进行加密通信。第一通信单元12被构成为与服务器20进行使用了第一存储单元11中存储的通信用私人密钥作为公用密钥的加密通信。另外,第一通信单元12被构成为与服务器20进行使用了第一存储单元11中存储的会话密钥作为公用密钥的加密通信。第一通信单元12发送包含发送源的识别信息(终端10的识别信息)、发送目的地的识别信息(服务器20的识别信息)、和规定的电文的信息包。该信息包的电文利用通信用私人密钥或者会话密钥被加密。
密钥请求单元13被构成为进行如下处理,即,请求服务器20发行通信用私人密钥的处理(发行请求处理)、和接收通信用私人密钥的处理。
密钥请求单元13被设置为用于例如在终端10的使用者发生了变化时变更通信用私人密钥。通过使用者进行特定操作、例如用于开始发行请求处理的开关操作,发行请求处理开始。终端10也可以被构成为,在与通信网络30建立了连接时(在发送用于通知加入了通信网络30的情况的信息包时)自动执行发行请求处理。在终端10与通信网络30建立了连接后,可以定期或者不定期地执行发行请求处理。在这种情况下,执行发行请求处理的第一时间间隔优选设定为,与执行请求发行会话密钥的处理的第二时间间隔相比足够长。例如,在将第二时间间隔设为1天左右的情况下,优选将第一时间间隔设为1个月以上。
会话密钥请求单元15被构成为,进行请求服务器20发行会话密钥的处理。
会话密钥接收单元16被构成为,进行接收来自服务器20的会话密钥的处理。
服务器20具有第二密钥存储单元21、第二通信单元22、密钥发行单元23、第二识别信息存储单元24、和会话密钥发行单元25。
第二密钥存储单元21是可改写的记录介质。第二密钥存储单元21被构成为存储通信用私人密钥和会话密钥。第二存储单元21还被构成为,存储与通信用私人密钥成对的私有密钥、即解密用私人密钥。
这样,通信用私人密钥和解密用私人密钥是成对的加密密钥。也就是说,通信用私人密钥和解密用私人密钥之间的关系等同于公开密钥加密中的公开密钥和私人密钥(私有密钥)之间的关系。即,解密用私人密钥是用于对以通信用私人密钥作为公开密钥进行了加密的电文进行解密的私有密钥。因此,为了对使用通信用私人密钥(相当于公开密钥加密中的公开密钥)进行了加密的电文(密文)进行解密,需要解密用私人密钥(相当于公开密钥加密中的私有密钥)而不是通信用私人密钥。另外,为了对使用解密用私人密钥进行了加密的电文(密文)进行解密,需要通信用私人密钥。
因此,在本实施方式的密钥发布系统中,终端10和服务器20利用公开密钥加密方式,能够进行加密通信。
第二密钥存储单元21被构成为将由通信用私人密钥、解密用私人密钥、和会话密钥组成的密钥环和与服务器20连接的各个终端10建立关联地进行存储。也就是说,终端10的识别信息分别与通信用私人密钥、解密用私人密钥、会话密钥建立了对应。
第二识别信息存储单元24例如是可改写的记录介质。第二识别信息存储单元24存储上述识别信息。
第二通信单元22被设置为用于与终端10进行加密通信。第二通信单元22被构成为与终端10进行使用了第二存储单元21中存储的通信用私人密钥作为公用密钥的加密通信。另外,第二通信单元22构成为与终端10进行使用了第二存储单元21中存储的会话密钥作为公用密钥的加密通信。第二通信单元22发送包含发送源的识别信息(服务器20的识别信息)、发送目的地的识别信息(终端10的识别信息)、和规定的电文的信息包。该信息包的电文利用通信用私人密钥或者会话密钥被加密。
密钥发行单元23被构成为,在终端10请求通信用私人密钥的发行时进行通信用私人密钥的发行处理。
会话密钥发行单元25被构成为,在终端10请求会话密钥的发行时进行会话密钥的发行处理。也就是说,服务器20对来自终端10的请求进行响应并发行会话密钥。
在本实施方式中,服务器20被构成为,向终端10发送在服务器20和终端10之间收发的电文的加密处理中使用的会话密钥。
终端10例如是设置于住宅内的具有通信功能的设备机器。服务器20例如是认证服务器,利用可与住宅内的各个设备机器(终端10)进行通信的住宅用服务器而构成。利用服务器20来进行住宅内的各个设备机器(终端10)的控制和监视。
在请求服务器20发布会话密钥时,会话密钥请求单元15生成随机数(第一随机数)。第一随机数是只使用一次的数值。第一随机数通常是随机变数。会话密钥请求单元15控制第一通信单元12,以便第一通信单元12向服务器20发送包含第一随机数、会话密钥请求消息(会话密钥请求指令)、以及终端10的识别信息的电文。会话密钥请求消息是用于请求发行会话密钥的指令。
另外,由于第一通信单元12发送包含发送源地址(发送源的识别信息)和发送目的地地址(发送目的地的识别信息)的信息包,所以服务器20能够通过发送源地址取得终端10的识别信息。因此,在上述的电文中可以省略终端10的识别信息。
当从终端10接收到会话密钥请求消息时,会话密钥发行单元25生成会话密钥,并将其存储在第二密钥存储单元21中。另外,会话密钥发行单元25利用第二密钥存储单元21中存储的通信用私人密钥来对会话密钥进行加密。为了对会话密钥进行加密,会话密钥发行单元25利用通信用私人密钥来生成第二消息认证码(第二消息码)。会话密钥发行单元25将第二消息认证码和会话密钥的逻辑异或作为被加密的会话密钥进行使用。即,会话密钥发行单元25将第二消息认证码作为公用密钥使用来对会话密钥进行加密。用于生成第二消息认证码的信息包含从终端10接收到的终端10的识别信息以及第一随机数、会话密钥发行单元25生成的随机数(第二随机数)、和服务器20的识别信息。会话密钥发行单元25对第二通信单元22进行控制,以使得第二通信单元22向终端10发送被加密了的会话密钥和第二随机数。
当从服务器20接收到被加密了的会话密钥和第二随机数时,会话密钥接收单元16对被加密了的会话密钥进行解密。为了对被加密了的会话密钥进行解密,会话密钥接收单元16生成与第二消息认证码等值的第一消息认证码(第一消息码)。由于具有终端10的识别信息、第一随机数、服务器20的识别信息、和通信用私人密钥,所以终端10能够通过从服务器20接收第二随机数来生成第一消息认证码。
被加密了的会话密钥是第二消息认证码和会话密钥的逻辑异或。因此,通过求出被加密了的会话密钥和第一消息认证码的逻辑异或,能够取得会话密钥。
会话密钥接收单元16将已取得的会话密钥存储在第一密钥存储单元11中。此时,会话密钥接收单元16可以构成为,将第一密钥存储单元11中存储的会话密钥更新为新取得的会话密钥。
密钥请求单元13具有秘密值生成模块130、秘密值存储模块131、秘密值加密模块132、以及秘密值发送模块133。
秘密值生成模块130被构成为在请求发行新的通信用私人密钥时生成由数值构成的秘密值。秘密值是随机变数。也就是说,秘密值生成模块130在每次进行请求发行通信用私人密钥的处理时都生成具有随机数值的秘密值。因此,秘密值在每次进行请求发行通信用私人密钥的处理时都具有不同的数值。同一秘密值会一直被使用到终端10接收到新的通信用私人密钥为止。
秘密值存储模块131被构成为存储由秘密值生成模块130生成的秘密值。另外,对于秘密值存储模块131而言,在已经存储有秘密值的情况下,可以构成为将存储的秘密值更新为由秘密值生成模块130生成的秘密值。
秘密值加密模块132被构成为,对秘密值存储模块131中存储的秘密值进行加密来生成第一密码。秘密值加密模块132将第一密钥存储单元11中存储的通信用私人密钥作为公用密钥使用来对秘密值进行加密。例如,秘密值加密模块132在请求新的通信用私人密钥的处理开始时,使用第一密钥存储单元11中存储的通信用私人密钥,通过公开密钥方式(例如RSA)来对秘密值进行加密,从而生成第一密码。
秘密值发送模块133被构成为,对第一通信单元12进行控制,以使得由秘密值加密模块132生成的第一密码、与请求发行新的通信用私人密钥的请求消息(请求指令)一起被发送到服务器20。秘密值发送模块133也使第一通信单元12将终端10的识别信息与第一密码一起进行发送。
密钥发行单元23具有密钥生成模块230、通信用私人密钥加密模块231、通信用私人密钥发送模块232、以及第二保管模块233。
密钥生成模块230被构成为,在第二通信单元22从终端10接收到请求消息时生成新的通信用私人密钥。另外,密钥生成模块230被构成为,在第二通信单元22接收到请求消息时生成与新的通信用私人密钥成对的新的解密用私人密钥。
通信用私人密钥加密模块231具有秘密值取得部2311和加密部2312。
秘密值取得部2311被构成为,在第二通信单元22接收到请求消息时,对第二通信单元22接收到的第一密码进行解密来取得秘密值。秘密值取得部2311利用与通信用私人密钥成对的解密用私人密钥来对第一密码进行解密。另外,秘密值取得部2311在提取与终端10的通信用私人密钥成对的解密用私人密钥时,将终端10的识别信息用于检索键值。
加密部2312被构成为,将从秘密值取得部2311得到的秘密值作为公用密钥使用来对新的通信用私人密钥进行加密,从而生成第二密码。加密部2312例如将新的通信用私人密钥和秘密值的逻辑异或作为第二密码(进行了加密的新的通信用私人密钥)进行使用。
通信用私人密钥发送模块232被构成为,对第二通信单元22进行控制,以使得第二通信单元22将第二密码发送至请求了发行新的通信用私人密钥的终端10。
第二保管模块233被构成为,将由密钥生成模块230生成的新的通信用私人密钥和新的解密用私人密钥存储在第二密钥存储单元21中。另外,第二保管模块233也可以被构成为,将第二密钥存储单元21中存储的通信用私人密钥更新为由密钥生成模块230生成的新的通信用私人密钥。另外,第二保管模块233还可以被构成为,将第二密钥存储单元21中存储的解密用私人密钥更新为由密钥生成模块230生成的新的解密用私人密钥。
这样,在终端10请求发行新的通信用私人密钥时,密钥发行单元23发行新的通信用私人密钥并存储在第二密钥存储单元21中。密钥发行单元23通过利用解密用私人密钥对第一密码进行解密来取得秘密值。密钥发行单元23利用秘密值对新的通信用私人密钥进行加密,从而生成第二密码。密钥发行单元23向请求了发行新的通信用私人密钥的终端10发送第二密码。
另外,在终端10请求发行新的通信用私人密钥时,密钥发行单元23发行新的通信用私人密钥,并且发行与新的通信用私人密钥成对的私有密钥、即新的解密用私人密钥,并存储在第二密钥存储单元21中。在新的解密用私人密钥被存储在第二密钥存储单元21之后,密钥发行单元23利用新的解密用私人密钥对第一密码进行解密。
这样,由于第二密钥存储单元21中存储有新的通信用私人密钥,所以第二通信单元22在和终端10进行使用了通信用私人密钥作为公用密钥的解密通信的情况下,使用新的通信用私人密钥。
密钥请求单元13还具有通信用私人密钥解密模块134和第一保管模块135。
通信用私人密钥解密模块134被构成为,在上述第一通信单元12接收到第二密码时,利用秘密值存储模块131中存储的秘密值对第一通信单元12接收到的第二密码进行解密,由此得到新的通信用私人密钥。第二密码是秘密值与新的通信用私人密钥的逻辑异或。通过求出第二密码和秘密值的逻辑异或,可以得到新的通信用私人密钥。另外,通信用私人密钥解密模块134也可以被构成为,在得到新的通信用私人密钥后,删除秘密值存储单元131中存储的秘密值。
第一保管模块135被构成为,将由通信用私人密钥解密模块134得到的新的通信用私人密钥存储在第一密钥存储单元11中。另外,第一保管模块135也可以构成为,将第一密钥存储单元11中存储的通信用私人密钥更新为新的通信用私人密钥。
这样,在向服务器20请求发行新的通信用私人密钥时,密钥请求单元13新生成由数值构成的秘密值。密钥请求单元13将第一密钥存储单元11中存储的通信用私人密钥作为公开密钥使用来对秘密值进行加密,从而生成第一密码并向服务器20发送。密钥请求单元通过利用秘密值对第二密码进行解密来取得新的通信用私人密钥,并存储在第一密钥存储单元11中。
这样,由于第一密钥存储单元11中存储有新的通信用私人密钥,所以第一通信单元12在与服务器20进行使用了通信用私人密钥作为公用密钥的解密通信的情况下,使用新的通信用私人密钥。
接着,参照图2和图3对本实施方式的密钥发布系统的动作进行说明。
另外,在终端10出厂时,进行在终端10中登记通信用私人密钥的作业、和在管理装置20中登记通信用私人密钥和解密用私人密钥的作业。在进行通信用私人密钥和解密用私人密钥的登记时,使用管理装置(产品管理装置)40。在进行通信用私人密钥和解密用私人密钥的登记时,管理装置40利用如互联网那样的通信线路与服务器20和终端10连接。
如图2所示那样,管理装置40向服务器20发送通信用私人密钥K10和解密用私人密钥K20(图2的进程P10)。服务器20将从管理装置40接收到的通信用私人密钥K10和解密用私人密钥K20登记在第二密钥存储单元21中(图3的步骤S11)。为了防止通信用私人密钥K10和解密用私人密钥K20的外泄,管理装置40利用SSL(Secure SocketLayer:安全套接层)或TLS(Transport Layer Security:传输层安全)这样的技术与服务器20进行通信。
另外,管理装置40向服务器20发送用于识别终端10的识别信息(终端识别信息)ID10。服务器20将从管理装置40接收到的识别信息ID10登记在第二识别信息存储单元24中。另外,在终端10上搭载有用于将设备与通信网络NT连接的作为中间件的EMIT(EmbeddedMicro Internetworking Technology:嵌入式微型因特网互联技术)的情况下,可以将EMIT的对象ID用于终端识别信息ID10。
管理装置40向终端10发送终端10的识别信息ID10、和在服务器20中登记的通信用私人密钥K10(图2的进程P20)。终端10将从管理装置40接收到的识别信息ID10登记在第一识别信息存储单元14中。另外,终端10将从管理装置40接收到的通信用私人密钥K10登记在第一密钥存储单元11中(图3的步骤S12)。
即,在服务器20的第二密钥存储单元21和终端10的第一密钥单元11中,作为事前私人密钥分别登记有通信用私人密钥K10。另外,在服务器20的第二密钥存储单元21中,作为与通信用私人密钥K10成对的事前私人密钥登记有解密用私人密钥K20。
在本实施方式的密钥发布系统中,按照下面的流程,服务器20向终端10发布会话密钥。
在终端10向服务器20请求发行会话密钥时,会话密钥请求单元15生成第一随机数N10。会话密钥请求单元15控制第一通信单元12,将第一随机数N10和会话密钥请求消息与终端10的识别信息ID10一起发送到服务器20(图2的进程P30)。
在第二通信单元22接收到会话密钥请求消息时,会话密钥发行单元25生成会话密钥K30。会话密钥发行单元25利用第二密钥存储单元21中存储的通信用私人密钥K10和信息I20,生成第二消息认证码MACK10(I20)。信息I20是从终端10接收到的终端10的识别信息ID10以及第一随机数N10、第二随机数N20、以及服务器20的识别信息(服务器识别信息)ID20。即,I20=(ID10,N10,N20,ID20)。
会话密钥发行单元25进行第二消息认证码(=MACK10(ID10,N10,N20,ID20))和会话密钥K30的逻辑异或运算,生成被加密的会话密钥(=[MACK10(ID10,N10,N20,ID20)XOR K30])。会话密钥发行单元25控制第二通信单元22,将被加密的会话密钥和第二随机数N20一起发送到终端10(图2的进程P40)。
另外,如果在进程P30中没有从终端10接收到识别信息ID10,则可以从信息I20中省略识别信息ID10。
将以上的动作概括为,终端10在向服务器20请求发行会话密钥时,发送第一随机数N10和识别信息ID10(图2的进程P30)。服务器20对终端10的请求进行响应,将被加密的会话密钥(=[MACK10(ID10,N10,N20,ID20)XOR K30])和第二随机数N20一起进行发送(图2的进程P40)。
当第一通信单元12接收到被加密的会话密钥和第二随机数N20时,会话密钥接收单元16生成第一消息认证码。
会话密钥接收单元16通过进行第一消息认证码(=MACK10(ID10,N10,N20,ID20))和被加密了的会话密钥(=[MACK10(ID10,N10,N20,ID20)XOR K30])的逻辑异或运算来取得会话密钥K30。会话密钥接收单元16将接收到的会话密钥K30存储在第一密钥存储单元11中。
这样,终端10从服务器20接收会话密钥K30。终端10在该会话密钥K30的有效期间内将从服务器20接收到的会话密钥K30用于与服务器20之间的通信。
在本实施方式的密钥发布系统中,按照下面的流程,服务器20向终端10发布通信用私人密钥。
当发行请求处理开始时,秘密值生成模块130生成是随机变数的秘密值R10(图3的步骤S13)。秘密值R10被存储在秘密值存储模块131中。秘密值加密模块132将第一密钥存储单元11中存储的通信用私人密钥K10作为公开密钥使用来对秘密值R10进行加密,从而生成第一密码PENK10(R10)(图3的步骤S14)。秘密值发送模块133控制第一通信单元12,将第一密码PENK10(R10)与终端10的识别信息ID10以及请求消息一起发送到服务器20(图3的步骤S15、图2的进程P50)。这样,终端10在请求服务器20发行通信用私人密钥时,发送终端10的识别信息ID10和第一密码PENK10(R10)。
对于第一密码PENK10(R10)而言,在电文具有价值的时间内(到下一个通信用私人密钥K11被发布到终端10为止的时间内),如果不是解密用私人密钥K20则无法进行解密。因此,他人即使知道通信用私人密钥K10,也无法知道秘密值R10。
当第二通信单元22接收到请求消息时(图3的步骤S16),则秘密值取得部231利用第二密钥存储单元21中存储的解密用私人密钥K20来对第一密码PENK10(R10)进行解密,从而取得秘密值R10(图3的步骤S17)。
另外,密钥生成模块230生成新的通信用私人密钥K11、以及与新的通信用私人密钥K11成对的新的解密用私人密钥K21(图3的步骤S18)。
加密部2312将从秘密值取得部2311得到的秘密值R10作为公用密钥使用来对新的通信用私人密钥K11进行加密,从而生成第二密码(图3的步骤S19)。在本实施方式中,加密部2312将新的通信用私人密钥K11和秘密值R10的逻辑异或(=[R10 XOR K11])作为第二密码使用。
第二保管模块233将由密钥生成模块230生成的新的通信用私人密钥K11和新的解密用私人密钥K21存储在第二密钥存储单元21中。
通信用私人密钥发送模块232控制第二通信单元22,将第二密码发送到请求了发行新的通信用私人密钥K11的终端10(图3的步骤S20、图2的进程P60)。这样,服务器20向终端10发送第二密码(=[R10 XORK11])。
当上述第一通信单元12接收到第二密码时(图3的步骤S21),通信用私人密钥解密模块134求出第二密码(=[R10 XOR K11])和秘密值R10的逻辑异或,由此得到新的通信用私人密钥K11(图3的步骤S22)。
第一保管模块135将通过通信用私人密钥解密模块134得到的新的通信用私人密钥K11存储在第一密钥存储单元11中。
并且,在新的通信用私人密钥K11被存储在第一密钥存储单元11中以后,第一通信单元12与服务器20进行将新的通信用私人密钥K11作为公用密钥使用的加密通信。在新的通信用私人密钥K11被存储在第二密钥存储单元21以后,第二通信单元22与终端10进行将新的通信用私人密钥作为公用密钥使用的加密通信。
因此,在新的通信用私人密钥K11被发行以后,即使他人知道以前的通信用私人密钥K10,也无法监听终端10和服务器20之间的通信。
在终端10从服务器20取得了新的通信用私人密钥K11后,按照下面的流程,服务器20向终端10发布会话密钥。
在终端10请求服务器20发行会话密钥时,会话密钥请求单元15生成与第一随机数N10不同的新的第一随机数N11。会话密钥请求单元15控制第一通信单元12,将第一随机数N11、和会话密钥请求消息、与终端10的识别信息ID10一起发送到服务器20(图2的进程P70)。
当第二通信单元22接收到会话密钥请求消息时,会话密钥发行单元25生成与会话密钥K30不同的新的会话密钥K31,并存储在第二密钥存储单元21中。会话密钥发行单元25利用第二密钥存储单元21中存储的通信用私人密钥K11和信息I21,生成第二消息认证码MACK11(I21)。信息I21是从终端10接收到的终端10的识别信息ID10和第一随机数N11、以及第二随机数N20不同的新的第二随机数N21、和服务器20的识别信息(服务器识别信息)ID20。即,I21=(ID10,N11,N21,ID20)。
会话密钥发行单元25生成被加密了的会话密钥(=[MACK11(ID10,N11,N21,ID20)XOR K31]),并将其与第二随机数N21一起发送到终端10(图2的进程P80)。
当第一通信单元12接收到第二随机数N21和被加密了的会话密钥时,会话密钥接收单元16生成第一消息认证码。
会话密钥接收单元16进行第一消息认证码(=MACK11(ID10,N11,N21,ID20))和被加密了的会话密钥(=[MACK11(ID10,N11,N21,ID20)XOR K31])的逻辑异或运算,由此取得会话密钥K31。会话密钥接收单元16将接收到的会话密钥K31存储在第一密钥存储单元11中。
这样,终端10从服务器20接收新的会话密钥K31。
在本实施方式的密钥发布系统中,终端10在请求服务器20发行新的通信用私人密钥时,利用公开密钥对秘密值进行加密并发送到服务器20。服务器20利用与公开密钥成对的私有密钥对被加密了的秘密值进行解密。服务器20以利用秘密值能够解密的方式对新的通信用私人密钥进行加密,并发送到终端10。终端10利用秘密值对被加密了的通信用私人密钥进行解密,从而取得新的通信用私人密钥。
在假设终端10的使用者发生了变化的情况下,即使以前的使用者知道通信用私人密钥,也不可能知道与公开密钥成对的私有密钥。因此,以前的使用者无法知道秘密值。所以,能够安全地利用秘密值。另外,秘密值只是在向服务器20请求新的通信用私人密钥开始到取得该密钥为止的期间使用。因此,在秘密值有效的期间内,他人知道秘密值的可能性极低。所以,通过利用秘密值对新的通信用私人密钥进行加密,能够将新的通信用私人密钥安全地从服务器20送达到终端10。
这样,根据本实施方式的密钥发布系统,能够将新的通信用私人密钥安全地从服务器20送达到终端10。
另外,由于将通信用私人密钥作为公开密钥使用,所以只有服务器20才能够对被加密了的秘密值进行解密。因此,第三者即使利用通信用私人密钥,也无法对被加密了的私人密钥进行解密。所以,能够将新的通信用私人密钥安全地从服务器20送达到终端10。
另外,服务器20通过利用通信用私人密钥和解密用私人密钥,能够在不被他人知道的情况下发布只有特定的终端10才能利用的会话密钥。服务器20向终端10发布新的会话密钥的处理(会话密钥的更新处理)在终端10的使用者发生了变化时被进行。
会话密钥也可以在适当的时机进行定期或者不定期的更新。也就是说,在同一使用者持续使用终端10的期间,也可以进行会话密钥的更新处理。一般而言,会话密钥是一次性的加密密钥。因此,例如终端10也可以构成为,只在规定的有效期间(例如1天)保持同一会话密钥。在这种情况下,如果在该有效期间内执行会话密钥的更新处理,则终端10在短于该有效期间的期间内废弃会话密钥。
在终端10能够将会话密钥作为公用密钥使用来与服务器20进行通信的情况下,可以认为该终端10处于服务器20的管理下。对于同一服务器20的管理下的各终端10而言,即使具有互相不同的会话密钥,也可以认为属于同一组。另外,不考虑向多个终端10发布同一会话密钥的情况。
例如,假设服务器20是住宅用服务器,第一终端10是开关,第二终端10是照明设备。另外,假设服务器20分别向第一终端10和第二终端10发布不同的会话密钥。在这种情况下,向各个终端10发布的会话密钥被服务器20保存并管理。因此,能够将第一终端10和第二终端10作为同一住宅内存在的住宅设备分为一组。密钥发布系统能够将属于同组的终端10绑定,以使得它们能够互相进行通信。被绑定的各终端10彼此能够通过服务器20进行通信。例如,在上述的例子中,能够将作为开关的第一终端10的操作反映在作为照明设备的第二终端10的动作上。
另外,为了降低新的通信用私人密钥K11被第三者读取的概率,优选进一步将第二密码(=[R10 XOR K11])加密。例如,服务器20的加密部2312可以通过将原来的通信用私人密钥K10作为公用密钥使用的公用密钥方式(例如DES、3-DES、AES),进一步对第二密码进行加密。在这种情况下,终端10的通信用私人密钥解密模块134被构成为,在利用原来的通信用私人密钥K10对被加密了的第二密码进行了解密后,通过求出第二密码和秘密值R10的逻辑异或来取得新的通信用私人密钥K11。由此,以前的使用者即使知道了通信用私人密钥K10,也无法轻易地知道在终端10的解密算法中使用了哪种处理。另外,以前的使用者也需要知道秘密值R10。因此,能够大幅度降低新的通信用私人密钥K10被第三者知道的可能性。
(实施方式2)
如图4所示那样,本实施方式的密钥发布系统的终端10A和服务器20A与实施方式1不同。对于本实施方式的密钥发布系统和实施方式1的密钥发布系统中的共同的构成,赋予相同的符号并省略说明。
对于服务器20A而言,密钥发行单元23A的通信用私人密钥加密模块231A与实施方式1的服务器20不同。
通信用私人密钥加密模块231A具有秘密值取得部2311、加密部2312A、和加密密钥生成部2313。
加密密钥生成部2313被构成为,通过将第二密钥存储单元21中存储的通信用私人密钥(不是新的通信用私人密钥而是终端10A所具有的通信用私人密钥)作为公用密钥使用,生成由包含秘密值的消息认证码(消息码)组成的加密密钥。
加密部2312A被构成为,将从加密密钥生成部2313得到的加密密钥作为公用密钥使用来对新的通信用私人密钥进行加密,从而生成第二密码。加密部2312A例如将从加密密钥生成部2313得到的加密密钥和新的通信用私人密钥的逻辑异或作为第二密码(被加密的新的通信用私人密钥)进行使用。
这样,当终端10A请求新的通信用私人密钥的发行时,本实施方式的密钥发行单元23A生成包含从终端10A接收到的秘密值的消息认证码。并且,密钥发行单元23A利用消息认证码对新的通信用私人密钥进行加密,并发送到终端10A。
对于终端10A而言,密钥请求单元13A的通信用私人密钥解密模块134A与实施方式1的终端10不同。
通信用私人密钥解密模块134具有解密密钥生成部1341和解密部1342。
当第一通信单元12接收到第二密码时,解密密钥生成部1341利用第一密钥存储单元11中存储的通信用私人密钥、和秘密值存储模块131中存储的秘密值,生成解密密钥。解密密钥是具有与由加密密钥生成部2313生成的加密密钥相同值的消息认证码。也就是说,解密密钥生成部1341通过将第一密钥存储单元11中存储的通信用私人密钥作为公用密钥使用,生成包含秘密值存储单元131中存储的秘密值的消息认证码。
解密部1342被构成为,将从解密密钥生成部1341得到的解密密钥作为公用密钥使用来对第二密码进行解密,由此取得新的通信用私人密钥。解密部1342例如进行从解密密钥生成部1341得到的解密密钥和第二密码的逻辑异或运算,由此取得新的通信用私人密钥。
接着,参照图5对本实施方式的密钥发布系统的动作进行说明。另外,关于进程P10、P20、P30、P40、P50、P70、和P80,由于在实施方式1中已经进行了叙述,所以省略其说明。
当发行请求处理开始时,终端10A向服务器20A发送终端10A的识别信息ID10、和第一密码PENK10(R10)(进程P50)。
当第二通信单元22接收到请求消息时,秘密值取得部2311利用第二密钥存储单元21中存储的解密用私人密钥K20对第一密码PENK10(R10)进行解密,从而取得秘密值R10。
另外,密钥生成模块230生成新的通信用私人密钥K11、以及与新的通信用私人密钥K11成对的新的解密用私人密钥K21。
加密密钥生成部2313通过将第二密钥存储单元21中存储的原来的通信用私人密钥K10作为公用密钥使用,生成由包含秘密值R10的消息认证码组成的加密密钥。具体而言,加密密钥生成部2313利用通信用私人密钥K10和信息I30,生成加密密钥(=MACK10(I30))。信息I30是从终端10A接收到的秘密值R10、随机数(第3随机数)N30、和服务器20A的识别信息ID20。即,I30=(R10,N30,ID20)。这样,加密密钥生成部2313为了生成加密密钥而生成第3随机数N30。第3随机数N30的值与发行会话密钥时生成的第二随机数N20不同。另外,也可以使用第二随机数N20来代替第3随机数N30。但是,利用与第二随机数20不同的第3随机数N30会提高通信的安全性。
加密部2312A将从加密密钥生成部2313得到的加密密钥(=MACK10(R10,N30,ID20))作为公用密钥使用来对新的通信用私人密钥K11进行加密,从而生成第二密码。在本实施方式中,加密部2312A将新的通信用私人密钥K11和加密密钥(=MACK10(R10,N30,ID20))的逻辑异或(=[MACK10(R10,N30,ID20)XOR K11])作为第二密码进行使用。
第二保管模块233将由密钥生成模块230生成的新的通信用私人密钥K11和新的解密用私人密钥K21存储在第二存储单元21中。
通信用私人密钥发送模块232控制第二通信单元22,将第二密码和第3随机数N30一起发送到请求了发行新的通信用私人密钥K11的终端10A(图5的进程P60A)。这样,服务器20A向终端10A发送第二密码(=[MACK10(R10,N30,ID20)XOR K11])和第3随机数N30。
另外,在加密密钥的信息I30中可以包含终端10A的识别信息ID10。即,加密密钥的值可以是MACK10(ID10,R10,N30,ID20)。
在通信用私人密钥解密模块134A中,当第一通信单元12接收到第二密码和第3随机数N30时,利用秘密值存储模块131中存储的秘密值R10、服务器20A的识别信息ID20、从服务器20接收到的第3随机数N30、以及原来的通信用私人密钥K10,计算出相当于加密密钥的值(=MACK10(R10,N30,ID20)),从而生成解密密钥。
解密部1342进行从解密密钥生成部1341得到的解密密钥(=MACK10(R10,N30,ID20))和第二密码(=[MACK10(R10,N30,ID20)XOR K11])的逻辑异或运算,由此取得新的通信用私人密钥K11。另外,在信息I30中包含终端10A的识别信息ID10的情况下,在生成解密密钥时也使用识别信息ID10。
第一保管模块135将通过通信用私人密钥解密模块134A得到的新的通信用私人密钥K11存储在第一密钥存储单元11中。
如果如上述那样将消息认证码作为加密密钥使用,则能够进一步降低新的通信用私人密钥K11被外泄的可能性。另外,通过进行消息认证,服务器20A和终端10A能够检测出第三者对通信用私人密钥进行的篡改。因此,能够保证使用了通信用私人密钥的加密通信的安全性。
另外,当终端10A与服务器20A建立了连接时,服务器20A可以向终端10A发送质询码。在这种情况下,终端10A被构成为,如果没有从服务器20A接收到质询码,则无法开始发行请求处理。由此,能够防止使向服务器20A的通信量增大从而导致无法提供服务的DoS(Denial of Service attack:拒绝服务攻击)攻击。
另外,服务器20A也可以被构成为,将会话密钥与新的通信用私人密钥一起发送到终端装置10A。
在这种情况下,会话密钥发行单元25被构成为,当终端10请求了发行新的通信用私人密钥时,进行会话密钥的发行处理。
会话密钥发行单元25在从终端10接收到请求消息时,生成会话密钥。另外,会话密钥发行单元25利用第二密钥存储单元21中存储的通信用私人密钥来对会话密钥进行加密。为了对会话密钥进行加密,会话密钥发行单元25利用通信用私人密钥生成第二消息认证码(第二消息码)。会话密钥发行单元25将第二消息认证码和会话密钥的逻辑异或作为被加密的会话密钥使用。用于生成第二消息认证码的信息包含从终端10接收到的终端10的识别信息以及秘密值、第二随机数、以及服务器20的识别信息。会话密钥发行单元25将被加密了的会话密钥提供给通信用私人密钥发送单元232。另外,会话密钥发行单元25将第二随机数提供给通信用私人密钥加密模块231A的加密密钥生成部2313。
接着,参照图6对本实施方式的变形例的密钥发布系统的动作进行说明。另外,关于进程P10、P20、P30、P40、和P50,由于在实施方式1中进行了叙述,所以省略其说明。
当发行请求处理开始时,终端10A向服务器20A发送终端10A的识别信息ID10、和第一密码PENK10(R10)(进程P50)。
当第二通信单元22接收到请求消息时,会话密钥发行单元25生成与会话密钥K30不同的新的会话密钥K31。会话密钥发行单元25利用第二密钥存储单元21中存储的通信用私人密钥K11和信息I22来生成第二消息认证码MACK11(I22)。信息I22是从终端10接收到的终端10A的识别信息ID10以及秘密值R10、第二随机数N21、和服务器20的识别信息ID20。即,I22=(ID10,R10,N21,ID20)。
会话密钥发行单元25向通信用私人密钥发送单元232提供被加密了的会话密钥(=[MACK11(ID10,R10,N21,ID20)XOR K31])。另外,会话密钥发行单元25向加密密钥生成部2313提供第二随机数N21。
在密钥发行单元23A中,秘密值取得部2311对第一密码PENK10(R10)进行解密,从而取得秘密值R10。
加密密钥生成部2313利用通信用私人密钥K10和信息I31来生成加密密钥(=MACK10(I31))。信息I31是从终端10A接收到的秘密值R10、从会话密钥发行单元25得到的第二随机数N21、和服务器20A的识别信息ID20。即,I31=(R10,N21,ID20)。
加密部2312A将新的通信用私人密钥K11和加密密钥(=MACK10(R10,N21,ID20))的逻辑异或(=[MACK10(R10,N21,ID20)XOR K11])作为第二密码进行使用。
通信用私人密钥发送模块232控制第二通信单元22,将被加密了的会话密钥和第二随机数N21、与第二密码一起发送到请求了发行新的通信用私人密钥K11的终端10A(图6的进程P61)。这样,在变形例中,服务器20A向终端10A发送第二密码(=[MACK10(R10,N21,ID20)XOR K11])、被加密了的会话密钥(=[MACK11(ID10,R10,N21,ID20)XOR K31])、和第二随机数N21。
当从服务器20A接收到第二密码(=[MACK10(R10,N21,ID20)XOR K11])、被加密了的会话密钥(=[MACK11(ID10,R10,N21,ID20)XOR K31])、和第二随机数N21时,终端10A进行上述处理,由此取得新的通信用私人密钥K11和新的会话密钥K31。
在上述的变形例中,能够同时向终端10A发布新的通信用私人密钥K11和新的会话密钥K31。因此,与图5所示的例子相比,能够降低服务器20A和终端10A之间的通信量。因此,能够降低服务器20A和终端10A之间的通信所需要的功率,从而实现节能。
另外,在该变形例中,在密钥发行单元23A中使用会话密钥发行单元25所生成的第二随机数,而在会话密钥发行单元25中也可以使用密钥发行单元23A所生成的第3随机数。
另外,在本实施方式中,在消息认证的过程中采用了kryptonite协议。但是,在消息认证的过程中也可以采用kerberos协议。在kerberos协议中使用时间来代替随机数。因此,在kerberos协议中,不重性或者随机性的管理被置换成时间管理。
(实施方式3)
如图7所示那样,对于本实施方式的密钥发布系统而言,终端10B和服务器20B与实施方式2不同。对于本实施方式的密钥发布系统和实施方式2的密钥发布系统中共同的构成,赋予相同符号并省略说明。
对于终端10B而言,密钥请求单元13B与实施方式2的终端10A不同。
密钥请求单元13B具有秘密值生成模块130、秘密值存储模块131、秘密值加密模块132B、秘密值发送模块133、通信用私人密钥解密模块134A、第一保管模块135、随机变数生成模块136、和随机变数发送模块137。
随机变数生成模块136被构成为,生成与作为秘密值使用的第一随机变数不同的第二随机变数。随机变数生成模块136将第二随机变数提供给秘密值加密模块132B和随机变数发送模块137。第二随机变数优选是位数比秘密值多的数值。第二随机变数的位数越多,则越能够降低秘密值外泄的可能性。
随机变数发送模块137被构成为,对第一通信单元12进行控制,以使得将通过随机变数生成模块136接收到的第二随机变数发送到服务器20B。这里,优选在发行请求处理执行前将第二随机变数发送到服务器20B。例如,随机变数发送模块137被构成为,在终端10B与通信网络30建立了连接时,将第二随机变数发送到服务器20B。
秘密值加密模块132B具有通信数值生成部1321和通信数值加密部1322。
通信数值生成部1321被构成为,利用秘密值存储模块131中存储的秘密值及位数来生成通信数值。通信数值生成部1321通过从随机变数生成模块136得到的第二随机变数、和秘密值存储模块131中存储的秘密值的单纯运算来生成通信数值。在本实施方式中,通信数值生成部1321通过将运算中使用的秘密值和用于使位数变大的第二随机变数结合来生成通信数值。这里,当秘密值被设为R10、第二随机变数被设为R20时,通信数值被表示成“R10‖R20”。x‖y表示将左侧的数值x与右侧的数值y单纯地连结。将这种单纯运算称为并置(concatenation)。例如,“123‖123”成为“123123”。因此,在通信数值中,上位的数值是秘密值,下位的数值是第二随机变数。这样,通信数值生成部1321通过并置、即将秘密值和第二随机变数单纯地连结来生成通信数值。例如,在秘密值是3位数值“123”,第二随机变数是3位数值“456”的情况下,通信数值被表示成“123‖456”,其值为“123456”。另外,通信数值生成部1321也可以将秘密值和第二随机变数的和作为通信数值,还可以将秘密值和第二随机变数的乘积作为通信数值。只要通信数值的复杂度高于秘密值的复杂度即可。
通信数值加密部1322被构成为,对由通信数值生成部1321生成的通信数值进行加密来生成第一密码。通信数值加密部1322将第一密钥存储单元11中存储的通信用私人密钥作为公开密钥使用来对通信数值进行加密。例如,通信数值加密部1322在请求新的通信用私人密钥的处理开始时,使用第一密钥存储单元11中存储的通信用私人密钥,按照公开密钥方式(例如RSA)对通信数值进行加密,从而生成第一密码。
这样,本实施方式的密钥请求单元23B生成作为秘密值使用的第一随机变数和第二随机变数。在请求服务器20发行新的通信用私人密钥之前,密钥请求单元23B向服务器20发送第二随机变数。密钥请求单元23B通过第一随机变数和第二随机变数的单纯运算来生成通信数值。密钥请求单元23B利用第一密钥存储单元11中存储的公开密钥(在本实施方式中是通信用私人密钥)来对通信数值进行加密,并发送到服务器20B。
对于服务器20B而言,密钥发行单元23B与实施方式2的服务器20A不同。
密钥发行单元23B具有密钥生成模块230、通信用私人密钥加密模块231B、通信用私人密钥发送模块232、第二保管模块233、以及随机变数存储模块234。
随机变数存储模块234例如构成为,存储第二通信单元22从终端10B接收到的第二随机变数。
通信用私人密钥加密模块231B具有秘密值取得部2311B、加密部2312A、和加密密钥生成部2313。
秘密值取得部2311B被构成为,在第二通信单元22接收到请求消息时,对第二通信单元22接收到的第一密码进行解密,从而得到通信数值。秘密值取得部2311B利用与通信用私人密钥成对的解密用私人密钥来对第一密码进行解密。另外,秘密值取得部2311B被构成为,通过取得的通信数值和随机变数存储模块234中存储的第二随机变数的单纯运算来取得秘密值。
接着,参照图8对本实施方式的密钥发布系统的动作进行说明。另外,关于进程P10、P20、P30、P40、P70、和P80,由于在实施方式1中进行了叙述,所以省略其说明。另外,在进程P50B和进程P50中省略重复的说明,在进程P60B和进程P60A中也省略重复的说明。
当发行请求处理开始时,通信数值生成部1321通过从随机变数生成模块136得到的第二随机变数R20、和秘密值存储模块131中存储的秘密值R10的单纯运算来生成通信数值R10‖R20。
通信数值加密部1322将第一密钥存储单元11中存储的通信用私人密钥K10作为公开密钥使用来对通信数值R10‖R20进行加密,从而生成第一密码PENK10(R10‖R20)。
秘密值发送模块133对第一通信单元12进行控制,将第一密码PENK10(R10‖R20)与终端10B的识别信息ID10以及请求消息一起发送到服务器20B(图8的进程P50B)。
这样,终端10B在请求服务器20B发行通信用私人密钥时,发送终端10B的识别信息ID10和第一密码PENK10(R10‖R20)。
当第二通信单元22接收到请求消息时,秘密值取得部2311B利用第二密钥存储单元21中存储的解密用私人密钥K20来对第一密码PENK10(R10‖R20)进行解密,从而取得通信数值R10‖R20。并且,秘密值取得部2311B进行随机变数存储模块137中存储的第二随机变数R20、和通信数值R10‖R20的单纯运算,由此取得秘密值R10。也就是说,秘密值取得部2311B从通信数值R10‖R20除去第二随机变数R20。
加密部2312A将从加密密钥生成部2313得到的加密密钥(=MACK10(R10,N30,ID20))作为公用密钥使用来对新的通信用私人密钥K11进行加密,从而生成第二密码(=[MACK10(R10,N30,ID20)XOR K11)。
通信用私人密钥发送模块232对第二通信单元22进行控制,将第二密码和第3随机数N30发送到请求了发行新的通信用私人密钥K11的终端10B(图8的进程P60B)。
这样,服务器20B向终端10B发送第二密码(=[MACK10(R10,N30,ID20)XOR K11)。
如上所述,终端10B在发行请求处理中,生成位数多于秘密值R10的通信数值R10‖R20,并发送到服务器20B。这里,通信数值R10‖R20有可能被第三者知道。但是,通信数值R10‖R20位数较多,并且第三者无法根据秘密值R10和第二随机变数得知通信数值R10‖R20是如何被生成的。因此,在秘密值R10有效的时间内,根据通信数值R10‖R20通过所有可能回归法等来得到秘密值R10基本是不可能的。
在本实施方式的密钥分布系统中,终端10B向服务器20B发送利用秘密值生成的通信数值。由于通信数值与秘密值相比具有更多的位数,所以与发送秘密值自身的情况相比,秘密值被第三者得知的可能性大幅降低。
这里,通过单纯地增加秘密值的位数,能够大幅度降低秘密值被第三者得知的可能性。但是,在这种情况下,服务器20B和终端10B中的处理负荷会增大。
为此,在本实施方式的密钥发布系统中,位数多于秘密值的通信数值只是在从终端10B向服务器20B发送秘密值时被使用。因此,不用使用位数大于秘密值的通信数值就可以完成通信用私人密钥的加密和解密。也就是说,对于本实施方式的密钥发布系统,由于只在向服务器20B发送秘密值时才虚拟增加秘密值的位数,所以处理负荷不会增大。
这样,本实施方式的密钥发布系统能够降低秘密值被第三者得知的可能性,并且能够抑制服务器20B和终端10B的处理负荷的增加。
(实施方式4)
如图9所示那样,对于本实施方式的密钥发布系统而言,终端10C和服务器20C与实施方式2不同。对于本实施方式的密钥发布系统和实施方式2的密钥发布系统中共同的构成,赋予相同符号并省略其说明。
终端10C具有第一密钥存储单元11、第一通信单元12、密钥请求单元13C、第一识别信息存储单元14、会话密钥请求单元15、会话密钥接收单元16、以及第一原根存储单元17。终端10C和终端10A中共同构成的说明被省略。
第一原根存储单元17被构成为,存储较大值的素数p和合理值的原根g。如果考虑通信安全性,则优选将素数p和原根g设为非公开。在将素数p和原根g设为非公开的情况下,素数p和原根g被管理装置40提供给终端10C。
密钥请求单元13C具有秘密值生成模块(第一秘密值生成模块)130C、秘密值存储模块(第一秘密值存储模块)131C、第一公开密钥生成模块138、和第一公开密钥发送模块139。
秘密值生成模块130C被构成为,在请求发行新的通信用私人密钥时生成由数值构成的秘密值(第一秘密值)。第一秘密值是随机变数。
秘密值存储模块131C被构成为,存储由秘密值生成模块130C生成的第一秘密值。
第一公开密钥生成模块138被构成为,通过将秘密值存储模块131C中存储的第一秘密值应用于第一原根存储模块17中存储的原根,生成Diffie-Hellman密钥共享方式的第一公开密钥K41来作为第一密码。若将第一秘密值设为x,则第一公开密钥K41用以gx的p为模的余数Rx(=gx mod p)来表示。
第一公开密钥发送模块139被构成为,控制第一通信单元12,以使得由第一公开密钥生成模块138生成的第一公开密钥K41和请求发行新的通信用私人密钥的请求消息(请求指令)一起被发送到服务器20。第一公开密钥发送模块139使第一通信单元12一起发送第一公开密钥K41和终端10C的识别信息。
这样,密钥请求单元13C在向服务器20C请求发行新的通信用私人密钥时,重新生成由数值构成的第一秘密值。另外,密钥请求单元13C通过将第一秘密值应用于第一原根存储单元17中存储的原根,生成Diffie-Hellman密钥共享方式的第一公开密钥K41。密钥请求单元13C向服务器20C发送第一公开密钥K41。
服务器20C具有第二密钥存储单元21、第二通信单元22、密钥发行单元23C、第二识别信息存储单元24、会话密钥发行单元25、和第二原根存储单元26。服务器20C和服务器20A中共同构成的说明被省略。
与第一原根存储单元17同样,第二原根存储单元26被构成为,存储较大值的素数p和合理值的原根g。在将素数p和原根g设为非公开的情况下,素数p和原根g被管理装置40提供给服务器20C。
密钥发行单元23C具有密钥生成模块230C、通信用私人密钥加密模块231C、通信用私人密钥发送模块232C、第二保管模块233C、第二秘密值生成模块235、和第二公开密钥生成模块236。
密钥生成模块230C被构成为,当第二通信单元22从终端10C接收到请求消息时,生成新的通信用私人密钥。
第二秘密值生成模块235被构成为,当第二通信单元22接收到请求消息时,生成由数值构成的第二秘密值。第二秘密值是随机变数。也就是说,第二秘密值生成模块235在每次接收到请求消息时,生成具有随机数值的第二秘密值。即,在每次发行通信用私人密钥时,第二秘密值都具有不同的数值。第二秘密值一直被使用到向终端10C发送新的通信用私人密钥为止。
通信用私人密钥加密模块231C具有第二公用密钥生成模块2314和加密部2312C。
第二公用密钥生成模块2314被构成为,当第二通信单元22接收到请求消息时,利用第二通信单元22所接收到的第一公开密钥K41和由第二秘密值生成模块235生成的第二秘密值,生成Diffie-Hellman密钥共享方式的公用密钥K40。若将第二秘密值设为y,则公用密钥K40用(Rx)y的以p为模的余数Rxy(=gxy mod p)来表示。这样的公用密钥K40(=Rxy)是以素数p为模与gxy同余。即,Rxy=gxy mod p。
加密部2312C被构成为,利用从第二公用密钥生成模块2314得到的公用密钥K40来对新的通信用私人密钥进行加密,从而生成第二密码。在本实施方式中,加密部2312C利用公用密钥K40,生成由消息认证码构成的加密密钥。加密部2312C将该加密密钥作为公用密钥使用来对新的通信用私人密钥进行加密,从而生成第二密码。加密部2312C例如将加密密钥和新的通信用私人密钥的逻辑异或作为第二密码(被加密了的新的通信用私人密钥)进行使用。
第二公开密钥生成模块236被构成为,通过将由第二秘密值生成模块235生成的第二秘密值应用于第二原根存储模块26中存储的原根,生成Diffie-Hellman密钥共享方式的第二公开密钥K42。若将第二秘密值设为y,则第二公开密钥K42用gy的以p为模的余数Ry(=gymod p)来表示。
通信用私人密钥发送模块232C被构成为,控制第二通信单元22,向终端10C发送由通信用私人密钥加密模块231C生成的第二密码、和由第二公开密钥生成模块236生成的第二公开密钥K42。
第二保管模块233C被构成为,将由密钥生成模块230C所生成的新的通信用私人密钥存储在第二密钥存储单元21中。另外,第二保管模块233也可以构成为,将第二密钥存储单元21中存储的通信用私人密钥更新为由密钥生成模块230C生成的新的通信用私人密钥。
这样,密钥发行单元23C在终端10C请求新的通信用私人密钥的发行时,生成由数值构成的第二秘密值。密钥发行单元23C利用从终端10C接收到的第一公开密钥和第二秘密值,生成Diffie-Hellman密钥共享方式的公用密钥K40。密钥发行单元23C通过将第二秘密值应用于第二原根存储单元26中存储的原根,生成Diffie-Hellman密钥共享方式的第二公开密钥K42。密钥发行单元23C利用公用密钥K40对新的通信用私人密钥进行加密,并将其与第二公开密钥K42一起发送到终端10C。
另外,密钥发行单元23C在终端10C请求新的通信用私人密钥的发行时,发行新的通信用私人密钥并将其存储在第二密钥存储单元21中。因此,第二通信单元22在与终端10C进行使用了通信用私人密钥作为公用密钥的加密通信的情况下,使用新的通信用私人密钥。
密钥请求单元13C还具有通信用私人密钥加密模块134C和第一保管模块135。
通信用私人密钥解密模块134C具有第一公用密钥生成模块1343和解密部1342C。
第一公用密钥生成模块1343被构成为,当第一通信单元12接收到第二密码和第二公开密钥K42时,利用秘密值存储模块131C中存储的第一秘密值x和第二公开密钥K42来生成Diffie-Hellman密钥共享方式的公用密钥K40。如上所述,公用密钥K40由余数Rxy(=gxy mod p)表示,第二公开密钥K42由余数Ry(=gy mod p)表示。因此,根据第一秘密值x和第二公开密钥K42可以生成公用密钥K40。
解密部1342C被构成为,利用由第一公用密钥生成模块1343生成的公用密钥K40,对第一通信单元12所接收到的第二密码进行解密,由此得到新的通信用私人密钥。在本实施方式中,解密部1342C利用公用密钥K40,生成和由加密部2312C生成的加密密钥相等的、由消息认证码构成的解密密钥。解密部1342C将该解密密钥作为公用密钥使用,对新的通信用私人密钥进行解密,从而取得第二密码。解密部1342C例如通过求出解密密钥和第二密码的逻辑异或来取得新的通信用私人密钥。
这样,当从服务器20C接收到被加密了的新的通信用私人密钥(第二密码)和第二公开密钥K42时,密钥请求单元13C利用第一秘密值和从服务器20C接收到的第二公开密钥来生成公用密钥K40。密钥请求单元13C利用公用密钥K40对第二密码进行解密,取得新的通信用私人密钥,并将其存储在第一密钥存储单元11中。因此,第一通信单元12与服务器20C在使用了通信用私人密钥作为公用密钥进行加密通信的情况下,使用新的通信用私人密钥。
接着,参照图10对本实施方式的密钥发布系统的动作进行说明。另外,关于进程P30、P40、P70、和P80,由于在实施方式1中进行了叙述,所以省略其说明。
另外,在终端10C出厂时,进行在终端10C中登记通信用私人密钥的作业、和在管理装置20中登记通信用私人密钥C的作业。通信用私人密钥的登记使用管理装置40。管理装置40在登记通信用私人密钥时,利用互联网这样的通信线路与服务器20C和终端10C连接。
如图10所示那样,管理装置40向服务器20C发送通信用私人密钥K10(图10的进程P10C)。服务器20C将从管理装置40接收到的通信用私人密钥K10登记在第二密钥存储单元21中。
管理装置40向服务器20C发送用于识别终端10C的识别信息(终端识别信息)ID10。服务器20C将从管理装置40接收到的识别信息ID10登记在第二识别信息存储单元24中。
管理装置40向终端10C发送终端10C的识别信息ID10、和在服务器20C中登记了的通信用私人密钥K10(图10的进程P20C)。终端10C将从管理装置40接收到的识别信息ID10登记在第一识别信息存储单元14中。另外,终端10C将从管理装置40接收到的通信用私人密钥K10登记在第一密钥存储单元11中。
即,在服务器20C的第二密钥存储单元21和终端10C的第一密钥单元11中,分别登记有通信用私人密钥K10作为事前私人密钥。在本实施方式中,与实施方式2不同,在服务器20的第二密钥存储单元21中,没有登记与通信用私人密钥K10成对的解密用私人密钥K20作为事前私人密钥。
当发行请求处理开始时,秘密值生成模块130C生成第一秘密值x。第一秘密值x被存储在秘密值存储模块131C中。第一公开密钥生成模块138利用秘密值存储模块131C中存储的第一秘密值x、和第一原根存储单元17中存储的原根g以及素数p,生成第一公开密钥K41。第一公开密钥发送模块139控制第一通信单元12,将第一公开密钥K41和终端10C的识别信息ID10以及请求消息一起发送到服务器20C(图10的进程P50C)。这样,终端10C在请求服务器20C发行通信用私人密钥时,发送终端10C的识别信息ID10和第一公开密钥K41(=Rx)。
当第二通信单元22接收到请求消息时,第二秘密值生成模块235生成第二秘密值y。
第二公开密钥生成模块236将由第二秘密值生成模块235生成的第二秘密值y应用于第二原根存储模块26中存储的原根g,由此生成第二公开密钥K42(=Ry)。
第二公用密钥生成模块2314利用第二通信单元22所接收到的第一公开密钥K41、和由第二秘密值生成模块235生成的第二秘密值y,生成公用密钥K40。
加密部2312C利用公用密钥K40和信息I40,生成加密密钥(=MACK40(I40))。信息I40是公用密钥K40、第二公开密钥K42(=Ry)、和服务器20C的识别信息ID20。即,是I40=(K40,Ry,ID20)。由于余数Ry是通过作为随机变数的第二秘密值而生成的,所以实际可以作为随机数使用。
加密部2312C将加密密钥(=MACK40(K40,Ry,ID20))和新的通信用私人密钥K11的逻辑异或(=[MACK40(K40,Ry,ID20)XOR K11])作为第二密码(被加密了的新的通信用私人密钥)进行使用。由于公用密钥K40是利用第一秘密值x而生成的,所以可以认为通信用私人密钥加密模块231C利用第一秘密值对新的通信用私人密钥K11进行加密。
通信用私人密钥发送模块232C控制第二通信单元22,向终端10C发送第二密码(=[MACK40(K40,Ry,ID20)XOR K11])、和第二公开密钥K42(=Ry)(图10的进程P60C)。
第二保管模块233C将由密钥生成模块230C生成的新的通信用私人密钥K11存储在第二密钥存储单元21中。
这样,服务器20C向终端10C发送第二密码和第二公开密钥K42。
当第一通信单元12接收到第二密码和第二公开密钥K42时,第一公用密钥生成模块1343利用秘密值存储模块131C中存储的第一秘密值x和第二公开密钥K42,生成Diffie-Hellman密钥共享方式的公用密钥K40。
这样,第一公用密钥生成模块1343利用第一秘密值x和余数Ry,求出(Ry)x的值。这里,若假设Ryx=(Ry)x mod p,则Ryx以素数p为模与gxy同余。所以,Rxy=Ryx。因此,第一公用密钥生成模块1343能够生成公用密钥K40。
解密部1342C利用由第一公用密钥生成模块1343生成的公用密钥K40、服务器20C的识别信息ID20、和从服务器20C接收到的第二公开密钥K42来生成解密密钥(=MACK40(K40,Ry,ID20))。解密部1342C进行生成的解密密钥(=MACK40(K40,Ry,ID20))和第二密码(=[MACK40(K40,Ry,ID20)XOR K11])的逻辑异或运算,由此取得新的通信用私人密钥K11。
第一保管模块135将通过通信用私人密钥解密模块134C得到的新的通信用私人密钥K11存储在第一密钥存储单元11中。
并且,在新的通信用私人密钥K11被存储在第一密钥存储单元11中以后,第一通信单元12与服务器20C进行使用了新的通信用私人密钥K11作为公用密钥的加密通信。在新的通信用私人密钥K11被存储在第二密钥存储单元21中以后,第二通信单元22与终端10C进行使用了新的通信用私人密钥K11作为公用密钥的加密通信。
因此,在新的通信用私人密钥K11被发行后,即使他人知道以前的通信用私人密钥K10,也无法监听终端10C和服务器20C之间的通信。
以上说明的本实施方式的密钥发布系统利用Diffie-Hellman密钥共享方式的公用密钥K40,对新的通信用私人密钥K11进行加密,并将其发送到终端10C。因此,即使是知道原先的通信用私人密钥K10的第三者,也无法对被加密了的新的通信用私人密钥K11进行解密。因此,能够将新的通信用私人密钥K11安全地送达到终端10C。