맞는데 왜 틀릴까..?

Java/Secure Coding

[Secure Coding] 안전하지 않거나 약한 암호 알고리즘을 사용하지 말라

안도일 2023. 9. 23. 15:31

보안에 민감한 응용프로그램들은 안전하지 않거나 약한 암호 함수를 피해야만 한다.

 

DES (Data Encryption Standard) 암호 알고리즘은 매우 안전하지 않은 것으로 간주되는데, DES로 암호화된 메세지는 EFF Deep Crack과 같은 머신에 의해 하루 만에 무차별 대입 공격에 의해 복호화된다.

 

그럼 강한 암호 알고리즘을 간단하게 살펴보자.

 

AES (Advanced Encryption Standard) 

 

  • AES는 다양한 키 길이를 지원하며 특히 256 비트 키 길이를 사용할 경우 높은 수준의 보안을 제공한다.
  • 블록 암호화 방식으로 작동하며, 평문을 고정길이의 블록으로 나누어 암호화하고 복호화한다.
  • Java Cryptography Extension 패키지를 사용하여 AES 암호화 및 복호화를 수행할 수 있다.

 

AES 암호화 및 복호화 예제

 

 

 

 

 

RSA (Rivest-Shamir-Adleman)

 

 

  • 공개 키 암호화 및 전자 서명에 사용되는 대표적인 알고리즘 중 하나
  • 공개 키와 개인 키 두 가지를 사용하며, 데이터를 암호화하는 데 공개 키를 사용하고, 암호문을 복호화하기 위해 개인 키가 필요하다.
  • RSA는 디지털 서명을 생성하고 확인하는 데 사용된다.
  • Java.security 패키지를 사용하여 RSA 암호화 및 복호화를 수행할 수 있다.

 

 

RSA 암호화 및 복호화 예제

 

 

 

  • RSA 키의 길이를 2048 비트로 설정
  • 암호화 알고리즘은 RSA, 서명 알고리즘은 SHA256withRSA