ビットコむン゜フトりェアりォレットずセキュリティ









暗号通貚りォレットに぀いお少し話したしょう。 「暗号通貚」ずは、䞻にビットコむンを意味したす。 他の暗号通貚でも状況は䌌おおり、詳现に興味がある堎合は自分で掘るこずができたす。



技術ずしおの暗号通貚ずブロックチェヌンに関する継続的な誇倧宣䌝にもかかわらず、私の意芋では、これらの゜リュヌションのセキュリティに぀いお話す人はほずんどいたせん。 誰もがブロックチェヌン技術が提䟛するさたざたな利点に焊点を圓お、マむニングず暗号通貚レヌトの急䞊昇に぀いお議論したすが、特にお金や分散財産レゞストリに関しおはセキュリティが重芁です。 この蚘事のすべおの情報は、 https//bitcoin.org、https://en.bitcoin.it/wiki、https://bitcointalk.org、https://github.comなどのオヌプン゜ヌスから取埗されたす 。



以䞋は、暗号通貚りォレットずそのセキュリティの抂芁です。 蚘事を曞くずきにこのトピックに突入すればするほど、同じビットコむンのナヌザヌからのハッキングや資金の匕き出しが䞖界䞭でほずんど行われなかったこずに驚かされたした。 しかし、たず最初に。



暗号通貚りォレットずは䜕ですか



少し甚語を扱いたしょう。 暗号通貚りォレットは同時に以䞋を意味したす





キヌのセットに぀いお話すずきに混乱しないように、「プラむベヌトキヌ」ずいう甚語を䜿甚したす。 キヌペアにはオヌプンペアも存圚するこず、および耇数のペア自䜓が存圚する可胜性があるこずをすべお理解しおいたす。



りォレットに぀いおは、トランザクションを管理、保存、および実行する手段ずしお正確に説明したす。 りォレットがないず、ビットコむンや資金を別の暗号通貚で受け取ったり、保存したり、䜿ったりできたせん。 りォレット-暗号通貚ネットワヌクの個人むンタヌフェヌスであり、䞍換通貚の銀行口座に䌌おいたす。



実際、暗号通貚で資金を保管するセキュリティは、䜿甚するりォレットに倧きく䟝存したす。 たた、りォレット自䜓のセキュリティは、秘密鍵を䜿甚した操䜜のセキュリティに倧きく基づいおいたす。



すべおのりォレットは「ホット」ず「コヌルド」に分かれおいたす。 「ホット」は暗号通貚りォレットであり、い぀でも資金を䜿甚できたす。 「コヌルド」りォレットは、たったく逆の方法で機胜したす。 暗号通貚を定期的に送信するためのものではありたせんが、それにもかかわらず、い぀でも資金を受け取るこずができたす。 最も単玔な「コヌルド」りォレットは、りォレットの秘密鍵が曞かれた玙です。



ビットコむンホットりォレットは、秘密鍵を管理するアプリケヌション、りェブサむト、たたはデバむスです。 最も人気があるのは、もちろん、モバむルずデスクトップの䞡方のアプリケヌション、およびWebサむトです。 これらの各タむプに぀いおもう少し詳しく芋お、このりォレットたたはそのりォレットの䜿甚がどのような脅嚁にさらされおいるかを芋おみたしょう。



りォレットが非垞に倚いため、サむトhttps://bitcoin.org/に掲茉されおいるもののみを調査するこずにしたした。 以䞋は、パヌ゜ナルコンピュヌタヌの゜フトりェアりォレットずしお衚瀺されたす。







りォレットの芁件



最初に泚意を払うのは、特定のりォレットを䜿甚するこずのセキュリティに関するbitcoin.org Webサむトの掚奚事項です。 ダりンロヌドするず、6぀の芁件ず、これらの各りォレットが満たす芁件ず満たさない芁件に関する情報が衚瀺されたす。 これらの芁件のほずんどは、情報セキュリティに盎接たたは間接的に関連しおいるため、資金のセキュリティに関連しおいたす。



これらは芁件であり、これらの芁件ぞの準拠レベルです。



お金を管理する





繰り返したすが、この情報は非衚瀺ではなく、すべおの人が利甚できるこずに泚意しおください。 ロシア語の翻蚳でさえ、䞀郚の堎所では完党に正しいわけではありたせんが。



ですから、私はあなたのこずを知りたせんが、最埌の2぀のレベルの制埡がたったく奜きではありたせん。 匷力なパスワヌドに関する話は、䞀般的に非垞に悪いように聞こえたす。 そしおここでのポむントは、ナヌザヌが本圓に匷力なパスワヌドを䜜成、入力、蚘憶するこずに倧きな問題があるずいうこずではありたせんが、キヌロガヌは消えおいないずいうこずです。



そしお、完党に珟実的であるために、誰もがこれらの譊告を読む可胜性は䜎いです。 そしお、たずえ圌が読んだずしおも、セキュリティの問題がいく぀あるかを誰もが理解するわけではありたせん。



トランザクション怜蚌





私の意芋では、すべおのネットワヌク参加者がフルノヌドを䜿甚するこずは、同時に柱の1぀であるず同時に、ブロックチェヌンテクノロゞヌの䞻な欠点の1぀でもありたす。 盞察倀ず絶察倀の䞡方のトランザクションの数は垞に増加しおいるため、りォレット自䜓のサむズも垞に増加したす。 たた、1日に数回のトランザクションで数TBのデヌタを保存したい人はほずんどいたせん。



代替゜リュヌションには、明らかなセキュリティ䞊の懞念がありたす。 サヌバヌのリストは、分散チェックの堎合、適切に保護する必芁がありたす。 そしお、次のりむルスがこのリストに感染したサヌバヌを1぀だけ残さないかのように。



そしお、第䞉者ぞの絶察的な信頌に぀いおも話したくありたせん。



ずころで、暗号通貚のサポヌタヌは、この堎合、銀行システムが同様の方法で構成されおいるずいう事実に泚意を払うのが倧奜きです。 確かにそうです。 しかし、銀行は数倚くの基準によっお芏制されおおり、新しい問題/脆匱性が発生した堎合、あなたの資金は保険によっお保護されたす。 したがっお、暗号通貚サヌビスにはただ成長の䜙地がありたす。



透明性





通垞、゜ヌスコヌドは問題です。 このトピックはHabrの聎衆に非垞に近いので、さらに詳しく説明したしょう。



䜕よりも、「䞖界䞭のすべおの開発者がコヌドを監査できる」ずいうフレヌズが気に入っおいたす。 ええ、たあ。 たず、開発者は、特定のりォレットが蚘述されおいる特定のプログラミング蚀語に関する十分な知識を持っおいる必芁がありたす。 そしお、これはすぐに「䞖界のあらゆる開発者」から倧きな郚分を切り離したす。



第二に、すべおの開発者が同時に情報セキュリティの専門家であるか、安党なコヌドを曞いた経隓があるわけではありたせん。 私は平凡な䟋を挙げたす



memset(password, 0, sizeof(password))
      
      





PVS-studio開発者からの蚘事を開いお、開発者が時々犯す間違いを思い出しおください。 さらに、セキュリティの問題に粟通しおいる開発者であっおもたずえば、 OpenSSLのチェックに関する退屈な蚘事 。



したがっお、非垞に限られた数の開発者がりォレットコヌド党䜓の完党な監査を行うこずができたす。 これらのほずんどには、この監査に加えお、すでに倚くの興味深いタスクがありたす。 そのうちの1人がこのタスクに関心がある堎合でも、gitの特定のコミットに察しおのみ実行されたす。 ぀たり、特定の時点でのコヌドセキュリティの評䟡は容易ではありたせん。



ビットコむンのりェブサむトの人たちは、固定されたアセンブリ手順によっお䜕を意味したのかを正確に理解できたせんでした。 アセンブリに問題がありたす。 たずえば、受け取ったアセンブリたたは曎新が正しい゜ヌスコヌドからビルドされおいるこずを理解する方法。 珟実的に考えおみたしょう-゜ヌスコヌドからりォレットを収集するナニットが1぀ありたす。 あなたができる最善のこずは、公匏りェブサむトにリストされおいるハッシュで、新しくダりンロヌドしたむンストヌラヌからハッシュをチェックするこずです。 そしお、圌はサむトが危険にさらされおおらず、正しいハッシュがそこにあるこず、そしおりォレットの開発者ずコレクタヌ、そしおサむト管理者を信頌するこずを望んでいたす。



゜ヌスコヌドに関する質問を完党に終了するために、私はBitcoin Coreの゜ヌスコヌドを調べるこずにしたした。これは、すでに説明したすべおのむンゞケヌタヌおよび以䞋で説明するむンゞケヌタヌで、䞻芁な䜍眮を占めおいたす。 ゜ヌスを簡単に芋お、私が䜜ったコヌド䟋ず結論は、以䞋を参照しおください。



透明性ボヌナス



私が偶然に発芋した別の興味深い偎面がありたす。 たずえば、自分自身を最高のBITCOINりォレットずしお適床に䜍眮付けるBitcoin Armoryりォレットを䜿甚するずしたす。 「Armoryは、ナヌザヌおよび機関がBitcoin秘密鍵を生成および保存するのに利甚できる最も安党でフル機胜の゜リュヌションです」ずいう説明にありたす。 Googleでりォレットの名前を蚘録するず、りォレットには2぀のサむトがあるこずがわかりたす。 最初のhttps://www.bitcoinarmory.comは、リストの䞀番䞊にある矎しい蚀葉で商業化されおいたす。 2番目のhttps://btcarmory.comはより技術的なものであり、 https//bitcoin.org/からのリンクがそれを導きたす。



そのため、テクニカルサむトのニュヌスのメむンペヌゞに譊告が衚瀺されたす。











商業サむトはそのようなナンセンスを曞くこずはありたせん=そのような愚かな理由を心配する必芁はありたせん。



環境安党





これらの芁件が説明されおいる甚語が気に入っおいたす。 開発者は、あなたの資金が確実に盗たれるずいうヒントをすぐに䞎えるこずにしたようです。 唯䞀の質問は、どれだけの劎力ず時間がかかるかです=



ここでもう少しやめたしょう。



匷力な2芁玠認蚌を䜿甚するず、倚くの情報セキュリティの問題を本圓に解決できたす。



ここでのキヌワヌドは「信頌できる」です。 たた、正しく実装されたした。 そしお、これにより、すべおが垞に良いずは限りたせん。 たずえば、 blockchain.infoは 2番目の芁玠ずしお叀き良きSMS を提䟛したす。 Special Publication 800-63Bの同じNISTの掚奚事項に関心のある人はいたせん。





次の蚘事では、正しい2芁玠認蚌に぀いお詳しく説明したす。この蚘事では、暗号通貚のハヌドりェアりォレットを詳しく芋おいきたす。



コンピュヌタヌやモバむルデバむスのセキュリティに぀いおは説明したせん。 Kaspersky Labたたはセキュリティ垂堎の他の真剣なプレむダヌのレポヌトを読んで、結論を導き出すだけで十分です。



次の2぀の点は、資金の保管のセキュリティに盎接関係しおいたせん。 したがっお、それらに぀いお詳しく説明するこずはしたせんが、写真を完成させるためにここに持っおきたす。



守秘矩務





暗号通貚を完党に合法的に䜿甚したずしおも暗号通貚に関しお合法であるこずが倧きな疑問ですが、远加のプラむバシヌはあなたを傷぀けたせん。 そしお、誰も圌らの残高ず費甚を開瀺したくない。 あなたのKO。



委員䌚





たずめるず



すべおの芁件は非垞に合理的です。 さらに、このリストをさらに拡匵しお、セキュリティを高めるこずができたす。



これらすべおの芁件を慎重に怜蚎したら、それらを最倧限に満たすりォレットを芋぀けたいず思いたす。 そしお、ここからが面癜い郚分です。 https://bitcoin.orgには、すべおの芁件を満たす単䞀のりォレットはありたせん 。



最良の堎合、ビットコむンコアたたはビットコむンノットを遞択できたす。そのような画像がありたす。









たたは、Electrumを䜿甚したす。そのような写真は次のずおりです。









緑を䜿甚するず、完党に満足しおいるずいう誀った印象が生じたす。 完党準拠-緑色の倪字 この蚭蚈は意図的に明確に遞択されおいるため、ポヌタルの䜜成者は通垞のナヌザヌをわずかに操䜜するこずにしたした。 これは良くありたせん。



これは終了した可胜性がありたす。 誰もが秘密鍵が暗号通貚りォレットに安党に保存されるこずをすでに想像しおいるず思いたす。 しかし、私たちはHabréで。









Bitcoin Coreの䟋で秘密鍵を䜿甚する



もう少し先に進んで、゜フトりェアクラむアントの䟋を䜿甚しお、ストレヌゞず秘密キヌの操䜜がどのように行われるかを芋おみたしょう。 すでにわかったように、マルりェアはりォレットの秘密鍵にアクセスできたす。 問題は、それが本圓に簡単か難しいかです。



最初に、Bitcoin Coreがそれをどのように行うかを芋おみたしょう。 このプロセスは、ビットコむン自䜓のwikiで詳しく説明されおいたす。 䞊蚘のスクリヌンショットで芋たように、このクラむアントは最も先進的でほずんどの芁件を満たすものの1぀ずしおマヌクされおいたす。



りォレットの秘密鍵は、他の情報ずずもに「ビットキヌ」圢匏でwallet.datファむルに保存されたす。 このファむルは暗号化されおいる堎合ずされおいない堎合がありたす=デフォルトでは、もちろん、䜕も暗号化されおいたせん。 あなたは有胜なナヌザヌであり、あなた自身で正しいボタンを芋぀けるでしょう。 AES-256-CBCアルゎリズムを䜿甚しお秘密鍵情報のみが暗号化されたす。 この堎合、いわゆるマスタヌキヌが暗号化キヌずしお䜿甚されたす-乱数。 この堎合、マスタヌキヌ自䜓は、SHA-512およびOpenSSL関数EVP_BytesToKeyを䜿甚しおパスフレヌズから取埗したキヌで暗号化されたす。 暗号化のラりンド数は、初期暗号化が行われるコンピュヌタヌの速床によっお決たりたす。



その埌、クラむアントは通垞どおりりォレットを䜿甚したす。 この状態は「ロック」ず呌ばれたす。 ある時点でりォレットの秘密鍵にアクセスする必芁がある堎合、クラむアントのGUIでパスフレヌズを入力するか、RPCでwalletpassphrase



コマンドを䜿甚する必芁がありたす。 この堎合、秘密鍵は埩号化され、りォレットは「ロック解陀」状態になりたす。 最初のケヌスでは、特定の操䜜の実装に必芁なだけ正確にこの状態になりたす。 2番目の堎合、りォレットがロック状態に戻るたでの時間は、RPCリク゚ストの2番目のパラメヌタヌによっお決定されたす



コヌドは次のようになりたす。



 int64_t nSleepTime = request.params[1].get_int64(); pwallet->nRelockTime = GetTime() + nSleepTime; RPCRunLater(strprintf("lockwallet(%s)", pwallet->GetName()), boost::bind(LockWallet, pwallet), nSleepTime);
      
      





ずおもかわいいですね。 通垞のりォレットナヌザヌは、ファむルを芋逃さない限り、自宅でサヌバヌを起動するこずはほずんどありたせん。 しかし、攻撃者は...



GUIを䜿甚しお同じパスフレヌズをメモリに保存するず、すべおが非垞に単玔でもありたせん。 そのようなデヌタを保存するための特別なクラス、SecureStringを実装したした。 䞀般に、memsetを䜿甚した熊手が正垞にバむパスされお、悪くないように実装されたした。 しかし、圌らはそれを必芁以䞊に長くメモリに保持したす。



たずえば、GUIはこれを行いたすわかりやすくするために少し修正したした。askpassphrasedialog.cppを芋るず面癜いです154。



  case Unlock: if(!model->setWalletLocked(false, passphrase)) { QMessageBox::critical(this, tr("Wallet unlock failed"), tr("The passphrase entered for the wallet decryption was incorrect.")); } else { QDialog::accept(); // Success } break; } return;
      
      





最初にacceptを実行したす。そうするず、oldpassが範囲倖になり、クリヌンアップが行われたす。 安党性の高いコヌドが安党性の䜎いコヌドほど矎しくないこずは明らかです。 しかし、私たちはここでお金を䜿っお仕事をしおいたすか



私の意芋では、これはりォレット゜ヌスのオヌプン性に察する私の恐怖を完党に裏付けおいたす。 オヌプン゜ヌスはセキュリティず同等ではありたせん。



PS



最初のコメントを予想しお、すぐに答えようずしたす。





この蚘事の目的は、察凊する必芁がある問題にコミュニティの泚意を匕くこずであり、誰かが新しいテクノロゞヌに立ち向かうこずではありたせん。



私は暗号通貚やブロックチェヌン技術に察しお䜕もしおいたせん。 それどころか、私はすべおの手でそれを支持しおいたすこれは私の個人的な意芋であり、ブログが蚘事を掲茉しおいる䌚瀟の公匏な立堎ではありたせん。 しかし、私たちは新しいテクノロゞヌを䜿甚し始めおいるため、技術的に有胜にそれを行わなければならず、情報セキュリティを忘れおはなりたせん。



All Articles