디지털 서명
NIST에서 정의 한 것에 따르면, 데이터를 암호학적으로 변환한 결과로서 적절하게 구현할 경우 출처인증, 데이터 무결성, 서명인 부인 봉쇄를 검증하는 메커니즘에 사용된다.
디지털 서명은 데이터에 종속되는 비트 패턴으로, 파일, 메시지 또는 다른 유형의 데이터 블록을 입력 값으로 하는 함수 형태의 에이전트에 의해 생성 된다.
디지털 서명 생성과 검증
위의 그림은 일반적인 디지털 서명 생성 절차를 나타낸 그림이다.
디지털 서명은 메세지 출처와 무결성은 지켜주지만, 기밀성을 지켜주지는 못한다.
밥은 메시지 M을 해시 함수에 넣은 후, 디티절 서명 생성 알고리즘을 통해 짧은 블록을 만들어 메시지 M에 첨부한다
앨리스는 받은 비트 블록과 메시지 M을 동일하게 해시 함수-디지털 서명 생성 알고리즘에 넣어서 값을 비교한다.
이를 통해 상대방을 인증한다.
RSA 디지털 서명 알고리즘
RSA 서명 알고리즘의 핵심은 RSA 암호화를 위해, 메세지 해시를 암호화 한다는 점이다.
RSA 디지털 서명 알고리즘은 다양하나, 오늘은 RSA_PSS에 대해 알아보자
내가 생각하는 RSA_PSS의 핵심은, RSA가 키나 짧은 메시지 암호화에 유리한 점에 기반해서 EM을 생성하는 것이라 생각한다
공격자가 주어진 메시지 다이제스트와 동일한 메시지 다이제스트를 생성할 수 있는 다른 메세지를 찾기 어렵게 만드는 것이다
RSA-PSS 알고리즘의 과정은 다음과 같습니다:
- 서명하고자 하는 메시지 M으로부터 해시값 또는 메시지 다이제스트 mHash를 생성
- mHash에 상수 padding1과 의사난수 솔트를 패딩하여 M’을 생성
- M’로부터 해시값 H를 생성
- 상수 padding2와 솔트로 구성되는 블록 DB를 생성
- DB의 길이와 동일한 길이를 갖는 랜덤한 값을 출력하는 마스크 생성 함수 MGF에 H를 입력하여 랜덤한 값을 출력
- H에 16진수 상수 BC, MGF의 출력값과 DB의 XOR을 패딩하여 부호화된 메시지(EM) 블록을 생성
- 서명자의 개인 키를 이용하여 RSA로 EM을 암호화하여 디지털 서명값 S를 생성
이렇게 생성된 디지털 서명값 S와 메시지 M, 그리고 공개키를 사용하여 검증할 수 있습니다.
검증 과정에서는 다음과 같은 절차를 따릅니다:
- 수신자는 서명자의 공개키를 이용하여 디지털 서명값 S를 복호화하여 EM을 추출
- EM으로부터 DB와 H를 추출
- DB의 길이와 동일한 길이를 갖는 랜덤한 값을 출력하는 마스크 생성 함수 MGF에 H를 입력하여 랜덤한 값을 출력
- H에 16진수 상수 BC, MGF의 출력값과 DB의 XOR을 패딩하여 생성한 EM’과 EM이 일치하는지 검증
- 일치하면 디지털 서명이 유효함을 검증한 것으로 판단합니다.
728x90
'Computer Science > Security' 카테고리의 다른 글
대칭 암호를 이용한 대칭키 분배 (0) | 2023.04.08 |
---|---|
원격 사용자 인증 원칙 (0) | 2023.04.08 |
Diffie-hellman (0) | 2023.04.08 |
RSA는 무엇인가? (0) | 2023.04.05 |
공개 키 (0) | 2023.04.05 |