寄付窓口はこちら

ホワイトペーパーに書いていない LINE Token Economy の裏側 #linedevday

linedevday.linecorp.com

今年8月末に公開した LINE Token Economy と、その White Paper ですが、技術的なアーキテクチャや今後の予定などは詳しく紹介できていませんでした。LINE が Blockchain 技術を使ったサービス展開をなぜやるのか、またなぜ独自の Blockchain Platformを開発してリリースしたのか、そして現在取り組んでいる課題とそれをどのように解決していく予定なのかについてお話ししたいと思います。また LINE Token Economy の Block 生成基盤、SmartContract 実行基盤がどのようなアーキテクチャなのかについても具体的に説明したいと思います。

f:id:niwatako:20181121164011j:plain

f:id:niwatako:20181121164017j:plain

本日は8月末に発表したLINE Token Economyと、White Paperに書いていない裏側、なぜ、ブロックチェーン技術を使うようにしたのか、また、技術的なアーキテクチャについてご紹介したいと思います。

まず私達はサービス提供者として、ユーザーへの価値の還元が正しく提供できているのか疑問に思っていました。

サービスと株主とコンテンツを提供してくれるユーザーに対しては、サービス提供から得られる対価を還元しています。

ですがサービスを使ってくれる、または楽しんでくれる、盛り上げてくれるユーザーに対してはうまく還元できているのでしょうか。

CGMサービスは現金もしくはサイト内ポイントなどでユーザーに対価の還元をしています。どれもがユーザーの直接的な行動、コンテンツの提供に対する対価の還元になっています。

例えば買い物をしたらポイント、スタンプを作ってくれたら現金、LINEポイント付与などを行っています。

ユーザーに還元することでより良いコンテンツが生まれ成功する循環が実現して成功しているサービスもあります。

でもすべてのサービスがユーザーへの還元をやっていないのは何故でしょうか?

もちろん自分たちの報酬を大きくしたいということもあるでしょうが、システムを作ることが難しいのではないでしょうか。

また、複雑なシステムを作ったとしても、それに見合ったせいかをサービスが得られていないのではないでしょうか。

実際弊社もいくつかのサービスで現金やポイントを付与していますが、複雑な手続き、オフラインでの手紙や窓口申請をおこない、かつ一部手数料が発生するサービスを提供しています。

ただ、LINE Pointを見てみると、去年から今年まで1年の発行数は300億ポイント以上と、手間がかかっても人気があります。

皆さんの財布や、各種サイトにも、多くのポイントがあるのではないでしょうか。

それは、サービス提供者が対価を還元したいという証拠ではありますが、そのまま捨てられてしまっているものがあったり、ただユーザーの財布を圧迫していたり、オンラインサイトでも有効期限前にポイントが失効したりと、サービス提供者にとってもユーザーにとっても、望ましい結果とは言い難いと思います。

ユーザーへの公平な還元、つまり透明性と、安心できるサービスの提供、安全性。これら2つを改善すれば、より良いサービスを提供できるのではないかと考えるようになりました。

そこで注目したのが仮想通貨、ポイント、コンテンツ、事故証明など、透明性と安全性を持ってトークンを発行できるブロックチェーンでした。

とはいえちょっとまって、ブロックチェーンじゃなくても、ラインポイントで実現できのでは、と思う方もおられるかもしれません。

今までのポイントシステムでは透明性、サービスがユーザーに正しく対価を還元したか証明する手段がなかったり、安全性、ポイントの管理、紛失、失効管理などの実現が難しかったりします。

たとえば受け取ったポイントが先月5ポイント、今月1ポイントだと、ユーザーはなぜかと疑問を持つと思います。

ユーザーはサービスに対して、ポイントを発行するルールをおしえてほしいとなると思います。または勝手にルールが変わっても止めることは難しいと思います。

それに対してブロックチェーンはサービスからユーザーへの還元履歴、還元ルールが、オープンに閲覧できるようにして、多くの人とデータを共有することで誰からどこにポイントが映ったか把握できる。

履歴管理しているからこそ、改ざんしても過去とのデータの整合性が崩れるので、安全に管理できる。

だから、新たなサービスからユーザーへの還元にトークンを使いシンプルに実現して、更にオンラインとの価値が交換できれば、複雑な手続きなしに、ユーザーに対価が還元できるシステムができると考えるようになった。

サービスは手数料など気にせず還元ができて、ユーザーは対価を安全に得て、ファンになり、よりよいサービスができる好循環ができると考えるようになりました。

そこで開発して公開したのが、LINE Token Economyを実現するブロックチェーンプラットフォーム、LINK Chainです。

作りたいと思ってから調査を始めるともちろん簡単にできるわけではありませんでした。

すでに公開されたオープンなプラットフォームもあるので、それらを使ってLINK Chainを公開することも出来たかもしれません。ですが、既存プラットフォームはユーザーにとって、ウォレットを自分で用意したり鍵を管理したり、そもそもブロックチェーン上にあるサービスを見つけるのが難しかったりします。

つまりウォレットを紛失したら大変ですよね。誰にも盗まれず自分も忘れないことが必要。

ブロックチェーンを利用したサービスを開発する人にとっても、安全で堅牢で拡張性のあるようにするには、ブロックチェーンの技術を深く理解し、セキュリティ対策が必要。

実際、昨今サービスのバグを突いたハッキング被害も出てきている。

開発を始める前にこれら多くの時間をかけて準備をしていては、スピーディーに開発を開始できない。

そこでユーザーにも開発者にもアクセスしやすいブロックチェーンのプラットフォーム、LINK Chainを開発することにしました。

他のブロックチェーンプラットフォームを使うのではなく、自分たちで開発することで、スピーディーに開発することも可能に。

f:id:niwatako:20181121164821j:plain

突然Dappsと見慣れない言葉が出てきたと思われているかもしれません。

一般的にブロックチェーンプラットフォーム、機能を使うアプリケーションがDappsと呼ばれます。

Decentralized Applicationsということで、Dappsは非中央集権なサービスと言われています。

これまでのインターネットのサービスは、サービス提供者を中心とした信頼と、サービス自体による、中央集権的な管理で行われている。

f:id:niwatako:20181121164837j:plain

100万ポイント山分け、本当に山分けされている?と疑ったことがあると思います。

Dappsなら誰でも希望すれば透明性を持って確認できます。

f:id:niwatako:20181121164916j:plain

LINK ChainはLINK NetworkとLINK Frameworkの2階層構造になっています。

LINK NetworkとLINK FrameworkとDappsについてご説明します。

一番下にあったLINK Network、いわゆるブロックチェーン

ブロックチェーンはいちばん重要とも言えるコンセンサスアルゴリズムを用いてユーザーのリクエスト-トランザクションを承認したブロックを生成する重要な役割があります。もう一つスケーリングの問題を解決するための、スケーリングしやすいアーキテクチャになっている。ここを後ほど詳しく説明します。

ちなみに合意形成アルゴリズムとは、サービスからユーザーへの対価の証明に使っています。いかにサービス提供者以外の人にとって透明性を担保できるかに使っている。

ブロックチェーンの問題にスケーラビリティ問題があると話しましたが、通常のブロックチェーンでは、分散してデータを保存しているとはいえ、すべてのノードで全く同じデータを持つ構造です。現在のデータ生成速度ならまだ10年大丈夫と言われているが、成長スピードが上がったり、データ生成能力が増えたりしたら10年は短くなるのは明白です。

分散性から安全性を得ても、拡張性がないのは問題ですよね。

LINKは拡張性を備えています。

次にLINK Frameworkですが、サービスログイン時の自動ウォレット生成、プライベートキーの安全管理、ブロック情報やウォレットのバランス(残高)の確認などの開発者にとって必要な機能の提供を行っています。

LINK Chainの上でサービスを開発するのが簡単になるツールを提供しているのがFrameworkです。

f:id:niwatako:20181121165129j:plain

f:id:niwatako:20181121165150j:plain

現在LINK Chainのプラットフォーム上で提供されているアプリは弊社のもののみだが、これらのサービスではLINEのオープンプラットフォームを利用して、LINEと連携しつつ、LINKポイントが定義されたスマートコントラクトを先程のLINK Frameworkを通じて呼び出しをしています。

SmartContract、スマートな契約とは、たとえば、100万ポイントというValueと、山分けされたいユーザーを管理する変数と、何をしたらいくらポイントもらえるかというルールと、実際にポイントを付与する仕組みを作る。

SmartContractという小さなアプリケーションを開発して公開する。

LINKポイントは、ユーザーがいくら持っていて、付与、転送などの機能をテンプレート化しているのでサービスで使うのは容易です。

f:id:niwatako:20181121165311j:plain

ここまで話したことは、ユーザーにとって簡単にサービスを見つけられて、開発者が簡単にサービスを開発できるということです。

つまりサービス指向のブロックチェーンプラットフォームといえます。

ここからLINKチェーンの詳細を説明したいと思います。

f:id:niwatako:20181121165332j:plain

ちょっとしたCMですがWizballと4CASTをベータリリースしています。本日招待したチャットでサービス名称をメッセージで送るとサービスリンクが送られてくるので試してください。

f:id:niwatako:20181121165405j:plain

Wizballではセッションの質問も募集しています。参加してLINKポイントをあつめてください。

コアと周辺の仕組みを説明します。

f:id:niwatako:20181121165435j:plain

システムは、IMONという標準的OSSでモニタリングされている。

コア技術となっているOSSののkafkaを通じて透明性の証にもなるブロックエクスプローラーをLINK Scanとして提供しています。ブロックチェーンの情報を直接使わず、コアストレージになっているRedisやHBaseを使ってトランザクション情報などを提供しています。

LINK SCAN

https://scan.link.network/contracts

ちなみにアクセスすると、スマートコントラクト、Dappsごとのスマートコントラクトが確認できます。

今日、透明性と何度も連呼しているが、LINK SCANを見ると、コントラクト以外にもユーザーのアドレス、ブロック、トランザクションなど情報がすべて確認できます。

さてこちらに戻り、ここで最も重要なのは中央四角く囲まれたC-NodeとS-Nodeです。

C−Nodeは、コンセンサスノード

f:id:niwatako:20181121165608j:plain

ブロックチェーンの本業、ブロック生成、検証の役割を持つ、いわゆるブロックチェーンのノードです。

サービスからユーザへポイントを還元するリクエストをすべてトランザクションとして受け付けています。

トランザクションを承認すると、ブロックという構造で保存します。

C-Nodeのリーダーがブロックを生成して、その他のC-Nodeがブロックの検証を行っています。

C-NodeのまえにはL7ロードバランサがあり、トランザクションを受け付けています。基本C-nodeリーダーにすべて転送されて、ブロック生成される。

続いて、S-Node。SyncNodeの略で、一般のブロックチェーンではなかなか聞かないと思います。

f:id:niwatako:20181121165707j:plain

C-Nodeと違ってブロック生成や検証はしませんが、ブロック情報は、C-NodeとフルシンクされてS-Node自身に持っています。

LINK SCANで使うデータを読み上げる、リードオンリーのために存在しています。

生成と提供を分けることで負荷分散しています。SがCのロードバランサにフルシンクのリクエストをしてKeepAliveで結んで、フルシンクをほぼじさなく実現しています。

私達のコンセンサスアルゴリズムは承認速度やファイナライズ優先のPBFTです。

f:id:niwatako:20181121165802j:plain

PBFTのため、気づいている方もおられるかもしれませんが、すべてプライベートネットワークで構成されています。

今はすべてプライベートブロックチェーン

いまは私達のブロックチェーンプラットフォームの洗練を優先している。完成度を挙げてパブリックにしようと思っています。

PBFTの動作をLINKを例に説明すると、

C Nodeのリーダーにリクエストが来ると、C Nodeリーダーがプリペアフェーズになり仮のブロック生成をして、ブロック情報を他のC-Nodeにブロードキャストします。

Prepareでは、ほかのC-Nodeが検証を行い投票を行い、お互いに正しく検証しているか結果確認のための検証結果をブロードキャストしあいます。

コミットフェーズで、すべての検証結果を評価してブロックを生成して、C-Nodeリーダーが確定した情報をその他のC-Nodeにブロードキャストします。かつC-Nodeもお互いに確定した情報をブロードキャストし合います。

Replyはリーダーからの完了通知のみです。

f:id:niwatako:20181121165925j:plain

f:id:niwatako:20181121165948j:plain

リーダーは、一定量ブロックを作ったり、障害が起きたら、ラウンドロビンで他のリーダーが選ばれます。

私達のSmartContractは、LINKコントラクトと呼んでいますが、Pythonで開発出来ます。

f:id:niwatako:20181121170015j:plain

事前に検証してコントラクトをホワイトリスト化して安全に実行できるようにしています。コントラクトのアップデートも可能にしています。

f:id:niwatako:20181121170032j:plain

こちらは全体像の中で見にくく、C-Nodeから吹き出しで書いてあった部分です。

すべてのCノードはこちらの機能を搭載していて、主なインターフェースはGRPCベースのJSONRPCで通信できます。内部通信はメッセージキューとしてOSSのRabbitMQを利用しています。

そしてそれをLINK Coreを呼ばれる、ブロック生成基盤となるチャネルや、LINK Serviceと呼ばれるコントラクトの実行基盤となる通信チャネルと通信しています。

絵の通り、かなり細かく機能を分割実装しているのでフレキシブルに対応可能です。

チャンネルにはこちらの機能があります。

f:id:niwatako:20181121170134j:plain

どれもモジューラブルで取替可能になっており、たとえばコンセンサスアルゴリズムの変更も容易です。

ブロックマネージャーはトランザクションやブロックや内部データを各C-Nodeで保存管理する機能です。InternalStorageとしてはOSSのLevelDBを使っています。

LINK Contract Managerは、LINKポイントやスマートコントラクトで使う、デプロイ、アップデート、アクティベーションなどの機能を提供しています。

実は先程も今もアップデートの話をしていますが、スマートコントラクトのアップデートをコンセンサスアルゴリズムの上でやろうとすると一工夫が必要になります。

f:id:niwatako:20181121170233j:plain

まずWhitelistの登録トランザクションの発行から始まります。コミットフェーズのガバナンスマネージャーを通じて登録されます。

登録される情報の、ユーザーのアドレスと、実行可能なスマートコントラクトアドレスのペアによって、スマートコントラクトを実行できるユーザーを限定しています。

次に、スマートコントラクトのデプロイです

スマートコントラクトは小さなアプリケーションです。ZIP圧縮してトランザクションを発行しデプロイする必要があります。コンセンサスアルゴリズムの中で一旦、Prepareの段階で検証する必要があります。テンポラリ領域を容易して検証します。

この図の3移行、4,5が、スマートコントラクトをデプロイするトランザクションなら、テンポラリ領域を使って検証をする。

f:id:niwatako:20181121170316j:plain

Finalizationは、コミットフェーズで、トランザクション3を処理するとき、確認済み領域に移されます。このときトランザクションを処理するコントラクトの実行としては、

f:id:niwatako:20181121170327j:plain

4,5が確認済み領域で実行されます。

このようにテンポラリ領域と確認済み領域2つ用意してファイナライゼーションしないといけません。

スマートコントラクトのアップデートが行われると、テンポラリ領域と、すでにファイナライゼーションされている確認済み領域を使って検証が行われます。

f:id:niwatako:20181121170400j:plain

ここは矢印がクロスしていますが、検証フェーズなので、1と2は確認済み領域で、4と5はデプロイ領域で検証しています。

アップデートのファイナライゼーションは、デプロイの場合と同様ですが、1と2はファイナライゼーション前の確認済み領域でスマートコントラクトが実行され、

f:id:niwatako:20181121170433j:plain

4と5が、今アップデートされた確認済み領域でスマートコントラクトが実行されます。

ブロックチェーンのコンセンサスアルゴリズムの中で、スマートコントラクトのアップデートを実装しようとしたらこの様になりました。

ちょっと複雑でしたかね。

長くなりましたがNetworkの紹介でした。

LINK Frameworkを紹介します。各種UIとモジュールで構成されています。これらを使ってどのようにサービスを作れるか、そしてユーザーがサービスを利用できるのか、説明していきます。

f:id:niwatako:20181121170453j:plain

ちなみに、LINK Frameworkも、GRPCベースのJSONRPCでアクセス可能です。

まずはApp提供車となる管理者、adminの作成が必要です。こちらのようにLINKフレームワークを呼び出すとアドミンのウォレットが生成されます。

f:id:niwatako:20181121170523j:plain

次にDappの登録です。このとき、Dappのスマートコントラクトが登録されて、かつ、Mint-紙幣を鋳造する、LINKポイントが、Dappのスマートコントラクトの中に発行されます。

また、adminがDappのスマートコントラクトを実行できるようにするため、ホワイトリストへの登録も行われます。

f:id:niwatako:20181121170535j:plain

管理者一人以上で運営する場合に必要に応じてオペレータを登録できます。ウォレットとホワイトリスト登録が同時に行われます。

f:id:niwatako:20181121170555j:plain

これでリリースは完了です。

次にユーザーですが、Dapp利用時にいまはLINE ログインを使っています。

f:id:niwatako:20181121170615j:plain

そうするとDapp側がユーザーのウォレットを作成して管理してくれる。ユーザーは鍵管理不要。

LINEログインを使っているという話をしましたが、LINKフレームワークもモジューラブルな構成になっているため、他の認証も実装すれば可能となっています。

各種ウォレットやスマートコントラクトが用意されると、ポイント付与が可能になります。adminからユーザーにTransferが可能になります。

f:id:niwatako:20181121170650j:plain

ホワイトリストで実行権限が確認され、スマートコントラクトを通じてユーザーにLINKポイントが付与されます。

APIコールとしてはオペレーターの追加を含めてここまで5回。このようにLINK Frameworkを呼び出すだけでLINK Networkに透過的にアクセスできるということになります。

f:id:niwatako:20181121170717j:plain

スマートコントラクトやウォレットの情報は、LINK Network、つまりブロックチェーンに保存され、LINK Scanでスマートコントラクトやウォレットなどを誰でも確認できるようになっています。そのためにLINK Frameworkを用意している。

f:id:niwatako:20181121170754j:plain

つまりLINEのブロックチェーンプラットフォームはLINK Network、LINK Frameworkから出来た、LINEのサービス指向のブロックチェーンプラットフォームと言えます。

f:id:niwatako:20181121170802j:plain

ここまで発表してきたLINK Chainが9月に発表されたものです。

f:id:niwatako:20181121170805j:plain

今後はよりスケーラブルにするためのリニアネットワークへの移行や、LINK Frameworkを通じたDappの開発をパートナー企業や、誰でも開発できるプラットフォームに変更していいく予定です

リニアネットワークはこちらのように

f:id:niwatako:20181121170835j:plain

LINKチェーンをRootチェーンとLeafチェーンに分けて、それぞれが独立したLINK Networkのブロックチェーンで、かつ、お互いのブロックチェーン間でやり取りをできるようにする構想が、リニアネットワークと呼んでいるものです。

それぞれのLINK ChainにDappsが配置される予定となっています。

f:id:niwatako:20181121170851j:plain

また、パートナー企業や、開発者の皆様にも、ぜひLINK Chainに参加いただき、Dappsを開発して、サービスを提供してほしいと思っています。

その際、各種要望があると思うので、こちらのように構想を練っています。

LINK Frameworkを通じた簡単かつセキュアなDappの提供、LINK Networkへの直接アクセス、また、独自のスマートコントラクトによる機能的で柔軟なDappの提供、リーフチェーンとしてリニアネットワークに参加して、更に機能的で柔軟なDappの提供を予定しています。

また、皆さんに参加してもらうには、開発ツールキットや開発したDappをテストするためのテストネットの公開が必要だと認識していますし、LINK ChainのソースコードGithubで公開することも予定しています。

f:id:niwatako:20181121170947j:plain

最後に、パブリックブロックチェーンに関しては本日紹介できることはありませんが、私達は、パブリックブロックチェーンにしないといけないと思っています。それはまた、楽しみに待っていただけたらと思います。

f:id:niwatako:20181121171001j:plain

ユーザーとの距離を、パートナーとの距離を近づける。

f:id:niwatako:20181121171008j:plain

以上私の発表になります。ありがとうございました。

BITBOX: How to Secure Cryptocurrency Exchange #linedevday

linedevday.linecorp.com

f:id:niwatako:20181121131944j:plain

本日はセキュリティの話です。仮想通貨交換所BITBOXのセキュリティの話です。

セキュリティについて詳細にお話しようと考えた理由は皆様の交換所への信頼度が下がっていると感じるからです。

攻撃にあったり詐欺事件が多発しています。

お話して皆様の信頼を勝ち取りたいと思います。

台湾で有名なセキュリティのカンファレンスで発表します。

f:id:niwatako:20181121132116j:plain

私の責任範囲はセキュリティのアーキテクチャ設計やTrusted Computing。

ベスト・オブ・ザ・ベストの教育プログラムで教えている。韓国をハッキング攻撃から守る志のある方に提供している。

LINE、インタートラストセキュリティトラスト、台湾ヒットコンなどで公演してきました。

f:id:niwatako:20181121132247j:plain

LINE の仮想通貨交換所、フレンドリUI、堅牢なセキュリティ。日本と米国以外で提供しています。

ブロックチェーンは世界中の注目を集め攻撃者に価値の高いターゲットになっています。

f:id:niwatako:20181121132312j:plain

毎日多額のお金が交換されています。攻撃されてユーザーが損失を被る。

日本の最近の攻撃では日本において6億ドルの損害が出ています。こうした問題を回避するために、優れたセキュリティエンジニアやLINEハッカーで構成されて、最先端のセキュリティセンターが入っている。

BITBOXはユーザーの資産を守ります。テクノロジ、そしてそうで内面からもです。

どのように攻撃され道守るかのはなしをします。

f:id:niwatako:20181121132446j:plain

交換所の驚異と、私達のセキュリティ戦略。

これを通じて安心していただきたい。

交換所を標的にした攻撃は従来の攻撃と変わらない

f:id:niwatako:20181121132509j:plain

ゼロデイやワンデイをついてくる。フィッシング攻撃で社員の認証情報を取る。それからマルウェア

USBドライブなどから運ばれる。

ウォレットキーを見つけてコピーし、仮想通貨を他人のウォレットに送金し、取引データを改ざんする。

攻撃者が内部にいる場合もある。デベロッパやセキュリティエンジニア、インフラエンジニア、経営者の中にいるかも知れません。

インサイダーは機密を他者に贈り、他のハッカーと共謀して攻撃を仕掛けてくる。

多くの仮想通貨交換所は、いくつかの対策を講じて保護に取り組んでいる。

しかしアーキテクチャには限界がある

f:id:niwatako:20181121132652j:plain

侵入する方は1つ脆弱性を見つければいい。守る側は、すべての脆弱性を見つける必要がある。

複雑なほど、攻撃しやすく守るのが難しくなる。

完ぺきに近くするためにできることは

2つの戦略

f:id:niwatako:20181121132732j:plain

レイヤード、デフェンドインデプス

レイヤードセキュリティ

f:id:niwatako:20181121132747j:plain

すべての防御には不備があると考えて複数の対策を組み合わせお互いの不備を補い合う。

でもどこかのレイヤーに弱さがあれば、他のレイヤーで補う。でもすべての防御層に穴があればつながってしまい、安全でない状況になってしまうかもしれません。

f:id:niwatako:20181121132850j:plain

ディフェンド イン デプス はレイヤードセキュリティも1部。包括的なセキュリティ。

未知の脅威、災害復旧、インサイダー攻撃、ゼロデイ、コンプライアンスなどに対応する

f:id:niwatako:20181121132928j:plain

ディフェンスインデプス

レイヤードセキュリティには、物理セキュリティ、インフラ、アプリケーションサービスセキュリティ、暗号化、2要素認証など。特別には、ウォレットキーを保護すること。攻撃者が乗っ取る事があるかもしれない。それでもキーが守られます。

モニタリングは様々な監視を含みます。コンプライアンスマネロン対策異常検知など、

アシュアランスは外部監査によりユーザーの安全を守ること。場合によっては保険に寄って守ることも行っています。

各社は防御の層をセキュリティツールに寄って増やすことで安全が守れると思われがちですが、こうしたツールがお互いにコミュニケーション取れないのが問題です。

インテグレーションの不備はセキュリティチームが全て見渡せないことで問題になります。それを軽減するために個々のレイヤーのチェックを行っています。

f:id:niwatako:20181121133155j:plain

セキュリティを開発に組み込むことが必要、運用に組み込むことが必要。

セキュリティレビューをリリース直前に行う、そうすると問題が出る。問題が特定できてもリリースが送れることもあります。最悪脆弱性を発見できないことがあります。セキュリティは開発プロセスオペレーションすべてのパートに含まれています。

設計した際

f:id:niwatako:20181121133251j:plain

いくつかの基本的な原則に従いました。

完璧なセキュリティは存在しない。できるだけパーフェクトに近づける。

完璧なセキュリティを築こうと努力しました。

敵は内部にいるという前提で進めました。敵がアプリケーションサービスやAPIを則ってもユーザーアセットを守る。

内部の人はだれも信頼していない。経営者もです。重要なオペレーションは複数の当事者の監視下で行っている。

スクリプトコードは第三者にチェックされる。

最小権限の原則。すべてのロールが分離している。

こちらは私達のネットワークインフラセキュリティアーキテクチャ

f:id:niwatako:20181121133417j:plain

CDNを使っている。オリジナルサーバーロケーションを隠すという利点もある。

ネットワークレイヤーでDDoSアタックを吸収できる。

大抵の攻撃には数秒で対処できる。

複雑なDDoSは対DDoSルーターへリダイレクトする。

他にもいろいろなレイヤーがあります。ファイアウォールやIDS

それから内部ネットワークは完全に分離されています。Zaifなどはまず最初に内部ネットワークに攻撃を試みていました。

内部にアクセスできてもBITBOXネットワークにはアクセスできません。

様々なモニタリングシステムが可動しています。マルウェアスキャナ、インテグリティチェックツールなど。

シームに行われてリアルタイムに監視される。

f:id:niwatako:20181121133623j:plain

鍵を盗めなくする事が重要。

それぞれのコアが別々に分けられていて結合されている。

いずれのサーバーも権限を持った従業員だけがアクセスできる、トークンであってパスワードではない認証。

中間者攻撃を防ぐ

KMSも重要なサービス、暗号化を行っている。インターネットには接続されていません。

ウォレットコアだけが個々につながることが出来ます。

このシステム、KMSシステムへのアクセスもリアルタイムにモニタリングしています。誰も届かないようになっています。

ウォレットキーは生成して保管しています。HMS内です。HMS内ですべて承認されます。攻撃者は入れません。

攻撃者がAPIサーバーをコントロールしても暗号化処理はこの中で動いているので無理です。

マルチシグウォレットを使っています。第三者に預託しています。攻撃者は第三者の鍵もなければ資産を盗めません。

もう一つ重要なのは交換所はきちんとブラックマネーが流れてこない設計が必要、マネロンに使われないようにしないといけません。KYCとKYT

KYT: Known your transaction

顧客が合法かチェックする。制裁リストに含まれていなければ合法的な顧客。

さらに取引所内に預託された資金、引き出される資金もチェック、これでマネロン対策。これがKYT。リスクマネジメントシステムは追って説明します。

ウォレットセキュリティ、3つのウォレットを持っています。ウォーム、ホット、コールドです。

流れてくる預け入れのしさんはウォームウォレットに入ってきます。取引をコールド、ホットにしか贈れません

f:id:niwatako:20181121134035j:plain

引き出しはホットからのみ行われます。

大抵の資金はコールドウォレットに保管されています。インターネットアクセスも出来ません。物理的モニタリングもしています。アクセス権を持った人しか入れません。

最低限のお金だけがほっとウォレットに入っています。攻撃者がほっとウォレットを奪っても影響は少ない。

しかしそれも取られたくない。そこで複数段階の承認プロセス

f:id:niwatako:20181121134145j:plain

すべてのウォレットに対して相当額の金額を一定時間で贈れないように速度と上限を設けている

f:id:niwatako:20181121134211j:plain

ウォームでもホットでもマルチシグウォレットになっています。

一つの鍵しか利用できないタイプがある。これは一つキーを盗むと取引が行えてしまう。でもマルチシグは2つ以上の鍵が必要になる。いくつの署名が全体で存在し、いくつが取引成立に必要かを定義できる。

2/3で成立する。一つはバックアップで、パスフレーズで暗号化されている。KeyVoultに保管され地域分散されている。

ほかは普段のオペレーションに使う。1つはBITBOXが持っている。もう一つは第三者に預託している。

BITBOXの鍵はHMSに入っています。しかも、シャミアの秘密分散法などを使ってシャード化されています。さらに暗号パスフレーズで再暗号化されています。

暗号化アルゴリズムの実行化中でさえ鍵は完全な状態にならない。だれも鍵を知らない状態。複数の管理者が共謀しても、もともとの鍵を再生できません。ホワイトボックス暗号方式です。

ではここから

f:id:niwatako:20181121134532j:plain

我々のリスクマネジメントシステムについて

市場操作を検知します。すべての通貨の流れをモニタリングしています。入るもの、出ていくもの、内部でのトランザクションもモニタリングしています。

重要な問題、鍵が問題になるのはマネロンや市場操作です。

f:id:niwatako:20181121134623j:plain

外部のアドレスの評判をチェックしています。パブリックな台帳を見ることができる。すべての履歴をトラックできる。

要約するとブラックマーケットで使ったウォレット、悪意がある人が使っているものは、ウォレットの流れをチェックすることができる。内部ウォレットが引き出し、預託先がブラックマーケットと関わりがあるかチェックできる。

なにか関係性があった場合取引を拒否します。

これはBinanceの事例です。

f:id:niwatako:20181121134727j:plain

f:id:niwatako:20181121134744j:plain

f:id:niwatako:20181121134749j:plain

f:id:niwatako:20181121134755j:plain

SYSコインを価格操作した。APIキーが漏洩した。盗めたら彼らは攻撃を始めたわけです。Binanceによるとすぐ対応したということでした。

リスクマネジメントシステムが検知してこうしたオペレーションを不可能にした。

Binanceの例から怪しい取引のモニタリングが重要だということがわかります。

f:id:niwatako:20181121134846j:plain

これがリスクマネジメントシステムの一部になっています。

怪しい取引はすべての取引を分析しています。大量に短時間で行われた取引とか、複数取引なのにばらつきが小さい時、怪しいと判断します。

最近、怪しい事例がありました。デジタルトークンLINKをBITBOXを上場したが、ほかの通貨はICOをしていません。リワードシステムを使っています。このLINKトークンはLINEエコシステムですべてのBITBOXの10%相当をトークンとして提供しています。最近ユーザーの中でひじょうにおおくのLINKトークンを使っていたということがありました。こうしたウォッシュトレーディングを見つけるのは難しい。通常の取引かもしれない。

だれがウォッシュトレーディングをしているのか、解析し、彼らのリワードを取り消している。

f:id:niwatako:20181121135114j:plain まとめ

すべてのプロセスにセキュリティが関わっています。

予測予防反応、すべての脅威に対応できるように設計しています

鍵にアクセスできなくなっています、サーバーを則っても出来ない、HMS内部に鍵が保管されているから

取引はすべてモニタリングされていて、なにか起きれば直ちに対処する

複数の対処でインシデントが置きても守る。

資産は保険かけているものもある

BITBOXのセキュリティは最高レベルのエンジニアとハッカーが作りました。4ヶ月で作りましたが、20年以上の経験に基づいて作りました。20年以上、NaverやLINEサービスでセキュリティを培ってきました。

f:id:niwatako:20181121135308j:plain

来年に向けてWhitePaper用意しています。外部から評価をいただきたい。こうした評価をいただくことでユーザーからの信頼を獲得できると信じているからです。

それから、詳細をすべて1時間で説明するのは難しいからです。

マネロンのプロファイルを行っています。もっとブロックチェーンエコシステムをよくできる

他の交換所と共有したい

f:id:niwatako:20181121135409j:plain

我々への理解を深めていただけていれば幸いです。

【聞き起こしまとめ】NODE Tokyo 2018 #nodetokyo

NODE Tokyo 2018に参加しました。そのときのブログ記事まとめです。

nodetokyo.jp

Day1 (2018/11/19)

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

Day2 (2018/11/20)

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp

niwatako.hatenablog.jp