
9月5日、Odailyが主催し、36Krグループが戦略的に共催したPODカンファレンスが北京で開催された。 Chuangyu のソリューション部門責任者である Zhou Qipeng 氏が、カンファレンスのセキュリティ フォーラムで「スマート コントラクトのセキュリティの現状と将来」と題した講演に招待されたことを知りました。
周啓鵬氏は共有の中で、スマートコントラクトの生成と適用、セキュリティインシデント、セキュリティリスク分析を体系的に紹介し、スマートコントラクトの大規模な社会適用におけるスマートコントラクトのセキュリティに対処する戦略を提案した。
周啓鵬氏は、将来のスマートコントラクトの社会応用には主に3つの困難があると述べ、1つ目は「ブロックチェーン+」の波の到来により、関係する業界がますます広範囲になること、2つ目はスマートコントラクトに必要な契約の複雑さであると述べた。 3 番目はスマート コントラクトの将来であり、開発者に加えて開発者以外の人も作成できるため、スマート コントラクトのセキュリティに大きな課題がもたらされるでしょう。
この点で、Chuangyu「404」セキュリティ研究所が一連のスマートコントラクト検証システム「Haotian Tower」を開発したことを私は知っています。このシステムは、パブリック チェーン、アライアンス チェーン、その他のチームと緊密に連携して、アプリケーション層でセキュリティ保護機能を提供し、スマート コントラクトの数と論理的複雑さが増加するアプリケーション シナリオをサポートします。
以下はスピーチの全文です、お楽しみください。
今日の私の講演は4つのパートに分かれており、最初のパートでは、私たちが考えるきっかけとなったスマートコントラクトで発生したセキュリティインシデントについて、なぜスマートコントラクトのセキュリティについて議論しなければならないのかについてお話します。 2 番目のパートでは、スマート コントラクトのセキュリティ リスクを簡単にまとめ、この問題について全員に説明します。 3 番目の部分は、ブロックチェーン + アプリケーションの場合のスマート コントラクトのセキュリティについてです。最後は将来的にスマートコントラクトをどうするかということで、私たちも独自のアイデアや提案を出しました。
1 つ目は、スマート コントラクトのセキュリティの現状を確認することです。
その前に、名詞であるスマートコントラクトについて説明したいと思います。スマート コントラクトは、ブロックチェーンの中核テクノロジーの 1 つです。これがスマート コントラクトと呼ばれる理由は、スマート コントラクトがブロックチェーン内で自動的に実行できるプログラム コードの一部であり、ブロックチェーンのトップレベル アーキテクチャに埋め込まれているためです。したがって、ブロックチェーン技術を現在誰もが使用しているスマートフォンのオペレーティングシステムと比較するか、ブロックチェーンの基盤技術をネットワーク分散オペレーティングシステムとみなすことができる場合、スマートコントラクトは実行されるプログラムであると理解することができます。このネットワーク分散オペレーティング システムでは。したがって、スマートコントラクトは、情報化された方法で契約を普及、検証、実行するための契約です。
スマートコントラクトはブロックチェーンの分散型の性質に基づいています、第三者を介さずに信頼できる取引を可能にし、これらの取引は追跡可能かつ不可逆的ですが、これらの要因がスマートコントラクト技術の開発を促進します。スマート コントラクトの最終的な目的は、元の紙の契約書または契約テキストよりも優れたセキュリティ ソリューションを提供すると同時に、契約違反とそれに伴う紛争を軽減し、取引の効率を大幅に向上させることです。
歴史を遡りたい場合は、この概念は 1994 年に科学者のニック・サボによって提案されました。当時、インターネットはまだ初期段階にあり、スマート コントラクトのアイデアが提案されただけでした。 2008 年にブロックチェーン バージョン 1.0 が誕生し、自然で信頼できる環境を提供しましたが、この環境にはいくつかの点が欠けており、サードパーティが実行および呼び出すことができるこれ以上のインターフェイスを提供できません。そのため、ブロックチェーン 1.0 はいくつかの簡単な機能のみをサポートしていると言えます。 2014 年までに、ブロックチェーン バージョン 2.0 がリリースされました。この時点では、ブロックチェーン 1.0 の信頼できる環境属性を備えながら、チューリング完全性のサポートを開始し、開発者が呼び出して実行するためのインターフェイスを設計し、シナリオ解決の可能性を提供しました。
次に、スマート コントラクトが実際に実行された後に生成されたペアを確認できます。歴史的プロセス全体に比較的大きな影響を与えるセキュリティ インシデント, これは2016年に起こったイーサリアムのDAOイベントです。
2016 年 6 月 15 日、攻撃契約が作成されました。 6月17日に攻撃が始まり、ヴィタリック・ブテリン氏は攻撃について知った直後に中国コミュニティに通報した。 DAOの保護者らは、コミュニティがスパムトランザクションを送信してイーサリアムネットワークをブロックし、DAO資産の転送を遅らせることを提案した。その後、Vitalik は公式ブログで [緊急アップデート: DAO の脆弱性] の発表を発表しました。攻撃の詳細を説明し、ソフト フォーク ソリューションを提案しました。ロールバックはありません。トランザクションやブロックは取り消されません。ソフト フォークは、DAO および子 DAO に関連するすべてのトランザクションをブロック高さ 1760000 以降の無効なトランザクションと見なすため、攻撃者が 27 日後に盗まれた資産を引き出すことを防ぎます。この後、アセットを取得するためのハードフォークが発生します。
契約自体がどのように攻撃されるかを見てみましょう。まず、左側が引き出し関数が書かれたDAOスマートコントラクトのコードスニペット、右側がハッカー攻撃コントラクトのコードスニペットで、攻撃コントラクトが実行されると、その引き出し関数が記述されます。 DAO スマート コントラクトは外部から直接呼び出すことができ、継続的な再帰呼び出しがレイヤーごとに実行されるため、ハッカーは攻撃コントラクトを利用して、コントラクトの外部呼び出しを通じて元のコントラクトの多くのデジタル資産を転送し、DAO インシデントを引き起こすことができます。 。ハードフォークが発生したため、最大の影響はイーサリアムのパブリックチェーンにあります。
次にいくつかを分析しますスマートコントラクトのセキュリティリスク。
スマートコントラクトコードの特徴を4つにまとめてご紹介します。
1 つ目はアカウントの設計であり、スマート コントラクトは 2 種類のアカウントを設計しており、1 つは公開/秘密キー システムによって制御される外部アカウント、もう 1 つはコントラクト アカウントと呼ばれ、コード自体。
2 つ目は、ブロックチェーン 2.0 にはガスと呼ばれるものがあるということです。契約コードが複雑になればなるほど、契約の実行中により多くのガスを費やす必要があります。これは問題を引き起こします. 呼び出し元によって提供されたガスが不十分な場合, コントラクト内で実行されたコードはロールバックされます. コントラクトの呼び出し元は独自のガス価格を設計することもでき, マイナーはより高いガス価格のトランザクションを優先しますガス価格が比較的低めに設計されている場合や、高すぎる設計の場合などは無理があります。
次は関数です。これにはいくつかの関数が含まれます。最初の関数はフォールバック関数です (編集者注: スマート コントラクトを呼び出すとき、指定された関数が見つからない場合、または関数がまったく指定されていない場合は、フォールバック関数が呼び出されます) )、同時に資金を受け取るためのtransfer、send、call.valueなどの機能を設計し、契約を結ぶためのselfdestructなどの機能もあります。
最後は関数呼び出しで、従来の呼び出し方法と似ています。
次に、スマートコントラクト言語の特徴を見てみましょう。
この言語に関係する関数のデフォルトの可視性はパブリックです。コントラクトが記述されている限り、設計権限を持たないユーザーに対して関数はパブリックになります。
2 番目の方法では、多くの数値計算が必要になります。
3 つ目は、require、assert、revert という 3 つの例外処理メソッドを設計することです。通常、require は入力変数と連携状態変数が条件を満たしているかどうかを確認する関数の前に記述され、条件が満たされた場合にのみ実行されます。 Assertは関数の内部エラーをチェックするために開発者の観点から関数の最後に書かれた関数で、エラーが発生した場合は強制停止させます。 revert 関数はさらに特殊で、無効なコードに遭遇すると、以前の状態をすべてロールバックします。これら 3 つの機能にはもう 1 つの違いがあります。revert は戻ることができ、契約が実行されなかった場合、ガスを支払う必要はありません。
前述したように、契約自体には外部アカウントと契約アカウントの区別があるため、スマート コントラクト リスクの最初の最も一般的な問題は、アクセス制御の問題です。
特定のユーザーのみがこのような状況を呼び出すことができるようにアクセス制御機能を設定する必要があります。私は一部のマイニング機能を呼び出すことができる契約ユーザーですが、コード プロセスでは、ハッカーが悪意のある契約を作成したり、攻撃契約を作成したりすることで自分の権限を向上させ、誰もが契約所有者になれることがわかります。契約内容機能や契約アカウント機能は後々様々な問題を引き起こします。
Owner コンストラクターでのエラーの例を次に示します。
コンストラクターはコントラクトがデプロイされるときにのみ呼び出され、チェーン自体にはリンクされません。通常の関数は任意に呼び出すことができ、コードもブロックチェーン上に記述されます。データであろうと契約であろうと、誰もが状況を理解する必要があります。チェーン上に置かれると、それらはすべて表示されることが許可されるため、通常の関数がチェーン上に書かれた後は、どのチームや悪意のあるハッカーでも参照および調査できます。または白い帽子。
簡単なコードを組み合わせてみましょう。これがコンストラクター Owner です。次の関数で定義された関数では、Owner 関数の大文字と小文字が変更されていることがわかります。大文字の間違いにより、このような構造が発生します。関数は通常の公的な行事。
次にスマートコントラクトについて考えていることを整理しましたセキュリティリスクが比較的大きい理由は現在 4 つあります。
まず1つ目は、スマートコントラクトはブロックチェーン全体のアーキテクチャの中の中間プロトコル層の最上位層に属しており、その上にいわゆる分散アプリケーションがあるため、出現する位置は上位に位置します。 Windows オペレーティング システムをベースにした以前のアプリケーションによると、問題が発生する可能性は比較的高くなります。
2つ目は、言語の開発期間が非常に短く、言語自体が完璧ではないということです。今のところ、この言語バージョンは0.4.24程度ですが、一般的に公開できる開発言語バージョンはV1.0やV1.1などのバージョンばかりなので、バージョン自体の開発に時間がかかります。
3つ目は国内プロジェクト側の問題であり、現状の経験があまり十分ではなく、言語自体の開発期間も非常に短く、正式リリースも含めてSolidity言語をベースとしたサンプルやデモ用の標準ドキュメントが比較的少ない。経験が浅く、言語機能に精通していないため、従来のインターネット開発ソフトウェアを使用してブロックチェーンを開発することになりますが、セキュリティの経験がないと問題が発生します。
最後に、現時点ではスマートコントラクトのコードレビューに完璧な標準は存在せず、もしそのような標準がなければ、まだ誰もが理解していないことが多く、さらに奇妙な問題が発生することになります。
次に、オープンソースプロジェクトDAPSの統計と、発表された分散アプリケーションのセキュリティ問題を示します。再帰呼び出しの脆弱性、アクセス制御、整数オーバーフロー、未チェックの基になる呼び出し、ランダム エラーなど 10 のカテゴリがあります。
最後の理由は、スマート コントラクト自体もトップレベルのアプリケーションであり、それ自体のセキュリティ問題を含めて未知の領域がまだ多く、継続的に開発を続けるには、より多くのプロジェクト パーティ、より多くのホワイト ハット、より多くのセキュリティ ベンダーが協力する必要があるということです。より堅牢で、よりソーシャル アプリケーションに対応する上位層アプリケーションもあります。
次に、スマートコントラクトの将来の適用シナリオについて大きな推測または予想をしたいと思います。まず第一に、ブロックチェーンであろうとスマートコントラクトであろうと、私たちのソーシャルアプリケーションと組み合わされて、それらは実際に私たちの生活のいくつかのものと統合されています。
まず第一に、最初の金融属性は、以前の香港のアント・フィナンシャルのニュースと同様に、保険、有価証券、株式登録などの独自の金融アプリケーションを含む国境を越えた送金を行うためにブロックチェーン技術を使用していますが、これらは現在徐々に普及しつつあります。形状をアップします。第 2 のモノのインターネット アプリケーション、現在はブロックチェーンに基づくモノのインターネットとレンタカー アプリケーションが徐々に登場しています。 3番目のサプライチェーンは、Baiduが午前中に導入したとき、Baidu Encyclopediaの文書編集とトレーサビリティも着地工事中です。公共サービス分野を含むエネルギー分野におけるピア・ツー・ピアの利便性共有の分野は、文化、教育、財産権、医療などの分野でも徐々に現れてきています。
以下にいくつかの写真を示し、まず従来の送金とブロックチェーン送金の違いを紹介します。従来の送金は、国内送金は問題なく、スピードも速いですが、海外送金となると非常に効率が悪く、仲介銀行や清算ネットワークという一元的な送金機関としての課題があります。信頼の問題を解決すると、効率の低下につながります。
このシナリオをブロックチェーン上に置き、スマートコントラクトで実装すると、チェーン自体の分散型信頼メカニズムを通じて、資産の移転がスマートコントラクトで実現され、資産を含むいつでも資産からの決済が可能になります。アント・フィナンシャルが初めて送金を行ったとき、フィリピンから香港への送金には数十秒ほどかかりました。
2番目の応用例は伝統的なサプライチェーン金融で、以前に暴露されたワクチン事件のように、一部の国内機関がブロックチェーン技術を大胆に利用して商品の供給源を追跡しようとしているのを我々は見てきました。供給元のワクチンメーカーをブロックチェーン技術で管理することはできませんが、ワクチン全体がコールドチェーンで輸送され、各監視所や各病院のデータをアップロードすることで、途中の一部の個人による悪意のある行為を防ぐことができ、その結果、送信中のデータ損失、損失と改ざん。
3つ目は伝統的な物流に関するものです。伝統的な物流には多くの問題点と相互不信があることがわかりました。私が以前タオバオを利用していたとき、最大の問題は買い手が先に支払うか、売り手が先に配送するかでした。その後、Alipayが3つ目の問題を解決するように見えました。 -党の信頼の問題 家を買って、そのお金を中間プラットフォームに渡します。オンラインショッピングと支払いシナリオを組み合わせることができるブロックチェーンがあれば、相互不信の問題は解決され、購入者は商品を受け取った瞬間にチェーン上に注文情報を送信できます。買い手のアカウントにあるお金は、スマートコントラクトを通じて売り手のアカウントに直接送金されるため、注文改ざんのリスクや個人情報が漏洩する宅配便情報に誰もが遭遇する現在を含め、隠されたデータの正体情報が含まれます。
ワクチン、病院、医療システムについては、各製薬工場の医薬品情報をチェーンにアップロードし、薬局が販売する錠剤をチェーン上で確認することができ、患者は医師と連携することもでき、アプリを使用して情報を知ることもできます。過去の投薬情報や受診した病院などの健康情報がすべてわかります。
前に大胆な妄想をしたので見てみましょう将来のスマートコントラクトはどうなるのか。
最初のものはブロックチェーン + アプリケーションであり、将来的には幅広い業界が関与する可能性があります。百度のブロックチェーン プラットフォームは今朝、いくつかの機能を導入しました。最初のものは著作権と組み合わされています。私たちの商用写真の多くはチェーンにアップロードされます。将来的には、郵便サービス、ゲームなどを含むデジタル音楽著作権やデジタル映画著作権が存在する可能性があり、これらは私たちの生活にますます深く組み込まれ、より多くの産業が関与します。
2つ目は、産業の数が増えるにつれて、各産業が独自の特性を持っているため、産業アプリケーションの複雑さがますます高くなっており、現在、スマートコントラクトのコードは300行から500行に達しています。 , 契約書には数千行、数万行のコードが含まれる場合があり、コードのロジックが複雑になればなるほど、論理的な抜け穴やセキュリティ上の脅威が確実に発生します。
最後のシナリオは、開発者の数はまだ比較的少ないですが、今後ますます多くの開発者が成熟し、将来的には開発者だけでなく一般の人々にも多くのスマートコントラクトアプリケーションが提供されることになります。私たちの従業員は、現在 APP を使用しているのと同じように、データ、数量、または価格を入力するだけで、自発的にスマート コントラクトを生成できます。後者は、実際には、スマート コントラクトと独自のプロジェクト用にパブリック チェーンによって設定された標準であるため、ますます多くの人々。そのため、現在の使用方法では現実的ではない問題がどんどん発生しています。
Chuangyu 404 実験室も以前の導入と結合していることがわかっています。将来的には、より広範囲で複雑なアプリケーションが登場し、より多くのスマート コントラクト シナリオが存在すると予想されます。私たちはスマート コントラクト スマート検証を設計、開発しました。手動監査の場合、自動化とインテリジェンス、AI による多くのパブリック チェーン プロジェクト関係者との深い統合、チェーン全体によって生成されたスマート コントラクト標準、および将来生成されるスマートコントラクトで使用されるアプリケーションは、スマートコントラクトをより健全かつ強力にし、出現するセキュリティの抜け穴を減らし、これらのスマートコントラクトが私たちの生活に利便性をもたらし、経済的損失を減らすことができます。
後の 2 つは現在の内部バージョンのスクリーンショットです. 私たちは名前を Haotian Tower と定義しています. このような製品またはそのようなシステムを通じて、より多くのスマート コントラクト開発者とユーザーに安全なサービスと保証を提供できます。
今日の紹介はひとまずここまでとさせていただきますが、今後この技術に興味のある学生さんやプロジェクト関係者の方が出てくると幸いですので、興味のある方はぜひコミュニケーションをとっていただければと思います。