暗号資産(仮想通貨)の基礎

暗号技術入門|初歩的な換字式暗号や秘密鍵方式の仕組みを解説

ブロックチェーンの情報はすべて公開されていて、ブロックチェーンの参加者は誰でもそのブロックに入っているトランザクションを見ることができます。新しいトランザクションを作ることもできます。だったら、他人に成りすまして他人のビットコインを盗み出すトランザクションが作れるのではないでしょうか。

前回のコラムではそんな改ざんを防止するために電子署名を用いていることを解説しました。電子署名は暗号技術を基本にして作られた仕組みです。

参考記事:トランザクションは誰かに改ざんされないのか|ブロックチェーンの基礎

今回は暗号の基礎について解説します。


初歩的な換字式暗号


暗号は仲間には読めるが他人には読めない通信文を作る仕組みであることは皆さんご承知の通りです。相手に伝えたい通信文の原文を暗号文に変換するときに、原文の1文字に対して暗号文の1文字を対応させる方法が換字式暗号です。

原文の文字を暗号文の文字に対応させる方法について送信元と受信先で同じ方法を使うことにすれば、通信の途中で他人に読まれても換字方法が分からないので解読できないという原理です。

例えば図1に示す暗号表を作ります。

初歩的な換字式暗号

A~Z、空白文字、ピリオドを上段に書き、下段にでたらめに割り振った換字を書いておきます。原文の文字列を1文字ずつ上段の文字から探し、対応する下段の文字を書いていきます。すると、「SEND ME MONEY.」という文字列が「EIAVSQISQKAIMF」という文字列に変換されて意味が分からなくなってしまいます。

暗号文を受け取った人は、暗号文の文字列を1文字ずつ下段の文字から探し、対応する上段の文字を書いていきます。すると、原文通りに「SEND ME MONEY.」の文字列に戻ります。暗号表は暗号文を原文に戻すために必要なので解読用の「鍵」と呼ぶことがあります。

このように、あらかじめ送信元と受信先で「暗号表」を鍵として持つことにより、他人に読まれても意味が分からない通信ができることになります。


コンピュータで換字式暗号を実現する方法


コンピュータの中では文字を1文字ごとに文字コードと呼ぶ数字を割り当てることにより表現します。したがってコンピュータ内部の原文を表す数字の列を異なる数字の列に変換してやれば、意味が分からない暗号文を生成できることになります。数式の計算はコンピュータが得意とするところですから、暗号表も表を作るのではなくて計算式で実行することになります。

 

簡単な例を作って説明します。文字コードを図2の表のように決めることにします。これは暗号表ではなくてコンピュータ内部で文字を表現するための数字を表します。(計算を簡単にするために一つの文字に複数の文字コードを割り当てています)暗号表の代わりに数式で文字コードを変換することにします。

例えば、式 f(x)=ax+b で原文から暗号文への換字を実行するものとします。ここで f(x) は換字した結果の暗号文字でxは原文の文字を表します。原文の文字にaを掛けてbを足す式で換字するという意味です。

 

コンピュータで換字式暗号を実現する方法

この式でaを3、bを6として計算すると「SEND ME MONEY.」を暗号化した文字列は「ESRPAOSAOURSWD」となり意味が分からなくなります。この文字列を受け取ったコンピュータはf(x)の逆関数 f^(-1)(x)=(x-b)/a を計算することにより暗号文を原文に戻すことができます。図2の例では暗号化したときと同じa=3とb=6を用いることにより原文に復号することができるのです。

 

このような方法ではa、bとして用いる数字が暗号解読の鍵の役目をし、a,bの値を頻繁に変更することにより送信の度に異なる暗号文を生成することができます。


「秘密鍵」方式


 

図1、図2に示したような暗号では暗号表(図1)や関数と係数a、b(図2)を秘密にしておかなければなりません。これらが第三者に知られれば解読されてしまうからです。このように暗号の鍵を送信元と受信先以外には秘密にしておかなければならない方式のことを秘密鍵暗号と呼びます。

 

秘密鍵暗号はなんらかの事情で鍵の情報が外部に漏れると暗号が解読されてしまう危険があります。例えば戦争で自国の基地が敵軍に占領されると、そこに残された暗号の鍵情報を用いて通信内容が敵軍に漏れてしまうといった危険があります。また、最初に鍵として使う情報を相手方に送信するときには暗号が使えないので、そこを第三者に知られてしまうと暗号文が解読されてしまう問題もあります。

 

上記のような単純な換字式暗号は、実は容易に解読されてしまいます。文章を構成する文字の統計的な特徴が分かっているので、そこから推測できてしまうのです。また、秘密鍵方式であることも最初の鍵の受け渡しが課題になります。次回はこれらの課題を解決した「公開鍵暗号」について解説します。


本記事の監修者・上野 仁(Hitoshi Ueno)


1984年山梨大学大学院修士課程(計算機科学専攻)修了後、株式会社日立製作所入社。システム開発研究所、エンタープライズサーバ事業部などで主としてコンピュータアーキテクチャおよび基本ソフトウェアの研究開発に従事。

2015年より第一工科大学東京上野キャンパス情報電子システム工学科教授に就任。生体信号処理に関するプログラム開発や種々の先端ソフトウェアついての調査研究に興味を持つ。技術士(情報工学)。博士(工学)。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。



この記事をシェアする

ホーム » 暗号資産(仮想通貨)の基礎 » 暗号技術入門|初歩的な換字式暗号や秘密鍵方式の仕組みを解説