본문 바로가기

Linux

[Linux] 암호화 해싱 함수SHA512

- MD5를 대신해서 쓰이며 SHA-1과 동일한 기반 구조, 모듈러 연산, 논리 이진연산 사용

- 암호분석은 SHA-2SHA-1과 동일하나, 좀더 높은 안전성을 갖고 있음

- 512비트 값을 갖는 일방향 해시함수

- 최대 길이가 2^128비트 이하인 메시지를 입력으로 사용

 

- 입력 데이터는 길이가 1024비트인 블록으로 나누어서 처리됨

- 80개의 라운드로 구성

  512 비트 버퍼를 갱신

  ○ 현재의 메시지 블록으로부터 얻은 64-비트값 Wt와 덧셈 상수 Kt를 사용함

- SHA-51246~80 라운드를 통과해야 공격으로부터 안전한 것으로 판단함

 

- 출력 값에 있어서는 MD-5 보다 길기 때문에 SHA가 더 안전하나, SHA 버퍼 크기가 MD-5 보다      

  크기 때문에 속도면 에서는 MD-525% 정도 더 빠름

알고리즘

출력비트수

블록크기

라운드 수

MD5

128

512

64

SHA512

512

1024

80

 

CentOS 에서 Password 저장 형태

/etc/shadow 암호 필드 분석

$6

- 해쉬 함수(SHA512)

 

$3VoxkdR4HzKzd9M8

- Salt (Hash 알고리즘에 적용되기전 암호에 붙는 값) 랜덤으로 Salt 값이 생성

 

$YMSsAvso0 …………7KCiK3

- $6$VoxkdR4HzKzd9M8 를 이용하여 해쉬된 결과 값

-> 현재 SHA512 방식으로 해싱이 된 것을 확인할 수 있음

 

 

- authconfigtest|grep hashing 명령으로 해싱 알고리즘이 sha512인것을 확인

 

 

솔트(SALT)

- 단방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열

 

SALT 가 적용 되는 방

$6$VoxkdR4HzKzd9M8 $YMSsAvso01234

암호가 해쉬 되기 전에 Salt(랜덤)이 합쳐진 후 해쉬 함수에 적용 받게 됨

 

- MD5는 널리 사용된 해쉬 알고리즘이지만, 충돌 회피성에서 문제점이 있다는 분석이  있으므로 기존의 응용과의

  호환으로만 사용하고 더 이상 사용하지 않도록 하고 있으며 리눅스 에서는 사용자 비밀번호를 MD5알고리즘에서

  SHA 512 알고리즘으로 사용 되며 암호화 방식을 좀 더 안전하게 바꾸기 위하여 사용함

  authconfigtest|grep hashing 명령으로 암호화 알고리즘 확인하여 md5일경우

  authconfigpassa|go=sha512 –update sha512 로 변경함