요약.
안전성이 강한 애플리케이션은 불안전하거나 약한 암호를 기피한다. 현재 컴퓨터의 계산 능력은 무차별대입을 통해 암호화를 우회한다. 예를들어 DES 알고리즘은 높은 불안전성으로 간주한다.
DES 알고리즘으로 메시지를 암호화에 사용하면 EFF와 같은 머신에 의해 수일 안에 복호화 되버린다.
현재에는 DES 사용 시 보안적으로 안전하지 않으므로 다른 공개된 알고리즘(AES 암호 등)을 교체해야합니다.
바로 소스코드 보면서 진행해보겠습니다.
키 생성을 위한 소스코드입니다.
키 생성 시, 안전성을 위해 secuRandom이라는 안전한 난수를 추출하며, 258bit의 키를 뽑아내고자 합니다.
키 길이가 길수록 보안강도는 올라가게 되어있습니다.
그만큼 많은 경우의 수를 탐색 해야하기 때문입니다.
다음은 AES의 암호화 소스코드입니다.
키를 받아 초기화 벡터 및 AES/CBC/Padding 절차를 가져갑니다.
이후 암호화를 수행한 뒤 인코딩하여 밖으로 내보냅니다.
다음은 AES의 복호화 소스코드입니다.
앞서 암호화 과정에서는 데이터를 인코딩하여 내보냈으므로 반대로 디코딩을 먼저 진행합니다.
이후 복호화를 통해 원래의 평문정보를 얻어냅니다.
이외에도 공개키 알고리즘인 RSA가 대표적으로 존재합니다.
그러나 RSA는 메시지 암호화에 사용하지 않습니다.
왜냐하면 암호화 속도가 AES에 비해 느립니다.
이정도만 알고 있게된다면, 개발 진행 시 도움이 될 것입니다.
'시큐어 코딩' 카테고리의 다른 글
public 메소드를 통한 private array 접근 (0) | 2020.03.24 |
---|---|
중요정보 키보드 캐시 (0) | 2020.03.22 |
내부저장소를 활용한 민감정보 저장 (0) | 2020.03.13 |
JAVA 메모리 취약성 제거 (0) | 2020.03.11 |
Android 개발 시 보안을 위한 KeyStore (5) | 2020.02.10 |