웹사이트 검색

Linux에서 명령줄 암호화 도구 시작하기


이 페이지에서

  1. 1 소개
  2. 2 GPG를 사용한 암호화\n
    1. 2.1 GPG 소개
    2. 2.2 대칭키를 이용한 암호화\n
    3. 2.3 공개 키 암호화\n
    4. 2.4 왜 GPG인가?

    1. 3.1 OpenSSL 소개
    2. 3.2 공개 및 개인 키 생성
    3. 3.3 데이터 암호화\n
    4. 3.4 데이터 해독\n

    1. 소개

    암호화는 승인된 당사자만 읽을 수 있도록 메시지 또는 정보를 인코딩하는 프로세스입니다. 이 디지털 세대에는 프라이버시가 거의 없기 때문에 데이터 암호화는 가장 필요한 도구 중 하나입니다. Gmail과 같은 대부분의 응용 프로그램은 데이터를 암호화하지만 시스템의 데이터는 여전히 안전하지 않으며 해커 또는 권한이 없는 사용자가 액세스를 기다리고 있습니다. 데이터 도난 위험을 최소화하는 한 가지 방법은 로컬 시스템에도 존재하는 데이터를 암호화하는 것입니다.

    이 자습서에서는 명령줄 도구를 사용하여 Linux 시스템에서 데이터를 암호화하는 여러 방법을 보여줍니다.

    2 GPG를 이용한 암호화

    2.1 GPG 소개

    GPG는 대칭 또는 공개 키 암호화를 사용하여 데이터 파일 또는 폴더를 암호화하고 해독하는 데 사용되는 명령줄 유틸리티인 GNU Private Guard를 나타냅니다. GPG는 PGP 암호화 소프트웨어 제품군에 대한 GPL 라이센스 대안입니다. GPG는 OpenPGP 호환 시스템에서도 사용됩니다.

    2.2 대칭키를 이용한 암호화

    여기에 "test.txt"라는 파일이 있는데 이 파일을 암호화한 다음 대칭 키로 해독하고 해독된 텍스트를 "output.txt"라는 다른 파일에 인쇄합니다. .

    다음 명령을 실행하여 대칭 키를 사용하여 test.txt 파일을 암호화합니다. "-c" 옵션은 대칭 키를 사용하도록 GPG를 나타냅니다.

    gpg -c test.txt

    결과는 아래 이미지와 같습니다. GPG를 처음 실행하면 .gnupg 폴더가 생성됩니다. 여기에는 암호화 프로세스에 필요한 파일이 포함되어 있습니다. 그런 다음 암호를 두 번 입력하도록 요청합니다. 강력한 암호를 입력했는지 확인하고 나중에 파일을 해독하는 데 필요하므로 기억해 두십시오.

    따라서 암호를 올바르게 입력하면 "test.txt.gpg"라는 파일이 생성됩니다. 이것은 암호화된 파일입니다. 다음 이미지는 암호화 전과 후의 파일을 보여줍니다. 암호화된 텍스트가 읽을 수 없는 형식임을 알 수 있습니다.

    다음 명령을 사용하여 암호화된 파일의 암호를 해독하십시오.

    gpg -o output.txt test.txt.gpg

    암호화에 사용되는 암호를 입력하라는 메시지가 표시됩니다. 올바르게 입력하면 "test.txt"와 동일한 내용의 "output.txt" 파일이 생성됩니다. 암호 해독 출력은 아래 이미지와 유사할 수 있습니다.

    2.3 공개키 암호화

    여기에서는 GPG의 공개/개인 키 암호화 메커니즘을 사용하여 파일 세트를 암호화합니다. 여기에는 누구와도 공유해서는 안 되는 개인 키와 암호화된 데이터를 보내려는 사람들과 공유해야 하는 공개 키의 생성이 포함됩니다.

    먼저 파일을 압축 폴더에 압축해야 합니다. 여기에 test1.txt에서 test3.txt까지 세 개의 파일이 있는 "enctest"라는 디렉토리가 있습니다. 이 디렉토리 tar.gz 파일을 압축하겠습니다. 다음 명령을 사용하여 압축된 tar.gz 아카이브를 생성합니다.

    tar czf files.tar.gz ~/enctest

    그러면 \files.tar.gz\ 파일이 생성됩니다. 이제 공개/개인 키 쌍을 생성해야 합니다. 다음 명령을 실행하여 키를 생성합니다.

    gpg --gen-key

    이 작업은 한 번만 수행해야 하며 이 키를 사용하여 파일과 폴더를 얼마든지 암호화할 수 있습니다. 이 명령을 입력하면 다양한 질문이 표시됩니다. 질문은 다음과 같습니다.

    • 어떤 종류의 암호화를 사용할 것인가? RSA와 RSA인 1을 선택했습니다.\n
    • 키 크기는 얼마여야 합니까? 저는 2048을 선택했고 1024와 4096 범위에서 원하는 크기를 선택할 수 있습니다.\n
    • 키는 언제 만료되어야 합니까? 키가 만료되지 않음을 의미하는 0 을 선택했습니다. 그러나 특정 시간에 만료되도록 하려면 며칠, 몇 주 또는 몇 년을 제공할 수 있습니다.\n

    암호와 같은 다른 사항을 묻는 메시지가 표시되며 두 번 입력하라는 메시지가 표시됩니다. 강력한 암호를 사용하고 암호를 기억해야 합니다. 또한 귀하의 자격 증명이 사용됩니다. 여기에서 사용한 자격 증명(아래 제공)은 테스트용입니다. 이름, 이메일 ID와 같은 정품 자격 증명을 사용하고 의견을 제공하는 것이 좋습니다.

    다음 내용은 내 대답과 출력 결과를 보여줍니다.

    gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1
    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048) 2048
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
            = key expires in n days
          w = key expires in n weeks
          m = key expires in n months
          y = key expires in n years
    Key is valid for? (0) 0
    Key does not expire at all
    Is this correct? (y/N) y
    
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <>"
    
    Real name: John Doe
    Email address: 
    Comment: tis is key generation
    You selected this USER-ID:
        "John Doe (tis is key generation) <>"
    
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
    You need a Passphrase to protect your secret key.
        

    암호를 입력하면 키 생성이 시작됩니다. 몇 가지 작업을 수행하도록 요청할 것입니다. 마우스를 움직이거나 무언가를 입력하거나 드라이브를 사용하여 일부 파일을 여는 것이 좋습니다. 이 작업을 사용하여 임의의 비트를 생성합니다. 이 작업을 여러 번 수행해야 할 수도 있습니다. 나를 위한 출력은 다음과 같습니다.

    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 187 more bytes)
    +++++
    ...+++++
    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 92 more bytes)
    .....+++++
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 114 more bytes)
    
    +++++
    

    완료되면 키가 생성되었습니다. 아래 내용과 비슷할 것입니다.

    gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
    gpg: key FA2314B6 marked as ultimately trusted
    public and secret key created and signed.
    
    gpg: checking the trustdb
    gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
    pub   2048R/FA2314B6 2015-04-02
          Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
    uid                  John Doe (tis is key generation) <>
    sub   2048R/6F78E642 2015-04-02
    

    여기에는 두 가지 중요한 사항이 있습니다. 강력한 암호를 제공하고 암호를 기억해야 합니다.

    이제 키가 생성되었으므로 다른 시스템에서 가져오거나 이메일로 보내기 위해 공개 키 파일을 내보내야 합니다. 내보내기를 시작하려면 다음 명령을 사용하십시오.

    gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

    John Doe를 키를 생성하는 동안 사용한 이름으로 바꿉니다.

    또한 개인 키를 백업하는 것이 좋습니다. gpg를 사용하여 그렇게 할 수 있습니다. 백업을 수행하려면 다음 명령을 사용하십시오.

    gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

    여기서 "file-enc-privkey.asc" 파일은 개인 키의 백업을 안전하게 보관합니다. 내보내기 및 키 백업이 완료되면 이제 .tar.gz 파일을 암호화하고 해독할 수 있습니다. 다음 명령을 사용하여 암호화합니다.

    gpg --encrypt --recipient 'John Doe' files.tar.gz

    위의 명령에서 John Doe를 키 생성 중에 지정한 이름으로 변경해야 합니다. 그렇지 않으면 암호화가 실패합니다. 명령이 성공적으로 실행되면 "files.tar.gz.gpg"라는 암호화된 파일이 생성됩니다.

    이제 다음 명령을 사용하여 tar.gz 아카이브를 해독할 수 있습니다. 암호와 함께 개인 키를 사용하여 해독된 폴더를 해독하고 제공합니다. 다음 명령을 사용하여 암호를 해독하십시오.

    gpg --output output.tar.gz --decrypt files.tar.gz.gpg

    위의 명령은 암호를 요청한 다음 암호화된 파일을 해독하고 "output.tar.gz"라는 이름의 압축 파일을 생성한 다음 tar를 사용하여 폴더로 추출하여 파일을 다시 가져올 수 있습니다. . 다음 이미지는 암호화 및 암호 해독 명령의 출력을 보여줍니다.

    2.4 왜 GPG인가?

    GPG는 공개 키 암호화와 대칭 암호화를 모두 지원하며 이는 상당한 유연성을 제공하고 광범위한 응용 프로그램에 사용할 수 있습니다. 어떤 종류의 민감한 정보도 제공할 필요가 없으며 gpg는 공개 키를 사용하여 암호기를 얼마든지 가질 수 있습니다. 사용자는 여러 암호화 알고리즘 중에서 선택할 수 있습니다. 이러한 이유로 파일 및 폴더 또는 데이터를 암호화하는 데 매우 유용한 보안 도구가 됩니다.

    3 OpenSSL을 사용한 암호화

    3.1 OpenSSL 소개

    OpenSSL 프로젝트는 SSL v2/v3(Secure Sockets Layer) 및 TLS(Transport Layer Security) 프로토콜은 물론 강력한 일반 목적 암호화 라이브러리. OpenSSL은 대부분의 Unix 계열 운영 체제에서 사용할 수 있으며 SSLeay를 기반으로 합니다. OpenSSL은 많은 SSH, SFTP 및 SCP 응용 프로그램도 지원합니다. 여기에서는 OpenSSL을 사용하여 비대칭 암호화와 AES 암호를 사용하여 데이터를 암호화합니다. 대칭 암호화는 더 큰 파일이나 데이터를 암호화하는 데 사용할 수 있습니다.

    3.2 공개 및 개인 키 생성

    가장 먼저 해야 할 일은 공개 키와 개인 키를 생성하는 것입니다. 먼저 개인 키를 생성합니다. 이렇게 하려면 다음 명령을 사용합니다.

    openssl genrsa -out private_key.pem 1024

    위 명령은 RSA를 사용하여 1024바이트 크기의 개인 키를 생성하도록 OpenSSL에 지시합니다. 그런 다음 키는 "private_key.pem"이라는 파일에 안전하게 저장됩니다. 이 명령의 출력은 아래 이미지와 유사합니다.

    개인(비밀) 키가 생성되면 이를 사용하여 쌍을 형성하도록 공개 키를 생성할 수 있습니다. 다음 명령을 사용하여 공개 키를 생성합니다.

    openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

    아래 이미지와 같이 표시됩니다.

    3.3 데이터 암호화

    이제 공개 키를 사용하여 데이터를 암호화할 수 있습니다. 여기에서 "test.txt" 파일을 암호화하고 암호화된 텍스트를 encrypt.dat 파일에 저장합니다. 다음 명령을 실행합니다.

    openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

    다음 이미지는 암호화 전후의 텍스트 파일을 보여줍니다.

    3.4 데이터 복호화

    여기에서 개인 키를 사용하여 파일을 해독합니다. 다음 명령을 실행합니다.

    openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

    decrypt.txt 파일에는 해독된 데이터가 포함됩니다. 위 명령의 실행과 파일 내용은 아래 이미지에 표시됩니다.

    4 결론

    위에 표시된 방법은 신중하게 사용할 경우 매우 안전하며 여러 암호 및 보안 수준이 서로 다른 보안 수준에 적합하도록 허용합니다. 따라서 파일/폴더 및 원시 데이터를 암호화하기 위한 다양한 시나리오를 사용할 수 있습니다.

    5 링크

    • OpenSSL
    • OpenPGP