[요약]보안
질문
- 보안기사 책을 볼 것
보안 이론
대칭키와 비대칭키 차이
- 대칭키 암호화 방식 (비밀키 암호화 방식)
- 개념
- 하나의 비밀키를 이용한 암호화 방식
- 비대칭키 암호화 방식 (공개키 암호화 방식)
- 개념
- 공개키(public)와 개인키(private)를 이용한 암호화 방식
- 종류
- 공개키로 암호화
- 암호로서 효용성 2. 개인키로 암호화
- 공인인증체계에 사용하는 전자서명법
<!– - 암호화, 복호화시킬 수 있는 서로 다른 키 2개가 존재하는데 이 두 개의 키는 서로 1번 키로 암호화하면 반드시 2번키로만 복호화할 수 있고 2번 키로 암호화하면 반드시 1번키로만 복호화할 수 있는 룰이 있는 것이다.
- 그 중에서 하나 키는 모두에게 공개키로 공개키 저장소에 등록해놓고 그 누구에게도 알려주지않고 개인(서버)만 알고 있는 개인키를 서버가 소유해서 통신하는 방식 –> <!– - 예시
- A와 B가 존재하고 A와 B 둘다 공개키와 비밀키를 소유하고 있다.
- A가 평문을 B에게 보내고자 할 때 A는 B의 공개키를 가져와 암호화하여 전달한다.
- B는 전달받은 암호문(B의 공개키로 암호화된 평문)을 B의 비밀키로 복호화 하여 평문을 얻는다.
- 반대로 B 또한 A에게 평문을 전달할 때 A의 공개키를 사용하면 된다. –>
패스워드 암호화 방법
- 단순 텍스트(plain text)
- 단방향 해시 함수(one-way hash function)의 다이제스트(digest)
- 수학적인 연산을 통해 원본 메시지를 변환하여 암호화된 메시지인 다이제스트를 생성한다.
- 원본 메시지를 알면 암호화된 메시지를 구하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어야 하며 이를 ‘단방향성’이라고 한다.
- 패스워드가 “hunter2”라면 이 문자열을 흔히 사용하는 해시 알고리즘인 “SHA-256”으로 인코딩
- avalanche 효과
- 대부분의 해시 함수는 입력 값의 일부가 변경되었을 때 다이제스트가 완전히 달라지도록 설계되어 있다.
- “hunter3”라는 값의 SHA-256 다이제스트는 아래와 같으며 위의 “hunter2”와는 완전히 달라진 것을 확인할 수 있다.
- 단방향 해시 함수의 문제점
-
- 인식 가능성(recognizability)
- “레인보우 공격(rainbow attack)”
- 공격자가 전처리(pre-computing)된 다이제스트를 가능한 한 많이 확보한 다음 이를 탈취한 다이제스트와 비교해 원본 메시지를 찾아내거나 동일한 효과의 메시지를 찾을 수 있다.
- 인식 가능성(recognizability)
-
- 속도(speed)
- 해시 함수는 짧은 시간에 데이터를 검색하기 위해 설계된 것
- 해시 함수의 빠른 처리 속도로 인해 공격자는 매우 빠른 속도로 임의의 문자열의 다이제스트와 해킹할 대상의 다이제스트를 비교할 수 있다
- 속도(speed)
-
- 솔팅(salting)
- 솔트(salt)
- 단방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열
- 솔팅(salting)
- 이 원본 메시지에 문자열을 추가하여 다이제스트를 생성하는 것
- 솔트 + 원본 메시지(패스워드) = 다이제스트
- 사용자별로 다른 솔트를 사용한다면 동일한 패스워드를 사용하는 사용자의 다이제스트가 다르게 생성되어 인식 가능성 문제가 크게 개선된다.
- 솔트와 패스워드의 다이제스트를 데이터베이스에 저장하고, 사용자가 로그인할 때 입력한 패스워드를 해시하여 일치 여부를 확인할 수 있다.
- 이 방법을 사용할 때에는 모든 패스워드가 고유의 솔트를 갖고 솔트의 길이는 32바이트 이상이어야 솔트와 다이제스트를 추측하기 어렵다.
- 솔트(salt)
- 키 스트레칭(key stretching)
- 여러 단계의 해시 함수를 적용하여 다이제스트를 생성하는 과정
- 잘 설계된 패스워드 저장 시스템에서는 하나의 다이제스트를 생성할 때 어느 정도(일반적인 장비에서 0.2초 이상)의 시간이 소요되게 설정한다.
- “억지 기법 공격(brute-force attack)”으로 패스워드를 추측하는 데 많은 시간이 소요되도록 하기 위한 것
- 솔팅과 키 스트레칭으로 구성된 암호화 시스템을 구현하려고 한다면 이미 검증된 암호화 시스템을 사용할 것을 권장한다.
댓글남기기