メタマスクの署名技術を使ってPHPで認証する仕組みを作ってみたいと思います。
※アドレス以外のブロックチェーンは使いません。
【フロントエンド】
PHP(blade)、JavaScript、Metamask(ブラウザ拡張機能)
【バックエンド】
PHP(Laravel)
【その他】
docker使ってローカルで動かします
はい、神サイト
【DApps】MetaMaskを使ったパスワード不要のユーザ認証(React+Node.js+MongoDB) | ALIS
まず主要なブロックチェーンの署名には
ECDSA(Elliptic Curve Digital Signature Algorithm:楕円曲線デジタル署名アルゴリズム)
が用いられます。
トランザクションの文字列を秘密鍵で署名し、受け取り側が文字列と公開鍵(アドレス)を利用して正しい人から実行されているか検証します。
ざっくり以下のような流れです。
1.トランザクション(特定の文字列)を決める。例えば、
Test Transaction 1
2.1の文字列を秘密鍵で署名(暗号化)する 3.2の暗号化文字列と1の文字列でecRecoverを実施し公開鍵(アドレス)を復号 4.送信者のアドレスと2で複合したアドレスを比較し一致して入れば認証完了
1はとりあえず適当に決めてしまえばいいし、 2はmetamaskが機能を用意しています。 3は https://github.com/wmh/php-ecrecover がPHP用のモジュールを開発してくれています。これをちょっとLaravel用に加工します。 4は3の結果と比較するだけなので簡単です。