보안상 안전한 프로세스간 자원 공유는 어떤것이 있나요?

mrjh76의 이미지

먼저, 이글을 어디에 올려야 맞는건지 잘모르겠네요!
QnA에 올려야할 것 같기도 하고, 그냥 의견을 듣는것이니 토론? 고충?

일단, 개발자 고민상담실에 올려 봅니다.

각 프로세스간에 자원을 공유하기 위한 여러가지 IPC 설비들이 있는걸로 알고 있습니다.
저는 편의상 공유메모리를 통해서 자원을 공유하고자 하는데, 이 것이 보안상 얼마나
안전한지 잘 모르겠네요! (그냥 문서들만 보아서는 안전한것 같은데,,,)

공유메모리에 비정상적인 방법으로 접근해서 값을 위/변조할 가능성은 없는지?
혹은 프로세스간에 안전한 자료 교환을 위한 어떤 절차들이 이미 정해져 있는지?

조언 좀 부탁합니다!

M.W.Park의 이미지

일반론적으로 이야기해서...
일단 공유의 개념이 들어가면 안전과는 거리가 멀어집니다.
공유 자원(시간, 공간 측면)을 최소화 하는것이 안전에 가까워지는 길입니다.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

mrjh76의 이미지

네, 옳은 얘기입니다.

그래서 최소한의 내용만 공유하려고 하는데, 뭔가 확신이 없어서요.

한가지 생각해봤는데, 공유내용에 대해서 검증을 할 수 있도록 하면,
좀 나아지지 않을까... 생각을 하는데,,, (CRC 검사처럼...)

jos77의 이미지

가역 md5 압축하시거나 보안키 발급할 수도 있겠지만, 그건 너무 수고스러울 테고
CRC 정도면 거의 연산 시간이 없을 테니까 그것도 괜찮겠지만...
그보다 IPC 공유라고 해도 어떤 데이터의 어떤 공유인지 모르겠는데
정 불안하시면 패킷 단위로 read 단위를 끊어놓기만 해도 크게 보안 문제 되지는 않을 겁니다

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

mrjh76의 이미지

답변 감사합니다.

음, 저는 단순한 숫자값을 각 프로세스간에 공유하고자 하는것입니다.
하지만 이 숫자값이 돈과 연결되기 때문에 이렇게 신경을 쓰고 있는것이고요!

혹시, TCP/IP의 구조적 취약점처럼 IPC에도 알려진 취약점이 있는지 궁금하네요!

jos77의 이미지

없다고 봅니다 ^^

일단 단순한 수치라면 4bit 씩 끊든가 앞뒤로 몇 byte 쓰레기 데이터 붙이든가 간단한 암호화 시켜버리면 될테고요
프로세스 마다 그런 암호화 프로그래밍 하는게 귀찮을 정도라면 걱정하실 필요는 전혀 없습니다.

IPC 로 접근할 수 있다는 것 자체가 system root 권한을 가졌다는 얘긴데 그러면 이미 보안 레벨이고 뭐고 없는 상황이니까요.
(전체 데이터를 캡쳐해버리거나 프로그램 자체가 수정될 수 있는 마당에 수치만 보고 도망가는 건 의미가 없죠~)

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr