1. encryption

encryption은 암호화 툴(Encryption Tool)로 문자열을 암호화하거나 그 반대로 복호화하는 기능을 제공한다. 문자열은 Base64 포맷으로 인코딩하거나 Hash 결과를 제공한다.

secret key가 필요한 알고리듬(예: AES, DES, DESEDE, BLOWFISH, SEED)의 경우 security.key 파일을 생성하여 사용한다. security.key 파일은 기본적으로 JEUS_HOME/domains/<domain name>/config/security에 위치하며, 변경하려면 시스템 프로퍼티 jeus.security.keypath를 이용하여 경로를 지정한다.

encryption은 다음의 디렉터리에 위치한 encryption 스크립트로 실행할 수 있다.

JEUS_HOME/bin/

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Usage: encryption <algorithm> <text> [-options ...]
    Options:
        -algolist                show available algorithms
        -algorithm <algorithm>   Encryption algorithm
        -convert                 convert old ciphertext format to new ciphertext format
        -decode                  set to decode mode; used for base16/base64 only
        -domain <domain>         domain name
        -h                       help for Encryption
        -keypath <keypath>       security key path
        -protectkey              use protected secret key
        -s                       describe simple result only
        -text <text>             Text to be encrypted
    Simple example : encryption AES 1234
  • 파라미터

    파라미터 설명

    -algorithm <algorithm>

    text를 인코드할 알고리듬을 설정한다. 필수 옵션으로 명시하지 않을 경우 첫 번째 argument를 algorithm 값으로 간주한다.

    -algolist

    사용 가능한 알고리듬들을 출력한다.

    -convert

    입력한 암호문을 새로운 암호문으로 변경한다.

    -decode

    BASE16/BASE64로 암호화된 암호문을 디코드하여 평문을 얻어낸다.

    -domain <domain>

    대칭키 알고리듬을 입력한 domain이 가지고 있는 security.key를 사용한다. -domain, -keypath 중 한 가지만 입력해야 한다.

    -h

    사용법을 출력한다.

    -keypath <keypath>

    대칭키 알고리듬을 입력한 keypath가 가지고 있는 security.key를 사용한다. -domain, -keypath 중 한 가지만 입력해야 한다.

    -protectkey

    Master Password를 입력받아 security.key 파일을 암호화 한다. 암호화된 security.key를 사용하기 위해서는 입력했던 Master Password를 입력해야 한다.

    -s

    인코드 결과값만 출력한다.

    -text <text>

    인코드될 평문을 설정한다. 필수 옵션으로 명시하지 않을 경우 두 번째 argument를 text 값으로 간주한다.

  • 예제

    다음은 JEUS_HOME 시스템 환경변수가 설정되어 있고, 시스템 Path에 JEUS_HOME/bin 디렉터리가 설정되어 있다고 가정하는 경우 encryption 호출에 대한 예이다.

    호출 후에 툴은 단순히 인코딩 또는 디코딩된 문자열을 조회한다. 만약 툴에 어떤 파라미터도 제공하지 않았거나, 호출 문법이 잘못되었을 경우 단순한 도움말 메시지가 출력된다.

    $ encryption base64 mypassword
    bXlwYXNzd29yZA==

    다음은 문자열 "bXlwYXNzd29yZA=="는 "mypassword"를 Base 64포맷으로 인코딩한 것이다.

    $ encryption DESede mypassword -domain domain_name
    [DESEDE] : [mypassword] --> [encode:8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=]
    [DESEDE] : [8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=] --> [decode:mypassword]

    문자열 “8JLoskMPHkwwLKi+TJeOgQZBDO15PBQ=”는 "mypassword"를 DESede cipher algorhtm으로 암호화된 패스워드이다. 이 암호화를 진행하기 위해 만들어진 secret key는 JEUS_HOME/domains/<domain name>/config/security의 security.key 파일에 저장된다(또는 첫 암호화가 아닐 경우 security.key 파일에 저장된 key를 이용).

    -protectkey 옵션을 이용하면 Master Password를 입력받아 security.key 파일을 암호화하는 것이 가능하다.

    $ encryption -protectkey AES mypassword 
    Input the master password For key encryption>
    Confirm the master password For key encryption>
    [AES] : [mypassword] --> [encode:qsHQdjqh8aAr3fWPYWbU0/VkFbs9yllZeRJaK5xSiuo=]
    [AES] : [qsHQdjqh8aAr3fWPYWbU0/VkFbs9yllZeRJaK5xSiuo=] --> [decode:mypassword]

    위의 예제와 비슷한데 Master Password를 입력 받는 것이 다르다.

    여기서 입력받는 패스워드를 이용하여 secret key를 DESede 알고리듬으로 암호화하게 된다. 위의 명령어를 수행한 이후 만들어진 security.key 파일을 사용하기 위해서는 항상 Master Password를 입력받는 작업이 필요하다. 따라서, 암호화된 security.key 파일을 이용해 암호화를 진행할 경우 다음과 같이 수행된다.

    $ encryption -protectkey AES mypassword 
    The encryption key file is encrypted. Enter the master password.
    Password>
    [AES] : [mypassword] --> [encode:qsHQdjqh8aAr3fWPYWbU0/VkFbs9yllZeRJaK5xSiuo=]
    [AES] : [qsHQdjqh8aAr3fWPYWbU0/VkFbs9yllZeRJaK5xSiuo=] --> [decode:mypassword]

    JEUS 6 Fix#4부터 encryption 방식이 좀 더 보안적인 측면에서 강화된 버전으로 바뀌었다. 따라서 cipher text의 포맷이 조금 변화하였는데, Fix#4 이전 버전에서 생성한 암호문을 이후 버전에서 그대로 사용할 수 없게 되었다. 이에 따라 JEUS 6 Fix#5부터 encryption에서 ciphertext를 변환할 수 있는 기능이 추가되었고, 이는 -convert 옵션을 이용해 다음과 같이 사용할 수 있다.

    $ encryption -convert AES i06wYRz3u60/Gqun2sKtXH1u=
    Decryption was successful.
    [before:i06wYRz3u60/Gqun2sKtXH1u=] --> [after:ET7c/P21Qx1Io8UI6Ss2NvZ0G=]

    security.key 파일이 암호화되어 있을 경우에는 다음과 같이 실행한다.

    $ encryption -convert -protectkey AES i06wYRz3u60/Gqun2sKtXH1u=
    The encryption key file is encrypted. Enter the master password.
    Password>
    
    Decryption succeed.
    [before:i06wYRz3u60/Gqun2sKtXH1u=] --> [after:ET7c/P21Qx1Io8UI6Ss2NvZ0G=]