RSA는 공개키와 개인키를 이용하는 암호 기법이다. 공개키 암호화와 전자서명에 사용되는 구성 방식이 있으며, 실제 사용에서는 수학적 연산뿐 아니라 메시지 인코딩과 매개변수까지 포함한 방식이 중요하다.
분야 | 공개키 암호 기법 |
|---|
키와 연산
공개키는 공개 가능한 정보를 담고 개인키는 비밀로 유지한다. 암호화에서는 수신자의 공개키로 보호한 내용을 해당 개인키로 복호화하는 구성을 사용한다. 서명에서는 서명자의 개인키로 생성한 서명을 공개키로 검증한다. 두 목적의 절차를 단순히 같은 연산의 방향만 바꾼 것으로 설명해서는 안 된다.
패딩과 표준 구성
PKCS #1은 RSAES-OAEP 같은 암호화 방식과 RSASSA-PSS 같은 서명 방식을 규정한다. 패딩은 공간을 채우는 장식이 아니라 보안 구성의 일부다. 인코딩 없이 정수에 RSA 연산만 적용한 예제를 실제 보호 방식으로 사용하지 않는다.
큰 파일을 보호하는 경우
OAEP로 처리할 수 있는 메시지 크기는 모듈러스와 해시 출력 길이에 따라 제한된다. 큰 데이터를 보호할 때는 대칭키 암호와 키 전달 방식을 조합하는 구조를 고려한다. RSA를 파일 전체에 임의로 쪼개 적용하는 방법으로 대체하지 않는다.
검증과 신뢰
서명 검증이 성공했다는 사실과 그 공개키가 원하는 사람이나 서비스의 키라는 사실은 별개의 문제다. 인증서나 신뢰할 수 있는 배포 경로 등으로 키의 소속을 확인해야 한다. 키 크기뿐 아니라 알고리즘 조합과 프로토콜, 구현의 오류 처리도 함께 검토한다.
참고 자료