TLS(전송 계층 보안) 및 SSH(보안 셸)는 보안 통신을 위해 양방향 채널을 활용하는 실제 프로토콜입니다. 양방향 채널을 사용하는 방법은 다음과 같습니다.
TLS(전송 계층 보안)
TLS는 인터넷을 통한 보안 통신에 사용되는 암호화 프로토콜입니다. 클라이언트와 서버 간에 교환되는 데이터의 기밀성과 무결성을 보장하기 위해 양방향 채널을 사용합니다.
1. 핸드셰이크: TLS 핸드셰이크는 클라이언트와 서버가 보안 연결을 설정하는 프로세스입니다. 이 과정에서 버전 번호, 임의의 숫자, 암호화 키가 포함된 메시지를 교환합니다. 이 핸드셰이크는 양 당사자가 데이터를 보내고 받는 양방향 프로세스입니다.
2. 데이터 암호화: 핸드셰이크가 완료되면 클라이언트와 서버는 설정된 암호화 키를 사용하여 데이터를 암호화하고 해독합니다. 이 암호화 및 암호 해독 프로세스는 양 당사자가 암호화된 데이터를 보내고 받기 때문에 양방향이기도 합니다.
3. 키 교환: TLS는 키 교환 프로토콜을 사용하여 클라이언트와 서버 간에 암호화 키를 안전하게 교환합니다. 이 키 교환은 양 당사자가 키를 보내고 받기 때문에 양방향이기도 합니다.
SSH(보안 셸)
SSH는 사용자가 원격 서버에 안전하게 액세스하고 관리할 수 있도록 하는 보안 원격 액세스 프로토콜입니다. 클라이언트와 서버 간의 보안 통신을 위해 양방향 채널을 사용합니다.
1. 초기 연결: SSH 클라이언트는 보안 연결 설정 요청을 보내 서버에 대한 연결을 시작합니다. 서버는 공개 키와 기타 정보가 포함된 메시지로 응답합니다. 이 초기 연결은 양 당사자가 데이터를 보내고 받는 양방향 프로세스입니다.
2. 인증: 초기 연결이 설정된 후 클라이언트와 서버는 공개 키 암호화를 사용하여 서로를 인증합니다. 이 인증 프로세스는 양 당사자가 인증 메시지를 보내고 받기 때문에 양방향이기도 합니다.
3. 데이터 암호화: 클라이언트와 서버가 인증되면 공유 비밀 키를 사용하여 데이터를 암호화하고 해독합니다. 이 암호화 및 암호 해독 프로세스는 양 당사자가 암호화된 데이터를 보내고 받기 때문에 양방향이기도 합니다.
TLS와 SSH 모두에서 클라이언트와 서버 간에 교환되는 데이터의 기밀성과 무결성을 보장하기 위해 양방향 채널이 사용됩니다. 이러한 프로토콜은 양방향 채널을 사용하여 보안 연결을 설정하고, 암호화 키를 교환하고, 데이터를 암호화 및 해독합니다.
인용:[1] https://tosc.iacr.org/index.php/ToSC/article/view/602/543
[2] https://www.scaler.com/topics/golang/direction-channel-in-golang/
[3] https://blog.devtrovert.com/p/go-channels-explained-more-than-just
[4] https://www.naukri.com/code360/library/direction-channel-in-golang
[5] https://eprint.iacr.org/2017/161.pdf