Web

Bcrypt

필립 2024. 5. 24. 23:45

 

단방향 암호화

단방향 암호화는 평문을 암호화 할 수는 있지만 암호화 된 문자를 다시 평문으로 복호화가 불가능한 방식이다. 

해시 함수를 사용하여 임의의 길이 메세지를 고정된 길이의 해시값으로 변환하게 되며 동일한 입력값에 대해서 항상 동일한 

해시값을 출력하게 된다.

단방향 암호화를 사용하는 주된 이유는 메시지 또는 파일의 무결성을 보장하기 위해서이며 원본의 값이 1bit라도 달라지게 된다면,

해시 알고리즘을 통과한 후의 해시값은 매우 높은 확률로 달라지게 된다. 이를 통해 메세지나 파일의 원본 여부를 파악할 수 있다.

 

단방향 암호화의 한계

해시 알고리즘은 동일한 평문에 대하여 항상 동일 해시값을 갖는다. 따라서 특정 해시 알고리즘에 대해 특정 평문이 

어떤 해시값을 갖는지 알 수 있다. 이런 특징을 이용하여 해시 함수의 해시 값들을 대량으로 정리한 테이블이 존재하는데, 

이를 레인보우 테이블이라고 부르며 공격자는 이 테이블을 이용하여 사용자의 정보를 해킹한다. 

더불어 데이터를 빠르게 검색하기 위해 탄생한 해시 함수의 특징 때문에 오히려 공격자는 매우 빠른 속도로 임의의 해시값과 

사용자의 해시값을 비교해 공격할 수 있다. 

 

솔팅(Salting)

단방향 해시로 암호화를 진행할 때, 본래 데이터에 임의의 솔트 값을 더하여 암호화를 진행하는 방식이다. 

데이터가 추가 되었기 때문에 원래 데이터의 해시값에서 달라지게 된다.  

 

키 스트레칭(Key Stretching)

단방향 해시값을 계산한 후 또다시 해시를 반복하는 방법이다. 

 

Bcrypt란?

  • Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재까지 사용중인 가장 강력한 해시 메커니즘 중 하나이다. 
  • .NET 및 Java를 포함한 많은 플랫폼, 언어에서 사용할 수 있다. 
  • 단방향 암호화의 취약점인 레인보우 테이블 공격을 방지하기 위해 솔팅과 키 스트레칭을 적용하여 보안한 대표적인 예다.

'Web' 카테고리의 다른 글

Prisma  (0) 2024.05.28
HTTP Status Code (추가예정)  (0) 2024.05.27
JWT (Json Web Token)  (0) 2024.05.23
트랜잭션  (0) 2024.05.22
쿠키  (0) 2024.05.21