암호

[암호] AES, DES, RSA 암호 개념, 사용법 총정리

해공학(해킹을 공부하는 학생) 2023. 5. 30. 06:36

3일동안 포스트를 못 올렸습니다 ㅠㅠ 오랜만에 올리는 거니 열심히 쓰겠습니다!!

 

1. AES

AES는 수학적 방법을 사용하여 암호문을 생성합니다. 이러한 방법은 상대적으로 짧은 몇백 또는 몇천비트를 

키로 사용하는데, 이 암호화 키를 잃어 버리거나 없어지면 평문을 찾을수없는 방식 입니다.

 

AES는 2001년 미국 국립 표준 기술 연구소에서 채택한 표준으로, DES를 대체하기 위해 채택되었습니다.

이 프로세스는 레인달(Rijndael) 알고리즘이 채택 되었으며,  이는 암호화 블록이 128비트 이고,

암호화 키의 길이가 128, 192, 256비트인 세가지 종류가 채택되었습니다.(AES-128, AES-192, AES-256)

AES를 암호화 하는 방법은 세가지 모드(CBC, ECB, CTR 등)을 대표적으로 사용합니다(openssl과 함께)

 

AES를 암호화와 복호화 하는법은 다음과 같습니다

암호화

openssl enc -aes-256-cbc -salt -in [암호화할 파일] -out [암호화한 파일을 저장할 경로]

여기서 enc는 암호를 암호화,복호화할때 쓰이는 openssl의 명령어 입니다.

 

복호화

openssl enc -d -aes-256-cbc -in [복호화할 파일] -out [복호화 한 파일을 저장할 경로]

-d 옵션은 파일을 복호화 한다는 뜻 입니다.

 

 

2.DES

DES는 1974년 NIST가 정한 대칭암호화 알고리즘 입니다.

1988년 해독된 기술 이므로, 현재로서는 절대로 이 암호를 사용해서는 안된다.

 

이는 56비트의 키를 사용한다. 현재 컴퓨터의 환경으로서는 너무 짧은 암호 이다.

그리고 EFF에서 1999년에 22시간 만에 해독할수있는 하드웨어를 만들었다.

그래서 DES를 세번 반복하는 triple-des를 만들었지만 현제는 AES가 표준으로 지정 되어 있다.

 

사용하면 안되도, 암호화랑 복호화 하는방법을 알아보겠습니다.

암호화

openssl enc -des -salt -in [암호화할 파일] -out [암호화한 파일을 저장할 경로]

 

복호화

openssl enc -d -des -in [복호화할 파일] [복호화한 파일을 저장할 경로]

 

 

3. RSA

RSA는 공개키 암호화 시스템중 하나로, 최초로 전자 서명이 가능한 알고리즘 으로 알려져 있습니다.

1978년 만들어 졌스며, RSA라는 이름은 RSA를 만든 세 개발자의 이름을 따서 지은것 입니다.

 

공개키 암호화 시스템은 암호화 할때랑 복호화할때 두개의 키를 가지는 방식으로 말하는것입니다.

그래서 RSA는 공개키(Public key), 개인키(Private key)를 사용 합니다.

공개키는 누구나 사용하거나 볼수있고, 개인키는 특정한 사람만 가질수 있습니다.

또한 공개키로는 암호화를 할수있고, 개인키로는 복호화를 할수 있습니다.

 

이제 암호화랑 복호화 하는 법을 알아보겠습니다.

 

개인키 만들기

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

1. genpkey : 암호화를 한다고 말해주는 명령어 입니다.

2. -algorithm RSA : RSA로 암호화를 한다고 말해주는 명령어 입니다.

3. -out private_key.pem : private_key.pem으로 개인키가 저장된다는 뜻입니다.

4. -pkeyyopt rsa_keygen_bits:2048 : 2048비트로 개인키를 만든다는 뜻입니다. 비트가 클수록 보안은 더 좋아 지지만 암호화랑 복호화 할때 수학적 계산이 더 많아 집니다.

 

공개키 만들기

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

1. rsa : RSA의 개인키와 공개키에 관련된 일을 합니다

2. -pubout : 공개키를 만드는 일을 합니다.

3. -in private_key.pem : -in  뒤에 개인키의 경로를 씁니다.

4. -out public_key.pem : 공개키가 나올 경로를 지정합니다.

 

암호화 하기

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

1. rsautl : rsa 암호화랑 복호화 하는 일을 담당 합니다.

2. -encrypt : 암호화를 한다고 설명해주는 옵션 입니다.

3. -in plaintext.txt : 암호화를 할 텍스트의 파일의 경로와 이름입니다.

4. -out ciphertext.txt : 암호화된 텍스트가 나오는 경로 입니다.

5. -pubin : 공개키를 입력을 통해 암호화를 한다는 옵션 입니다.

6. -inkey public_key.pem : 공개키의 경로를 지정해 줍니다.

 

복호화 하기

openssl rsautl -decrypt -in ciphertext.txt -out plaintext.txt -inkey private_key.pem

1. -decrypt : 복호화 작업을 할때 사용하는 기능 입니다.
2. -in ciphertext.txt : 공개키로 암호화되고, 복호화할 파일이 저장되어 있는 경로 입니다.

3. -out plaintext.txt : 복호화된 파일이 저장될곳을 지정 합니다.

4. -inkey private_key.pem : 개인키의 경로를 지정합니다.