バックエンド向けウォレットシステム設計の評価を行うオープン標準は存在するか?

お知らせ
Table of Contents

はじめに

システム構築をする上では、セキュリティやベストプラクティスに従った安全な設計が求められます。システムの中で共通化されたパターンが見いだせる部分については、公開された基準(オープン標準1)となっているものが存在します。

なおここで言う基準とは、システム全体が厳格に従うべき標準ではなく、部分的にでも従うことを推奨する勧告も含みます。

例えば、コンピュータを使ったシステム全般において満たすべきセキュリティガイドラインがOWASPから公開されています。日本語訳もあります2

もっと狭い領域で言えば、クレジットカードを取り扱う上で満たすべき標準的な作法については PCI DSS3という標準が存在します。

これらは、システム設計をする上で、その領域に詳しくない人が初めて設計する際にも役立ちますし、経験者であってもベストプラクティスにそった実装が行われているのかを確認・参照するためにも役立ちます。

様々なシステムがバックエンドで暗号通貨のウォレットを使っていますが、暗号通貨独自のベストプラクティスが存在し、それらは既存の一般的なセキュリティ評価の枠組みには入らないものが多いです。この記事ではそういったベストプラクティスを集めたオープン標準を紹介します。

暗号通貨のウォレットや決済システム等を設計するときに、チェックすべき項目として目を通すことで、先人の失敗から学ぶことができます。

暗号通貨システム設計のオープン標準にはどのようなものがあるか

結論から言えば、バックエンド・フロントエンドをすべて含めて複数チェーンに対応した暗号通貨関連のシステム設計をする上で参考にできるオープン標準は存在しないのが現状です。

具体的には、手数料過払いとか、トランザクションの手数料が足りず滞留したときにより高い手数料のトランザクションで入れ替える手法(replace by fee)などについて言及している文書は存在しません。

しかし、部分的にはそういったオープン標準を作る試みがあります。それらを紹介します。

フロントエンドに限定したウォレット設計のオープン標準

決済システム、両替システムなどを含めれば、本来ウォレットを扱うのはフロントエンドだけではないのですが、ユーザーが目にしてセキュリティ評価を行うのは、秘密鍵をユーザー自身が管理するウォレットとなることが多いです。

そこで、フロントエンドのウォレットのセキュリティを客観的に評価するため、安全上満たすべき基準をまとめたオープン標準が存在します。例えば Safe Wallet Special Interest Group (SIG) 4や Wallet Security Verification Standard (WSVS)5などが該当します。

また、趣旨は異なりますが67などのように、ブラウザ内でウォレットが満たすべき仕様を複数チェーン向けに定義しているインターフェイス仕様も存在します。ビットコイン限定で言えばウォレットのデザインガイドも存在します8

スマートコントラクト設計に限定したセキュリティのオープン標準

EVMのスマートコントラクト設計に限定すれば、910など、比較的網羅された標準があります。

特定通貨のシステム設計に限定したセキュリティのオープン標準

ビットコイン限定であり、セキュリティ基準という形で定められているわけではないものの、支払いシステム設計11やウォレット12について標準的な実装方針を定めた開発者向けドキュメントは存在します。これらのソースは公開13されていますが長いこと更新されていないようです。

詳細の自己評価が難しい標準

CCSS14(CryptoCurrency Security Standard)は認証を取得する際の監査項目として使うことが前提であり、実際に技術者が知りたい or 見落としがちな細かい設計まではカバーしてくれていないようです。認証ビジネスという側面が強いように思えます。このスタンダードを元にして有償で監査を行う人からしたら十分かもしれませんが、自己評価をするには不十分だと言えます。
また、CCSSは基準は公開されているものの、git/wikiなどを通じて過去の差分を管理されているものではないため、オープン標準と言えるかどうかは怪しいです。

攻撃者を前提としたセキュリティフレームワーク

AADAPT15は、暗号通貨を扱うシステムに対する攻撃パターンを分類した文書であり、セキュリティチェック項目として使うことはできます。ただ、システム設計に関する勧告ではなく、単に「このような攻撃に気をつけましょう」というチェック項目なので、ベストプラクティスに則ったシステムを設計できるわけではありません。また、オープン標準ではありません。

なぜ複数チェーンのオープン標準を作るのが難しいのか

各チェーン、通貨によって仕様が異なる部分が多く、さらにそれらの仕様更新が頻発することから、一つの「ブロックチェーン決済システム」という観点でまとめてセキュリティ基準を維持していくことが難しいとも考えられます。
あとは、複数チェーンの世界観を実現することに対して、熱心に取り組むインセンティブを持つプレイヤーが少ないという問題もありそうです(需要はあると思うのですが)。

その他

書籍

オープン標準ではなく、しかもビットコイン限定ですが、例として16のようにウォレットセキュリティに章を割いて説明している書籍もあります。こういった書籍の問題点は、暗号通貨のコンセンサスや研究の進歩、あるいは新しく発見された脆弱性によって、ベストプラクティスが変化したときに追随できないことかと思います。

OWASP

OWASPは暗号通貨システム一般のセキュリティもオープン標準としてページだけ作っています17。ただ、現状は箱だけで、中身は何もないようです。今後に期待です。

感想

開発者の熱意だけでは現実世界でのシステムに採用するのは限界があるため、普及を促すためには、こういったオープン標準を拡充して採用のハードルを下げる試みが必要かと思います。ビットコインなど特定の通貨限定でスタンダードは存在しますが、複数チェーンにまたがったUSDT等ステーブルコイン市場が巨大なものである以上18、複数チェーンを見据えたシステム設計は避けられない認識です。

なお、この記事の参考文献はほぼChatGPTが集めてきたものです。本当に便利です。

参考文献


  1. オープン標準 https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E6%A8%99%E6%BA%96 

  2. OWASP アプリケーションセキュリティ検証標準 5.0 邦訳版 https://github.com/owasp-ja/asvs-ja?tab=readme-ov-file 

  3. PCI DSS v4.0 のSAQ(自己問診・日本語版)公開のお知らせ https://www.jcdsc.org/news/221129.php 

  4. Wallet Safety Guide https://github.com/openwallet-foundation/safe-wallet-sig/blob/main/docs/wallet-safety-guide.md 

  5. Wallet Security Verification Standard (WSVS) https://github.com/coinspect/wallet-security-verification-standard 

  6. Bitcoin Wallet Standard https://github.com/ExodusMovement/bitcoin-wallet-standard 

  7. The Wallet Standard is a set of interfaces and conventions designed to improve the user experience and developer experience of wallets and applications for any blockchain. https://github.com/wallet-standard/wallet-standard 

  8. Bitcoin Design https://bitcoin.design/projects/ 

  9. OWASP Smart Contract Security Verification Standard https://github.com/OWASP/www-project-smart-contract-security-verification-standard 

  10. OWASP スマートコントラクトセキュリティ検証標準 0.0.1 日本語版 https://github.com/coky-t/owasp-scsvs-ja 

  11. Payment Processing https://developer.bitcoin.org/devguide/payment_processing.html 

  12. Wallets https://developer.bitcoin.org/devguide/wallets.html 

  13. Bitcoin.org Developer Documentation https://github.com/bitcoin-dot-org/developer.bitcoin.org 

  14. CCSS v9.0 Table https://cryptoconsortium.org/ccss-table-v9/ 

  15. MITRE AADAPT https://aadapt.mitre.org/ 

  16. 堅牢なシステム開発/運用を実現するための ビットコイン[技術]入門 https://gihyo.jp/book/2018/978-4-7741-9909-2 

  17. OWASP BlockChain AppSec Standard https://github.com/OWASP/www-project-blockchain-appsec-standard 

  18. CoinGate Crypto Payments Report 2024: The Year of Stablecoins https://coingate.com/blog/post/crypto-payments-report-2024-year-of-stablecoins 

タイトルとURLをコピーしました