業務でセキュリティ高く実装する必要に迫られた。
その際に base64
で暗号化すれば十分かと思ったが、不適切と指摘されたので暗号化について調べてみた。
暗号化の種類
- keylessな暗号化
- private keyを使った暗号化
- pubilc keyを使った暗号化
keylessの暗号化
- いわゆる暗号化処理のこと
-
base64
もこれ - 一つの入力から、ランダムな文字列に置換する
- 可逆なので、元の入力を復元することができる
- 秘匿情報などを保持する際に使う
private keyを使った暗号化
- 暗号対象の文と、秘密鍵の2つのインプットをもとにして一意なランダムな文字列を出力する
public keyを使った暗号化
- 送り手と受け手がいることを想定
- それぞれは
public key
とprivate key
を持つ - 相手には
public key
を渡す。 - 相手の
public key
と自分のprivate key
から新しいkey
を作成する。 - この
key
をもとに暗号化する
まとめ
base64
で暗号化するだけだと、可逆な値なので良くないことがわかりました。
また、inputも暗号化対象の文だけなので、容易にもとの値を特定されてしまうんだなと。
参考
https://www.marineroad.com/staff-blog/17723.html
https://www.markupdancing.net/archive/20160310.html
https://paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded