search
クリプト

Liskアドレスの初期化問題と新しいアドレス形式

kplusq's icon'
  • kplusq
  • 2020/11/12 09:23

最近、ちらほらとアドレス初期化問題が表面化しているみたいですね…

かなり前からこの問題は認識されており、HQもブログ(2017年)で警告したり、walletやexplorerにてアラートを出すようにしています。
また、コミュニティレベルでも、さまざまなチャンネルで注意喚起を行っていました。

なので、本家discordを覗いている限りでは、あくまで自己責任という論調が強いようです。 
新アドレスへの移行にも関係することですので、今のうちにおさらいしておきましょう!

Content image

アドレス初期化問題とは

一番大事な点は、
「この被害にあうと、LSKを失ってしまう」
というところ。

この被害に遭わないためには、
「一度でいいから送金処理をしておくこと」
です。

送金処理については、voteでもいいし、自分自身のアドレス宛に送金するのでも大丈夫です。とにかく、自分のパスフレーズを使って署名したトランザクションを送信することで、アドレスは初期化されます。
アドレスが初期化されると、この問題は回避できます。

「送信」であって「受信」ではないことにご注意ください!
 

なぜこの問題が生じるのか

この問題をバグとして非難する声も(ほんの少し)あるようですが、なぜこのような問題が起こってしまうのか、少しだけ掘り下げてみます。

Liskのアドレス(ex.1710406280801763244L)は

パスフレーズ > 秘密鍵 > 公開鍵 > アドレス

という順番で算出されます。
このとき、公開鍵のパターンは2の256乗あるのに対して、現アドレスのパターンは2の64乗しかありません。アドレスを算出するのには明快なロジックがあるのですが、公開鍵のほうが数が多いので、違う公開鍵から同じアドレスを導き出してしまうわけです。

単純な一例をあげると、
abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
という公開鍵と
abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345678a
という公開鍵は同じアドレスになります。

とはいえ、「一つのアドレスに対して認められる正式な公開鍵は当然一つだけ」です。
(この正式な公開鍵を記録することを初期化と呼んでいます。)

攻撃者は、正式な公開鍵が登録されていないアドレスを見つけ、そのアドレスに紐付く別の公開鍵を探し出すことで、そのアドレスのなかの資産を奪います!

難しい話はおいておいて、卑近な例でいうと、女子に対して圧倒的に男子が多い状況をイメージするとわかりやすいかもしれません。
アドレス初期化とは、アドレスと公開鍵のペアの婚姻届みたいな…。
 

新アドレスの形式

上の原因を考えると、なぜアドレスのパターンを2の64乗にしてしまったのか…それはひとえに「わかり易さ」を重視した結果でしょう(桁が大きくなると、その分アドレスが長くなってしまい、扱いにくくなります。)

Liskにとってのこだわりポイントだったともいえます。

とはいえ、2の64乗というのは、実際は「18,446,744,073,709,551,616」というとんでもなく大きな数なので、危険性自体は非常に小さいといえます。少々の危険性は承知の上で、あえてユーザビリティを優先したとしても不思議ではありません。

新アドレスでは、やはり2の64乗パターンでは少ないだろうということになりました。
これからは、2の160乗のパターンとなります。これにより、上の問題が起こる可能性は(現状においては)無視してもいいレベルまで小さくなります。(女子の数が増えたので、スムーズなペアリングが期待されます…ちょっと違うかな笑)

新アドレスの形式については、少しだけ留意点があります。というのも、
①プロトコルレベルアドレス(ex.0xbc998186ce61723b1f250bf3afb751aa3f80bce7)
②Base32アドレス(ex.lskdxc4ta5j43jp9ro3f8zqbxta9fn6jwzjucw7yt)
という2種類のアドレスが存在します。

ユーザーが意識すべきなのは、基本的には②の「lsk」から始まるアドレスです。
ただし、sdkの内部では①のプロトコルレベルアドレスが利用されているので、アプリケーションを作成する技術者は、内部で②から①への変換を行う必要があります。
 

新アドレスへの変更に向けてやるべきこと

基本的には何もありません!

ただし、ひとつだけ条件があります。それは、

アドレスを初期化しておくこと

です。

新システムに以降する前に初期化されているアドレスについては、特別な処理をする必要はありません。パスフレーズも従来のものをそのまま利用することができます。

初期化されていないアドレスについては、少し特別な処理が必要となります。
その方法を理解するより前に、何をおいても、とにかくアドレスは初期化しておきましょう!

 

Supporter profile iconSupporter profile icon
Article tip 2人がサポートしています
獲得ALIS: Article like 8.10 ALIS Article tip 2.20 ALIS
Article registration Article registration
kplusq's icon'
  • kplusq
  • @kplusq
Programmer & Lisker

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Uniswap(ユニスワップ)で$ALISのイールドファーミング(流動性提供)してみた

Taka 2021/02/25
Like token Tip token
59.99 ALIS
Eye catch
クリプト

UNISWAPでALISをETHに交換してみた

Macky3216 2020/09/28
Like token Tip token
40.40 ALIS
Eye catch
クリプト

【初心者向け】JPYCを購入して使ってみました!

暗号資産ジョシ校生 蟻巣 2021/06/30
Like token Tip token
30.03 ALIS
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

CryptoChick 2020/03/05
Like token Tip token
44.10 ALIS
Eye catch
クリプト

【初心者向け】$MCHCの基本情報と獲得方法

暗号資産ジョシ校生 蟻巣 2021/07/14
Like token Tip token
32.32 ALIS
Eye catch
クリプト

2021年1月以降バイナンスに上場した銘柄を140文字以内でざっくりレビュー(Twitter向け情報まとめ)

昆布森ちゃん 2021/03/16
Like token Tip token
38.10 ALIS
Eye catch
クリプト

CoinList(コインリスト)の登録方法

Taka 2021/02/25
Like token Tip token
15.55 ALIS
Eye catch
クリプト

バイナンスの信用取引(マージン取引)を徹底解説~アカウントの開設方法から証拠金計算例まで~

昆布森ちゃん 2020/06/15
Like token Tip token
3.50 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

otakucoin 2021/03/29
Like token Tip token
121.79 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

nnppnpp(んぺー) 2021/09/08
Like token Tip token
46.60 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

kaya 2021/10/06
Like token Tip token
61.20 ALIS
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Taka 2021/07/24
Like token Tip token
69.90 ALIS