가잠성의 위치는 충청북도 보은군, 충청북도 괴산군, 경기도 안성시, 경상남도 거창군, 전북특별자치도 무주군 등 다양하게 비정되고 있다. 현 단계에서 가잠성의 위치를 단정하기는 어렵지만, 충청북도 영동군으로 보는 것이 설득력이 높다. 영동군 일대는 7세기 전반 신라와 백제가 상대방을 서로 압박할 수 있는 전략적 요충지였으며, 신라와 백제는 가잠성에서 세 차례 전투를 치렀다.
가잠(椵岑) 또는 가봉(椵峯)은 갓봉의 음차이다.
먼저 가잠성 전투에 북한산군주(北漢山軍主)와 금산당주(金山幢主)가 참전한 사실에 주목하여, 북한산주(서울)와 금산(김천)의 중간지점에 해당하는 충청북도 보은군으로 비정한 견해가 나왔다. 그리고 가잠성은 보은에서 한강 하류지역에 이르는 교통로상에 위치하는 것으로 보아, 충청북도 진천군이나 괴산군으로 보아야 한다는 견해가 제출되었다. 경기도 안성시 죽산면의 옛 이름인 개차산군(皆次山郡)과 가잠성이 음운상으로 통하는 것으로 파악하여, 경기도 안성으로 보는 견해도 많다. 신라 신문왕대 보덕국(報德國)의 난 시기에 이들이 전라북도(현, 전북특별자치도) 익산에서 수도 경주로 향하려 했다고 보아, 경상남도 거창군으로 보는 견해도 제시되었다. 최근에는 가잠성은 경주와 익산을 연결하는 교통로를 감안할 때, 나제통문(羅濟通門)이 위치했던 전북특별자치도 무주군이라고 보는 견해가 제시되었다. 충청북도 영동군 양산면 가곡리에는 비봉산(飛鳳山)이 있는데, 가지처럼 산줄기가 쭉 뻗어있어 갑산(岬山) 또는 가지산이라 불렸다. 전투 양상이나 음운상으로 볼 때, 가잠성의 위치를 가지산으로 보는 견해가 설득력이 높다.
7세기 전반 신라와 백제는 소백산맥 일대에서 치열하게 공방전을 벌였다. 본래 가잠성은 신라의 영토였는데, 611년 백제가 공격하여 차지하였다. 7년 후 618년에 신라가 다시 가잠성을 공격하여 탈환하였다. 이후 628년 백제가 다시 가잠성을 되찾기 위해 공격하였다가 실패하였다. 1차 가잠성 전투(611년)에서 성주 찬덕(讚德)이 가잠성을 지키다가 함락 위기에 처하자, 스스로 느티나무에 부딪혀 죽었다고 한다. 2차 가잠성 전투(618년)에서는 찬덕의 아들 해론(奚論)이 열심히 싸우다가 전사하자, 신라인들이 장가(長歌)를 지어 조문했다고 한다. 3차 가잠성 전투(628년)에서는 백제군이 성을 포위했으나 신라가 구원군을 파견해 백제를 물리쳤다. 신라가 삼국을 통일한 이후인 신문왕대(684년)에 보덕국(報德國)의 반란이 일어났다. 당시 난을 이끌던 실복(悉伏)이 가잠성 남쪽 7리에 진을 쳤다는 기록이 남아 있다.