본문 바로가기
공부/Android

SHA-256 서명

by svcbn 2025. 12. 24.

12/19

 

해시 함수는 수많은 시스템에서 보안과 데이터 무결성을 지 키기 위해 쓰이는 중요한 기술이다. 그 중, SHA-256 은 가장 널리 사용되는 해시 알고리즘 중 하나로... 단방향 알고리즘이라고도 한다. 더 발전된 다른 기술로는 양방향 알고리즘으로, AES-256 이라는 것도 있는 것 같은데.. 그건 다음 기회에

 

SHA-256

SHA-256 은 Secure Hash Algorithm 256-bit 의 약자로, 입력값을 256비트(32바이트) 길이의 해시값으로 바꿔주는 함수이다.

작동 원리는,

입력값을 byte 로 변환하고(UTF-8 인코딩 등) >> 512bit 단위로 쪼개고, 부족한 부분은 0으로 패딩한 다음 >> 64번의 round 를 거쳐 내부 상태를 섞고 >> 최종적으로 256bit 의 해시값을 출력한다.

이 과정에서, 한 글자만 바뀌어도 완전히 다른 값이 나오기 때문에, 변조 전과 후의 데이터 무결성을 검증하는 것이 주요한 사용 목적. 대신, 과정이 과정인지라 복호화가 불가능하다.

 

SHA-256 서명

따라서, SHA-256 서명은 앞에서 설명한 SHA-256 해시값 변환 알고리즘을 사용하고, 그 해시값을 송신자의 Private Key 를 사용해 암호화하는 방식이다. 복호화를 위해서는 이 과정에서 사용된 개인키를 활용해야 하고, 직접 계산한 데이터의 해시값과 비교하여 일치 여부를 확인한다.

특징으로는,

무결성
데이터가 조금이라도 수정되면 해시값이 완전히 달라져 위변조 여부를 즉시 알 수 있다.

부인 방지
송신자의 개인키로만 생성 가능하므로, 보낸 사람이 나중에 전송 사실을 부인할 수 없다.

보안성
현재 가장 널리 사용되는 표준 해시 함수로, 충돌 저항성(서로 다른 데이터가 같은 해시를 가질 확률) 이 매우 낮아 안전하다.

그렇기 때문에,
주로 SSL/TLS 인증서로 웹사이트의 보안 연결을 증명하는 인증서 서명에도 사용하고, 소프트웨어 배포시 다운로드한 파일이 개발사가 배포한 원본인지 확인하는 용도로도 쓰인다. 안드로이드 앱 서명에도 여러 종류가 있는데, 이 경우에 속한다. 또한 블록체인의 핵심 기술로 암호화폐에서 거래를 승인하고 블록의 무결성을 증명하기도 한다.

실제로, 내 경우에는 중국의 모 회사의 결제 모듈을 활용하는 중인데, 결제시 상품 주문서를 발행하는 과정에서 이 SHA-256 서명 과정을 거친다. 생각보다 엄청 자주 쓰이고 있는 데이터 무결성 방식인듯?

 

'공부 > Android' 카테고리의 다른 글

Intent / Activity / Service  (1) 2025.12.28
.jar / .aar  (0) 2025.12.12
AndroidManifest  (0) 2025.12.11
APK 서명 체계 v3  (1) 2025.12.10
Android Studio 입문  (1) 2025.12.09