Rで暗号化

  • 素因数分解に基づく(RSA)公開鍵と秘密鍵の生成や、共通鍵を持ち合うAES方式を実装したopensslパッケージ
  • それのラッパーパッケージであるencryptrパッケージ
  • AESについて
  • 公開鍵暗号について
  • encryptrパッケージの説明
    • genkeys()の内部でopenssl::write_pem()を呼び出している。ウィンドウを立ち上げて「パスワード」のGUI入力を求め、それに基づいて(それを大きな整数とみなして)秘密鍵を作り、さらにそこから公開鍵を作っている(秘密鍵から公開鍵の生成は簡単な計算なので)
    • 現れる公開鍵・秘密鍵は、凄く長い文字列として保管される
    • 生成された鍵(大きな数字など)は以下のようなデータ構造で保管される
> str(key)
List of 4
 $ type  : chr "rsa"
 $ size  : int 2048
 $ pubkey:List of 5
  ..$ type       : chr "rsa"
  ..$ size       : int 2048
  ..$ ssh        : chr "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDyG/Ul/qY1PZzskwQxOp74JKT/vYydwx5ygRjJS8EastsrdmKN+kEu+z3M7HijycZXfRhoJWod ..."
  ..$ fingerprint: 'hash' raw [1:16] 5e 1c 70 cf ...
  ..$ data       :List of 2
  .. ..$ e: 'bignum' raw [1:3] 01 00 01
  .. ..$ n: 'bignum' raw [1:257] 00 f2 1b f5 ...
 $ data  :List of 8
  ..$ e : 'bignum' raw [1:3] 01 00 01
  ..$ n : 'bignum' raw [1:257] 00 f2 1b f5 ...
  ..$ p : 'bignum' raw [1:129] 00 fa 52 2a ...
  ..$ q : 'bignum' raw [1:129] 00 f7 9a 19 ...
  ..$ d : 'bignum' raw [1:256] 45 30 7a 31 ...
  ..$ dp: 'bignum' raw [1:129] 00 93 9e 10 ...
  ..$ dq: 'bignum' raw [1:129] 00 a9 b3 ce ...
  ..$ qi: 'bignum' raw [1:129] 00 c6 eb 8f ...