
9 February 2000 Original : CHINESE LETTER DATED 9 FEBRUARY 2000 FROM THE PERMANENT REPRESENTATIVE OF CHINA TO THE CONFERENCE ON DISARMAMENT ADDRESSED TO THE SECRETARY-GENERAL OF THE CONFERENCE TRANSMITTING A WORKING PAPER ENTITLED “ CHINA'S POSITION ON AND SUGGESTIONS FOR WAYS TO ADDRESS THE ISSUE OF PREVENTION OF AN ARMS RACE IN OUTER SPACE AT THE CONFERENCE ON DISARMAMENT ” On instructions from the Chinese Government , I have the honour to attach herewith a working paper entitled “ China 's position on and Suggestions for Ways to Address the Issue of Prevention of an Arms Race in Outer Space at the Conference on Disarmament ” . I would be grateful if this document could be issued and circulated as an official document of the Conference on Disarmament . ( Signed ) Hu Xiaodi Ambassador for Disarmament Affairs Head of the Delegation of China to the Conference on Disarmament China Working Paper CHINA'S POSITION ON AND SUGGESTIONS FOR WAYS TO ADDRESS Outer space belongs to all mankind . All countries have equal rights in the exploration and use of outer space for peaceful purposes although their levels of economic and scientific development may differ . It is the shared desire of all mankind to forestall the spread of weapons and an arms race in outer space . Some people believe that since currently there is no arms race in outer space , the CD has no need to discuss its prevention or negotiate the conclusion of international legal instruments in this regard . However , history and reality have both shown not only that there are indeed attempts , programmes and moves unilaterally to seek military and strategic superiority in or control over outer space but that there have been new developments in this respect . Such development , if unchecked , may lead to the weaponization of outer space in the near future or even to a multilateral arms race in outer space . Therefore , it is a present and pressing necessity for the international community to take effective measures to stop such negative developments . As the single multilateral disarmament negotiating forum , the Conference on Disarmament ( Conference ) should concentrate on the most pressing and prominent issues in international arms control and disarmament , the ones that have the greatest bearing on global peace and security in the twenty-first century . PAROS is one such important issue , and should therefore be a top priority at the Conference . The Conference should play a primary role in the negotiations to prevent any form of arms race in outer space . At its fifty-fourth session the United Nations General Assembly once again adopted , by an overwhelming majority , a resolution on PAROS . It was reaffirmed that negotiating an international agreement or agreements to prevent an arms race in outer space remains a priority task of the CD 's Ad Hoc Committee . The fact that the resolution was adopted without opposition reflects the common aspiration and insistent demand of the international community to prevent an arms race in outer space . The General Assembly also adopted at its fifty-fourth session , and also by an overwhelming majority , a resolution on preservation of and compliance with the Anti-Ballistic Missile Treaty , an issue that is related to the prevention of an arms race in outer space . In the resolution the General Assembly recognizes the historical role of the 1972 Treaty as a cornerstone for maintaining global peace and security and strategic stability , reaffirms its continued validity and relevance in the current international situation and supports further efforts by the international community in the light of emerging developments with the goal of safeguarding the inviolability and integrity of the ABM Treaty in which the international community bears strong interest . Since PAROS was put on the CD agenda in 1982 , the Conference has , through the establishment of the Ad Hoc Committee and other means , held discussions on definitions , principles , existing treaties and confidence-building measures , and accumulated experience in this field , preparing the ground for future work in this area . With the accelerated development of outer space weapons , anti-ballistic missiles and other weapon systems , individual countries have stepped up efforts to secure military superiority in outer space and have mapped out and are pursuing plans to secure military superiority on the ground from space . In these circumstances , preventing outer space from becoming a new venue for an arms race without prejudice to its peaceful uses has obviously become the most important and pressing task of the Conference . To accomplish this , the Conference must first re-establish the Ad Hoc Committee under agenda item 3 to negotiate and conclude an international legal instrument prohibiting the testing , deployment and use of weapons , weapon systems and components in outer space so as to prevent the weaponization of , and an arms race in , outer space . In carrying out its mandate , the Ad Hoc Committee must take into account all relevant developments and specific proposals , present and future . As a preliminary step towards the negotiation of an international legal instrument , it might discuss and review all pertinent issues , including current military activities in outer space and related developments , their influence on the prevention of an arms race in outer space ; shortcomings in the existing international instruments ; and the basic elements of the future international legal instrument . The Chinese delegation has taken note of the various ideas and suggestions on PAROS put forward in the CD . China believes that the re-established Ad Hoc Committee should be an open-ended , all-embracing mechanism where all participants may air and discuss different views . It should set as its ultimate goal and clear mandate the negotiation and conclusion of one or several international legal instruments to prevent the weaponization of and an arms race in outer space . A number of international legal instruments on the peaceful uses of outer space and the prevention of an arms race in outer space have been concluded . The 1963 Treaty Banning Nuclear Weapon Tests in the Atmosphere , in Outer Space and Under Water prohibits any nuclear weapon test explosion in outer space . The 1996 Comprehensive Nuclear Test Ban Treaty prohibits any nuclear weapon test explosion in any circumstances . According to the 1967 Treaty on Principles Governing the Activities of States in the Exploration and Use of Outer Space , including the Moon and other Celestial Bodies , outer space , including the moon and other celestial bodies , is not subject to national appropriation by claim of sovereignty , by means of use or occupation , or by any other means . States Parties to the Treaty undertake not to place in orbit around the Earth any objects carrying nuclear weapons or any other kinds of weapons of mass destruction , install such weapons on celestial bodies , or station such weapons in outer space in any other manner . The establishment of military bases , installations and fortifications , the testing of any type of weapons and the conduct of military manoeuvres on celestial bodies is forbidden . The 1972 Treaty between the United States and the Union of Soviet Socialist Republics on the Limitation of Anti-Ballistic Missile Systems prohibits the development , testing and deployment of space-based ABM systems or components . Besides these , the 1972 Convention on International Liability for Damage Caused by Space Objects , the 1975 Convention on Registration of Objects Launched into Outer Space and the 1979 Agreement Governing the Activities of States on the Moon and other Celestial Bodies all contain provisions on outer space activities which have helped to constrain some aspects of military activities in outer space to some extent . However , these instruments have been ineffective in preventing the weaponization of and an arms race in outer space . Some have imposed limited prohibitions and contained many loopholes and ambiguities . Some have not been fully complied with or are in danger of being violated , amended or even abrogated . Most crucially , as they have failed to reflect the latest developments in aerospace technology they cannot prevent the potential weaponization of outer space or an arms race in outer space in the twenty-first century . The Chinese delegation believes that the most direct and effective way to prevent the weaponization of and an arms race in outer space is to negotiate and conclude new international legal instruments while strictly observing the existing bilateral and multilateral agreements . CHINA'S BASIC POSITION ON PAROS China has always opposed arms races , in outer space and elsewhere . It maintains that the exploration and use of outer space should only serve to promote countries ' economic , scientific and cultural development and benefit all mankind . With the use of military satellites , outer space has already been militarized to some extent . Military satellites involve rather complex issues and their role should not be all together negated . Therefore , the primary goal at present in our efforts to prevent the weaponization of and an arms race in outer space is to ban the testing , deployment and use of weapons , weapon systems and components in outer space . What should be particularly emphasized is that the Powers with the greatest space capabilities bear a special responsibility for preventing the weaponization of and an arms race in outer space and ensuring the use of space for peaceful purposes . Pending the conclusion of a new multilateral legal instrument on the prevention of an arms race in outer space , all countries concerned should undertake not to test , deploy or use any weapons , weapon systems or components in outer space . The Chinese delegation tentatively suggests that the new international legal instruments to prevent the weaponization of and an arms race in outer space , in whatever form or by whatever name , might contain the following basic elements : Purposes : to prevent the weaponization of and an arms race in outer space , and to use outer space for peaceful purposes . Basic obligations : not to test , deploy or use weapons , weapon systems or components . Consideration could also be given to an article on “ permissible activities ” thus helping to distinguish between activities that are prohibited and those that are not , and thereby safeguarding States Parties ' lawful right to utilize outer space for peaceful purposes . An article on definitions , providing clear definitions of the concepts mentioned , e. g. “ outer space ” , “ space weapons ” , “ weapon systems ” and “ components of weapon systems ” . Provision for appropriate national implementation measures and the designation or establishment of organizations to ensure that States Parties implement the instruments consistently and effectively . An article on international cooperation in the peaceful use of outer space promoting international exchanges , technical assistance and cooperation for peaceful purposes so that all countries can share in the economic and technological benefits of scientific advances in outer space , and outer space truly serves all mankind . Verification : we must first consider fully how technically feasible it is , and on that basis determine whether to use inspections or alternative means to prevent treaty violations . Establishment of an appropriate mechanism for consultations , clarifications and resolution of possible disputes in order to appropriately address such suspicions and disputes as might arise among States Parties . Appropriate , rational and workable confidence-building measures to enhance mutual trust among States Parties and forestall unnecessary suspicion about particular activities . The procedural articles commonly found in international legal instruments dealing with amendment , length of validity , signature , ratification , entry into force , depository and authentic texts . These may of course also have to resolve some sensitive and key issues . The Chinese delegation wishes to emphasize that these are only tentative ideas that need to be developed . Our aim in putting them forward is to give all participants food for thought , pool our collective wisdom and encourage a fuller , more detailed examination of the relevant issues at the Conference . We will participate in such discussions and negotiations with an open mind , listening to and accepting good ideas and proposals from all parties and striving unremittingly to prevent the weaponization of and an arms race in outer space and to ensure the continued peaceful use of outer space for the benefit of all mankind . 