View

보안은 모든 곳에 있고 어디에서나 중요하다. 
엔터프라이즈의 환경에서는 계정 정보를 통합하여 관리하고 서비스 하는 경우가 많다. 
따라서 제공하는 솔루션에서 계정관리 시스템과 연계할 수 있도록 해야 하는데, 
이때 인증Authentication/인가Authorization는 매우 중요한 요소이다. 

그리고 일정 수준 이상으로 성숙한 솔루션들은 웹을 기반으로 제어할 수 있도록 기능을 제공한다. 
이때 민감한 시스템의 경우는 내부망에 구성했음에도 불구하고 SSL을 적용하는 경우가 더러 있다. 

이를 위해서 간단하게 간을 보았다. 

 


 

* LDAP

- LDAP의 기능은 무엇인가?
  > LDAP (Lightweight Directory Access Protocol)은 네트워크 상에서 어떠한 정보(전화번호, 주소, 조직, 파일, 프린터등 하드웨어 위치, 계정 등등)를 쉽게 찾아 볼 수 있게 하는 소프트웨어 프로토콜이다.
  > LDAP은 디렉토리 서비스를 의미하기도 하고 LDAP 프로토콜을 의미하기도 하는데, LDAP 디렉토리 서비스는 LDAP 프로토콜의 구현체이다. 
  > LDAP은 계층구조를 갖는 데이터를 네트워크를 통해서 교환할 수 있게 하는 프로토콜인데, 이는 인증을 위한 중앙 저장소의 프로토콜로 사용하는 것이다. 
  > 프로토콜이라는 것은 표준이기 때문에 각 어플리케이션 벤더들이 이를 기반으로 인증기능을 구현한다. 
  > 이러한 기능을 하는 서비스를 일반적으로 디렉토리 서비스라고 한다. 

- LDAP 이랑 비슷한 기능을 하는 서비스는 무엇이 있을까?
  > AD(Active Directory)는 windows server 2000 이상에서 제공하는 directory 서비스로, 그룹/사용자/네트워크 통합 관리 기능을 지원한다. 
  > Red Hat Directory Service
  > OpenLDAP 
  > Apache Directory Server 등이 있다. 

- AD, Kerberos와 차이점은 무엇인가? 
* AD (AD와 LDAP을 비교하는 것은 Apache와 http를 비교하는 것과 같다?) 
  > AD은 LDAP을 사용할 수도 있고 Kerberos를 사용하여 인증할 수도 있다. 
  < AD와 Kerberos는 cross-platform을 지원하지 않기 때문에 LDAP을 같이 제공한다. 
  > AD는 크게 Windows 사용자, 장치, 어플리케이션에 대한 디렉토리이다. 
  < LDAP은 반대로 Windows 구조가 아닌 Linux/Unix 환경에 대해서 동작하며 더 기술적인? 어플리케이션이다. 
  > AD는 MDC (Microsoft Domain Controller)가 필요하며 도메인 구조를 통해 SSO를 할 수도 있다. 
  < LDAP은 도메인이나 SSO와 같은 개념이 없다. 
  < LDAP은 OSS로 구현되어 있어서 AD에 비해서 유연하다. 

- Kerberos
  > Kerberos는 인증과 SSO를 위한 프로토콜이며, LDAP은 디렉토리 서비스를 위한 프로토콜이다. 
  > Kerberos는 티켓 기반의 메커니즘을 이용하여 인증을 수행한다. 

- LDAP의 아키텍처/구성요소는?
  > LDAP의 인증에는 2가지 옵션이 있다. 하나는 simple이고 또 다른 하나는 SASL(Simple Authentication and Security Layer)이다. 
  > Simple 옵션은 3가지에 대한 인증이 가능하다
    . Anonymous 인증 : client에게 anonymous 상태로 LDAP 에게 전달함
    . Unauthenticated 인증 : 오직 logging 목적으로 client에 대한 접근권한을 주지 않음. 
    . Name/Password 인증 : 자격을 기반으로 서버에대한 접근 권한을 부여함.  
    - 간단한 user/password 인증은 안전하    지 않으며, 기밀성 보호가 없는 인증에는 적합하지 않음(?)
  > SASL 인증은 LDAP 서버를 다른 인증 메커니즘(ex. Kerberos)와 연계한다. LDAP 서버는 LDAP 프로토콜을 통해 인증 서비스에 메세지를 보내고 그것에 대한 응답으로 인증 성공/실패를 반환한다. 



* SSL, Secure Socket Layer (=TLS)

- CA, Certificate Authority 라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 
- 동작 방식 
> [browser->server] SSL로 암호화된 페이지를 요청함 (https://) 
> [server->browser] pulbic key를 인증서와 함께 전송한다. 
> [browser] 인증서가 자신이 신용하고 있다고 판단한 CA(certificate authority)로 부터 서명된 것인지, 날짜가 유효한지, 요청과 부합하는지 확인한다. 
> [browser->server] public key를 이용해서 랜덤 대칭 암호화키(Random Symmetric encryption key)를 비롯한 URL, http 데이터를 암호화해서 전송한다. 
> [server] 요청받은 URL에 대한 응답을 browser로 부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송한다. 
> [browser] 대칭키를 이용해서 http 데이터와 html 문서를 복호화 하고, 화면에 정보를 뿌려준다. 

- 개인키/공개키 
> 개인키/공개키를 이용하여 하나의 키로 암호화 하면 다른 하나의 키로 복호화 할 수 있도록 구성되어 있다. 이러한 key-pair는 소수prime-number 로부터 생성되며, 길이에 따라 암호화 강도가 달라진다. 
> 개인키/공개키는 이러한 key-pair를 관리하는 방법인데 한개의 키는 안전한 장소에 보관하고(private key) 다른 하나는 모든 사람에게 공개하여(pulbic key) 나에게 메세지를 보낼때 암호화 해서 보내고, 
 나만 복호화 하여 보낼 수 있도록 한다.
 > 반대로 상대방에게 메세지를 보낼때 private key로 암호화하고 public key 를 보내면 되지만 이는 안전한 방법이 아니다. 
 
- 인증서 
> SSL의 기본구조는 당신이 인증서를 서명한 사람을 신뢰한다면, 서명된 인증서도 신뢰할 수 있다는 것이다. 
> Tree 구조를 이루면서 인증서는 하위 인증서에게 서명을 하게 된다. 
> 최상위 root 인증서는 root CA라고 하는데 root CA는 기본적으로 웹 브라우저에 설치되어 있다. 이러한 인증기관은 자신들의 서명한 인증서를 관리할 뿐 아니라 철회 인증서도 관리하고 있다. 
> 보통 모든 root CA 인증서는 자체 서명(self signed) 되어 있다. 

- 대칭키(The symmetric key) 
> 개인키/공개키는 좋은 알고리즘이지만 실용적이지 못하다. 
> 비대칭이란 하나의 키로 암호화를 하면 다른 하나로 복호화를 해야 한다는 것이고, 하나의 키로 암호화/복호화를 할 수 없다는 것이다. 
> 대칭키는 하나의 키로 암호화/복호화를 가능하게 한다. 하지만 이것만 사용하는 것은 안전한 방법이 아니다. 
> 이것을 해결하기 위해 대칭키를 비대칭키로 암호화 해서 전송한다.
> 그러면 상대방은 public key로 암호화된 대칭키를 이용하여 정보를 암호화 하여 전달한다. 
> 대칭키가 누출되어도 문제가 없도록 대칭키는 매번 랜덤으로 생성하여 암호화 후 전달한다. 

Share Link
reply
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31