한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
안드로이드를 하트블리드(Heartbleed) 버그로부터 구하신(?) 개발자 전병권님과의 인터뷰!
2014년 4월 28일 월요일
1. 본인 소개 부탁드립니다.
안드로이드를 사랑하는 개발자
전병권
입니다. 사랑하는 딸 지아의 아빠이자 수희의 든든한 남편입니다. :)
GDG Korea Android
에서 운영자로 활동하고 있으며 Daum 에서 안드로이드 앱 개발을 하다가 작년에 SK planet으로 옮겨 안드로이드 앱 성능 개선, 테스트 자동화 등의 업무를 담당하고 있습니다.
2. Heartbleed 버그란?
우리가 웹 페이지에 접속하면서 https를 사용하게 되면 암호화된 SSL/TLS 통신을 사용하게 됩니다. 이 암호화된 통신을 시작하기 위해서는 서버와 브라우저 간에 암호화에 관련된 데이터를 주고 받게 되는데 이 과정에서 약간의 시간이 소모되게 됩니다. 만약 접속이 자주 끊어지고 다시 이루어 지게 된면 소모되는 시간이 점차 늘어나게 됩니다. 이를 줄이기 위해 Heartbeat 라는 확장이
TLS구현에 추가
되어 있습니다. 접속을 끊지 않고 계속 사용한다고 생각하면 됩니다.
그런데 OpenSSL 의 Heartbeat 구현에 문제가 있었습니다. 접속을 유지하기 위해 주기적으로 브라우저에서 특정 데이터를 보내고 서버에서 같은 데이터를 다시 받는데, 길이를 조작하는 방식을 통해 서버 메모리의 내용을 65535 바이트만큼 읽을 수 있었습니다. 이것이 Heartbeat 확장에서 발생했고 서버데이터를 외부로 흘린다고 해서 Heartbleed 이라는 이름이 붙게 되었다고 합니다.
3. AOSP 버그 리포트를 하게 된 이유?
사실 제가
2012년 7월 초에 리포팅
했을 때는 Heartbleed 가 알려지기 훨씬 이전 이였습니다. 물론 저도 그 버그에 대한 아무런 정보도 없었습니다. 리포팅한 버그의 내용도 특정 프로토콜로 AP에 접속 시 오류가 발생한다는 내용입니다. 그 때가 젤리빈(JB)이 나온지 얼마 안된 때였는데 가지고 있던 갤럭시 넥서스 폰이 ICS에서는 문제없이 사용하다가 JB로 업그레이드 이후에 문제가 발생해서 그 차이를 찾아서 리포팅하게 되었습니다.
4. 그 후 실제 구글 엔지니어와는 어떻게 같이 일을 하셨는지?
리포팅을 하고 얼마 지나지 않아서 동일한 에러 때문에 고생하는 사람들의 댓글이 남겨지기 시작했습니다. (댓글이 달리면 메일로 알림이 옵니다.) 다들 구글 레퍼런스 폰 사용자들이었고 소스가 공개되어있기 때문에, '내가 한번 직접 고쳐보자'라는 생각이 들었습니다. 그래서 안드로이드 오픈소스 프로젝트(AOSP)의 코드를 살펴보기 시작했습니다. 이전 버전과의 차이를 살펴보면서 옵션들을 수정한 후 빌드해서 마침내 제대로 동작하는 패치를 만들 수 있었습니다.
그 때쯤 드디어 구글 엔지니어인 Brian D. Carlstrom 가 나타나서 문제를 파악하기 시작했습니다. 제가 제안했던 방법을 살펴보고 좀 더 상세히 문제를 파악해서 다시 제게 의견을 물었습니다. 저의 제안과 더불어 구글러가 제안해준 방법이 바로 Heartbeat 확장을 끄는 것이었습니다. 제안해준 방법을 적용해보니 문제도 잘 해결되고 변경되는 범위도 작았습니다. 결국엔 이 패치가 2012년 7월 말쯤에 반영되었습니다. 제가 리포팅한지 겨우 20일쯤 지난 후였습니다. 결국 이 패치 덕에 Hearbeat 확장을 사용하지 않게 되었고, 따라서 안드로이드는 4.1.1 버전 일부를 제외하고는 Heartbleed 버그에 영향을 받지 않게 되었습니다. "소 뒷걸음질 치다 쥐 잡기"라는 속담이 정말 잘 어울리는 경우인 것 같습니다. :)
5. GDG 안드로이드 운영자로 활동하고 계신데, 활동에 관한 소감 그리고 오픈소스에 관한 개인적인 의견이 있으시다면?
구글에서 보내주신 선물 ^^
만약 안드로이드가 오픈소스가 아니었고 사용자의 참여가 어려운 환경이었다면 이런 버그 수정에 얼마만큼의 시간이 들었을까요? 6개월? 1년? 그 이상의 시간이 걸릴지도 모릅니다. 안드로이드 프로젝트에서는 문제를 스스로 고치는 것이 충분히 가능합니다. 다른 오픈소스의 경우도 마찬가지 입니다. 오픈소스를 열심히 사용하다가 발견한 버그를 직접 수정하거나 내게 필요한 새로운 기능을 구현해서 다른 이들도 사용할 수 있도록 기여하는 것이 가능합니다. 이게 바로 오픈소스의 가장 큰 즐거움인 것 같습니다.
GDG 활동에 참여하면서 얻게 되는 소득도 참 많습니다. 모임에 참여하는 개발자들과 이야기를 나누다 보면 참여하는 개발자의 열정이 강렬하게 느껴집니다. 그런 열정이 제게는 큰 에너지가 되어 저를 계속 노력하도록 만듭니다. 여러분들도 GDG 활동과 오픈소스 참여를 통해 많은 열정과 즐거움을 얻어 가시길 바랍니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed