Julia - キーボードからパスワードを入力する

環境

  • ArchLinux
  • Julia 1.3.0

CLI でのパスワード入力

readline()Base.prompt で入力を受ける場合、入力した内容が丸見えでセキュリティもへったくれもない状態なため、パスワードを入力したい場合などには適しません。

goropikari.hatenablog.com

入力したものを値を表示させずにキーボードから入力するには Baes.getpass() を使います。

Base.getpass(message::AbstractString) -> Base.SecretBuffer
julia> s = Base.getpass("Enter your password")
Enter your password: 
SecretBuffer("*******")

julia> read(s, String) # 入力した値を取り出す
"password12345"

使わなくなった秘密情報はすぐに Base.shred! をしろ、String は秘密情報を保持しておくのには適していないということが Base.SecretBuffer の help に書いてあるものの、ならば SecretBuffer に入った秘密情報はどのように利用するのがベストなのか私にはよくわかっていません。

Base.shred! は確保した領域を 0 で埋めているということはソースコードから読み取れたので、そうするのが妥当だろうとは思いましたが(そうしないとクラッカーが該当の領域を直に覗きに来る)、SecretBuffer の利用方法までは読み取れませんでした。

どうするのが良いのかな?

参考

discourse.julialang.org

julia/secretbuffer.jl at v1.3.0 · JuliaLang/julia · GitHub