メタマスクの署名技術を使って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の結果と比較するだけなので簡単です。