현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

암호·해시

기밀성·인증·무결성과 키·블록·출력 길이를 따로 기억한다.

예상 읽기 3

실기 학습 목표

기밀성·인증·무결성과 키·블록·출력 길이를 따로 기억한다.

핵심 이론

대칭키는 같은 비밀키로 암복호화하고 공개키 방식은 공개키·개인키 쌍을 사용한다. B만 읽게 하려면 B의 공개키로 암호화하고 B의 개인키로 복호화한다. 전자서명은 서명자의 개인키로 생성하고 공개키로 검증한다.

전자서명은 무결성과 출처 인증을 제공하며 파일 자체의 기밀성을 자동 제공하지 않는다. 해시는 고정 길이 요약값이며 복호화 절차가 아니다. 충돌 저항성은 서로 다른 두 입력의 동일 해시를 찾기 어려운 성질이다.

AES는 블록 128비트, 키 128·192·256비트다. DES는 블록 64비트·유효 키 56비트, IDEA는 블록 64비트·키 128비트, Skipjack은 블록 64비트·키 80비트다. 길이 비교는 학습용이며 오래된 알고리즘을 신규 보안 설계에 권장하는 의미가 아니다.

MD5 출력은 128비트, SHA-256은 256비트다. 바이트 수는 비트/8, 16진수 문자 수는 비트/4다. 솔트는 비밀번호 해시의 계정별 무작위 값으로 공통 사전 계산 재사용을 어렵게 한다.

모든 n명 쌍마다 별도 대칭키를 쓰면 키 수는 n(n−1)/2다. 키 관리 방식이 달라지면 이 공식을 그대로 적용하지 않는다.

개념 도식

좌우로 이동해 그림을 확인하세요.그림 크게 보기
암호·해시의 관계와 흐름을 보여 주는 도식
암호·해시의 관계와 흐름을 보여 주는 도식

무엇을 보호하려는지부터 정한다

대칭키 암호는 같은 비밀키로 암호화·복호화하고, 공개키 암호는 서로 연결된 공개키·개인키를 사용한다. 해시는 입력을 고정 길이 요약값으로 바꾸며 암호문처럼 키로 원문을 복원하는 절차가 아니다. 암호화와 해시를 모두 ‘암호 알고리즘’으로 뭉뚱그려 답하지 않는다.

기밀 메시지를 B만 읽게 하려면 기본 공개키 모델에서 B의 공개키로 암호화하고 B의 개인키로 복호화한다. 서명은 서명자의 개인키로 만들고 신뢰할 수 있는 서명자 공개키로 검증한다. 방향이 다른 이유는 각각 수신자만 읽기와 발신자 확인을 목표로 하기 때문이다.

숫자 의미
키 길이AES-256의 256비트
기본 블록 길이AES는 128비트
해시 출력 길이SHA-256은 256비트 = 32바이트

256비트 해시를 16진수로 쓰면 한 자리 4비트이므로 64문자다. 솔트는 계정별 무작위 입력을 더해 동일 비밀번호의 공통 해시 재사용을 어렵게 한다. 충돌 저항성은 서로 다른 두 입력의 같은 해시를 찾기 어려운 성질이다. 해시 일치만으로 발신자 신원이 인증되는 것은 아니다.

풀이 예시

서버는 사용자가 같은 비밀번호를 설정하더라도 각 계정마다 서로 다른 무작위 값을 비밀번호와 함께 비밀번호 해시 함수에 입력하고 그 값도 저장한다. 미리 계산한 공통 해시 목록의 재사용을 어렵게 하려는 이 계정별 무작위 값의 이름을 쓰시오.

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
솔트

풀이 과정

계정별 솔트를 사용하면 같은 비밀번호도 서로 다른 해시 결과를 갖게 할 수 있다. 솔트 자체를 반드시 비밀로 숨길 필요는 없지만 안전한 비밀번호 전용 해시 알고리즘과 충분한 작업 비용도 필요하다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.