ブロックチェーンアプリケーションでセキュリティを構築する - パート1:ブロックチェーンの仕組みと秘密キーの使われ方
DigiKeyの北米担当編集者の提供
2019-10-08
編集者の注記:ブロックチェーン技術の詳細とトランザクション方式はどちらも複雑ですが、2つのパートで構成されるこのシリーズのパート1では、ブロックチェーンの構造とトランザクションプロセスの概要について説明します。この説明を通じて、ブロックチェーンのセキュリティの中核が秘密キーによる保護であることを理解する準備ができます。また、秘密キーを保護するためのターンキーソリューションについても紹介します。パート2では、ハードウェアベースのソリューションであるこのターンキーを使用して、ブロックチェーンをより簡単に保護する方法について説明します。
ブロックチェーン技術の開発を後押ししてきたのはセキュリティに関する懸念です。多くの開発者は、ブロックチェーンを暗号通貨に関係した技術として理解しています。しかし、ブロックチェーン技術を利用することで、広範な用途のセキュアインフラストラクチャを実現することもできるのです。ブロックチェーンは分散アーキテクチャであり、資産や関係者どうしによる資産の交換を保護するために秘密キーと暗号化方式が利用されています。一元化された権限は必要ありません。そのため、ブロックチェーンシステムの安全性を確保できるかどうかは、キーの保護と、堅牢なアルゴリズムでそれらのキーが適切に使用されるかどうかに大きく依存します。
すぐに利用できる適切なアルゴリズムは複数ありますが、実装には、セキュアソリューションの開発と、対象のアプリケーションに開発したソリューションを統合するための豊富な専門知識と経験が必要です。利用が進むブロックチェーンアプリケーションにおいてキーのセキュリティを確保するために、開発者の間では、もっと利用しやすいアプローチが必要とされています。
この記事では、まずブロックチェーンが関心を集めている理由と、この技術の仕組みについて簡単に説明したのち、Infineon Technologiesから提供されている、ブロックチェーンのセキュリティを対象としたハードウェアベースのソリューションについて紹介します。
ブロックチェーンの台頭
ブロックチェーン技術は社会のほぼあらゆる分野で注目を集めており、その用途は暗号通貨、IDの保護、サプライチェーン管理、投票など非常に広い範囲に及んでいます。分散型台帳技術とも呼ばれることも多いブロックチェーンでは分散技術、認証、レコード保護などが組み合わされており、トランザクションの実行に対する監視や仲介のための一元許可が必要とされないことから、関心を集めるようになっています。
金融機関が魅力を感じているのは、ブロックチェーンを導入することによって、現在採用されている技術や慣行の使用を続けた場合よりも支払いメカニズムを高速化し、コストを下げることができるという点です。金融工学以外では、ID確認やトレーサビリティの検証に関心を持っている企業が、レコード追跡を認証して実質的に改変不可能(絶対に変更されない)な状態にできるというブロックチェーンの能力に魅力を感じています。ブロックチェーンが改変不可能であるのは、このチェーンの構築方法に由来し、信頼性はトランザクションの実行方法に由来します。
基本的に、この技術の中核はトランザクションを伝送するブロックの構築で使用される秘密キーを保護するという能力に依存しています。この記事ではブロックチェーン技術の詳細とそのトランザクション方法については取り上げませんが、ブロックチェーンの構造とそのトランザクションプロセスを大まかに確認しておくことは、秘密キーの保護がブロックチェーンの安全性にとって重要である理由を理解するための情報として役立つでしょう。ただし、この記事で紹介するブロックチェーン技術は単純化され、概念を大まかに説明することを目的としているため、実際に使用されるブロックチェーンシステムでは、もっと高度な構造やプロトコルが利用されていることを念頭に置いておいてください。
変更不可能なチェーン
ブロックチェーンはその名前が示すとおり、一連のトランザクションを記録するのに使用されるブロックがチェーンのようにつながれているものです。Bitcoin(ビットコイン)やEthereum(イーサリウム)などのパブリックブロックチェーンで使用される構造に関する詳細とプロトコルは、個別の組織によってアクセスされるプライベートブロックチェーンとは大幅に異なっている場合があります。許可型ブロックチェーンと呼ばれる、一部がプライベートのブロックチェーンもあります。こうしたブロックチェーンにアクセスするのは事業体の協力関係にあるグループです。
ただし、それぞれの種類のブロックチェーンは、以下のようにいくつかの共通要素を基盤としています(図1)。
- 前のブロックのハッシュ値(Prev_Hash)。ブロックのチェーンのリンクとしての役割を果たす
- ツリーのルート(Tx_Root)によって表される、ハッシュツリーまたはマークルツリーと呼ばれるブロックに関連付けられたトランザクション。トランザクション(Txi)のハッシュ(Hashi)を構成する
- 有効なブロックの生成における役割を持つナンス
- ブロックが作成された時刻を記録するタイムスタンプ
図1:ビットコインのブロックチェーンを簡潔に表現した図では、各ブロックにタイムスタンプ、任意のナンス、ハッシュツリー(マークルツリー)、およびチェーン内における前のブロックのハッシュ値(Prev_Hash)があります。(画像提供:Wikimedia Commons/CC-BY-SA-3.0)
ブロックチェーンでPrev_Hash値を使用することにより、ブロックチェーン全体の整合性のためのフレームワークが実現します。ブロックn-1内にある過去のトランザクションの一部をハッカーが改変した場合、ハッカーがブロックn-1内のマークルツリーおよびTx_Rootを修正したとしても、ブロックnにあるハッシュは無効になります。以下に示すように、ブロックチェーンシステムでは分散化という特性によって、このようなハッシュの不一致に対応しています。
ブロックの作成規則において、ナンスはブロックチェーンを実質的に改変不可能にする役割を果たします。ビットコインおよびイーサリウムの暗号通貨などのパブリックブロックチェーンは、新しいブロックの独自のハッシュ値が人為的に制約されるように強制して、そのハッシュ値をチェーンの拡張に使用できるようにします。一連のPrev_Hashトランザクションが新規ブロックを構築するために収集されると、一般にはこれらの規則によって、新規に構築されたブロックの最終的なハッシュが何らかの指定された最大値を下回ることが要求されます。ブロックチェーンシステムで使用されるこのハッシュアルゴリズムは、同じ入力に対して同じ結果を生成しますが、入力における最小限の変更を行うことで、予測不可能な完全に新しい結果が返されます。
ナンスを利用することで、ブロックチェーンシステムとそのユーザーにとって非常に重要な要素に影響を与えることなくハッシュ値を変更できます。ブロックチェーンの規則に適合するハッシュを見つけ、次にナンスのさまざまな値を使用して総当たりでの確認を行います。ナンスのさまざまな値のシリーズを使用して処理を行い、毎回ブロックを再ハッシュすることにより、最終的には規則に適合するハッシュ値が見つかります。そのため、こうした処理を実施する人は、ブロックチェーンマイナー(採掘者)と呼ばれています。
受け入れ可能である最終的なナンスは、大規模なコンピュータ処理を必要とするマイニングプロセスを成功のうちに完了させたことを表すため、プルーフオブワークと呼ばれます。このプロセスとプルーフオブワークにも、ブロックチェーンシステムの分散型という特性が反映されています。受け入れ可能なナンスが見つかったら、マイナーは権限(および暗号通貨のマイニングに関連した報酬)を受け取り、新たに作成したブロックを使用してブロックチェーンを拡張します。
他のマイナーおよびブロックチェーンのユーザーは、成功したマイナーが見つけたブロックとナンスを使用してハッシュの計算処理を行うことで、新しいブロックの正当性を簡単に確認できます。
ブロックチェーンの分散型アーキテクチャでは、ブロックチェーンの分散型ネットワーク内の各ノードが、マイニング中に適用されたものと同じ一連の規則に対してすべてのブロックおよびトランザクションを分析します。その結果、ノードは、構築でのエラー、またはハッシュが適合しないか単に誤っていることが原因で無効になっているすべてのブロックを無視することから、ブロックチェーンは自己修正することができます。暗号通貨やその他のブロックチェーンシステムでは、ブロックチェーンの分散化におけるこの合意形成の側面が全面的に活用され、このプロセスを転覆させようというハッカーの試みをさらに困難にすることを目的に、追加の仕組みが導入されています。
膨大な計算処理を必要とするプルーフオブワークの規則と、合意に基づくブロックの検証プロセスの組み合わせは、ブロックチェーン内の過去のトランザクションを改変しようとするハッカーにとって、克服が困難な障害となっています。改変されたブロックからチェーンの再構築を始めようとするハッカーは、何らかの手段でプルーフオブワークをマイナーのコミュニティよりも高速に完了しなければなりません。この過程だけでも、ハッカーは、パーソナルコンピュータ上のグラフィック処理ユニットの使用から、フィールドプログラム可能なゲートアレイへ、さらに専門アプリケーション専用の回路へと移行しているリソース処理のいわば兵器開発競争に自分が巻き込まれていることを自覚するのです。コンピューティングリソースへの大規模な投資が障壁となっていることに加えて、付随する消費電力に関する要件だけでも大きな課題です。
こうした処理作業と電力の使用の問題をすべて解決したとしても、ハッカーは、合意に基づく仕組みによって、自分が改変したチェーンが手立てのないまま拒否される可能性に直面します。ブロックの実行結果が大幅に異なることはほとんどないことから、影響を受けるブロックチェーンシステムでは大々的な問題となる破壊的な状態が発生し、その結果、システムの完全に新しいバージョンを作成する非常にまれなハードフォークが必要になる可能性があります。
トラフィックの認証
ブロックチェーンの構造およびプロセスに関するこれまでの説明では、トランザクションがブロック内のマークルツリーを表しており、有効であることを前提にしていました。無効なトランザクションが何らかの手段によってブロックシステム内で存続する方法を見つけた場合、プルーフオブワークや分散されたブロックの検証などの試みが無駄になってしまいます。事実、ブロックチェーン技術の根本的な目的は、一連の有効なトランザクションを改変不可能なブロックチェーンに安全に組み込むことができるようにすることにあります。このような観点から、ブロックの生成は、ユーザーがトランザクションを要求した時点で開始されます。一元的な権限の所有者がトランザクションを承認する代わりに、ブロックチェーン技術では、要求者であるユーザーが所有している秘密キーを使用した暗号化方式が利用されます。
要求を開始するために、ユーザーは自分の秘密キーを使用して要求にデジタル署名し、その要求をその他の未確認トランザクションが格納されているプールへと送信します(図2)。一方、ブロックチェーンのマイナーは、一連の未確認トランザクションをこのプールから引き出し、未確認の各トランザクションに含まれている要求者の公開キーを使用して、各要求がそれぞれの秘密キーの所有者からのものであることを検証します。暗号通貨では、ブロックチェーン内で次のブロックチェーンを作成しようとしている他のマイナーに勝とうとするマイナーが、有効な署名があるトランザクション要求を素早くバイパスします。
図2:秘密/公開キーのペアは、要求者が署名し(左)、ブロックチェーンのマイナーが検証する(右)ブロックチェーントランザクションの基盤です。(画像提供:Wikimedia Commons/CC-BY-SA-3.0)
秘密キーを秘密のままに維持
ブロックチェーンの分散型アーキテクチャでは、一連のトランザクションに対する秘密キーを所有することにより、これらのトランザクションの所有権が付与されます。失われた資金を追跡したり、連邦規則に準拠して資金を取り戻したりする顧客サービス担当者は存在しません。そのため、大規模な暗号通貨の損失に関連する事件は、秘密キーの紛失が原因であることがよくあり、この傾向は今後も続くとアナリストは予測しています。
ブロックチェーン技術の基盤がトランザクションの署名と検証のための秘密キーであることから、こうした機密の保護が必須のニーズとして高まっています。ユーザーにとっては、保護が不十分なキーが、ブロックチェーンシステムへの参加に対する制御を失うきっかけになる可能性があります。
ハッカーはフィッシング攻撃やその他のよく知られたアプローチを利用して、不注意な状態でモバイルデバイスやコンピュータに保存されている暗号化されていない秘密キーへアクセスしようとしてきました。また、暗号化されたキーは単に脆弱なだけでない場合があります。キー生成ソフトウェアでは一般に、ユーザーが自分のデバイスでキーを暗号化するために使用するパスフレーズを入力できるようになっています。セキュリティ研究者は、こうした手法が、あらゆるパスワードベースのアプローチに共通する問題となっていると指摘しています。それは、実に多くのユーザーが、脆弱で、簡単に推測できるパスフレーズを使用してキーを暗号化しているということです。
たとえユーザーが秘密キーで必要とされる予防措置を講じた場合であっても、キー生成ソフトウェアの瑕疵が原因で、当該のキーがすでに侵害されている可能性があります。ソフトウェアベースのキージェネレータは乱数ジェネレータ(RNG)に依存していることがよくありますが、このジェネレータは泥棒が単純なスクリプトを使って予測できるパターンで動作します。さらに問題なのは、キー生成アルゴリズムでのコーディングのエラーによって、キー生成ソフトウェアの用途に詳しいあらゆる人に対して、キーが脆弱な状態のまま放置される可能性があることです。
堅牢なアルゴリズムを完璧に実装したとしても、保護が保証されるわけではありません。理想的に作成されたコードを実行しているシステムが、ハッカーが完全に把握しているソフトウェアも実行しているという現実的なリスクにユーザーが直面していることに変わりはないのです。キー生成ソフトウェアが実行されると、このソフトウェアのメモリとプロセッサのサイクルが侵害されたソフトウェアと共有されるため、ハッカーが機密のデータを見ることができるようになります。
信頼された実行環境(TEE)を提供するプロセッサを利用することにより、信頼されたコードと信頼されていないコードを別の実行空間で実行し、より高度な保護を実現することができます。このアプローチにより、アルゴリズムおよび秘密キーなどの機密データがオペレーティングシステム、ミドルウェア、または他のアプリケーションの脆弱性を利用した攻撃を受ける可能性を減らすことができます。
ハードウェアデバイスが安全な実行機能やキーの保護機能を使用して構築されているとしても、多くのデバイスが、より高度なマイクロアーキテクチャを使用した攻撃や物理的な攻撃に対しては脆弱なままです。マイクロアーキテクチャを使用した攻撃では、プロセッサの設計における弱みが利用されます。このような種類の攻撃は、マイクロプロセッサメモリのアクセスと指示の処理における脆弱性を悪用するSpectre(スペクター)およびMeltdown(メルトダウン)とともに、大きな注目を集めています。
物理的な攻撃には、電源の使用や電磁放射、タイミングの特性を監視するサイドチャネル攻撃から、保護された情報の暴露まで、さまざまなものがあります。その他には、ハッカーがレーザーの障害を誘発したり、内部信号を推定するために電源のグリッチを引き起こしたりするものもあります。さらに物理的な攻撃には、ハッカーが半導体デバイスを取り外したり、マイクロプローブを使用してデータや指示のシーケンスを読み取ろうとしたりするものがあります。
このように広範なセキュリティ脅威からの保護を実現するには、基本的なセキュリティ機能と、半導体デバイスの攻撃に使用される、さまざまなマイクロアーキテクチャを使用する手法や物理的な手法に対するさらに徹底した保護とを組み合わせたセキュリティコントローラが必要です。このような種類のセキュリティコントローラを中心に構築されたInfineon Blockchain Security 2Goスターターキット(BLOCKCHAINSTARTKITTOBO1)には、ブロックチェーンへの組み込みトランザクションの署名に使用される秘密キーを保護するという課題を対象に、すぐに利用できるソリューションが用意されています(図3)。
図3:Infineon Blockchain Security 2Goスマートカードは、トランザクションの署名などのブロックチェーンの保護を、貴重な秘密キーを公開することなくシンプルにします。(画像提供:Infineon)
安全な署名方式の構築に時間をかける代わりに、ブロックチェーンシステムインテグレータは、Blockchain Security 2GoスターターキットまたはInfineon Security 2GO 10カードパッケージ(BLOCKCHAIN10CARDSTOBO1)からスマートカードをユーザーに対して簡単に提供することができます。
まとめ
ブロックチェーン技術には、暗号化通貨以外にも広範な用途があります。しかし、この技術は複雑である上に、ユーザーによるトランザクション制御の損失と、ブロックチェーンシステムの侵害を防ぐための堅牢なセキュリティメカニズムを必要とする秘密キーに依存しています。
設計者は安全な署名方式の構築に時間を費やすことを選択する代わりに、ターンキーのブロックチェーンセキュリティソリューションが用意されたInfineon Blockchain Security 2Goスターターキットを利用することで、時間とリソースを節約できます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

