SlideShare a Scribd company logo
1 of 35
51% 攻撃の原理とシミュレーション
竹井 悠人 (@yutopio_ja)
ソフトウェア エンジニア
株式会社 bitFlyer
2018/11/19 blockchain.tokyo #14
https://blockchain-tokyo.connpass.com/event/105918/
免責
このトークは、情報提供のみを目的として行われており、正確性・最新性についての保
障は一切ありません。内容は、会社の見解ではありません。この情報を元にして生じた
不利益について、当社およびスピーカは一切の責任を負いません。
bitFlyer 上での取引についての詳細は、当社カスタマ サポートへお問い合わせくださ
い。
自己紹介
竹井 悠人
Yuto Takei C# 大好き一筋 17 年 / 筋トレ勢
いまさらポケモンにはまってます
大学生になりました
投げ銭いつでもウェルカム
Software Engineer / CISO
bitFlyer のブロックチェーン
C# でスクラッチから設計した
ブロックチェーンを研究・開発
|ω・`) チラッ
エンジニア募集してるってよ
目次
1. ブロックチェーンと合意形成の関係
2. MinChain の紹介
3. 51% 攻撃のデモ
ブロックチェーンと合意形成の関係
ブロックチェーンとは
なにそれ美味しいの?
● 任意のデータの入れ物 (e.g. トランザクション) を作って、そのダイジェストを何かし
ら (e.g. ブロック) のハッシュ チェーンで繋いだデータ構造
何に向いているの?
● 透明性と完全性の要求が極めて高いケース
● 過去からのすべてのデータ (改訂や変更履歴など) を残したいケース
ハッシュ
ブロックチェーン概略図
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
ブロックチェーンに求められるもの
非機能要件
● 参加者が一定のルールに従って書き込むことができる
● 書き込まれたデータが、世界中のノードで読むことができる
● 正常な書き込み要求は必ずいつか処理される
● ルールに反するデータの書き込み要求は却下される
● ルールに従わない (正常な書き込みに応じない、不正な書き込みを受理する) ノー
ドが一定数いても動作する
非機能要件のようだが、本質的には違うと考えられるもの
● 改竄されたら検知できること (上記の当然の帰結)
● データの履歴が残ること (副次的に生まれた機能)
ブロックチェーンとは (再定義)
ブロックチェーンとは
1. 前スライドの要件を満たすデータ構造であり、
2. 1. を運用するシステムであり、
3. 2. を実現する技術の総称
である。
ここから、ブロックチェーンは
● 分散システムの一種である (i.e. 複数のサブシステムが協調する)
● 分散データベースの一種である (i.e. データ同期する)
といえる
単純なブロックチェーンの設計
状
態
0
状
態
1
状
態
2
トランザクション 1
トランザクション 2
トランザクション 3
ブロックに
集約
参
加
者
間
で
合
意
形
成
…
合意形成とは
目的は、分散システムの耐障害性確保のため、複数ノードに同一動作させること
ステートマシン レプリケーション問題 (複数の状態遷移機械が
同一に動作することを保証するため、入力するアルファベット
を同期させる) に帰着可
ノード 1
命令
A
ノード 2
命令
B
命令
A
ノード 1
ノード 2
命令
B
そもそも…
● ブロックチェーンが誕生するはるか昔から存在 (1980 年代)
● 分散ファイル システムなどで頻繁に利用 (有名なのは Spanner)
単純なやり方は、投票
合意形成とは
ラーメン
ノード A
ノード D ノード C
ノード B
ラーメン
ラーメン
次郎
ラーメン
投票だと、合意形成したあとに票の水増しをされたら意味がなくなる
Sybil 攻撃
ラーメン
ノード A
ノード D ノード C
ノード B
ラーメン
ラーメン
次郎
ラーメン
ノード
次郎
ノード
次郎
ノード
次郎
次郎
次郎
ノード
次郎
次郎 ノード
ノード
ノード
ノード
ノード
次郎
次郎
次郎
次郎
次郎
次郎
次郎
次郎
次郎
誰を (合意形成の) 参加者とするかの違いで次に分類できる
● パブリック型
常に、不特定多数の人が、新たに参加したり、離脱したりできる
● それ以外 (プライベート型 / コンソーシアム型 etc.)
合意形成をはじめる段階で、参加者が特定されている
とはいえ、パブリック ブロックチェーンを閉じたネットワークに構築したり、
ブロックチェーン外の認証機構をつけたりすることで、「プライベート
ブロックチェーン」として運用することもしばしば ...
非機能要件のひとつ
● 参加者が一定のルールに従って書き込むことができる
の参加者って誰?
参加者の定義
合意形成に求める性質
● 安全性 (Safety)
ある合意があったら、健全な全ノードでその合意が有効で、唯一である
● 活性 (Liveness)
合意形成を行おうとする場合、いずれ合意形成が完了する
非機能要件のひとつ
● 参加者が一定のルールに従って書き込むことができる
では、合意形成のルールに従わないノードがいた場合には?
ビザンチン耐性とは?
ビザンチン将軍問題は、東ローマ帝国(ビザンチン帝国)の首都コンスタンティノープルを攻略するオスマン帝国の将軍たちがそれぞ
れ軍団を率いて、ひとつの都市(コンスタンティノープル)を包囲している状況で発生する。将軍たちは、都市攻撃計画について合意
したいと考えている。最も単純な形では、将軍たちは、攻撃するか撤退するかだけを合意決定する。一部の将軍たちは攻撃したいと
言うだろうし、他は撤退を望むかもしれない。重要な点は、将軍たちはひとつの結論で合意しなければならないということである。つ
まり、一部の将軍だけで攻撃を仕掛けても敗北することは明らかで、全員一致で攻撃か撤退かを決めなければならないのである。ま
た、将軍たちは、それぞれ離れた場所に各軍団を配置しており、メッセンジャーを相互に送ることで合意を目指す。
引用元: Wikipedia 「ビザンチン将軍問題」
分散システムで、一部ノードがプロトコルに従わない可能性を考慮し、システムとして安
全性かつ健全性を保った合意形成ができる状態 (ビザンチン耐性)
とはいえ全ノード数の 1/3 以上が従わない場合は理論的に不可能
ブロックチェーンの合意形成
基本的に、参加者の中に合意形成のプロトコルに反する挙動をする人を前提
(ビザンチン耐性をもつ合意形成アルゴリズムが必要)
なぜか...?
● そもそも改竄防止のためのハッシュ チェーン自体が極めてコストの高いデータ構造
● それに見合うほどの信頼が必要な環境では、参加者間の合意も極めて厳格に行
われる必要がある
だいたいこんな感じ…
パブリック型 それ以外 (プライベートなど)
参加者
いつでも誰でも参加できる
(事前に特定することができない )
合意形成の参加者が
特定されている
安全性
ない
(あとから覆る可能性がある )
ある
(参加者間で合意は唯一 )
代表的な
アルゴリズム
Proof of Work
Paxos, Raft, PBFT,
Proof of Authority
ブロック内に 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
…
それでも万が一チェーンが分岐するようなことがあった場合には、どちらのチェーンを主
とするか、というルールを決める
Proof of Work のおさらい
ブロックを作るのを著しく難しくしておけば、
ネットワーク内で十分安定的に浸透する
それでも万が一、同時にブロックができたら、
どちらを主とするか比較ルールを決めておく
51% 攻撃
Proof of Work の仕組みを利用して、支払いをなかったことにしてしまう攻撃
● 最長チェーンと信じられているチェーン (メイン チェーン) 上に投資されてきた計算
資源を上回る計算資源で、別の分岐したチェーンを作ってしまう
● 別のチェーンがネットワークにブロードキャストされるとチェーン再構成 (reorg) が
発生して、元のメイン チェーンは無効になる
● 取引所にコインを送金し、法定通貨に換金して引き出したあと、reorg させてコイン
を手元に残しつつ、同価値の法定通貨を手に入れる
攻撃者が隠れて、強いチェーンをマイニングし、それを急に放出するケース
最長の分岐が優先されるルールを使えば、世の中が信じる
「メイン チェーン」を上回るペースでチェーンを伸ばし、
それを一気に放出することで、チェーンの再構成を誘発できる
51% 攻撃
51% 攻撃の実例など
● Bitcoin Gold
● MONA コイン
取引所では、コインの入金トランザクションが十分に安定したとみなすまで、取引を保留
扱いとして、攻撃が行われるのを防いでいる
攻撃にかかるコストを確認できる Web サイトもある
https://crypto51.app/
ブロックチェーンを走らせてみる
MinChain について
教育用ブロックチェーンとして Bitcoin を参考に作成したブロックチェーン
https://github.com/yutopio/MinChain
● 約 2,000 行程度の C# で実装
● MessagePack によるブロックやトランザクションのシリアライズ
● Proof of Work によるコンセンサス アルゴリズム
● 簡単なマイニング アルゴリズムの実装
● MIT License に基づく再利用・頒布可
MinChain のモジュール構成
Executor
Mining
KeyGenerator
Config
Genesis
ツール群
InventoryManagerConnectionManager
解釈前のブロック保持
Memory Pool 保持
InventoryMessage 処理
Executor ブロック通知
Listener 新規接続待ち受け
Peer 一覧を保持
特定ピアへの送信
ブロードキャスト
Message 受信コールバック
実行済みブロック保持
UTXO の追跡
未実行ブロック一覧保持
ブロック適用/ 取消
Runner
各モジュールの
初期化 / 終了
Program
エントリ ポイント
コマンド振り分け
動がしてみる
ビルドするには
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
鍵を生成する
ビルドしたバイナリがいるディレクトリに移動して実行
$ dotnet MinChain.dll genkey > key.json (自分のアドレス用の口座を作成する)
$ cat key.json
{
"pub": "WAAAAAEAAAAQAAAANAAAACAAAAAEj0MOwNeLA9b4gXYbURcyF5c8YPtZekJcliWafKduNy
AAAAACMFgRiBxSiu3wB3/g3biz9UN8zvNGI2n/HIg88EVn8A==",
"prv": "D4TuwVREhf5T3GTs4Y1psaUoHHKy3hb4gllunB2x5l8=",
"addr": "MDyDMxi1ynxe1206ANBRXWOjP7o/IeQHakRDilyYrtI="
}
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 に保存する
マイニングするので
少し時間かかる
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) とに
それぞれ、ファイル名を変える
起動する
$ dotnet MinChain.dll run config.json
51% 攻撃を観測してみる
参考
日経ソフトウェア 7月号に今日の内容は載ってます
オンラインでもよめます
https://bizboard.nikkeibp.co.jp/kijiken/summary/20180524/NSW0258H_4066560a.html
まとめ
● ブロックチェーンは、分散データベースである
○ 合意形成アルゴリズムが必要
○ 参加者の定義: 不特定多数か否か、によってパブリック型かどうかが変わる
○ ビザンチン耐性を備えた合意形成を用いるのが一般的
● 51% 攻撃
○ Proof of Work で可能な攻撃
○ 攻撃者が長いチェーンを作成し、一気に放出するだけ
○ 成功すると、意図的に取引をなかったことにできてしまう
● MinChain
○ https://github.com/yutopio/MinChain
○ Bitcoin タイプのブロックチェーンの簡単なモデル
○ attack ブランチに、攻撃のシミュレーションが入っている

More Related Content

What's hot

Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Web Services Japan
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (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 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてTaiji INOUE
 
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-Tomohiro Nakashima
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所Ryo Sasaki
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送[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 のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208 次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208 Kazuhiro Mitsuhashi
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)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 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
 
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-脆弱性ハンドリングと耐える設計 -Vulnerability Response-
脆弱性ハンドリングと耐える設計 -Vulnerability Response-
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
[Cloud OnAir] BigQuery の一般公開データセットを 利用した実践的データ分析 2019年3月28日 放送
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208 次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
次世代データ基盤としてのSnowflakeの可能性 SnowDay 20211208
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 

Similar to 51% 攻撃の原理とシミュレーション

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーションYuto Takei
 
Blockchain innovation
Blockchain innovationBlockchain innovation
Blockchain innovationYuto Takei
 
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介Yasunori Matsuoka
 
プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはプログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはYuto Takei
 
Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方Yuto Takei
 
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告INTAGEGROUP
 
いまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited についていまさら聞けない 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).pdfcomparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdfwei-li
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)Kindai University
 
Blockchainベーシック
BlockchainベーシックBlockchainベーシック
BlockchainベーシックKondo Hitoshi
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装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 ...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電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00Naoto Miyachi
 
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)Seiyo Nakazawa
 
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用Yuto Takei
 
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 Hiroshi Takahashi
 
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)blockchainexe
 
脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君Teruaki Ashino
 

Similar to 51% 攻撃の原理とシミュレーション (20)

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
 
Blockchain innovation
Blockchain innovationBlockchain innovation
Blockchain innovation
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
 
プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはプログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とは
 
Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方
 
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
 
いまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited についていまさら聞けない 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).pdfcomparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
Blockchainベーシック
BlockchainベーシックBlockchainベーシック
Blockchainベーシック
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装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 ...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電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00
 
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)
 
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
 
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入
 
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
 
脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君
 

More from Yuto Takei

これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門Yuto Takei
 
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦Yuto Takei
 
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ開発チームにおける多様性のススメ
開発チームにおける多様性のススメYuto Takei
 
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?Yuto Takei
 
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来Yuto Takei
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加するYuto Takei
 
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討Yuto Takei
 
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理Yuto Takei
 
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介Yuto Takei
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub についてYuto Takei
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させるYuto Takei
 
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介Yuto Takei
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号Yuto Takei
 
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力Yuto Takei
 
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論Yuto Takei
 
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミングYuto Takei
 
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析Yuto Takei
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御Yuto Takei
 
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェルYuto Takei
 
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理Yuto Takei
 

More from Yuto Takei (20)

これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
 
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
 
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
 
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
 
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
 
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
 
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
 
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
 
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
 
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
 
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
 

51% 攻撃の原理とシミュレーション