Submit Search
Upload
51% 攻撃の原理とシミュレーション
•
8 likes
•
1,861 views
Yuto Takei
Follow
2018/11/19 blockchain.tokyo #14 https://blockchain-tokyo.connpass.com/event/105918/
Read less
Read more
Software
Report
Share
Report
Share
1 of 35
Recommended
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
Yuta Imai
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
KeioOyama
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
Recommended
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
Yuta Imai
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
KeioOyama
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
Taiji INOUE
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
Tomohiro Nakashima
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
Google Cloud Platform - Japan
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
Kazuho Oku
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
NTT DATA Technology & Innovation
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
Kazuhiro Mitsuhashi
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
Blockchain innovation
Blockchain innovation
Yuto Takei
More Related Content
What's hot
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
Taiji INOUE
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
Tomohiro Nakashima
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
Google Cloud Platform - Japan
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
Kazuho Oku
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
NTT DATA Technology & Innovation
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
Kazuhiro Mitsuhashi
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
What's hot
(20)
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
分散システムについて語らせてくれ
分散システムについて語らせてくれ
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Similar to 51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
Blockchain innovation
Blockchain innovation
Yuto Takei
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
Yasunori Matsuoka
プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とは
Yuto Takei
Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方
Yuto Takei
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
INTAGEGROUP
いまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited について
Yuto Takei
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
wei-li
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
Kindai University
Blockchainベーシック
Blockchainベーシック
Kondo Hitoshi
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
Yuto Takei
プラットフォームとしてのブロックチェーン
プラットフォームとしてのブロックチェーン
Hiroshi Takahashi
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
KAYATO SAITO
電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00
Naoto Miyachi
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)
Seiyo Nakazawa
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
Yuto Takei
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入
Hiroshi Takahashi
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
blockchainexe
脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君
Teruaki Ashino
Similar to 51% 攻撃の原理とシミュレーション
(20)
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Blockchain innovation
Blockchain innovation
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とは
Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
いまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited について
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
Blockchainベーシック
Blockchainベーシック
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
プラットフォームとしてのブロックチェーン
プラットフォームとしてのブロックチェーン
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君
More from Yuto Takei
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
Yuto Takei
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
Yuto Takei
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
Yuto Takei
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
Yuto Takei
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
Yuto Takei
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
Yuto Takei
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
Yuto Takei
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
Yuto Takei
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
More from Yuto Takei
(20)
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
51% 攻撃の原理とシミュレーション
1.
51% 攻撃の原理とシミュレーション 竹井 悠人
(@yutopio_ja) ソフトウェア エンジニア 株式会社 bitFlyer 2018/11/19 blockchain.tokyo #14 https://blockchain-tokyo.connpass.com/event/105918/
2.
免責 このトークは、情報提供のみを目的として行われており、正確性・最新性についての保 障は一切ありません。内容は、会社の見解ではありません。この情報を元にして生じた 不利益について、当社およびスピーカは一切の責任を負いません。 bitFlyer 上での取引についての詳細は、当社カスタマ サポートへお問い合わせくださ い。
3.
自己紹介 竹井 悠人 Yuto Takei
C# 大好き一筋 17 年 / 筋トレ勢 いまさらポケモンにはまってます 大学生になりました 投げ銭いつでもウェルカム Software Engineer / CISO
4.
bitFlyer のブロックチェーン C# でスクラッチから設計した ブロックチェーンを研究・開発 |ω・`)
チラッ エンジニア募集してるってよ
5.
目次 1. ブロックチェーンと合意形成の関係 2. MinChain
の紹介 3. 51% 攻撃のデモ
6.
ブロックチェーンと合意形成の関係
7.
ブロックチェーンとは なにそれ美味しいの? ● 任意のデータの入れ物 (e.g.
トランザクション) を作って、そのダイジェストを何かし ら (e.g. ブロック) のハッシュ チェーンで繋いだデータ構造 何に向いているの? ● 透明性と完全性の要求が極めて高いケース ● 過去からのすべてのデータ (改訂や変更履歴など) を残したいケース
8.
ハッシュ ブロックチェーン概略図 Block 100002 Block 100001 前のブロック 000000000003ba27aa200b1c… (ブロック 100000 のダイジェスト) 日時 2010/12/29
12:06:44 トランザクション ID ● bb28a1a5b3a02e76… ● fbde5d03b027d2b9… ● 8131ffb0a2c945ec… ● … 前のブロック 00000000000080b66c911bd5… (ブロック 100001 のダイジェスト) 日時 2010/12/29 12:17:31 トランザクション ID ● ef1d870d24c85b89… ● f9fc751cb7dc3724… ● db60fb93d736894e… ● … 中身 参考: https://chainflyer.bitflyer.jp/v1/block/height/100001
9.
ブロックチェーンに求められるもの 非機能要件 ● 参加者が一定のルールに従って書き込むことができる ● 書き込まれたデータが、世界中のノードで読むことができる ●
正常な書き込み要求は必ずいつか処理される ● ルールに反するデータの書き込み要求は却下される ● ルールに従わない (正常な書き込みに応じない、不正な書き込みを受理する) ノー ドが一定数いても動作する 非機能要件のようだが、本質的には違うと考えられるもの ● 改竄されたら検知できること (上記の当然の帰結) ● データの履歴が残ること (副次的に生まれた機能)
10.
ブロックチェーンとは (再定義) ブロックチェーンとは 1. 前スライドの要件を満たすデータ構造であり、 2.
1. を運用するシステムであり、 3. 2. を実現する技術の総称 である。 ここから、ブロックチェーンは ● 分散システムの一種である (i.e. 複数のサブシステムが協調する) ● 分散データベースの一種である (i.e. データ同期する) といえる
11.
単純なブロックチェーンの設計 状 態 0 状 態 1 状 態 2 トランザクション 1 トランザクション 2 トランザクション
3 ブロックに 集約 参 加 者 間 で 合 意 形 成 …
12.
合意形成とは 目的は、分散システムの耐障害性確保のため、複数ノードに同一動作させること ステートマシン レプリケーション問題 (複数の状態遷移機械が 同一に動作することを保証するため、入力するアルファベット を同期させる)
に帰着可 ノード 1 命令 A ノード 2 命令 B 命令 A ノード 1 ノード 2 命令 B
13.
そもそも… ● ブロックチェーンが誕生するはるか昔から存在 (1980
年代) ● 分散ファイル システムなどで頻繁に利用 (有名なのは Spanner) 単純なやり方は、投票 合意形成とは ラーメン ノード A ノード D ノード C ノード B ラーメン ラーメン 次郎 ラーメン
14.
投票だと、合意形成したあとに票の水増しをされたら意味がなくなる Sybil 攻撃 ラーメン ノード A ノード
D ノード C ノード B ラーメン ラーメン 次郎 ラーメン ノード 次郎 ノード 次郎 ノード 次郎 次郎 次郎 ノード 次郎 次郎 ノード ノード ノード ノード ノード 次郎 次郎 次郎 次郎 次郎 次郎 次郎 次郎 次郎
15.
誰を (合意形成の) 参加者とするかの違いで次に分類できる ●
パブリック型 常に、不特定多数の人が、新たに参加したり、離脱したりできる ● それ以外 (プライベート型 / コンソーシアム型 etc.) 合意形成をはじめる段階で、参加者が特定されている とはいえ、パブリック ブロックチェーンを閉じたネットワークに構築したり、 ブロックチェーン外の認証機構をつけたりすることで、「プライベート ブロックチェーン」として運用することもしばしば ... 非機能要件のひとつ ● 参加者が一定のルールに従って書き込むことができる の参加者って誰? 参加者の定義
16.
合意形成に求める性質 ● 安全性 (Safety) ある合意があったら、健全な全ノードでその合意が有効で、唯一である ●
活性 (Liveness) 合意形成を行おうとする場合、いずれ合意形成が完了する 非機能要件のひとつ ● 参加者が一定のルールに従って書き込むことができる では、合意形成のルールに従わないノードがいた場合には?
17.
ビザンチン耐性とは? ビザンチン将軍問題は、東ローマ帝国(ビザンチン帝国)の首都コンスタンティノープルを攻略するオスマン帝国の将軍たちがそれぞ れ軍団を率いて、ひとつの都市(コンスタンティノープル)を包囲している状況で発生する。将軍たちは、都市攻撃計画について合意 したいと考えている。最も単純な形では、将軍たちは、攻撃するか撤退するかだけを合意決定する。一部の将軍たちは攻撃したいと 言うだろうし、他は撤退を望むかもしれない。重要な点は、将軍たちはひとつの結論で合意しなければならないということである。つ まり、一部の将軍だけで攻撃を仕掛けても敗北することは明らかで、全員一致で攻撃か撤退かを決めなければならないのである。ま た、将軍たちは、それぞれ離れた場所に各軍団を配置しており、メッセンジャーを相互に送ることで合意を目指す。 引用元: Wikipedia 「ビザンチン将軍問題」 分散システムで、一部ノードがプロトコルに従わない可能性を考慮し、システムとして安 全性かつ健全性を保った合意形成ができる状態
(ビザンチン耐性) とはいえ全ノード数の 1/3 以上が従わない場合は理論的に不可能
18.
ブロックチェーンの合意形成 基本的に、参加者の中に合意形成のプロトコルに反する挙動をする人を前提 (ビザンチン耐性をもつ合意形成アルゴリズムが必要) なぜか...? ● そもそも改竄防止のためのハッシュ チェーン自体が極めてコストの高いデータ構造 ●
それに見合うほどの信頼が必要な環境では、参加者間の合意も極めて厳格に行 われる必要がある
19.
だいたいこんな感じ… パブリック型 それ以外 (プライベートなど) 参加者 いつでも誰でも参加できる (事前に特定することができない
) 合意形成の参加者が 特定されている 安全性 ない (あとから覆る可能性がある ) ある (参加者間で合意は唯一 ) 代表的な アルゴリズム Proof of Work Paxos, Raft, PBFT, Proof of Authority
20.
ブロック内に Nonce と呼ばれる自由領域を用意し、ハッシュ値を調整できるようにした上で、ブロック のダイジェストは先頭に0
が一定数続かなければいけないというルールを課した。ネットワークの計 算力に応じて、この数を調整することにした。(正確には difficulty パラメータによってダイジェスト値の最大値を指定) ブロック作成者 (マイナー) は、上記のルールを満たすNonce を探さなければいけない。代わりに、 報酬をもらうことができる 専用ハードウェアにより現在は全世界で 1 秒間に 600 京回 (6×1018 ) のダイジェスト計算が 行われている。10 分に一度の確率にするには 36 垓回に 1 回だけ成功するように調整 しなければいけない。これは先頭に 0 が 18 個続くのと同じ難易度 Nonce 1001 1002 1003 1004 1005 ブロック ダイジェスト 5b280ff64934df39… 4b33b9d69b6c53f1… 9fc09514d74d5d78… f181b5ef17bdeaf2… 000000063f0d8704… Proof of Work のおさらい 前ブロック … 日時 2009/1/3 … Nonce ????? トランザクション ID … OK 前ブロック … 日時 2009/1/3 … Nonce 1005 トランザクション ID …
21.
それでも万が一チェーンが分岐するようなことがあった場合には、どちらのチェーンを主 とするか、というルールを決める Proof of Work
のおさらい ブロックを作るのを著しく難しくしておけば、 ネットワーク内で十分安定的に浸透する それでも万が一、同時にブロックができたら、 どちらを主とするか比較ルールを決めておく
22.
51% 攻撃 Proof of
Work の仕組みを利用して、支払いをなかったことにしてしまう攻撃 ● 最長チェーンと信じられているチェーン (メイン チェーン) 上に投資されてきた計算 資源を上回る計算資源で、別の分岐したチェーンを作ってしまう ● 別のチェーンがネットワークにブロードキャストされるとチェーン再構成 (reorg) が 発生して、元のメイン チェーンは無効になる ● 取引所にコインを送金し、法定通貨に換金して引き出したあと、reorg させてコイン を手元に残しつつ、同価値の法定通貨を手に入れる
23.
攻撃者が隠れて、強いチェーンをマイニングし、それを急に放出するケース 最長の分岐が優先されるルールを使えば、世の中が信じる 「メイン チェーン」を上回るペースでチェーンを伸ばし、 それを一気に放出することで、チェーンの再構成を誘発できる 51% 攻撃
24.
51% 攻撃の実例など ● Bitcoin
Gold ● MONA コイン 取引所では、コインの入金トランザクションが十分に安定したとみなすまで、取引を保留 扱いとして、攻撃が行われるのを防いでいる 攻撃にかかるコストを確認できる Web サイトもある https://crypto51.app/
25.
ブロックチェーンを走らせてみる
26.
MinChain について 教育用ブロックチェーンとして Bitcoin
を参考に作成したブロックチェーン https://github.com/yutopio/MinChain ● 約 2,000 行程度の C# で実装 ● MessagePack によるブロックやトランザクションのシリアライズ ● Proof of Work によるコンセンサス アルゴリズム ● 簡単なマイニング アルゴリズムの実装 ● MIT License に基づく再利用・頒布可
27.
MinChain のモジュール構成 Executor Mining KeyGenerator Config Genesis ツール群 InventoryManagerConnectionManager 解釈前のブロック保持 Memory Pool
保持 InventoryMessage 処理 Executor ブロック通知 Listener 新規接続待ち受け Peer 一覧を保持 特定ピアへの送信 ブロードキャスト Message 受信コールバック 実行済みブロック保持 UTXO の追跡 未実行ブロック一覧保持 ブロック適用/ 取消 Runner 各モジュールの 初期化 / 終了 Program エントリ ポイント コマンド振り分け
28.
動がしてみる ビルドするには git clone https://github.com/yutopio/MinChain cd
MinChain/MinChain dotnet restore dotnet build (既定で bin/Debug/netcoreapp2.0 にビルドされる) 動作させるには dotnet genkey > key.json dotnet genesis key.json genesis.bin dotnet config > config.json (このあと config.json の編集が必要) dotnet MinCHain.dll run config.json
29.
鍵を生成する ビルドしたバイナリがいるディレクトリに移動して実行 $ dotnet MinChain.dll
genkey > key.json (自分のアドレス用の口座を作成する) $ cat key.json { "pub": "WAAAAAEAAAAQAAAANAAAACAAAAAEj0MOwNeLA9b4gXYbURcyF5c8YPtZekJcliWafKduNy AAAAACMFgRiBxSiu3wB3/g3biz9UN8zvNGI2n/HIg88EVn8A==", "prv": "D4TuwVREhf5T3GTs4Y1psaUoHHKy3hb4gllunB2x5l8=", "addr": "MDyDMxi1ynxe1206ANBRXWOjP7o/IeQHakRDilyYrtI=" }
30.
Genesis ブロックを作る $ dotnet
MinChain.dll genesis key.json genesis.bin Creating new genesis block. { "id": "00011702146098209132fa4990686f41f3e6b9859c607c1e5c93c0204ff9d8ec", "prev": "0000000000000000000000000000000000000000000000000000000000000000", "difficulty": 2E-05, "nonce": 2538555750346862341, "timestamp": "2017-03-10T09:20:20.2375851Z", "root": "DS5gHGHSJh0f5qmxgk2PDuI6a7J4LZ7pfy3K6JorH8U=", "height": 0, "txs": [ { "id": "e44e859fe93bf48652b2dfc2386d987e544940f768379779da631fcd7206ac66", "timestamp": "2017-03-10T09:20:19.5205851Z", "in": [], "out": [ { "to": "303c833318b5ca7c5ed76d3a00d0515d63a33fba3f21e4076a44438a5c98aed2", "val": 1000000 } ... (略) key.json 記載のアドレスに マイニング報酬を送るような 原始ブロックを作成し genesis.bin に保存する マイニングするので 少し時間かかる
31.
config を作成する $ dotnet
MinChain.dll config > config.json $ cat config.json { "listen": "0.0.0.0:9333", "peers": [ "127.0.0.1:9333" ], "keypair": "<YOUR OWN KEYPAIR>.json", "genesis": "<GENESIS BLOCK>.bin" } 前のステップで生成した 鍵ペアファイル (key.json) と 原始ブロック (genesis.bin) とに それぞれ、ファイル名を変える
32.
起動する $ dotnet MinChain.dll
run config.json
33.
51% 攻撃を観測してみる
34.
参考 日経ソフトウェア 7月号に今日の内容は載ってます オンラインでもよめます https://bizboard.nikkeibp.co.jp/kijiken/summary/20180524/NSW0258H_4066560a.html
35.
まとめ ● ブロックチェーンは、分散データベースである ○ 合意形成アルゴリズムが必要 ○
参加者の定義: 不特定多数か否か、によってパブリック型かどうかが変わる ○ ビザンチン耐性を備えた合意形成を用いるのが一般的 ● 51% 攻撃 ○ Proof of Work で可能な攻撃 ○ 攻撃者が長いチェーンを作成し、一気に放出するだけ ○ 成功すると、意図的に取引をなかったことにできてしまう ● MinChain ○ https://github.com/yutopio/MinChain ○ Bitcoin タイプのブロックチェーンの簡単なモデル ○ attack ブランチに、攻撃のシミュレーションが入っている