의견.png

"SHA3"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(패딩)
(패딩함수)
32번째 줄: 32번째 줄:
 
메시지를 r-bit 블록으로 균등하게 나눌 수 있도록 패딩이 필요하다. SHA-3은 패딩 기능에서 패턴 10*1을 사용하며, 1비트 다음에 0비트 이상(최대 r-1)과 최종 1비트가 요구된다. r-1 제로(0)비트의 최대 값은 마지막 메시지 블록이 r-1비트 길이일 때 발생하며 마지막 1비트 이전에 r-1의 제로(0)비트를 포함하는 초기 1비트 뒤에 또 다른 블록이 추가된다. 또한 r에 의해 이미 메시지 길이를 분할할 수 있는 경우에도 1비트 2개가 추가된다. 이 경우, 1비트를 포함하는 또 다른 블록이 메시지에 추가되며 r-2개의 제로(0)비트와 1비트도 추가된다. 이는 패딩과 같이 r에 의해 길이가 분할될 수 있는 메시지가 이러한 비트를 제거한 메시지와 같은 해시를 생성하지 않도록 하기 위해 필요한 과정이다.
 
메시지를 r-bit 블록으로 균등하게 나눌 수 있도록 패딩이 필요하다. SHA-3은 패딩 기능에서 패턴 10*1을 사용하며, 1비트 다음에 0비트 이상(최대 r-1)과 최종 1비트가 요구된다. r-1 제로(0)비트의 최대 값은 마지막 메시지 블록이 r-1비트 길이일 때 발생하며 마지막 1비트 이전에 r-1의 제로(0)비트를 포함하는 초기 1비트 뒤에 또 다른 블록이 추가된다. 또한 r에 의해 이미 메시지 길이를 분할할 수 있는 경우에도 1비트 2개가 추가된다. 이 경우, 1비트를 포함하는 또 다른 블록이 메시지에 추가되며 r-2개의 제로(0)비트와 1비트도 추가된다. 이는 패딩과 같이 r에 의해 길이가 분할될 수 있는 메시지가 이러한 비트를 제거한 메시지와 같은 해시를 생성하지 않도록 하기 위해 필요한 과정이다.
 
* 처음에는 1비트를 필요로하므로 끝에 몇 개의 추가 0비트만 가진 다른 메시지를 동일한 해시로 생성하지 않는다.
 
* 처음에는 1비트를 필요로하므로 끝에 몇 개의 추가 0비트만 가진 다른 메시지를 동일한 해시로 생성하지 않는다.
 +
* 메시지는 패딩 된 후에 r비트와 같아야 한다. 따라서 마지막 1비트의 위치는 다른 해시 변형에 대해 보안 증명(security proof) 기능이 작동하기 위해 필요한 r을 멀티 레이트 패딩(multi-rate padding)을 나타낸다. 만약 패딩이 없다면, 동일한 짧은 메시지의 다른 해시 변형들은 자른 부분까지도 동일하게 나온다.
  
 
=== 블록 순열 ===
 
=== 블록 순열 ===

2019년 7월 15일 (월) 15:28 판

SHA-3(Secure Hash Algorithm 3)란 SHA-1SHA-2를 대체하기 위해 미국 국립표준기술연구소(NIST)가 2015년 8월 5일에 발표한 암호화 해시함수이다.

개요

기존의 방식과는 다르게 NIST(미국 국림표준기술연구소)가 직접 디자인한 것이 아니라 공개적인 방식을 통해 후보를 모집한 다음 함수 안정성을 분석하여 몇 차례에 걸쳐 후보를 걸러내어 선정하여 2012년 10월 2일 SHA-1과 SHA-2에서 파생되지 않아 알고리즘에 차이가 크며, 파생되지 않았기 때문에 SHA-2의 취약점을 가지지 않은 귀도 베르토니(Guido Bertoni), 조안 데먼(Joan Daemen), 질 반 아쉐(Gilles Van Assche), 마이클 피터스(Michael Peeters)가 설계한 케착(Keccak)을 SHA-3의 해시 알고리즘으로 선정하였다. 또한 스펀지 구조로 이루어져 있기 때문에 스펀지 함수라고도 불린다.

등장배경

SHA-3은 2004 ~ 2005년부터 여러 암호화 해시 알고리즘에 대한 공격이 시작되기 시작했다. 당시에 당장에 큰 문제는 없었지만 빠른 시일 내에 현재 사용하는 암호화 해시 알고리즘이 무효화될 것을 고려하여 대비를 해둬야 했기 때문에 2006년 미국 국립표준기술연구소(NIST)는 미국 국가안보국(NSA)와 함께 해시 워크샵에서 공개 대회를 발표하였다. 준비가 끝난 공개 대회는 2008년 말까지 입학 허가서가 제출되었으며 케착(Keccak)은 51명의 후보자 중 한 명으로 선택되어 2009년 7월에 14개 알고리즘이 2차 라운드까지 선발되었고, 2010년 12월에 마지막 라운드까지 진출 하여, 2012년 10월 2일에 최종 우승하여 SHA-3 표준안으로 선정되었다. 또한 2014년에 미국 국립표준기술연구소(NIST)는 연방 정보 처리 표준(FIPS) 202 "SHA-3 표준 : 순열 기반 해시와 확장 가능한 출력 기능" 초안을 발행했고, 2015년 8월 5일, 미국 국립표준기술연구소(NIST)가 SHA-3 암호화 해시 함수 표준을 발표했다.

특징

SHA-3은 현재 SHA-2가 출력할 수 있는 메시지 다이제스트의 크기를 모두 출력할 수 있고 암호학적 해시 암수가 갖춰야 할 충돌 저항성, 역상 저항성, 제2역상 저항성을 모두 갖추고 있기 때문에 현재 SHA-2가 사용되고 있는 모든 곳에서 SHA-3를 바로 적용시키는 것이 가능하다.

스펀지 구조

SHA-3는 데이터가 스펀지에 '흡수'되는 스펀지 구조를 사용한다. 그 결과 데이터가 스펀지에 "스퀴드(squeezed)"된다. 흡수 단계에서는 메시지 블록이 XORED되어 주의 서브셋으로 되며, 그런 다음 순열 함수 f를 사용하여 전체로 변환된다. "스퀴즈(squeeze)"단계에서는 출력 블록을 상애 변환 함수 f와 교대로 상태 하위 집합에서 읽으며 쓰고 읽는 상태의 부분의 크기를 "레이트(rate)"(표시된(denoted) r)라고 하고, 입/출력으로 손대지 않은 부분의 크기를 "용량(capacity)"(표시된(denoted) c)이라고 한다. 이 능력은 계획의 보안을 결정하며, 최대 보안 수준은 용량의 절반의 크기를 가진다. 입력 비트 문자열 N, 패딩 함수 패드, 폭 b의 비트 블록, 속도 r 및 출력 길이 d에서 작동하는 순열 함수 f를 고려할 때, 용량 c = b - r, 스펀지 구조 Z = 스펀지[f,pad,r](N,d), 약간의 길이 d를 산출하는 스펀지 구조 Z는 다음과 같이 작용한다.

  • 예제
    • 패드 기능을 사용하여 입력 N을 패드하여 r로 분할할 수 있는 길이(n = len(P)/r이 정수)인 패딩 비트 문자열 P를 산출한다.
    • P를 연속해서 r-bit 조각 P0, ..., Pn-1로 나눈다.
    • 상태 S를 b 0 비트의 문자열로 초기화한다.
    • 각 블록 Pi에 대해 입력값을 흡수한다.
      • 끝에 c 0 비트의 끈으로 Pi를 확장하고, 길이 b 중 하나를 산출한다.
      • XOR that with S
    • 블록 순열 f를 결과에 적용하여 새로운 상태 S를 산출한다.
    • Z를 빈 문자열로 초기화한다.
    • Z의 길이가 d보다 작은 경우:
      • S의 첫 번째 R 비트를 Z에 추가한다.
      • Z가 여전히 d비트보다 작을 경우, f를 S에 적용하여 새로운 상태 S를 산출한다.
    • Z를 d비트로 자른다.

내부 상태 S가 Z로 출력되는 것 외에 c의 추가 정보 비트를 포함하고 있다는 사실은 머클-담고르드(Merkle-Damgorrd) 구조에 기초한 SHA-2, SHA-1, MD5 및 기타 해시가 취약한 길이 연장 공격을 방지한다. SHA-3에서 상태 S는 5 × 5 w-비트 워드의 배열(w=64), b = 5 × 5 × 64 = 합계 1600 비트로 구성된다. 또한 케착(Keccak)은 또한 2개의 작은 단어 크기(총 상태 25비트)에 대해 정의되는데, 소형 상태 크기는 암호화 공격을 테스트하는 데 사용할 수 있으며, 중간 상태 크기(w = 8, 200비트, w = 32, 800비트)는 실용적이고 가벼운 애플리케이션에서 사용할 수 있다. SHA-3-224, SHA-3-256, SHA-334, SHA-3-512 인스턴스의 경우 r이 d보다 크므로, 짜임 단계에서는 추가적인 블록 퍼머가 필요 없으며, 상태의 선행 d비트는 원하는 해시이다. 그러나 SHAKE-128 및 SHAKE-256은 임의 출력 길이를 허용하기 때문에 최적의 비대칭 암호화 패딩과 같은 응용 프로그램에 유용하다.

패딩함수

메시지를 r-bit 블록으로 균등하게 나눌 수 있도록 패딩이 필요하다. SHA-3은 패딩 기능에서 패턴 10*1을 사용하며, 1비트 다음에 0비트 이상(최대 r-1)과 최종 1비트가 요구된다. r-1 제로(0)비트의 최대 값은 마지막 메시지 블록이 r-1비트 길이일 때 발생하며 마지막 1비트 이전에 r-1의 제로(0)비트를 포함하는 초기 1비트 뒤에 또 다른 블록이 추가된다. 또한 r에 의해 이미 메시지 길이를 분할할 수 있는 경우에도 1비트 2개가 추가된다. 이 경우, 1비트를 포함하는 또 다른 블록이 메시지에 추가되며 r-2개의 제로(0)비트와 1비트도 추가된다. 이는 패딩과 같이 r에 의해 길이가 분할될 수 있는 메시지가 이러한 비트를 제거한 메시지와 같은 해시를 생성하지 않도록 하기 위해 필요한 과정이다.

  • 처음에는 1비트를 필요로하므로 끝에 몇 개의 추가 0비트만 가진 다른 메시지를 동일한 해시로 생성하지 않는다.
  • 메시지는 패딩 된 후에 r비트와 같아야 한다. 따라서 마지막 1비트의 위치는 다른 해시 변형에 대해 보안 증명(security proof) 기능이 작동하기 위해 필요한 r을 멀티 레이트 패딩(multi-rate padding)을 나타낸다. 만약 패딩이 없다면, 동일한 짧은 메시지의 다른 해시 변형들은 자른 부분까지도 동일하게 나온다.

블록 순열

속도와 안정성

종류

참고자료

  • SHA-3〉, 《위키백과》

같이 보기

  의견.png 이 SHA3 문서는 암호 알고리즘에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.