공유할 서비스 선택

TECH


TECH

OS OpenSSH 의 암호화 또는 Hashing과 관련된 알고리즘에 대해 알아보려 합니다

페이지 정보

작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 598회 좋아요 0회 작성일 24-08-17 13:45

본문

안녕하세요  

 

OpenSSH 의 암호화 또는 Hashing과 관련된 알고리즘의 분류에 대해 알아보려 합니다. 

사실 이내용은 우리가 잘 모르고 사용하는 것일것입니다.  그래서 조금 더 상세하게 알아보겠습니다. 

 

 

- SSH 프로토콜에서 통신을 할 때에는 SSH Client와 SSH Server 간에 약 4개의 알고리즘를 사용하는데

여기서 서로 일치하는게 반드시 1개는 필요합니다. 

 

= Key Exchange Algorithms

= MAC Algorithms

= Ciphers

= HostKey Algorihtms

 

이 4가지에 대해 설명을 먼저 하겠습니다. 

 

1. Key Exchange Algorithms(키 교환 알고리즘): 

네트워크나 다른 비공개 통신 채널을 통해 안전하게 암호 키를 교환하는 방법을 제공합니다. 이러한 알고리즘은 주로 비대칭 암호화 기술에 기반하여, 통신하는 두 당사자가 사전에 공유된 비밀 정보 없이도 보안을 유지하며 암호 키를 교환할 수 있게 해줍니다. 가장 널리 사용되는 키 교환 알고리즘에는 Diffie-Hellman(DH) 알고리즘과 Elliptic Curve Diffie-Hellman(ECDH) 알고리즘이 있습니다.

 

1) Diffie-Hellman (DH) 알고리즘

원리: Diffie-Hellman은 두 당사자가 공개된 정보를 사용하여 서로 비밀 키를 생성하는 방식입니다. 여기서 중요한 점은 당사자들이 교환하는 정보는 공개적으로 알려져 있어도, 제3자가 비밀 키를 계산하는 것은 매우 어렵다는 점입니다.

 

2) Elliptic Curve Diffie-Hellman (ECDH) 알고리즘

원리: ECDH는 Diffie-Hellman 알고리즘을 타원 곡선 암호학에 적용한 형태입니다. 타원 곡선을 사용함으로써, 동일한 보안 수준을 유지하면서도 더 작은 키 크기를 사용할 수 있어 성능 및 보안 측면에서 유리합니다.

 

3) 기타 키 교환 알고리즘

RSA 기반 키 교환: RSA 알고리즘은 비대칭 암호화 알고리즘으로, 공용 키로 암호화하고 개인 키로 복호화하는 방식입니다. 이 방식으로 암호 키를 전달하는 것도 가능하지만, RSA는 키 교환보다는 데이터 암호화나 디지털 서명에 주로 사용됩니다.

Post-Quantum Key Exchange: 양자 컴퓨터에 대응하기 위한 키 교환 알고리즘으로, NTRU와 같은 알고리즘이 연구되고 있습니다. 양자 컴퓨터는 기존의 Diffie-Hellman이나 RSA 알고리즘을 쉽게 깨뜨릴 수 있기 때문에, 이를 대체하기 위한 양자 내성 암호화 기술이 필요합니다.

 

 

> 확인 방법 

-------------------------------------------------------------------

# sshd -T  | grep kexalgorithms

gssapikexalgorithms gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1-

kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1

-------------------------------------------------------------------

 

2. MAC(Message Authentication Code) 알고리즘

메시지의 무결성과 인증을 보장하기 위해 사용되는 암호화 기법입니다. MAC 알고리즘은 입력된 메시지와 비밀 키를 사용하여 고정된 길이의 코드(태그)를 생성합니다. 이 태그는 메시지와 함께 전송되어, 수신자가 메시지의 무결성과 송신자의 신원을 확인할 수 있게 해줍니다. 중요한 점은, 비밀 키가 없으면 MAC을 생성하거나 검증할 수 없다는 것입니다.

 

- MAC의 주요 특징

. 무결성: 메시지가 전송 중에 변경되지 않았음을 보장합니다. 수신자는 MAC 값을 사용해 메시지가 변조되었는지 여부를 확인할 수 있습니다.

. 인증: MAC을 생성하는 데 사용된 비밀 키를 알고 있는 사람만이 올바른 MAC 값을 생성할 수 있으므로, 메시지의 출처를 인증할 수 있습니다.

. 기밀성 제공 안함: MAC은 메시지의 무결성과 인증을 보장하지만, 메시지 자체의 암호화를 제공하지 않습니다. 메시지의 기밀성을 보장하려면 추가적인 암호화 알고리즘이 필요합니다.

 

- MAC 알고리즘의 사용 예

. 네트워크 프로토콜: MAC 알고리즘은 SSL/TLS, IPsec, SSH와 같은 보안 프로토콜에서 데이터의 무결성과 인증을 보장하는 데 사용됩니다.

. 데이터 무결성 확인: 파일 전송, 데이터 저장소, 통신 시스템 등에서 데이터를 송수신할 때 데이터가 손상되거나 변조되지 않았음을 확인하기 위해 MAC이 사용됩니다.

. 전자 서명: MAC은 전자 서명에서 메시지의 무결성과 서명자의 신원을 확인하는 데 사용될 수 있습니다.

 

> 확인방법

-------------------------------------------------------------------

# sshd -T  | grep macs

macs hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512

-------------------------------------------------------------------

 

 

3. 암호(Ciphers)

데이터를 암호화하고 복호화하는 알고리즘을 의미하며, 기밀성, 무결성, 인증성을 제공하여 데이터를 보호하는 역할을 합니다. 암호 알고리즘은 평문(원본 데이터)을 암호문(암호화된 데이터)으로 변환하며, 이를 통해 인가된 사용자만이 데이터를 읽고 이해할 수 있도록 합니다. 암호는 주로 대칭 암호와 비대칭 암호로 분류됩니다.

 

 

1) 대칭 암호(Symmetric Ciphers)

대칭 암호는 암호화와 복호화에 동일한 비밀 키를 사용하는 알고리즘입니다. 보안성은 키의 기밀성을 유지하는 데 크게 의존합니다.

 

 

2) 비대칭 암호(Asymmetric Ciphers)

비대칭 암호는 두 개의 키를 사용합니다: 하나는 공개 키(public key)로 암호화에 사용되고, 다른 하나는 개인 키(private key)로 복호화에 사용됩니다. 이 방식을 통해 공개적으로 키를 배포하면서도 안전한 통신이 가능합니다.

 

. 원리: 공개 키는 누구나 사용할 수 있으며, 이를 이용해 데이터를 암호화할 수 있습니다. 그러나 이 암호화된 데이터는 해당 공개 키와 쌍을 이루는 개인 키 없이는 복호화할 수 없습니다. 이 방식은 주로 데이터의 안전한 전송과 디지털 서명에 사용됩니다.

 

. 대표적인 예:

RSA: 가장 널리 알려진 비대칭 암호 알고리즘 중 하나로, 큰 소수의 곱을 기반으로 합니다. 주로 데이터 암호화, 디지털 서명, 키 교환에 사용됩니다.

 

3)  현대 암호(Ciphers) 알고리즘의 사용 예

. SSL/TLS 프로토콜: HTTPS와 같은 웹 보안 프로토콜에서 사용되며, 대칭 암호와 비대칭 암호를 결합하여 데이터의 기밀성, 무결성, 인증성을 보장합니다.

. 파일 및 디스크 암호화: AES와 같은 대칭 암호를 사용하여 파일이나 전체 디스크를 암호화해 데이터를 보호합니다.

. VPN: 가상 사설망에서 데이터를 암호화하여 네트워크 통신의 기밀성을 유지합니다.

. 전자 서명: 비대칭 암호를 이용해 데이터의 무결성과 인증을 보장하는 데 사용됩니다.

 

> 확인방법

-------------------------------------------------------------------

# sshd -T  | grep ciphers

ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr

-------------------------------------------------------------------

 

 

4. HostKey Algorithms

주로 SSH(Secure Shell)와 같은 보안 프로토콜에서 사용되며, 클라이언트가 서버의 신원을 확인하고, 중간자 공격(man-in-the-middle attack) 등을 방지하는 데 중요한 역할을 합니다. HostKey Algorithm은 서버의 공개 키를 기반으로 하여 클라이언트가 서버의 신뢰성을 검증할 수 있도록 해줍니다.

 

- HostKey Algorithm의 주요 기능

. 서버 인증: 클라이언트는 서버의 공개 키를 검증하여, 자신이 신뢰하는 서버에 연결하고 있음을 확인할 수 있습니다.

. 무결성 및 보안 통신: HostKey Algorithm은 SSH 연결의 초기 단계에서 사용되며, 이후 통신이 안전하게 이루어질 수 있도록 보장합니다.

. 중간자 공격 방지: 서버의 신원을 검증함으로써, 중간에 공격자가 서버를 가장하는 것을 방지할 수 있습니다.

 

- HostKey Algorithm의 사용 예

. SSH 연결: 클라이언트가 SSH 서버에 연결할 때, 서버는 자신의 HostKey를 제공하며, 클라이언트는 이를 검증하여 서버의 신뢰성을 확인합니다.

. 서버 인증: 클라이언트는 서버의 HostKey를 신뢰할 수 있는 공개 키와 비교하여, 올바른 서버에 연결되었는지 확인합니다.

. 보안 로그: SSH 연결 시, HostKey Algorithm을 사용하여 서버의 신원을 검증한 후, 클라이언트는 이를 기록하고 이후 연결에서 동일한 키를 사용하는지 확인할 수 있습니다.

 

 

> 확인방법

-------------------------------------------------------------------

# sshd -T  | grep hostkeyal

hostkeyalgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com

-------------------------------------------------------------------

 

이 명령어는 로컬 호스트(127.0.0.1)의 22번 포트에서 실행 중인 SSH 서비스에 대해 다음 작업을 수행합니다:

 

. 해당 SSH 서비스의 버전을 확인하고(-sV).

. ssh2-enum-algos 스크립트를 사용하여, 서버가 지원하는 SSHv2 암호화 알고리즘들을 나열합니다.

 

이 정보는 SSH 서버의 보안 구성을 평가하고, 취약한 암호화 알고리즘이 사용되고 있는지 확인하는 데 도움을 줍니다.

 

# nmap --script ssh2-enum-algos -sV -p 22 127.0.0.1

Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-17 13:47 KST

Nmap scan report for localhost (127.0.0.1)

Host is up (0.000026s latency).

 

PORT   STATE SERVICE VERSION

22/tcp open  ssh     OpenSSH 8.7 (protocol 2.0)

| ssh2-enum-algos:

|   kex_algorithms: (12)

|       curve25519-sha256

|       curve25519-sha256@libssh.org

|       ecdh-sha2-nistp256

|       ecdh-sha2-nistp384

|       ecdh-sha2-nistp521

|       diffie-hellman-group-exchange-sha256

|       diffie-hellman-group14-sha256

|       diffie-hellman-group16-sha512

|       diffie-hellman-group18-sha512

|       diffie-hellman-group-exchange-sha1

|       diffie-hellman-group14-sha1

|       kex-strict-s-v00@openssh.com

|   server_host_key_algorithms: (5)

|       rsa-sha2-512

|       rsa-sha2-256

|       ssh-rsa

|       ecdsa-sha2-nistp256

|       ssh-ed25519

|   encryption_algorithms: (5)

|       aes256-gcm@openssh.com

|       chacha20-poly1305@openssh.com

|       aes256-ctr

|       aes128-gcm@openssh.com

|       aes128-ctr

|   mac_algorithms: (8)

|       hmac-sha2-256-etm@openssh.com

|       hmac-sha1-etm@openssh.com

|       umac-128-etm@openssh.com

|       hmac-sha2-512-etm@openssh.com

|       hmac-sha2-256

|       hmac-sha1

|       umac-128@openssh.com

|       hmac-sha2-512

|   compression_algorithms: (2)

|       none

|_      zlib@openssh.com

 

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

 

 

> SSH Client와 SSH Server 간에 약 4개의 알고리즘대해 설명드렸는데 왜 이렇게 길게 설명 드린것이냐면, 가끔 Openssh 보안취약점이 발표되는데

  거기서 이런 암호화에 보안취약점이 발견되면 Openssh 패치로도 문제해결을 하지만,  해당 암호화를 disabled 하여 해결하는 방법이 나오기도합니다. 

또한 내가 어떤 암호화를 사용하고 있는지도 알아야하구요. 

 

 

만약, diffie-hellman-group1-sha1 algorithm을 disable를 해야 한다면, 아래와 같은 방법으로 할 수 있습니다. 

 

For RHEL 7 and RHEL8

 

# ssh -Q kex

diffie-hellman-group1-sha1

diffie-hellman-group14-sha1

diffie-hellman-group14-sha256

diffie-hellman-group16-sha512

diffie-hellman-group18-sha512

      --truncated--

 

이 목록을 가져와야 하며, 원하지 않는 알고리즘을 제거해야 합니다. 

그런 다음 쉼표로 구분하여 나머지 알고리즘을 /etc/ssh/ssh_config 파일에 추가해야 합니다. 매개 변수 KexAlgorithms도 사용됩니다. 예를 들어 다음과 같습니다:

 

# vi /etc/ssh/ssh_config 

SendEnv XMODIFIERS

KexAlgorithms curve25519-sha256、curve25519-sha256@libssh.org、ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521、diffie-hellman-group-exchange-sha256、diffie-hellman-group-exchange-sha1、diffie-hellman-group14-sha1

 

# systemctl restart sshd

 

 

이렇게 하면 아래 명령어를 실행하면 "diffie-hellman-group14-sha1"을 볼수 없습니다. 

 

 # nmap --script ssh2-enum-algos -sV -p 22 127.0.0.1

 

 

이렇게 문제되는 알고리즘을 disabled를 할수있습니다. 

 

 

참고링크:

https://access.redhat.com/solutions/4278651

https://access.redhat.com/articles/7041246

 

 

혹, 궁금하신 점 있으시면 댓글로 남겨주세요. 


댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
232 OS OSworker 아이디로 검색 전체게시물 11-17 55
RHEL 9.5 가 11월 12일에 릴리즈 되었습니다. 간략하게 살펴보시죠~

카테고리 : OS

55 0
작성자 : OSworker 24/11/17
231 OS OSworker 아이디로 검색 전체게시물 11-10 85
어떤 프로세스 어떤 이유로 인해 성능에 문제가 생겼을때 perf로 그 문제를 찾아보세요.

카테고리 : OS

85 0
작성자 : OSworker 24/11/10
230 OS OSworker 아이디로 검색 전체게시물 10-31 138
AI에 대한 관심이 많습니다. 혹시 RHEL AI에 대해 들어보셨나요?

카테고리 : OS

138 0
작성자 : OSworker 24/10/31
229 OS OSworker 아이디로 검색 전체게시물 10-24 168
Fedora와 Red Hat Enterprise Linux의 차이점

카테고리 : OS

168 0
작성자 : OSworker 24/10/24
228 OS OSworker 아이디로 검색 전체게시물 10-11 208
audit 로그에 저장된 time 을 날짜/시간 으로 변경하여 보는법

카테고리 : OS

208 0
작성자 : OSworker 24/10/11
227 OS OSworker 아이디로 검색 전체게시물 09-29 351
[보안취약점]"RHSB-2024-002 - OpenPrinting cups-filters"에 대해 설명드리고자합니다.

카테고리 : OS

351 0
작성자 : OSworker 24/09/29
226 OS OSworker 아이디로 검색 전체게시물 09-25 422
누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!

카테고리 : OS

422 0
작성자 : OSworker 24/09/25
225 OS OSworker 아이디로 검색 전체게시물 09-15 325
RHEL6.10 앞으로 어떻게 되나요? 아직도 RHEL6버전을 사용하신다구요?

카테고리 : OS

325 0
작성자 : OSworker 24/09/15
224 OS OSworker 아이디로 검색 전체게시물 08-30 428
SWAP이 왜 자꾸 사용하게 될까요? 누가 사용하는것일까요?

카테고리 : OS

428 0
작성자 : OSworker 24/08/30
223 OS OSworker 아이디로 검색 전체게시물 08-22 428
리눅스 서버에 RDP를 설치하여 윈도우에서 "원격데스크탑접속"으로 연결

카테고리 : OS

428 0
작성자 : OSworker 24/08/22
Total 232건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 chlux.co.kr All rights reserved.
상단으로Top