[클라우드 바우처] 80% 할인된 금액으로 드림핵 엔터프라이즈를 도입해 보세요. 자세히 알아보기
스트림암호 설명 중간 부분이 이해가 안갑니다.

만약 송신자와 수신자가 평문 길이 만큼의 스트림을 매번 공유할 수 있다면, 스트림을 모르는 공격자는 암호문을 복호화할 수 없습니다. 하지만 평문과 같은 길이의 스트림을 안전하게 공유할 수 있다면, 스트림을 공유하는 채널로 평문을 공유하면 되므로 암호화가 필요하지 않은 환경임을 의미합니다. 이게 무슨 말인지 이해가 안갑니다. 그러면 원래는 스트림을 보내는 공간이 작기 때문에 스트림을 평문 길이만큼 공유하기 힘들다는 뜻인가요?

#암호학 #기초 #현대암호
작성자 정보
답변 2
탈퇴한 이용자
대표 업적 없음

음 좋은 질문이네요

스트림암호 : 송신자와 수신자가 공유하는 데이터 스트림을 생성하고 이를 평문에 XOR하는 암호입니다. 평문을 P, 암호문을 C, 스트림을 X라고 할 때, 암호문 C는 C=P⊕X로 생성됩니다. (강의 내용에 써있죠)

암호의 기본 조건 : 한 마디로 랜덤성입니다. 스트림암호는 이 랜덤성의 조건을 송신자와 수신자가 공유하는 데이터 스트림으로 충족시키고 있는 것입니다. 다만 모든 대칭키 암호가 그러하듯이 이 키가 곧 암호화와 복호화의 핵심이기 때문에 이 키를 어떻게 공유할 것이냐(즉 어떻게 주고받을 것이냐가) 핵심이 됩니다
(보안에서 랜덤성이 중요하기 때문에 app.secret_key = os.urandom(32) 이런 것도 하고 그러는 거죠 ^^)

강의 중간에 나오는 말의 의미 : '만약 송신자와 수신자가 평문 길이 만큼의 스트림을 매번 공유할 수 있다면, 스트림을 모르는 공격자는 암호문을 복호화할 수 없습니다. 하지만 평문과 같은 길이의 스트림을 안전하게 공유할 수 있다면, 스트림을 공유하는 채널로 평문을 공유하면 되므로 암호화가 필요하지 않은 환경임을 의미합니다.' -> 위에서 키를 어떻게 공유하느냐가 핵심이 된다고 말씀드렸죠? 지금 이 문장의 의미는 간단히 말하면 스트림을 '매번' 안전하게 공유할 수 있다면 그 통신망을 이용해서 평문을 보내도 된다는 뜻입니다. 조금 더 구체적으로 말하면, (자 한 번 상상해보세요) 평문과 같은 길이의 스트림을 계속해서 안전하게 공유할 수 있는 채널이 있다는 뜻은 그 채널이 외부 공격으로부터 안전한 채널이라는 뜻입니다. 외부 공격으로부터 안전하고 수신자와 송신자가 안전하게 키를 주고받을 수 있는 채널이라는 뜻이죠. 그렇다고 한다면, 그 채널에서 그냥 키를 주고받지 않고 평문 내용을 서로 주고 받으면 훨씬 안전하고, 생산적이고, 경제적이지 않을까요? 위의 문장은 그냥 그런 의미입니다.
(송신자와 수신자가 평문 길이 만큼의 스트림을 '매번' 공유할 수 있다는 말은 그만큼 랜덤성이 올라간다는 뜻입니다)

질문자님께서 그 다음으로 쓰신 문장은 음... 이 정도 설명을 곁들여서 강의 내용을 다시 읽어보시면 충분히 이해하실 수 있을 거 같아서 말씀드리지 않을게요. 하지만, 정말 충분히 이해하실 수 있습니다. 마음을 가볍게 하시고 천천히 정독하시면 바로 아실 수 있을거에요 한 번 천천히 생각해보세요

2022.01.18. 13:23
5unkn0wn
강의 수강: 50

윗 분께서 잘 설명해 주셨는데 좀만 더 추가하자면, "안전한" 채널은 "일반" 채널에 비해 훨씬 더 느리고 복잡합니다.
안전한 채널로 매번 평문을 주고받을 수 있겠지만, 이렇게 되면 필요 이상으로 리소스가 많이 사용됩니다.
이 때문에 안전한 채널로는 공통된 스트림을 서로 생성하기 위한 짧은 "시드" 만을 공유하고, 일반 채널에서는 스트림으로 평문을 암호화하여 통신하는 방향이 모든 통신을 안전한 채널로 하는 것보다 더 효율적입니다.

2022.01.18. 16:50
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기