デジタルマネーライブラリー

このスマート社会において情報は、場所やモノに縛られない状況を実現しはじめています。そんな情報にこれからは価値あるインターネット「IoV」(Internet of Value)が求められると考えています。本ブログでは、そんな「IoV」に影響する仮想通貨について色々な観点から紹介します。

ビットコインの暗号化技術を知ろう

 

SSL/TLSを理解する ~共通鍵暗号・公開鍵暗号・ハッシュ関数・電子署名・証明書~

SSL/TLSを理解する ~共通鍵暗号・公開鍵暗号・ハッシュ関数・電子署名・証明書~

 

 ビットコインには高度な暗号技術が使われ、取引の信頼性を高めています。ここではビットコインの暗号化技術について説明します。

電子署名で本人であることを証明する

ビットコインでは、公開鍵暗号方式という暗号技術が使われています。公開鍵暗号方式では、秘密鍵と公開鍵の2つの鍵が存在します。秘密鍵は自身のみが使う鍵で、暗証番号などと同じように他人に教えてはいけない性質のものです。公開鍵はその名の通り、オンライン上で公開されている、他人に渡すことも可能な鍵です。ビットコインの送金は秘密鍵を使って行われます。公開鍵にひも付くアドレスに送られたビットコインは、公開鍵を生成した秘密鍵でのみ署名でき、ビットコインを使用することができます。

公開鍵と秘密鍵は必ずセットで使う

公開鍵暗号方式で重量なことは、この秘密鍵と公開鍵がビットコインにおいては必ずセットで使われることです。ビットコインの取引はすべて公開されているため、それぞれの取引に秘密鍵でなされた署名が入っていることを確認できます。そして、ビットコインの所有者のみが、ビットコインのアドレスに紐づいた秘密鍵を持っています。つまりどのアドレスに今いくらビットコインがあるか簡単に調べられるわけです。しかし、取引履歴や現在のビットコインの所持状況が分かっても、ほかの秘密鍵に紐づいているアドレスの中のビットコインは使えません。実際にビットコインを使えるのは、ビットコインアドレスに紐づく秘密鍵の所有者のみという仕組みになっています。逆にいうと、アドレスに紐づいた秘密鍵が他人に知られてしまうと、他人がそのアドレスにあるビットコインを使うこともできてしまいます。

秘密鍵から公開鍵とアドレスが作られる

ビットコインの送金時に指定する送り先の「ビットコインアドレス」は秘密鍵から生成されます。まず、疑似乱数生成器(RNG)を用いて秘密鍵を生成します。次に秘密鍵から楕円曲線暗号という暗号を使って公開鍵を生成します。さらに公開鍵をSHA-256のハッシュ関数に2回かけて、最後にBase58エンコードにかけることでビットコインアドレスが完成します。Base58エンコードは、人間が読みやすいように数字の「0.1」とアルファベットの「0.1」を除外した英数字の58種類を使ったランダム値です。

これらのプロセスは非可逆であり、ビットコインアドレスからは秘密鍵を割り出せません。ただし、秘密鍵を生成する疑似乱数生成器に脆弱性がある場合や、同じシードを使ってしまうと、同じ乱数を生成してしまい、乱数衝突を起こしてしまいます。乱数衝突が起こると、複数の秘密鍵が同時に存在し、勝手に使われる可能性もあります。また、秘密鍵から生成した公開鍵が重複する可能性もゼロではありません。2の96乗分の1の確率といえば、その可能性が低いことが分かるでしょう。

公開鍵から秘密鍵は割り出せない

公開鍵は秘密鍵から楕円曲線暗号を使って生成されます。この楕円曲線暗号は一方向性のある暗号技術といえます。つまり、一方向の計算は容易でもその逆は容易ではないという意味です。楕円曲線暗号は、アメリカの数学者ニール・コビッツ博士により1985年に発表されました。この暗号技術は、多くのデータ暗号化に利用されています。その理由は、楕円曲線暗号の逆算の壁を破るアルゴリズムがいまだに発見されていないからです。ビットコインの送金システムは公開鍵から秘密鍵を割り出せないことに価値があります。もしこれが可能だとすれば、世界中のセキュリティシステムが破られるということを意味します。

他言無用の秘密鍵

秘密鍵はアドレスからビットコインを送るときに使う電子署名の役割を担うため、大切に保管しなければなりません。ビットコインの暗号技術はどれも優れたものですが、秘密鍵さえあれば同じ技術を使って暗号鍵を割り出し、ビットコインアドレスにたどり着くことは容易です。秘密鍵を外部に漏らしてしまうということは、自分の財布を見知らぬ人に手渡しているようなものです。このため秘密鍵は完璧に暗記するか紙に写し、金庫などにしまうなどの厳重な管理が必要です。

また、秘密鍵の文字列をすべて暗記してしまえば盗まれることはありません。秘密鍵

ランダムな文字列であるため、正確に覚えるのは現実的に困難です。取引所などにビットコインを預けている場合は、その取引所が秘密鍵を管理しているため、自分で秘密鍵を管理する必要はありません。しかし、その取引所に何らかのトラブルなどが発生するリスクを考えると、極力自身で秘密鍵を管理した方が安全といえます。

おわりに

ビットコインでは40年前から使われ続けている信頼性の高い暗号技術が使われています。このセキュリティの高さから、2009年以来大きなトラブルもなく正常に使われています。SHA256をつかったハッシュ関数や、公開鍵暗号のための楕円曲線暗号以外にもいくつかの暗号技術が使われています。これらは、数学やコンピューター・サイエンスを駆使し開発された高度な技術です。