cs

암호화에 대해서

짱쭈니어 2022. 6. 16. 19:24

 

암호화란

 

암호화란 어떤 정보를 의미없는 문자의 나열로 바꾸는 것을 뜻한다. 

즉 저장한 정보를 해독할 수 없도록 비밀코드로 변환하는 것을 말한다. 

 

 

 

SHA-2 : Secure Hash Algorithm 2

 

미국 NSA에서 설계한 암호화 해시 함수

GPU 를 이용한 암호화로서, 연산속도가 매우 빠르다 

GPU 연산 속도가 빠르면 하드웨어를 통한 오프라인 brute force에 취약하기에, password 암호화에 권장되지 않는다. 

 

 

해시 함수 

 

해시 함수는 해시 알고리즘에 의하여 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수이다. 

 

 

Brute Force 무차별 대입 공격 

 

brute force 는 특정한 암호를 풀기 위해서 가능한 모든 값을 대입하는 것을 말한다. 

 

 

오프라인 추측 공격 off-line password guessing attack 

 

오프라인 추측 공격은 공격자가 대상이 되는이의 패스워드를 추측하여서, 검증으로 오프라인에서 반복하는 공격이다.

 

 

 

 

 

PBKDF2(Password-Based Key Derivation Function)

 

해시함수와 salt 를 적용하여서, 해시함수의 반복횟수를 지정해서 암호화를 진행할 수 있다. 

가장 많이 사용되는 함수이다. 

 

 

 

Salt 솔트

 

솔트는 해시를 처리하는 단방향 함수에 추가입력으로 사용되는 랜덤 데이터이다. 

 

 

 

 

Bcrypt

 

blowfish 암호를 기반으로 설계된 암호화 함수이며, 강력한 해시 매커니즘이다. 

반복횟수를 늘릴 수 있기에, brute-force 공격에 대비가 가능하다. 

다만, 반복횟수를 늘리게 되면 연산속도는 늦춰진다. 

 

 

Blowfish 

 

key 방식의 대칭형 블록 암호이다. 

현재 수많은 암호화 제품군에 포함되어 있다. 

 

 

 

Scrypt 

 

key derivation function  키 유도 함수이다.

많은 메모리와 cpu 를 사용하게 됩니다. 

 

 

 

key derivation function  키 유도 함수

 

키 기반 해시이며, 키 값은 난수로 생성합니다. 

즉, 키 유도함수는 키를 난수로 생성하여서 암호화를 합니다. 

 

 

 

 

 

 

해시함수 속도가 빠르다 => 공격자가 brute force하기에 유리하다. 

보안도를 높이기 위해선, 무작위 salt와 반복적인 해싱작업을 수행해야 한다.