対称鍵 (Symmetric Key)
対称鍵とは、暗号化のアルゴリズムの一つで、暗号化と復号に同じ暗号鍵を使うアルゴリズムを意味します。
対称鍵暗号(Symmetric-key cryptosystem)方式では、暗号化に使用される暗号化の鍵と復号に使用される復号鍵が同一という特徴があります。対称鍵の暗号方式で暗号化した情報を誰かに送るとき、暗号鍵も一緒に送らなければならないのですが、この過程で暗号鍵をなくしたり、他人に露出されれば、この暗号鍵で暗号化した情報は、セキュリティに非常に脆弱になります。 これと同じ理由で対称鍵暗号方式で最も重要に考えなければならないということは、「暗号鍵を管理し、伝達するメカニズム」です。
対称鍵暗号は、私たちが一般的に使用する暗号という意味で「慣用暗号」とも言います。また鍵を秘密裏に保管しなければならないという意味で「秘密鍵暗号(Secret-key cryptosystem)」ともいいます。この方式は、古代暗号から連結された長い歴史を持っています。対称鍵暗号は暗号化の演算速度が早くて、効率的な暗号システムを構築することができます。
では、対称鍵暗号の原理は何でしょうか? 対称鍵暗号は2進数のビット間の排他的論理和(XOR)演算に基盤します。 排他的論理和とは、二つの命題のうちの一つだけ真であるケースを判断する論理演算です。 排他的論理和の記号は で表示します。2進数で1を真、0を偽とすると、排他的論理和の演算結果は次と同じです。
10=1, 0
1=1, 1
1=0, 0
0=0
次のように8ビット情報であるP、Kが二つあります。
P=1 1 0 1 0 0 1 1
K=0 1 0 1 0 1 0 1
PとKのビット間のXOR演算結果をQだとすると、次のようです。
Q=PK=(1 1 0 1 0 0 1 1)
(0 1 0 1 0 1 0 1)=(1 0 0 0 0 1 1 0)
また、QをKとXOR演算をしてみると、Q+KはPになります。
QK=(1 0 0 0 0 1 1 0)
(0 1 0 1 0 1 0 1)=1 1 0 1 0 0 1 1
これを暗号の概念で改め説明しますと、元の情報であるPを暗号鍵のKとビット間のXOR演算で暗号化された情報Qで作ります。暗号化された情報Qは、暗号鍵のKとビット間のXOR演算を行えば元の情報Pで復号化されます。しかし、単純にXOR演算だけでは暗号化された情報が簡単に解決されるため、実際に活用される対称鍵暗号にはXOR演算以外に他のさまざまな数学演算を一緒に使用します。対称鍵暗号方式は、アルゴリズムの内部構造が簡単な置き換えと転置の組合で構成されているので、アルゴリズムを簡単に開発でき、コンピュータシステムで急速に動作します。 しかし、送・受信者の間で同一の鍵を共有しなければならないため、多くの人たちとの情報交換の際に多くの鍵を生成・維持・管理しなければならない困難があります。
このような対称鍵暗号方式は、データを変換する方法によってブロック暗号とストリーム暗号に区分されます。