Hardware Security

    [SHA256] FF 모듈

    [SHA256] FF 모듈

    SHA-256 해시함수를 구성하는 모듈 중 FF 모듈을 Verilog HDL 언어로 만들어보려 한다. KISA에서 제공하는 SHA-256의 C코드의 FF 모듈과 기존 알고리즘을 활용한 FF 모듈을 만들 것이다. KISA에서 만든 C코드에 대한 알고리즘에 대하여 알고싶다면 아래의 글↓을 참고하면 된다. [SHA-256] 코드 및 알고리즘 분석 - (4) 이제 소스 코드를 분석하는 마지막 글이다. SHA-256 함수의 가장 핵심적인 부분이라고 말할 수 있는 SHA-Transform() 함수를 분석하겠다. (전체 코드는 KSIA에서 다운로드할 수 있습니다.) 1. 매크로(define s00m.tistory.com 기존 알고리즘을 활용한 FF 모듈에 대해 알고싶다면 아래의 글↓을 참고하면 된다. [SHA-256..

    FF 구성 모듈

    Transform() 함수에서 사용되는 FF() 매크로 함수에는 다양한 내부 매크로 함수들이 존재한다. 그래서 FF() 함수를 구성하는 함수들을 모두 모듈로 만들었다. 우선 c코드로 FF()함수와 이를 구성하는 함수들을 살펴보면 다음과 같다. #define FF(a, b, c, d, e, f, g, h, j) {\ T1 = h + Sigma1(e) + Ch(e, f, g) + SHA256_K[j] + X[j];\ d += T1;\ h = T1 + Sigma0(a) + Maj(a, b, c);\ } #if defined(_MSC_VER) #define ROTL_ULONG(x, n) _lrotl((x), (n)) // rotate left #define ROTR_ULONG(x, n) _lrotr((x), (..

    [SHA256] FF() 구성 모듈 - (1): RR, Sigma0, Sigma1

    [SHA256] FF() 구성 모듈 - (1): RR, Sigma0, Sigma1

    Transform() 함수 내부에서 동작하는 여러 모듈들.. RR(Rotate Right) * RTL // rotate right module calc_RR( input wire [8*8-1:0] x, input wire [4:0]n, output wire [8*8-1:0] calc_x ); assign calc_x = (x>>n) | (x13) | (x13) | (x13 : 0000_0000_0000_0000__0000_0000_0000_0000__0000_0000_0000_0000__0000_0000_0000_0000 x

    RR(Rotate Right)

    RR(Rotate Right)

    Transform() 함수 내부에서 동작하는 여러 모듈 중 하나. * RTL // rotate right module calc_RR( input wire [8*8-1:0] x, input wire [4:0]n, output wire [8*8-1:0] calc_x ); assign calc_x = (x>>n) | (x13) | (x13) | (x13 : 0000_0000_0000_0000__0000_0000_0000_0000__0000_0000_0000_0000__0000_0000_0000_0000 x