佐藤真美では、「他のユーザーに佐藤真美経由では聞かせたいが直接のダウンロードはさせたくない」というユーザーのために、音楽機能に暗号化機能を搭載しています。
※Windowsでの動作は保証しません。Unix-like OSをご使用ください。
パスフレーズの設定
音声ファイルや検索テキストを暗号化するための公開鍵の元となるパスフレーズを佐藤真美に設定します。
ここで、鍵を平文で送ってしまうと暗号化の意味がなくなってしまうので、佐藤真美またはなぎさ(弟, 開発版)の公開鍵を用いて暗号化しbase64エンコードしたものを送信します。
なお、公開鍵を生成する際のハッシュ関数の繰り返し回数(iter)もスペース区切りで一緒に暗号化します。(1000 ≦ iter ≦ 65535)
$ echo -n "mypassword 2222" | openssl pkeyutl -encrypt -pubin -inkey mami.keys | base64 -w0
L5eQvl/aJw/d347CqGW1akIvKe73kM0QR5QNWbRAvMHxqjEehCHIiExg5C6OGnGHVRR3lIPECCJylVjvUvq9OsJAjBlEokECTFr6CojWfckM/wxD01lV+H6joeuM+u4D1bILL+Y0gPWy/dW2x/UzRXi41rBeM9oMptzmOixJyOxz5XJvJSdmBp9XUOWagkuE0GA2WhbPlLAqG7tplbMSPAzEaGxSIlIQkQiyewtNeV9zde8kXEvHvSjfNAb5rYnC0ug3O3oBitiD3Wga14NVl+aunrq8HPN0KIiWlCU/0zbmhYerbTgOel61hRNjfyK1XnyFvGmVK/r4weEXz37LBCA+fgiktEQb9/jA0Isc/HQzCtQXT9Ui9N4UOnGfkm6zo5USfZo2K2+q83PQv2SJ/BdojGb7L0OJ6k5yAHMcb3ytSDKHhl64eHUxl6bfTw2gz22jJVpykPDH53PLnRI8Nj2TAenyeh/76urdJPraZJQDTD49X+SWegkWDuNuG+HHt9+QYMcDok5gXpUtkiABxevXa5EvBslpiR91gT5YLw83k6SRqvUr7VkzuWEKwrJnuFNKacQXGZelVmVT0eez5FQLUwFCoKVUPRLjNikSxZhkBAYhF6aQU/w3lAdZHJiJRw7m1TpRqHPQf7dFl1qiJaCm6f+jCl3YQgTYFGg7xaQ=
このコマンドでmypasswordはパスフレーズ、2222はiter、mami.keysは公開鍵です。(実行するBotが佐藤真美であればmami.keys、なぎさであればnagisa.keysを用いてください。)L5eQvl/aJw/d347CqGW1akIvKe73kM0QR5QNWbRAvMHxqjEehCHIiExg5C6OGnGHVRR3lIPECCJylVjvUvq9OsJAjBlEokECTFr6CojWfckM/wxD01lV+H6joeuM+u4D1bILL+Y0gPWy/dW2x/UzRXi41rBeM9oMptzmOixJyOxz5XJvJSdmBp9XUOWagkuE0GA2WhbPlLAqG7tplbMSPAzEaGxSIlIQkQiyewtNeV9zde8kXEvHvSjfNAb5rYnC0ug3O3oBitiD3Wga14NVl+aunrq8HPN0KIiWlCU/0zbmhYerbTgOel61hRNjfyK1XnyFvGmVK/r4weEXz37LBCA+fgiktEQb9/jA0Isc/HQzCtQXT9Ui9N4UOnGfkm6zo5USfZo2K2+q83PQv2SJ/BdojGb7L0OJ6k5yAHMcb3ytSDKHhl64eHUxl6bfTw2gz22jJVpykPDH53PLnRI8Nj2TAenyeh/76urdJPraZJQDTD49X+SWegkWDuNuG+HHt9+QYMcDok5gXpUtkiABxevXa5EvBslpiR91gT5YLw83k6SRqvUr7VkzuWEKwrJnuFNKacQXGZelVmVT0eez5FQLUwFCoKVUPRLjNikSxZhkBAYhF6aQU/w3lAdZHJiJRw7m1TpRqHPQf7dFl1qiJaCm6f+jCl3YQgTYFGg7xaQ=
このRSAで暗号化された実行結果をset_aes_keyコマンドで設定します。
sm:set_aes_key L5eQvl/aJw/d347CqGW1akIvKe73kM0QR5QNWbRAvMHxqjEehCHIiExg5C6OGnGHVRR3lIPECCJylVjvUvq9OsJAjBlEokECTFr6CojWfckM/wxD01lV+H6joeuM+u4D1bILL+Y0gPWy/dW2x/UzRXi41rBeM9oMptzmOixJyOxz5XJvJSdmBp9XUOWagkuE0GA2WhbPlLAqG7tplbMSPAzEaGxSIlIQkQiyewtNeV9zde8kXEvHvSjfNAb5rYnC0ug3O3oBitiD3Wga14NVl+aunrq8HPN0KIiWlCU/0zbmhYerbTgOel61hRNjfyK1XnyFvGmVK/r4weEXz37LBCA+fgiktEQb9/jA0Isc/HQzCtQXT9Ui9N4UOnGfkm6zo5USfZo2K2+q83PQv2SJ/BdojGb7L0OJ6k5yAHMcb3ytSDKHhl64eHUxl6bfTw2gz22jJVpykPDH53PLnRI8Nj2TAenyeh/76urdJPraZJQDTD49X+SWegkWDuNuG+HHt9+QYMcDok5gXpUtkiABxevXa5EvBslpiR91gT5YLw83k6SRqvUr7VkzuWEKwrJnuFNKacQXGZelVmVT0eez5FQLUwFCoKVUPRLjNikSxZhkBAYhF6aQU/w3lAdZHJiJRw7m1TpRqHPQf7dFl1qiJaCm6f+jCl3YQgTYFGg7xaQ=
もしここでエラーが発生した場合は、もう一度RSAの暗号化からやりなおしてください。
音声ファイルやテキストの暗号化
先程のパスフレーズとiterを使って音声ファイルやテキストを暗号化します。
音声ファイルの場合
$ openssl enc -aes256 -e -pbkdf2 -iter 2222 -pass pass:mypassword -in mysong.mp3 -out mysong.enc
テキストの場合
$ echo -n "超亜空間防壁チーズ・ナポリタン" | openssl enc -aes256 -e -pbkdf2 -iter 2222 -pass pass:mypassword | base64 -w0
U2FsdGVkX1+Q58ikeRZLfiAXowe4QfxgU3upN4KHu6zk3zgusa5SAp+WkTV1Ydg9vjMQBIlkzW3S+Z3Ub/0wIA==
AESの暗号化結果はバイナリなので、引数で渡す必要のあるテキストはbase64でエンコードします。U2FsdGVkX1+Q58ikeRZLfiAXowe4QfxgU3upN4KHu6zk3zgusa5SAp+WkTV1Ydg9vjMQBIlkzW3S+Z3Ub/0wIA==
暗号化したものを用いて再生する
音声ファイルの場合、Discordなどにバイナリファイルをアップロードし、play_aes_fileコマンドの引数にURLを渡すことで再生することができます。
sm:play_aes_key https://discord.com/channels/1117558817073410198/1117558817073410198/1117558834072932402
なお、復号してから再生するため時間がかかります。検索キーワードやURLのテキストを暗号化した場合は、play_aes_textコマンドで検索及び再生することができます。
sm:play_aes_text U2FsdGVkX1+Q58ikeRZLfiAXowe4QfxgU3upN4KHu6zk3zgusa5SAp+WkTV1Ydg9vjMQBIlkzW3S+Z3Ub/0wIA==