보안

패스워드 기반 암호(PBE, Password Based Encryption), 솔트 salt, CEK, KEK

스윙스윙 2021. 11. 29. 17:18

▣ 패스워드 기반 암호(PBE, Password Based Encryption), 솔트 salt, CEK, KEK

▶ 패스워드 기반 암호 설명

패스워드를 기초로 해서 만든 키로 암호화를 수행하는 방법

RSA사의 PKCS #5규격으로 규정되어 있는 PBE는 Java의 java.cryto패키지 등에 내장

암호 소프트웨어 PGP에서 키를 보존
키 스페이스가 TripleDES나 Blowfish보다 훨씬 작아 안전하지 못함
사전공격에 취약함
해쉬와 일반적인 대칭 암호화를 사용함
미리 패스워드 해쉬 목록을 만들어 놓고 복호화 할 수 있음
salting와 iteration counts를 도입하여 보안성 강화

 

• CEK(contents encrypting key): 정보(콘텐츠)가 암호화의 대상
• KEK(key encrypting key): 키가 암호화의 대상

 

▶ PBE 암호화

 

 


2021년 117번

정답 : 3번

KEK를 생성하는데 입력되는 솔트(Salt)값은 중간자 공격이 아니라 입력된 password로 생성 가능한 집합 세트의 경우의 수를 늘리기 위한 용도로 사용됨

 

PBE(Password Based Encryption)는 비밀번호를 기반으로한 암호화 과정으로, 사용자가 입력한 비밀번호를 가공하여 암호화에 필요한 키를 생성하고 이 키로 데이터를 암호화하는 기법임

 

PBE는 여러가지 방법이 있으나, RFC 8018(PKCS #5 : Password Based Cryptographty Specification Version 2.1)로 표준이 제정되어 있으며, 키 유도 Scheme, 암호화/복호화 Scheme, 메시지 인증 scheme으로 구성됨

 


2016년 101번

정답 : 1번

솔트(Salt) : 해쉬(hash)값 생성 시 원래의 문자열에 추가적인 정보를 더하여 메시지다이제스트를 생성하는 기법. Hash값에 대한 전수공격(brute force)를 통해 사전에 계산된 Rainbow Table정보를 활용하기 어렵도록 복잡하고 긴 문자열에 대한 해시값을 만들기 위해 활용

 

솔트적용 예시

USER ID : TEST, 가입일 : 160101, 비밀번호 : 1234인 경우

-> Salt 미적용 시 -> hash('1234')

-> Salt 적용 시 -> hash('TEST1234'), hash('1601011234') 등