お役立ち情報

COLUMN

TOP今月の言葉共通鍵暗号 2025年07月

今月の言葉

2025年7月31日

共通鍵暗号

 これから二回にわたって、この稿の筆者の専門分野である暗号の話を書きたい。
 世の中には、暗号は大きく分けて二種類、共通鍵暗号というのと公開鍵暗号というのがあって、前者は簡単でシンプル、後者は複雑。どちらが安全かと言えば後者の方、ということが比較的知られている。が、それらがどう違うかと言うことは一般にはあまり理解されていない。そこで今月と来月は、両者の違いについて、すこし解説したい。
 まず、今日の社会では、暗号化される前の通信文はほとんどコンピュータとかワープロなどの機械で書かれており、平文をソフトウェアで数列に転換したものが元のデータであるという前提から出発したい。(もちろん手書きの平文や画で描かれた通信文というのもないことはないが、これらも今日では、一度pdfなどの機械ソフトでスキャンして数列データに置き換えられて交信されている)さて平文を数列に置き換えたものを素データと呼ぶことにしよう。素データに一定の別の数列(暗号鍵と呼ぶ)を一定の暗号式(アルゴリズム)で乗じたものが暗号文である。この場合、AさんとBさんの間で暗号文が交換されるとすると、AさんとBさんの間では三つのことが了解されていなければならない。
 一つ目は、素データを人間が読める平文に還元するためのソフトウェア(ワードとかテキストとか)がなんであるかという了解。二つ目は、上記の一定の暗号式
(アルゴリズム)がなんであるか(暗号アルゴリズムの名前。AESとかDESとか・・)という了解。そして三つ目は、その暗号文を復号するための暗号鍵がなんであるかという了解。
 AさんとBさんの間でこの三つの了解があって初めて、Aさんは平文を暗号化してBさんに送り、Bさんは受け取った暗号文を平文に還元して読むことができるのである。
 さて、上記の了解のうち一つ目は世間で一般に使われているソフトウェアであることが多いし、二つ目も、世間で認められている安全な暗号アルゴリズムの種類がそう多くあるわけではないので、実質的に外部の人に知られていない秘密の情報というのは、三つ目の暗号鍵ということになる。このAさんとBさんが共通で持っている秘密の暗号鍵のことを「共通鍵」と呼んでいる。暗号鍵の数列は長ければ長いほど外部から推定しにくい(共通鍵を知らないCさんが、AさんとBさんの間で交換されている暗号文の中身を知ろうとすれば、力業でコンピュータに数列をつくらせて次々と試してみなければならない)。が、あまり長いと実用的ではないので、現在では、128ビットとか256ビットくらいのランダムな数の列が共通鍵として用いられている。
 もっとも、AさんとBさんの間であまり長い間、同じ暗号の共通鍵を使っていると、不慮のことから外部に共通鍵を知られてしまう危険が増すことになる。上記のCさんが偶然力業で共通鍵を推定してしまうかもしれないし、AさんとBさんのどちらかのコンピュータが悪意ある他者に(ハッキングされて)見られてしまうかもしれない。なので、AさんとBさんの間では、時々共通鍵をちがうものに改める(更新する)ほうがより安全なのである。
 それでは、AさんとBさんの間でどうすれば共通鍵を更新することができるのだろうか。
 次号では、離れていても共通鍵を更新する別の暗号方式を紹介しよう。