■ 키 (Key)
- 대칭키 암호, 비대칭키 암호, 메시지 인증 코드, 전자서명 등의 암호기술을 사용하려면 반드시 키(Key)라 불리는 대단히 큰 수가 필요하다
- 키의 종류에는 크게 세션키와 마스터키가 있다
■ 세션키(Session Key)
- 통신을 하는 상대방끼리 하나의 통신 세션 동안에만 사용하는 암호화키, 하나의 키를 사용한 암호문이 많을 경우, 이를 분석하여 키를 계산할 가능성이 있으므로 이를 막기 위해 사용하는 임시적인 키
- 메시지의 기밀성 또는 무결성을 보장하기 위해서 메시지 암호화에 직접 적용되는 키
- 키 계층 구조상에서 최하위에 위치하는 상위의 키에 의해 암호화되며, 사용기간이 매우 짧고 송신자와 수신자가 동시에 키를 갱신하는 특징을 보임
■ 마스터 키 (Master Key)
- 통신 때마다 새롭게 만들어지는 세션키와는 달리 반복적으로 사용되는 키를 마스터 키라고 부름
■ 솔트 (Salt)
- 패스워드를 저장할 때 해시를 이용하는데, 안전도를 높이기 위해 무작위 문자열을 추가한다. 이렇게 추가되는 문자열을 솔트(Salt)라 한다
- 의사난수 생성기로 만들어지는 랜덤한 수로써 키(key)를 만들 떄에 패스워드와 함께 일방향 해시함수에 입력된다
- 단방향 해시함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열이다
- 원본 메시지에 문자열을 추가하여 다이제스트를 생성하는 것을 솔팅(Salting)이라 한다
- 솔트는 사전공격을 막기 위해 존재한다.
* 사전공격 : 미리 키 후보를 계산해서 준비해두는 방법
☆ 솔트의 특징
- 여러 사용자에 의해 중복 사용된 동일한 패스워드가 서로 다르게 저장되도록 한다
- 해시 연산 비용이 증가되어 오프라인 사전적 공격을 어렵게 한다
- 한 사용자가 동일한 패스워드를 두 개 이상의 시스템에 사용해도 그 사실을 알기 어렵게 한다
- 솔트는 암호화 된 상태로 패스워드 파일에 저장되는 것이 아니라 의사난수 생성기로 만들어지는 랜덤한 수이다
■ 난수
- 정의된 범위 내에서 무작위로 추출된 수를 일컫는다
- 누구라도 그 다음에 나올 값을 확신할 수 없어야 하며, 특히 난수의 추출에 대해 민감할 수 있는 복권 추첨에서는 난수를 발생하기 위하여 컴퓨터를 사용하지 않는다. 도구를 사용하는 물리적인 방법으로 난수를 추출한다
☆ 난수의 성질
- 무작위성 : 통계적인 편중 없이 수열이 무작위로 되어 있는 성질
- 예측 불가능성 : 과거의 수열로부터 다음 수를 예측할 수 없다는 성질
- 재현 불가능성 : 같은 수열을 재현할 수 없다는 성질. 재현하기 위해서는 수열 그 자체를 보존해두는 수밖에 없다
☆ 난수의 용도
- 비표(Nonce) 생성 : 정보 기술에서 시간에 비례하는 매개 변수. 시간에 따라 변하기 때문에 중계 및 재현 시도의 적정 여부, 현재 시각의 비교 결과를 쉽게 알 수 있다
- 솔트의 생성 : 패스워드를 기초로 한 암호화 등에서 사용한다
- 일회용 패드 : 패딩에 사용되는 열을 생성하는 데 사용한다
- 키의 생성 : 대칭키 암호나 메시지 인증 코드에서 사용한다
- 키쌍의 생성 : 공개키 암호나 전자서명에서 사용한다
- 초기화 벡터(IV)의 생성 : 블록암호 모드인 CBC, CFB, OFB에서 각각 사용한다
★ 의사(Pseudo) 난수
- 컴퓨터에 의해 만들어지는 난수
- 어떤 유한 개수의 조립된 수의 주기성 없는 계열을 난수라고 하는데, 산술 난수를 컴퓨터에 발생시키면 커다란 주기를 갖는다. 이와 같이 진정한 의미로는 난수가 아니지만 사용상 난수로 간주해도 지장이 없는 난수를 의사 난수라고 한다
- 생성된 수열의 어느 부분 수열도 다른 부분 수열로부터 추정될 수 없어야 한다
'정보보호론 > 보안과 암호' 카테고리의 다른 글
가상화폐, 비트코인 그리고 블록체인 (0) | 2020.09.11 |
---|---|
전자상거래 보안 (0) | 2020.09.11 |
공개키 기반 구조 (PKI) (0) | 2020.09.10 |
전자서명과 은닉서명 (0) | 2020.09.10 |
해시함수 (Hash Function) (0) | 2020.09.10 |