멋진 프로그램들을 만들어오신 개발자분들이 정말 많습니다. 현대적인 접근 방식도 취하고 계실거구요. 저희가 공유한 플루언트 UI 시리즈에서 현대화에 대한 내용을 많이 다루었죠. 비주얼이 정말 중요한데요. 아마도 네오-스큐어모피즘(Neo-skeuomorphism: 웹의 구성요소, 프레임, 화면 등을 디자인할 때 사용하는 스큐어모피즘이라는 기법을 현대적으로 변형한 방식)을 적용한 분들도 계실 것입니다. VCL에서는 어떤가요? 윈도우 10 다크 모드 / 라이트 모드 중 어떤 걸 선호하세요?
현대화를 하지 않았다면, 지금은 잘 작동하고 있을 수 있습니다…여러분의 앱 사용자들이 무언가를 바꾸려고 하지 않는다면 말이죠.

10만+ 다운로드된 앱을 설치하려고 할 때 표시되는 메시지입니다.

한 번 볼까요? 여러분의 프로그램 사용자들이 애플리케이션을 다운로드 받을 수 없다는 불만을 제기하기 시작합니다. 최신 웹 브라우저 보안에 대한 두려움이 있는 고객이라면, 이를 예방하기 위해 더 철저한 관리를 하게 됩니다. 그러다 보면 여러분의 앱은 윈도우 10에 의해 차단되거나, 기업 보안 정책에 따라 막힐 수도 있죠.

마지막으로 하나 더: 여러분의 코드가 트로이 목마와 같은 바이러스에 감염되지 않았음을 증명할 수 있는 코드 서명이 필요합니다.

코드 서명(Code-signing) 은 무엇일까요?

코드 서명은 수동으로 설정하는 작업으로, 애플리케이션 최종 빌드 시점 또는 그 직후에 나타나도록 할 수 있습니다. 설정해 놓으면, 디지털 서명이 포함된 exe 에 작은 리소스가 추가됩니다. 서명에는 코드 작성자 식별과 애플리케이션 exe 파일의 검사합(checksum)을 확인할 수 있는 정보들이 들어있습니다. 이 정보 – 코드 서명 -을 통해 애플리케이션을 실행한 사용자는 이 프로그램의 실행 파일이 개발자의 PC나 빌드 서버에서 만들어진 이후 수정되지 않았는지 확인할 수 있습니다. 예를 들어, 바이러스로 인해 exe를 변경하면 암호화 체크섬이 손상되어 사용자들은 문제가 발생했음을 알 수 있는 것입니다.

올바른 코드 서명이 되어 있는 프로그램의 화면
(참고: 이 이미지는 오래된 버전의 화면입니다. 최신 버전에는 만료 날짜도 표시됩니다.)

웹링크를 통해 앱을 배포하는 경우 코드 서명은 거의 필수입니다.

코드 서명은 본래 개발사 확인 뿐만 아니라 웹 사이트나 이와 비슷한 온라인 전달 매커니즘에서 프로그램을 다운로드 할 때도 중요한 역할을 합니다. 대부분의 브라우저 (아마 전부)는 웹 사이트에서 exe 파일을 다운로드할 때 경고 메세지를 띄웁니다. 특히 HTTPS를 사용하지 않는 경우라면 더더욱 그렇죠. 윈도우에서 마이크로소프트 엣지(Microsoft Edge)를 사용하는 환경에서 웹 사이트를 통해 exe 파일을 다운로드해 본 적 있으세요? 디지털 서명 – 코드 서명을 이렇게도 부르죠 – 이 없는 파일이면 정말 적극적으로 위험성을 알려줍니다.

서명이 없는 앱은 컴퓨터 바이러스처럼 보일 수 있습니다.

사용자가 여러 단계를 지나서 드디어 exe 파일을 컴퓨터에 다운로드 받았을 지라도, 마술처럼 다운로드된 파일이 없을 수 있습니다. 이는 기업 네트워크에서 막았기 때문인데요. 사용자가 신뢰할 수 있는 특정 애플리케이션만 실행할 수 있다는 규정이 적용되었기 때문입니다. 이런 경우는 정말 흔히 일어나는 일입니다. 코드 서명이 없다는 것은 일반적으로 해당 애플리케이션을 신뢰할 수 없음을 의미합니다. 더 나아가 이는 일반적이지 않다고 보는 경우도 많습니다. 어떤 사용자들은 애플리케이션들은 윈도우 서비스와 특히 서버용 애플리케이션들이라면 64비트여야 한다고 주장하는 경우도 있습니다. 기업 네트워크 관계자나 ITSec 관계자들은 많은 사용자들이 접속하는 스트리밍, 의심스러운 첨부 파일 열기, 실수로 악성 프로그램을 실수하는 등의 작업을 막을 수 있습니다. 이런 강요 조항이 있으면 사용자들은 당황할 수 있죠.

여러분의 애플리케이션이 혹시, 코드 서명이 없는 프로그램은 아닌가요? 만약 그렇다면, 여러분의 애플리케이션이 그들에게는 최악의 해커처럼 보일 수도 있다는 점을 기억하세요.

코드 서명은 블루칩(blue chip) 기업들만을 위한 것인가요?

코드 서명은 필수입니다. 특히 여러분이 작성한 코드로 수익을 창출하고자 하는 경우라면 필수 중의 필수입니다. 오픈 소스 또는 프리웨어인 경우일지라도 코드 서명이 있다면 여러분의 사용자들에게 도움이 될 것입니다.

단순히 실행 파일을 만들고 웹 서버에 올려놓기만 하는 시대는 이제 갔습니다. 여러분의 소프트웨어를 이런 예전 방식으로 제공한다면, 정말 슬프게도: 그 소프트웨어는 시대에 뒤떨어진 것이고, 현대화를 해야만 합니다. 곧 윈도우 운영 방식에 많은 변화가 있을 것입니다. UAC, HTTPS, 강제 디렉토리 보호 등 보안 향상 기능 측면에서 많은 변화가 있을 것이고 이는 일방적으로 바로 수행될 것입니다. 그리고 이미 수행되고 있는 것들도 많습니다.

질문 받은 것들 중 가장 많은 것이 바로 코드 서명이었던 것 같습니다. 그만큼 대단히 중요한 주제입니다. 개발자에게 있어 코드 서명은 선택 항목이 아니라는 이야기를 꼭 해드리고 싶습니다.

코드 서명에 대한 더 많은 정보들

코드 서명에 대해 알아두면 좋을 자료들은 아래 링크들을 참고해보세요:

다양한 코드 서명 유형들을 예제와 함께 설명해놓은 자료입니다. 비용 효율적인 코드 서명 인증서에 대한 내용도 있습니다: https://www.codedotshow.com/blog/delphi-10-3-rio-code-signing-provisioning-and-the-microsoft-app-store/

코드 서명이 필요한 이유를 확인할 수 있습니다: https://en.wikipedia.org/wiki/Code_signing

코드 서명을 활용하면 좋은 점들을 정리한 글입니다: https://www.encryptionconsulting.com/code-signing-top-5-benefits/ 그리고 https://www.globalsign.com/en/blog/the-importance-of-code-signing-redux

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 21929
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 20548
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 22577
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28341
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 29619
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 24953
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 45910
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 181508
714 [발표자료] 20190214 델파이 24주년 기념 세미나: 델파이 앱 현대화 방안 - 다양한 데이터 서비스 연동하기 관리자 2023.04.20 2170
713 [10.4 시드니][업데이트 2] TNUMBERBOX – 새로운 VCL 컨트롤 관리자 2023.03.09 753
712 [10.4 시드니][업데이트 2] TCONTROLLIST – 새로운 VCL 컨트롤 관리자 2023.03.09 618
711 이 달의 기술자료 - 2021년 09월 file 험프리 2021.08.26 2243
710 데스크탑, 무엇과도 비교할 수 없는 강력한 생산성의 동력 관리자 2021.08.18 1778
709 RAD스튜디오 11, 미리보기! 관리자 2021.08.17 1190
708 RAD스튜디오 11을 준비하는 방법 관리자 2021.08.17 1122
707 이 달의 기술자료 - 2021년 08월 file 험프리 2021.07.29 1252
706 [TCoffeeAndCode] – 대규모 프로젝트 관리와 IDE 성능 향상 방안 관리자 2021.07.22 1112
705 [LEARN TO CODE] 코드 썸머 캠프 2021 관리자 2021.07.16 1113
704 RAD스튜디오 11, 곧 만나볼 수 있습니다: 새 버전 안내 & 베타 테스터 초대장 관리자 2021.07.15 1221
703 웹사이트 메트릭스, 앱에 바로 적용하는 방법 관리자 2021.07.09 1178
702 새로운 무료 개발 도구들 관리자 2021.07.07 1312
701 윈도우 11: 공룡들을 전멸 시킬 유성이 곧 쏟아집니다. 관리자 2021.07.02 1281
700 이 달의 기술자료 - 2021년 07월 험프리 2021.06.24 1353
699 모바일 장비의 엔터프라이즈 데이터: 가장 많은 실수 TOP 5와 방지 요령 관리자 2021.06.24 1218
698 네이티브 IOS & 안드로이드 앱 만들기 첫 걸음 관리자 2021.06.09 1573
697 BDE/파라독스를 인터베이스(INTERBASE)로 마이그레이션 하기 관리자 2021.05.31 565
696 이 달의 기술자료 - 2021년 06월 file 험프리 2021.05.27 581
» 코드 서명 – 여러분이 개발한 프로그램, 컴퓨터 바이러스처럼 보이지는 않나요? 관리자 2021.05.12 737